mirror of https://github.com/OpenVidu/openvidu.git
openvidu-test-e2e: STT memory leak test
parent
0919f04fa4
commit
3276b9d26e
|
@ -642,26 +642,26 @@ public class OpenViduProTestAppE2eTest extends AbstractOpenViduTestappE2eTest {
|
||||||
// Blur filter
|
// Blur filter
|
||||||
filterTypeInput.sendKeys("VB:blur");
|
filterTypeInput.sendKeys("VB:blur");
|
||||||
user.getDriver().findElement(By.id("apply-filter-btn")).click();
|
user.getDriver().findElement(By.id("apply-filter-btn")).click();
|
||||||
user.getWaiter().until(
|
user.getWaiter()
|
||||||
ExpectedConditions.attributeContains(By.id("response-text-area"), "value", "Filter applied"));
|
.until(ExpectedConditions.attributeContains(By.id("response-text-area"), "value", "Filter applied"));
|
||||||
user.getDriver().findElement(By.id("remove-filter-btn")).click();
|
user.getDriver().findElement(By.id("remove-filter-btn")).click();
|
||||||
user.getWaiter().until(
|
user.getWaiter()
|
||||||
ExpectedConditions.attributeContains(By.id("response-text-area"), "value", "Filter removed"));
|
.until(ExpectedConditions.attributeContains(By.id("response-text-area"), "value", "Filter removed"));
|
||||||
user.getDriver().findElement(By.id("apply-filter-btn")).click();
|
user.getDriver().findElement(By.id("apply-filter-btn")).click();
|
||||||
user.getWaiter().until(
|
user.getWaiter()
|
||||||
ExpectedConditions.attributeContains(By.id("response-text-area"), "value", "Filter applied"));
|
.until(ExpectedConditions.attributeContains(By.id("response-text-area"), "value", "Filter applied"));
|
||||||
user.getDriver().findElement(By.id("apply-filter-btn")).click();
|
user.getDriver().findElement(By.id("apply-filter-btn")).click();
|
||||||
user.getWaiter().until(ExpectedConditions.attributeContains(By.id("response-text-area"), "value",
|
user.getWaiter().until(ExpectedConditions.attributeContains(By.id("response-text-area"), "value",
|
||||||
"Error [There is already a filter applied"));
|
"Error [There is already a filter applied"));
|
||||||
user.getDriver().findElement(By.id("remove-filter-btn")).click();
|
user.getDriver().findElement(By.id("remove-filter-btn")).click();
|
||||||
user.getWaiter().until(
|
user.getWaiter()
|
||||||
ExpectedConditions.attributeContains(By.id("response-text-area"), "value", "Filter removed"));
|
.until(ExpectedConditions.attributeContains(By.id("response-text-area"), "value", "Filter removed"));
|
||||||
user.getDriver().findElement(By.id("remove-filter-btn")).click();
|
user.getDriver().findElement(By.id("remove-filter-btn")).click();
|
||||||
user.getWaiter().until(ExpectedConditions.attributeContains(By.id("response-text-area"), "value",
|
user.getWaiter().until(
|
||||||
"has no filter applied"));
|
ExpectedConditions.attributeContains(By.id("response-text-area"), "value", "has no filter applied"));
|
||||||
user.getDriver().findElement(By.id("exec-filter-btn")).click();
|
user.getDriver().findElement(By.id("exec-filter-btn")).click();
|
||||||
user.getWaiter().until(ExpectedConditions.attributeContains(By.id("response-text-area"), "value",
|
user.getWaiter().until(
|
||||||
"has no filter applied"));
|
ExpectedConditions.attributeContains(By.id("response-text-area"), "value", "has no filter applied"));
|
||||||
|
|
||||||
// Image filter
|
// Image filter
|
||||||
WebElement subscriberVideo = user.getDriver().findElement(By.cssSelector("#openvidu-instance-1 video"));
|
WebElement subscriberVideo = user.getDriver().findElement(By.cssSelector("#openvidu-instance-1 video"));
|
||||||
|
@ -684,8 +684,8 @@ public class OpenViduProTestAppE2eTest extends AbstractOpenViduTestappE2eTest {
|
||||||
filterOptionsInput.clear();
|
filterOptionsInput.clear();
|
||||||
filterOptionsInput.sendKeys("{\"url\": \"https://openvidu.io/img/vb/red.jpg\"}");
|
filterOptionsInput.sendKeys("{\"url\": \"https://openvidu.io/img/vb/red.jpg\"}");
|
||||||
user.getDriver().findElement(By.id("apply-filter-btn")).click();
|
user.getDriver().findElement(By.id("apply-filter-btn")).click();
|
||||||
user.getWaiter().until(
|
user.getWaiter()
|
||||||
ExpectedConditions.attributeContains(By.id("response-text-area"), "value", "Filter applied"));
|
.until(ExpectedConditions.attributeContains(By.id("response-text-area"), "value", "Filter applied"));
|
||||||
|
|
||||||
rgb = user.getEventManager().getAverageColorFromPixels(subscriberVideo,
|
rgb = user.getEventManager().getAverageColorFromPixels(subscriberVideo,
|
||||||
Arrays.asList(new Point[] { new Point(93, 30), new Point(30, 50) }));
|
Arrays.asList(new Point[] { new Point(93, 30), new Point(30, 50) }));
|
||||||
|
@ -708,8 +708,8 @@ public class OpenViduProTestAppE2eTest extends AbstractOpenViduTestappE2eTest {
|
||||||
filterParamsInput.clear();
|
filterParamsInput.clear();
|
||||||
filterParamsInput.sendKeys("wrong_params");
|
filterParamsInput.sendKeys("wrong_params");
|
||||||
user.getDriver().findElement(By.id("exec-filter-btn")).click();
|
user.getDriver().findElement(By.id("exec-filter-btn")).click();
|
||||||
user.getWaiter().until(ExpectedConditions.attributeContains(By.id("response-text-area"), "value",
|
user.getWaiter().until(
|
||||||
"Wrong params syntax"));
|
ExpectedConditions.attributeContains(By.id("response-text-area"), "value", "Wrong params syntax"));
|
||||||
filterParamsInput.clear();
|
filterParamsInput.clear();
|
||||||
filterParamsInput.sendKeys("{\"url\": \"https://openvidu.io/img/vb/not_exists.jpg\"}");
|
filterParamsInput.sendKeys("{\"url\": \"https://openvidu.io/img/vb/not_exists.jpg\"}");
|
||||||
user.getDriver().findElement(By.id("exec-filter-btn")).click();
|
user.getDriver().findElement(By.id("exec-filter-btn")).click();
|
||||||
|
@ -720,15 +720,15 @@ public class OpenViduProTestAppE2eTest extends AbstractOpenViduTestappE2eTest {
|
||||||
filterParamsInput.clear();
|
filterParamsInput.clear();
|
||||||
filterParamsInput.sendKeys("{\"url\": \"https://openvidu.io/img/vb/blue.jpg\"}");
|
filterParamsInput.sendKeys("{\"url\": \"https://openvidu.io/img/vb/blue.jpg\"}");
|
||||||
user.getDriver().findElement(By.id("exec-filter-btn")).click();
|
user.getDriver().findElement(By.id("exec-filter-btn")).click();
|
||||||
user.getWaiter().until(ExpectedConditions.attributeContains(By.id("response-text-area"), "value",
|
user.getWaiter().until(
|
||||||
"Filter method executed"));
|
ExpectedConditions.attributeContains(By.id("response-text-area"), "value", "Filter method executed"));
|
||||||
rgb = user.getEventManager().getAverageColorFromPixels(subscriberVideo,
|
rgb = user.getEventManager().getAverageColorFromPixels(subscriberVideo,
|
||||||
Arrays.asList(new Point[] { new Point(93, 30), new Point(30, 50) }));
|
Arrays.asList(new Point[] { new Point(93, 30), new Point(30, 50) }));
|
||||||
Assert.assertTrue((rgb.get("r") < 10) && (rgb.get("g") < 10) && (rgb.get("b") > 240));
|
Assert.assertTrue((rgb.get("r") < 10) && (rgb.get("g") < 10) && (rgb.get("b") > 240));
|
||||||
|
|
||||||
user.getDriver().findElement(By.id("remove-filter-btn")).click();
|
user.getDriver().findElement(By.id("remove-filter-btn")).click();
|
||||||
user.getWaiter().until(
|
user.getWaiter()
|
||||||
ExpectedConditions.attributeContains(By.id("response-text-area"), "value", "Filter removed"));
|
.until(ExpectedConditions.attributeContains(By.id("response-text-area"), "value", "Filter removed"));
|
||||||
|
|
||||||
rgb = user.getEventManager().getAverageColorFromPixels(subscriberVideo,
|
rgb = user.getEventManager().getAverageColorFromPixels(subscriberVideo,
|
||||||
Arrays.asList(new Point[] { new Point(93, 30), new Point(30, 50) }));
|
Arrays.asList(new Point[] { new Point(93, 30), new Point(30, 50) }));
|
||||||
|
@ -872,8 +872,8 @@ public class OpenViduProTestAppE2eTest extends AbstractOpenViduTestappE2eTest {
|
||||||
Thread.sleep(500);
|
Thread.sleep(500);
|
||||||
|
|
||||||
user.getDriver().findElement(By.cssSelector("#sub-stt-btn")).click();
|
user.getDriver().findElement(By.cssSelector("#sub-stt-btn")).click();
|
||||||
user.getWaiter().until(ExpectedConditions.attributeToBe(By.id("operation-response-text-area"), "value",
|
user.getWaiter().until(
|
||||||
"Subscribed to STT"));
|
ExpectedConditions.attributeToBe(By.id("operation-response-text-area"), "value", "Subscribed to STT"));
|
||||||
user.getEventManager().waitUntilEventReaches("speechToTextMessage", 5);
|
user.getEventManager().waitUntilEventReaches("speechToTextMessage", 5);
|
||||||
|
|
||||||
CustomHttpClient restClient = new CustomHttpClient(OpenViduTestAppE2eTest.OPENVIDU_URL, "OPENVIDUAPP",
|
CustomHttpClient restClient = new CustomHttpClient(OpenViduTestAppE2eTest.OPENVIDU_URL, "OPENVIDUAPP",
|
||||||
|
@ -897,8 +897,8 @@ public class OpenViduProTestAppE2eTest extends AbstractOpenViduTestappE2eTest {
|
||||||
Thread.sleep(500);
|
Thread.sleep(500);
|
||||||
|
|
||||||
user.getDriver().findElement(By.cssSelector("#sub-stt-btn")).click();
|
user.getDriver().findElement(By.cssSelector("#sub-stt-btn")).click();
|
||||||
user.getWaiter().until(ExpectedConditions.attributeToBe(By.id("operation-response-text-area"), "value",
|
user.getWaiter().until(
|
||||||
"Subscribed to STT"));
|
ExpectedConditions.attributeToBe(By.id("operation-response-text-area"), "value", "Subscribed to STT"));
|
||||||
user.getEventManager().waitUntilEventReaches("speechToTextMessage", 10);
|
user.getEventManager().waitUntilEventReaches("speechToTextMessage", 10);
|
||||||
|
|
||||||
gracefullyLeaveParticipants(user, 1);
|
gracefullyLeaveParticipants(user, 1);
|
||||||
|
@ -925,9 +925,9 @@ public class OpenViduProTestAppE2eTest extends AbstractOpenViduTestappE2eTest {
|
||||||
|
|
||||||
CustomHttpClient restClient = new CustomHttpClient(OpenViduTestAppE2eTest.OPENVIDU_URL, "OPENVIDUAPP",
|
CustomHttpClient restClient = new CustomHttpClient(OpenViduTestAppE2eTest.OPENVIDU_URL, "OPENVIDUAPP",
|
||||||
OpenViduTestAppE2eTest.OPENVIDU_SECRET);
|
OpenViduTestAppE2eTest.OPENVIDU_SECRET);
|
||||||
String connectionId = restClient.rest(HttpMethod.GET, "/openvidu/api/sessions/TestSession",
|
String connectionId = restClient.rest(HttpMethod.GET, "/openvidu/api/sessions/TestSession", HttpStatus.SC_OK)
|
||||||
HttpStatus.SC_OK).get("connections").getAsJsonObject().get("content").getAsJsonArray().get(0)
|
.get("connections").getAsJsonObject().get("content").getAsJsonArray().get(0).getAsJsonObject()
|
||||||
.getAsJsonObject().get("connectionId").getAsString();
|
.get("connectionId").getAsString();
|
||||||
|
|
||||||
user.getDriver().findElement(By.id("add-user-btn")).click();
|
user.getDriver().findElement(By.id("add-user-btn")).click();
|
||||||
user.getDriver().findElement(By.cssSelector("#openvidu-instance-1 .publish-checkbox")).click();
|
user.getDriver().findElement(By.cssSelector("#openvidu-instance-1 .publish-checkbox")).click();
|
||||||
|
@ -944,8 +944,8 @@ public class OpenViduProTestAppE2eTest extends AbstractOpenViduTestappE2eTest {
|
||||||
WebElement sttUnsubBtn = user.getDriver().findElement(By.cssSelector("#unsub-stt-btn"));
|
WebElement sttUnsubBtn = user.getDriver().findElement(By.cssSelector("#unsub-stt-btn"));
|
||||||
|
|
||||||
sttSubBtn.click();
|
sttSubBtn.click();
|
||||||
user.getWaiter().until(ExpectedConditions.attributeToBe(By.id("operation-response-text-area"), "value",
|
user.getWaiter().until(
|
||||||
"Subscribed to STT"));
|
ExpectedConditions.attributeToBe(By.id("operation-response-text-area"), "value", "Subscribed to STT"));
|
||||||
|
|
||||||
sttSubBtn.click();
|
sttSubBtn.click();
|
||||||
user.getWaiter().until(ExpectedConditions.attributeContains(By.id("operation-response-text-area"), "value",
|
user.getWaiter().until(ExpectedConditions.attributeContains(By.id("operation-response-text-area"), "value",
|
||||||
|
@ -968,8 +968,8 @@ public class OpenViduProTestAppE2eTest extends AbstractOpenViduTestappE2eTest {
|
||||||
"Session TestSession has no speech to text subscriptions"));
|
"Session TestSession has no speech to text subscriptions"));
|
||||||
|
|
||||||
sttSubBtn.click();
|
sttSubBtn.click();
|
||||||
user.getWaiter().until(ExpectedConditions.attributeToBe(By.id("operation-response-text-area"), "value",
|
user.getWaiter().until(
|
||||||
"Subscribed to STT"));
|
ExpectedConditions.attributeToBe(By.id("operation-response-text-area"), "value", "Subscribed to STT"));
|
||||||
|
|
||||||
user.getDriver().findElement(By.id("close-dialog-btn")).click();
|
user.getDriver().findElement(By.id("close-dialog-btn")).click();
|
||||||
Thread.sleep(500);
|
Thread.sleep(500);
|
||||||
|
@ -981,8 +981,8 @@ public class OpenViduProTestAppE2eTest extends AbstractOpenViduTestappE2eTest {
|
||||||
sttUnsubBtn = user.getDriver().findElement(By.cssSelector("#unsub-stt-btn"));
|
sttUnsubBtn = user.getDriver().findElement(By.cssSelector("#unsub-stt-btn"));
|
||||||
|
|
||||||
sttSubBtn.click();
|
sttSubBtn.click();
|
||||||
user.getWaiter().until(ExpectedConditions.attributeToBe(By.id("operation-response-text-area"), "value",
|
user.getWaiter().until(
|
||||||
"Subscribed to STT"));
|
ExpectedConditions.attributeToBe(By.id("operation-response-text-area"), "value", "Subscribed to STT"));
|
||||||
sttSubBtn.click();
|
sttSubBtn.click();
|
||||||
user.getWaiter().until(ExpectedConditions.attributeContains(By.id("operation-response-text-area"), "value",
|
user.getWaiter().until(ExpectedConditions.attributeContains(By.id("operation-response-text-area"), "value",
|
||||||
"Already subscribed to Speech To Text events for Connection " + connectionId + " in language en-US"));
|
"Already subscribed to Speech To Text events for Connection " + connectionId + " in language en-US"));
|
||||||
|
@ -1412,12 +1412,64 @@ public class OpenViduProTestAppE2eTest extends AbstractOpenViduTestappE2eTest {
|
||||||
// void composedRecordingAndSttTest() throws Exception {
|
// void composedRecordingAndSttTest() throws Exception {
|
||||||
//
|
//
|
||||||
// }
|
// }
|
||||||
//
|
|
||||||
// @Test
|
@Test
|
||||||
// @DisplayName("STT memory leak test")
|
@DisplayName("Memory leak STT test")
|
||||||
// void memoryLeakSttTest() throws Exception {
|
void memoryLeakSttTest() throws Exception {
|
||||||
//
|
|
||||||
// }
|
log.info("Memory leak STT");
|
||||||
|
|
||||||
|
restartOpenViduServerIfNecessary(false, null, "vosk");
|
||||||
|
|
||||||
|
OpenViduTestappUser user = setupBrowserAndConnectToOpenViduTestapp("chromeFakeAudio");
|
||||||
|
|
||||||
|
user.getDriver().get(APP_URL);
|
||||||
|
user.getDriver().findElement(By.id("add-user-btn")).click();
|
||||||
|
user.getDriver().findElement(By.className("join-btn")).sendKeys(Keys.ENTER);
|
||||||
|
|
||||||
|
user.getEventManager().waitUntilEventReaches("connectionCreated", 1);
|
||||||
|
user.getEventManager().waitUntilEventReaches("accessAllowed", 1);
|
||||||
|
user.getEventManager().waitUntilEventReaches("streamCreated", 1);
|
||||||
|
user.getEventManager().waitUntilEventReaches("streamPlaying", 1);
|
||||||
|
|
||||||
|
final String connectionId = getOwnConnectionId(user, 0);
|
||||||
|
|
||||||
|
final int LOOPS = 10;
|
||||||
|
|
||||||
|
this.sttSubUser(user, 0, 0, "en-US", true, false);
|
||||||
|
for (int i = 0; i < LOOPS; i++) {
|
||||||
|
this.sttUnsubUser(user, 0, 0, false, false);
|
||||||
|
this.sttSubUser(user, 0, 0, "en-US", false, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
Assert.assertEquals("Wrong number of connectionCreated events", 1,
|
||||||
|
user.getEventManager().getNumEvents("connectionCreated").get());
|
||||||
|
|
||||||
|
user.getEventManager().clearAllCurrentEvents(0);
|
||||||
|
user.getEventManager().clearAllCurrentEvents();
|
||||||
|
|
||||||
|
final CountDownLatch latch = new CountDownLatch(1);
|
||||||
|
List<JsonObject> stts = new ArrayList<>();
|
||||||
|
user.getEventManager().on(0, "speechToTextMessage", e -> {
|
||||||
|
stts.add(e);
|
||||||
|
if ("recognized".equals(e.get("reason").getAsString())) {
|
||||||
|
latch.countDown();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
latch.await();
|
||||||
|
|
||||||
|
final List<JsonObject> finalStts = new ArrayList<>();
|
||||||
|
finalStts.addAll(stts);
|
||||||
|
|
||||||
|
for (JsonObject event : finalStts) {
|
||||||
|
Assert.assertEquals(connectionId,
|
||||||
|
event.get("connection").getAsJsonObject().get("connectionId").getAsString());
|
||||||
|
Assert.assertEquals("en-US", event.get("lang").getAsString());
|
||||||
|
Assert.assertFalse(event.get("text").getAsString().isBlank());
|
||||||
|
Assert.assertFalse(event.get("raw").getAsString().isBlank());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected void restartOpenViduServerIfNecessary(Boolean wantedNetworkQuality, Integer wantedNetworkQualityInterval,
|
protected void restartOpenViduServerIfNecessary(Boolean wantedNetworkQuality, Integer wantedNetworkQualityInterval,
|
||||||
String wantedSpeechToText) {
|
String wantedSpeechToText) {
|
||||||
|
@ -1495,8 +1547,8 @@ public class OpenViduProTestAppE2eTest extends AbstractOpenViduTestappE2eTest {
|
||||||
|
|
||||||
private String getOwnConnectionId(OpenViduTestappUser user, int numberOfUser) {
|
private String getOwnConnectionId(OpenViduTestappUser user, int numberOfUser) {
|
||||||
return user.getWaiter().until(d -> {
|
return user.getWaiter().until(d -> {
|
||||||
List<WebElement> firstOpenviduEvent = d.findElements(By.cssSelector("#openvidu-instance-" + numberOfUser
|
List<WebElement> firstOpenviduEvent = d.findElements(By.cssSelector(
|
||||||
+ " .event-list > .mat-expansion-panel:first-child"));
|
"#openvidu-instance-" + numberOfUser + " .event-list > .mat-expansion-panel:first-child"));
|
||||||
if (firstOpenviduEvent.size() == 0) {
|
if (firstOpenviduEvent.size() == 0) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -1526,8 +1578,8 @@ public class OpenViduProTestAppE2eTest extends AbstractOpenViduTestappE2eTest {
|
||||||
langInput.clear();
|
langInput.clear();
|
||||||
langInput.sendKeys(language);
|
langInput.sendKeys(language);
|
||||||
user.getDriver().findElement(By.cssSelector("#sub-stt-btn")).click();
|
user.getDriver().findElement(By.cssSelector("#sub-stt-btn")).click();
|
||||||
user.getWaiter().until(ExpectedConditions.attributeToBe(By.id("operation-response-text-area"), "value",
|
user.getWaiter().until(
|
||||||
"Subscribed to STT"));
|
ExpectedConditions.attributeToBe(By.id("operation-response-text-area"), "value", "Subscribed to STT"));
|
||||||
if (closeDialog) {
|
if (closeDialog) {
|
||||||
user.getDriver().findElement(By.id("close-dialog-btn")).click();
|
user.getDriver().findElement(By.id("close-dialog-btn")).click();
|
||||||
Thread.sleep(500);
|
Thread.sleep(500);
|
||||||
|
|
Loading…
Reference in New Issue