From 0d73bdc462bd4ccef4792bfc436bbc4080bdec51 Mon Sep 17 00:00:00 2001 From: pabloFuente Date: Mon, 7 Nov 2022 13:35:07 +0100 Subject: [PATCH] openvidu-server: simplify STT operations with single a connectionId --- .../client/internal/ProtocolElements.java | 5 ++-- .../openvidu/server/core/SessionManager.java | 5 ++-- .../kurento/core/KurentoSessionManager.java | 5 ++-- .../io/openvidu/server/rpc/RpcHandler.java | 13 +++++----- openvidu-test-e2e/pom.xml | 6 ++--- .../io/openvidu/test/e2e/OpenViduTestE2e.java | 2 +- .../test/e2e/OpenViduTestAppE2eTest.java | 24 +++++++++---------- ...her-stream-operations-dialog.component.css | 9 ++++++- ...er-stream-operations-dialog.component.html | 7 +++--- 9 files changed, 41 insertions(+), 35 deletions(-) diff --git a/openvidu-client/src/main/java/io/openvidu/client/internal/ProtocolElements.java b/openvidu-client/src/main/java/io/openvidu/client/internal/ProtocolElements.java index d458402c..c02de34f 100644 --- a/openvidu-client/src/main/java/io/openvidu/client/internal/ProtocolElements.java +++ b/openvidu-client/src/main/java/io/openvidu/client/internal/ProtocolElements.java @@ -149,11 +149,12 @@ public class ProtocolElements { public static final String FORCIBLYRECONNECTSUBSCRIBER_SDPOFFER_PARAM = "sdpOffer"; public static final String SUBSCRIBETOSPEECHTOTEXT_METHOD = "subscribeToSpeechToText"; - public static final String SUBSCRIBETOSPEECHTOTEXT_CONNECTIONIDS_PARAM = "connectionIds"; + public static final String SUBSCRIBETOSPEECHTOTEXT_CONNECTIONID_PARAM = "connectionId"; public static final String SUBSCRIBETOSPEECHTOTEXT_LANG_PARAM = "lang"; public static final String UNSUBSCRIBEFROMSPEECHTOTEXT_METHOD = "unsubscribeFromSpeechToText"; - public static final String UNSUBSCRIBEFROMSPEECHTOTEXT_CONNECTIONIDS_PARAM = "connectionIds"; + public static final String UNSUBSCRIBEFROMSPEECHTOTEXT_CONNECTIONID_PARAM = "connectionId"; + // ---------------------------- SERVER RESPONSES & EVENTS ----------------- diff --git a/openvidu-server/src/main/java/io/openvidu/server/core/SessionManager.java b/openvidu-server/src/main/java/io/openvidu/server/core/SessionManager.java index 570e52f0..edfe41c4 100644 --- a/openvidu-server/src/main/java/io/openvidu/server/core/SessionManager.java +++ b/openvidu-server/src/main/java/io/openvidu/server/core/SessionManager.java @@ -39,7 +39,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; @@ -189,10 +188,10 @@ public abstract class SessionManager { Boolean videoActive, Boolean audioActive); public abstract void onSubscribeToSpeechToText(Participant participant, Integer transactionId, String lang, - JsonArray connectionIds); + String connectionId); public abstract void onUnsubscribeFromSpeechToText(Participant participant, Integer transactionId, - JsonArray connectionIds); + String connectionId); public void onEcho(String participantPrivateId, Integer requestId) { sessionEventsHandler.onEcho(participantPrivateId, requestId); diff --git a/openvidu-server/src/main/java/io/openvidu/server/kurento/core/KurentoSessionManager.java b/openvidu-server/src/main/java/io/openvidu/server/kurento/core/KurentoSessionManager.java index 6bbb88f5..f71eeb04 100644 --- a/openvidu-server/src/main/java/io/openvidu/server/kurento/core/KurentoSessionManager.java +++ b/openvidu-server/src/main/java/io/openvidu/server/kurento/core/KurentoSessionManager.java @@ -42,7 +42,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; @@ -1202,13 +1201,13 @@ public class KurentoSessionManager extends SessionManager { @Override public void onSubscribeToSpeechToText(Participant participant, Integer transactionId, String lang, - JsonArray connectionIds) { + String connectionId) { sessionEventsHandler.onUnsubscribeToSpeechToText(participant, transactionId, new OpenViduException( Code.WRONG_OPENVIDU_EDITION_ERROR_CODE, "Speech To Text requires OpenVidu Pro/Enterprise edition")); } @Override - public void onUnsubscribeFromSpeechToText(Participant participant, Integer transactionId, JsonArray connectionIds) { + public void onUnsubscribeFromSpeechToText(Participant participant, Integer transactionId, String connectionId) { sessionEventsHandler.onUnsubscribeToSpeechToText(participant, transactionId, new OpenViduException( Code.WRONG_OPENVIDU_EDITION_ERROR_CODE, "Speech To Text requires OpenVidu Pro/Enterprise edition")); } diff --git a/openvidu-server/src/main/java/io/openvidu/server/rpc/RpcHandler.java b/openvidu-server/src/main/java/io/openvidu/server/rpc/RpcHandler.java index 47636aa1..10e9d367 100644 --- a/openvidu-server/src/main/java/io/openvidu/server/rpc/RpcHandler.java +++ b/openvidu-server/src/main/java/io/openvidu/server/rpc/RpcHandler.java @@ -38,7 +38,6 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpHeaders; -import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; @@ -733,17 +732,17 @@ public class RpcHandler extends DefaultJsonRpcHandler { private void subscribeToSpeechToText(RpcConnection rpcConnection, Request request) { Participant participant = sanityCheckOfSession(rpcConnection, "subscribeToSpeechToText"); - JsonArray connectionIds = (JsonArray) RpcHandler.getParam(request, - ProtocolElements.SUBSCRIBETOSPEECHTOTEXT_CONNECTIONIDS_PARAM); + String connectionId = RpcHandler.getStringParam(request, + ProtocolElements.SUBSCRIBETOSPEECHTOTEXT_CONNECTIONID_PARAM); String lang = RpcHandler.getStringParam(request, ProtocolElements.SUBSCRIBETOSPEECHTOTEXT_LANG_PARAM); - sessionManager.onSubscribeToSpeechToText(participant, request.getId(), lang, connectionIds); + sessionManager.onSubscribeToSpeechToText(participant, request.getId(), lang, connectionId); } private void unsubscribeFromSpeechToText(RpcConnection rpcConnection, Request request) { Participant participant = sanityCheckOfSession(rpcConnection, "unsubscribeFromSpeechToText"); - JsonArray connectionIds = (JsonArray) RpcHandler.getParam(request, - ProtocolElements.UNSUBSCRIBEFROMSPEECHTOTEXT_CONNECTIONIDS_PARAM); - sessionManager.onUnsubscribeFromSpeechToText(participant, request.getId(), connectionIds); + String connectionId = RpcHandler.getStringParam(request, + ProtocolElements.UNSUBSCRIBEFROMSPEECHTOTEXT_CONNECTIONID_PARAM); + sessionManager.onUnsubscribeFromSpeechToText(participant, request.getId(), connectionId); } private void echo(RpcConnection rpcConnection, Request request) { diff --git a/openvidu-test-e2e/pom.xml b/openvidu-test-e2e/pom.xml index e535e3b4..3eeddef1 100644 --- a/openvidu-test-e2e/pom.xml +++ b/openvidu-test-e2e/pom.xml @@ -124,9 +124,9 @@ ${version.testcontainers} - org.apache.commons - commons-text - ${version.commons-text} + info.debatty + java-string-similarity + 2.0.0 diff --git a/openvidu-test-e2e/src/main/java/io/openvidu/test/e2e/OpenViduTestE2e.java b/openvidu-test-e2e/src/main/java/io/openvidu/test/e2e/OpenViduTestE2e.java index 0ceeffb1..5e9f20eb 100644 --- a/openvidu-test-e2e/src/main/java/io/openvidu/test/e2e/OpenViduTestE2e.java +++ b/openvidu-test-e2e/src/main/java/io/openvidu/test/e2e/OpenViduTestE2e.java @@ -338,7 +338,7 @@ public class OpenViduTestE2e { case "chromeFakeAudio": container = chromeContainer("selenium/standalone-chrome:" + CHROME_VERSION, 2147483648L, 1, true); setupBrowserAux(BrowserNames.CHROME, container, false); - browserUser = new ChromeUser("TestUser", 50, null, Paths.get("/opt/openvidu/stt-test2.wav")); + browserUser = new ChromeUser("TestUser", 50, null, Paths.get("/opt/openvidu/stt-test.wav")); break; case "chromeVirtualBackgroundFakeVideo": container = chromeContainer("selenium/standalone-chrome:" + CHROME_VERSION, 2147483648L, 1, false); diff --git a/openvidu-test-e2e/src/test/java/io/openvidu/test/e2e/OpenViduTestAppE2eTest.java b/openvidu-test-e2e/src/test/java/io/openvidu/test/e2e/OpenViduTestAppE2eTest.java index 8ea31ede..2af4b1db 100644 --- a/openvidu-test-e2e/src/test/java/io/openvidu/test/e2e/OpenViduTestAppE2eTest.java +++ b/openvidu-test-e2e/src/test/java/io/openvidu/test/e2e/OpenViduTestAppE2eTest.java @@ -2168,12 +2168,12 @@ public class OpenViduTestAppE2eTest extends AbstractOpenViduTestappE2eTest { filterTypeInput.sendKeys("NotAllowedFilter"); user.getDriver().findElement(By.id("apply-filter-btn")).click(); - user.getWaiter().until(ExpectedConditions.attributeContains(By.id("filter-response-text-area"), "value", + user.getWaiter().until(ExpectedConditions.attributeContains(By.id("operation-response-text-area"), "value", "Error [You don't have permissions to apply a filter]")); // Try to execute method over not applied filter user.getDriver().findElement(By.id("exec-filter-btn")).click(); - user.getWaiter().until(ExpectedConditions.attributeContains(By.id("filter-response-text-area"), "value", + user.getWaiter().until(ExpectedConditions.attributeContains(By.id("operation-response-text-area"), "value", "has no filter applied in session")); // Apply allowed video filter @@ -2184,11 +2184,11 @@ public class OpenViduTestAppE2eTest extends AbstractOpenViduTestappE2eTest { filterOptionsInput.sendKeys("{\"command\": \"videobalance saturation=0.0\"}"); user.getDriver().findElement(By.id("apply-filter-btn")).click(); user.getWaiter().until( - ExpectedConditions.attributeContains(By.id("filter-response-text-area"), "value", "Filter applied")); + ExpectedConditions.attributeContains(By.id("operation-response-text-area"), "value", "Filter applied")); // Try to apply another filter user.getDriver().findElement(By.id("apply-filter-btn")).click(); - user.getWaiter().until(ExpectedConditions.attributeContains(By.id("filter-response-text-area"), "value", + user.getWaiter().until(ExpectedConditions.attributeContains(By.id("operation-response-text-area"), "value", "Error [There is already a filter applied")); // Analyze Chrome fake video stream with gray filter (GRAY color) @@ -2206,7 +2206,7 @@ public class OpenViduTestAppE2eTest extends AbstractOpenViduTestappE2eTest { filterParamsInput.clear(); filterParamsInput.sendKeys("{\"propertyName\":\"saturation\",\"propertyValue\":\"1.0\"}"); user.getDriver().findElement(By.id("exec-filter-btn")).click(); - user.getWaiter().until(ExpectedConditions.attributeContains(By.id("filter-response-text-area"), "value", + user.getWaiter().until(ExpectedConditions.attributeContains(By.id("operation-response-text-area"), "value", "Filter method executed")); // Analyze Chrome fake video stream without gray filter (GREEN color) @@ -2246,7 +2246,7 @@ public class OpenViduTestAppE2eTest extends AbstractOpenViduTestappE2eTest { Thread.sleep(500); user.getDriver().findElement(By.id("remove-filter-btn")).click(); user.getWaiter().until( - ExpectedConditions.attributeContains(By.id("filter-response-text-area"), "value", "Filter removed")); + ExpectedConditions.attributeContains(By.id("operation-response-text-area"), "value", "Filter removed")); user.getEventManager().waitUntilEventReaches("streamPropertyChanged", 6); Thread.sleep(1000); @@ -2318,7 +2318,7 @@ public class OpenViduTestAppE2eTest extends AbstractOpenViduTestappE2eTest { input.sendKeys("{}"); user.getDriver().findElement(By.id("apply-filter-btn")).click(); user.getWaiter().until( - ExpectedConditions.attributeContains(By.id("filter-response-text-area"), "value", "Filter applied")); + ExpectedConditions.attributeContains(By.id("operation-response-text-area"), "value", "Filter applied")); user.getEventManager().waitUntilEventReaches("streamPropertyChanged", 2); @@ -2327,14 +2327,14 @@ public class OpenViduTestAppE2eTest extends AbstractOpenViduTestappE2eTest { input.clear(); input.sendKeys("CodeFound"); user.getDriver().findElement(By.id("sub-filter-event-btn")).click(); - user.getWaiter().until(ExpectedConditions.attributeContains(By.id("filter-response-text-area"), "value", + user.getWaiter().until(ExpectedConditions.attributeContains(By.id("operation-response-text-area"), "value", "Filter event listener added")); user.getEventManager().waitUntilEventReaches("CodeFound", 2); // Publisher unsubscribes from "CodeFound" filter event user.getDriver().findElement(By.id("unsub-filter-event-btn")).click(); - user.getWaiter().until(ExpectedConditions.attributeContains(By.id("filter-response-text-area"), "value", + user.getWaiter().until(ExpectedConditions.attributeContains(By.id("operation-response-text-area"), "value", "Filter event listener removed")); // In case some filter event was receive while waiting for unsubscription @@ -2359,7 +2359,7 @@ public class OpenViduTestAppE2eTest extends AbstractOpenViduTestappE2eTest { input.clear(); input.sendKeys("CodeFound"); user.getDriver().findElement(By.id("sub-filter-event-btn")).click(); - user.getWaiter().until(ExpectedConditions.attributeContains(By.id("filter-response-text-area"), "value", + user.getWaiter().until(ExpectedConditions.attributeContains(By.id("operation-response-text-area"), "value", "Filter event listener added")); user.getEventManager().waitUntilEventReaches("CodeFound", 1); @@ -2367,7 +2367,7 @@ public class OpenViduTestAppE2eTest extends AbstractOpenViduTestappE2eTest { // Moderator removes the Publisher's filter user.getDriver().findElement(By.id("remove-filter-btn")).click(); user.getWaiter().until( - ExpectedConditions.attributeContains(By.id("filter-response-text-area"), "value", "Filter removed")); + ExpectedConditions.attributeContains(By.id("operation-response-text-area"), "value", "Filter removed")); // In case some filter event was receive while waiting for filter removal user.getEventManager().clearCurrentEvents("CodeFound"); @@ -4068,7 +4068,7 @@ public class OpenViduTestAppE2eTest extends AbstractOpenViduTestappE2eTest { input.clear(); input.sendKeys("CodeFound"); user.getDriver().findElement(By.id("sub-filter-event-btn")).click(); - user.getWaiter().until(ExpectedConditions.attributeContains(By.id("filter-response-text-area"), "value", + user.getWaiter().until(ExpectedConditions.attributeContains(By.id("operation-response-text-area"), "value", "Filter event listener added")); CustomWebhook.waitForEvent("filterEventDispatched", 2); user.getDriver().findElement(By.id("unsub-filter-event-btn")).click(); diff --git a/openvidu-testapp/src/app/components/dialogs/other-stream-operations-dialog/other-stream-operations-dialog.component.css b/openvidu-testapp/src/app/components/dialogs/other-stream-operations-dialog/other-stream-operations-dialog.component.css index 96f4d065..e79a9608 100644 --- a/openvidu-testapp/src/app/components/dialogs/other-stream-operations-dialog/other-stream-operations-dialog.component.css +++ b/openvidu-testapp/src/app/components/dialogs/other-stream-operations-dialog/other-stream-operations-dialog.component.css @@ -7,7 +7,8 @@ resize: none; } -mat-dialog-content button, mat-divider { +mat-dialog-content button, +mat-divider { margin-bottom: 5px; } @@ -26,4 +27,10 @@ mat-dialog-content button { font-weight: 400; margin-bottom: 5px; margin-top: 13px +} + +#clear-response-text-area-btn { + position: absolute; + top: 0; + right: 0; } \ No newline at end of file diff --git a/openvidu-testapp/src/app/components/dialogs/other-stream-operations-dialog/other-stream-operations-dialog.component.html b/openvidu-testapp/src/app/components/dialogs/other-stream-operations-dialog/other-stream-operations-dialog.component.html index 4d460d07..9fc04220 100644 --- a/openvidu-testapp/src/app/components/dialogs/other-stream-operations-dialog/other-stream-operations-dialog.component.html +++ b/openvidu-testapp/src/app/components/dialogs/other-stream-operations-dialog/other-stream-operations-dialog.component.html @@ -23,9 +23,6 @@ - - -
@@ -55,6 +52,10 @@
+ + + +