From 52655a6ad96715bd980dc3761bcb35a11a90a8ff Mon Sep 17 00:00:00 2001 From: pabloFuente Date: Tue, 23 Jun 2026 17:36:10 +0200 Subject: [PATCH] openvidu-test-e2e: atomic get subscriber video codec function --- .../test/e2e/OpenViduTestAppE2eTest.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) 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 af67cb004..1fab8f16d 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 @@ -4358,14 +4358,16 @@ public class OpenViduTestAppE2eTest extends AbstractOpenViduTestappE2eTest { private String getSubscriberVideoCodec(OpenViduTestappUser user, WebElement subscriberVideo) { waitUntilVideoLayersNotEmpty(user, subscriberVideo); - // The "codec" field is derived from a separate "codec" stats report matched by - // codecId. In Firefox it may appear a few stat cycles after frames already - // flow, so wait for it to exist instead of reading it early to avoid a NPE. - this.waitUntilAux(user, subscriberVideo, - () -> getLayersAsJsonArray(user, subscriberVideo).get(0).getAsJsonObject().get("codec") != null, - "Timeout waiting for codec to exist"); - JsonArray json = this.getLayersAsJsonArray(user, subscriberVideo); - return json.get(0).getAsJsonObject().get("codec").getAsString(); + final java.util.concurrent.atomic.AtomicReference codec = new java.util.concurrent.atomic.AtomicReference<>(); + this.waitUntilAux(user, subscriberVideo, () -> { + JsonElement codecElement = getLayersAsJsonArray(user, subscriberVideo).get(0).getAsJsonObject().get("codec"); + if (codecElement != null && !codecElement.isJsonNull()) { + codec.set(codecElement.getAsString()); + return true; + } + return false; + }, "Timeout waiting for codec to exist"); + return codec.get(); } // If rid is null, retrieve the first layer