Skip to content

Commit 2bf49df

Browse files
committed
Upgrade Spring Boot and Java versions across tutorials; refactor Dockerfiles and update dependencies
1 parent 857f288 commit 2bf49df

11 files changed

Lines changed: 77 additions & 82 deletions

File tree

openvidu-basic-java/pom.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@
1414
<parent>
1515
<groupId>org.springframework.boot</groupId>
1616
<artifactId>spring-boot-starter-parent</artifactId>
17-
<version>2.7.0</version>
17+
<version>3.5.7</version>
1818
</parent>
1919

2020
<properties>
2121
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
22-
<java.version>11</java.version>
23-
<maven.compiler.target>11</maven.compiler.target>
24-
<maven.compiler.source>11</maven.compiler.source>
22+
<java.version>17</java.version>
23+
<maven.compiler.target>17</maven.compiler.target>
24+
<maven.compiler.source>17</maven.compiler.source>
2525
<start-class>io.openvidu.basic.java.App</start-class>
2626
</properties>
2727

openvidu-basic-java/src/main/java/io/openvidu/basic/java/Controller.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import java.util.Map;
44

5-
import javax.annotation.PostConstruct;
5+
import jakarta.annotation.PostConstruct;
66

77
import org.springframework.beans.factory.annotation.Value;
88
import org.springframework.http.HttpStatus;
Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
1-
2-
FROM maven:3.6.3 as build
1+
FROM eclipse-temurin:25-jdk-noble AS build
2+
RUN apt-get update && apt-get install -y maven && rm -rf /var/lib/apt/lists/*
33
WORKDIR /openvidu-recording-java
44
COPY ./pom.xml pom.xml
55
COPY ./src/main src/main
66

7-
RUN mvn clean install
8-
RUN mvn -o package
7+
RUN mvn clean install -DskipTests
8+
RUN mvn -o package -DskipTests
99

10-
FROM alpine:3.11
10+
FROM eclipse-temurin:25-jre-noble
1111

12-
RUN apk update && \
13-
apk add openjdk11-jre && \
14-
rm -rf /var/cache/apk/*
12+
RUN apt-get update && \
13+
rm -rf /var/lib/apt/lists/*
1514

1615
# Install basic-webinar
1716
RUN mkdir -p /opt/openvidu-recording-java
@@ -20,7 +19,7 @@ COPY --from=build /openvidu-recording-java/target/openvidu-recording-java-*.jar
2019
COPY ./docker/entrypoint.sh /usr/local/bin
2120
RUN chmod +x /usr/local/bin/entrypoint.sh
2221

23-
CMD /usr/local/bin/entrypoint.sh
22+
CMD ["/usr/local/bin/entrypoint.sh"]
2423

2524

2625

openvidu-recording-java/pom.xml

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,19 @@
1414
<parent>
1515
<groupId>org.springframework.boot</groupId>
1616
<artifactId>spring-boot-starter-parent</artifactId>
17-
<version>2.1.4.RELEASE</version>
17+
<version>3.5.7</version>
1818
</parent>
1919

2020
<properties>
2121
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
22-
<java.version>1.8</java.version>
22+
<java.version>17</java.version>
2323
<start-class>io.openvidu.recording.java.App</start-class>
2424
<docker.image.prefix>openvidu</docker.image.prefix>
2525

2626
<!-- Test dependencies versions -->
27-
<junit.jupiter.version>5.0.3</junit.jupiter.version>
28-
<junit.platform.version>1.3.2</junit.platform.version>
29-
<selenium-jupiter.version>3.1.0</selenium-jupiter.version>
27+
<junit.jupiter.version>5.10.2</junit.jupiter.version>
28+
<junit.platform.version>1.10.2</junit.platform.version>
29+
<selenium-jupiter.version>5.1.1</selenium-jupiter.version>
3030
</properties>
3131

3232
<build>
@@ -64,10 +64,16 @@
6464
<version>${selenium-jupiter.version}</version>
6565
<scope>test</scope>
6666
</dependency>
67+
<dependency>
68+
<groupId>org.seleniumhq.selenium</groupId>
69+
<artifactId>selenium-java</artifactId>
70+
<version>4.31.0</version>
71+
<scope>test</scope>
72+
</dependency>
6773
<dependency>
6874
<groupId>io.github.bonigarcia</groupId>
6975
<artifactId>webdrivermanager</artifactId>
70-
<version>2.2.0</version>
76+
<version>5.9.2</version>
7177
<scope>test</scope>
7278
</dependency>
7379
<dependency>
@@ -93,9 +99,8 @@
9399
<scope>test</scope>
94100
</dependency>
95101
<dependency>
96-
<groupId>io.openvidu</groupId>
97-
<artifactId>openvidu-test-browsers</artifactId>
98-
<version>1.0.0</version>
102+
<groupId>org.apache.commons</groupId>
103+
<artifactId>commons-lang3</artifactId>
99104
<scope>test</scope>
100105
</dependency>
101106

openvidu-recording-java/src/main/resources/application.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ server.ssl.key-store: classpath:openvidu-selfsigned.jks
44
server.ssl.key-store-password: openvidu
55
server.ssl.key-store-type: JKS
66
server.ssl.key-alias: openvidu-selfsigned
7-
spring.http.converters.preferred-json-mapper=gson
7+
spring.mvc.converters.preferred-json-mapper=gson
88

99
openvidu.url: http://localhost:4443/
1010
openvidu.secret: MY_SECRET

openvidu-recording-java/src/test/java/io/openvidu/recording/java/test/AppTestE2e.java

Lines changed: 33 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22

33
import java.io.File;
44
import java.io.IOException;
5+
import java.time.Duration;
56
import java.util.HashMap;
67
import java.util.Map;
78
import java.util.Map.Entry;
8-
import java.util.concurrent.TimeUnit;
99

1010
import org.apache.commons.io.FileUtils;
11-
import org.apache.commons.lang.StringUtils;
11+
import org.apache.commons.lang3.StringUtils;
1212
import org.junit.Assert;
1313
import org.junit.jupiter.api.AfterEach;
1414
import org.junit.jupiter.api.BeforeAll;
@@ -20,20 +20,21 @@
2020
import org.openqa.selenium.By;
2121
import org.openqa.selenium.Dimension;
2222
import org.openqa.selenium.WebDriver;
23+
import org.openqa.selenium.chrome.ChromeDriver;
24+
import org.openqa.selenium.chrome.ChromeOptions;
2325
import org.openqa.selenium.support.ui.ExpectedCondition;
2426
import org.openqa.selenium.support.ui.ExpectedConditions;
27+
import org.openqa.selenium.support.ui.WebDriverWait;
2528
import org.slf4j.Logger;
2629
import org.slf4j.LoggerFactory;
2730

28-
import io.github.bonigarcia.seljup.SeleniumExtension;
31+
import io.github.bonigarcia.seljup.SeleniumJupiter;
2932
import io.github.bonigarcia.wdm.WebDriverManager;
3033
import io.openvidu.java.client.OpenVidu;
3134
import io.openvidu.java.client.OpenViduHttpException;
3235
import io.openvidu.java.client.OpenViduJavaClientException;
3336
import io.openvidu.java.client.Recording;
3437
import io.openvidu.java.client.Recording.OutputMode;
35-
import io.openvidu.test.browsers.BrowserUser;
36-
import io.openvidu.test.browsers.ChromeUser;
3738
import ws.schild.jave.EncoderException;
3839
import ws.schild.jave.MultimediaInfo;
3940
import ws.schild.jave.MultimediaObject;
@@ -48,30 +49,32 @@
4849
* @author Pablo Fuente (pablofuenteperez@gmail.com)
4950
*/
5051
@DisplayName("E2E tests for openvidu-java-recording")
51-
@ExtendWith(SeleniumExtension.class)
52+
@ExtendWith(SeleniumJupiter.class)
5253
@RunWith(JUnitPlatform.class)
5354
public class AppTestE2e {
5455

5556
private static final Logger log = LoggerFactory.getLogger(AppTestE2e.class);
5657

5758
static String OPENVIDU_SECRET = "MY_SECRET";
58-
static String OPENVIDU_URL = "https://localhost:4443/";
59+
static String OPENVIDU_URL = "http://localhost:4443/";
5960
static String APP_URL = "https://localhost:5000/";
6061
static int NUMBER_OF_ATTEMPTS = 10;
6162
static int RECORDING_DURATION = 5; // seconds
6263
static double DURATION_THRESHOLD = 10.0; // seconds
6364

6465
static String RECORDING_PATH = "/opt/openvidu/recordings/";
6566

66-
private BrowserUser user;
67+
private WebDriver driver;
68+
private WebDriverWait waiter;
6769
private static OpenVidu OV;
6870

6971
boolean deleteRecordings = true;
7072

7173
@BeforeAll()
7274
static void setupAll() {
7375

74-
WebDriverManager.chromedriver().setup();
76+
// Let WebDriverManager auto-detect browser version and download matching driver
77+
WebDriverManager.chromedriver().browserVersionDetectionCommand("/opt/google/chrome/chrome --version").setup();
7578

7679
String appUrl = System.getProperty("APP_URL");
7780
if (appUrl != null) {
@@ -162,13 +165,22 @@ void dispose() {
162165
log.error("Error listing recordings: {}", e2.getMessage());
163166
}
164167
}
165-
this.user.dispose();
168+
if (this.driver != null) {
169+
this.driver.quit();
170+
}
166171
}
167172

168173
void setupBrowser() {
169-
user = new ChromeUser("TestUser", 20, false);
170-
user.getDriver().manage().timeouts().setScriptTimeout(20, TimeUnit.SECONDS);
171-
user.getDriver().manage().window().setSize(new Dimension(1920, 1080));
174+
ChromeOptions options = new ChromeOptions();
175+
options.addArguments("--use-fake-ui-for-media-stream");
176+
options.addArguments("--use-fake-device-for-media-stream");
177+
options.addArguments("--ignore-certificate-errors");
178+
options.addArguments("--no-sandbox");
179+
options.addArguments("--disable-dev-shm-usage");
180+
driver = new ChromeDriver(options);
181+
waiter = new WebDriverWait(driver, Duration.ofSeconds(20));
182+
driver.manage().timeouts().scriptTimeout(Duration.ofSeconds(20));
183+
driver.manage().window().setSize(new Dimension(1920, 1080));
172184
}
173185

174186
@Test
@@ -183,26 +195,26 @@ void composedRecordingTest() throws Exception {
183195
String videoFile = "";
184196

185197
setupBrowser();
186-
user.getDriver().get(APP_URL);
198+
driver.get(APP_URL);
187199

188-
user.getDriver().findElement(By.id("join-btn")).click();
200+
driver.findElement(By.id("join-btn")).click();
189201
waitUntilEvents("connectionCreated", "videoElementCreated", "accessAllowed", "streamCreated", "streamPlaying");
190202

191-
user.getDriver().findElement(By.id("has-video-checkbox")).click();
203+
driver.findElement(By.id("has-video-checkbox")).click();
192204

193205
while (durationDifferenceAcceptable && (i < NUMBER_OF_ATTEMPTS)) {
194206

195207
log.info("----------");
196208
log.info("Attempt {}", i + 1);
197209
log.info("----------");
198210

199-
user.getDriver().findElement(By.id("buttonStartRecording")).click();
211+
driver.findElement(By.id("buttonStartRecording")).click();
200212

201213
waitUntilEvents("recordingStarted");
202214

203215
Thread.sleep(RECORDING_DURATION * 1000);
204216

205-
user.getDriver().findElement(By.id("buttonStopRecording")).click();
217+
driver.findElement(By.id("buttonStopRecording")).click();
206218
waitUntilEvents("recordingStopped");
207219

208220
Recording rec = OV.listRecordings().get(0);
@@ -247,9 +259,9 @@ void composedRecordingTest() throws Exception {
247259
}
248260

249261
private void waitUntilEvents(String... events) {
250-
user.getWaiter().until(eventsToBe(events));
251-
user.getDriver().findElement(By.id("clear-events-btn")).click();
252-
user.getWaiter().until(ExpectedConditions.textToBePresentInElementLocated(By.id("textarea-events"), ""));
262+
waiter.until(eventsToBe(events));
263+
driver.findElement(By.id("clear-events-btn")).click();
264+
waiter.until(ExpectedConditions.textToBePresentInElementLocated(By.id("textarea-events"), ""));
253265
}
254266

255267
private ExpectedCondition<Boolean> eventsToBe(String... events) {

openvidu-roles-java/docker/Dockerfile

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
11

2-
FROM maven:3.6.3 as build
2+
FROM maven:3.9-eclipse-temurin-25 AS build
33
WORKDIR /basic-webinar
44
COPY ./pom.xml pom.xml
55
COPY ./src/main src/main
66

7-
RUN mvn clean install
8-
RUN mvn -o package
7+
RUN mvn clean install -DskipTests
8+
RUN mvn -o package -DskipTests
99

10-
FROM alpine:3.11
10+
FROM eclipse-temurin:25-jre-alpine
1111

1212
RUN apk update && \
13-
apk add openjdk11-jre && \
1413
rm -rf /var/cache/apk/*
1514

1615
# Install basic-webinar

openvidu-roles-java/pom.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@
1414
<parent>
1515
<groupId>org.springframework.boot</groupId>
1616
<artifactId>spring-boot-starter-parent</artifactId>
17-
<version>2.1.4.RELEASE</version>
17+
<version>3.5.7</version>
1818
</parent>
1919

2020
<properties>
2121
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
22-
<java.version>1.8</java.version>
22+
<java.version>17</java.version>
2323
<start-class>io.openvidu.js.java.App</start-class>
2424
<docker.image.prefix>openvidu</docker.image.prefix>
2525
</properties>
@@ -35,8 +35,8 @@
3535

3636
<dependencies>
3737
<dependency>
38-
<groupId>junit</groupId>
39-
<artifactId>junit</artifactId>
38+
<groupId>org.junit.jupiter</groupId>
39+
<artifactId>junit-jupiter</artifactId>
4040
<scope>test</scope>
4141
</dependency>
4242
<dependency>

openvidu-roles-java/src/main/java/io/openvidu/js/java/LoginController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import java.util.Map;
44
import java.util.concurrent.ConcurrentHashMap;
55

6-
import javax.servlet.http.HttpSession;
6+
import jakarta.servlet.http.HttpSession;
77

88
import org.json.simple.JSONObject;
99
import org.json.simple.parser.JSONParser;

openvidu-roles-java/src/main/java/io/openvidu/js/java/SessionController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import java.util.Map;
44
import java.util.concurrent.ConcurrentHashMap;
55

6-
import javax.servlet.http.HttpSession;
6+
import jakarta.servlet.http.HttpSession;
77

88
import org.json.simple.JSONObject;
99
import org.json.simple.parser.JSONParser;

0 commit comments

Comments
 (0)