mirror of https://github.com/OpenVidu/openvidu.git
openvidu-test-e2e: fix get subscriber video codec (failing in Firefox)
parent
94b9a852da
commit
15b92f1afd
|
|
@ -2016,9 +2016,7 @@ public class OpenViduTestAppE2eTest extends AbstractOpenViduTestappE2eTest {
|
||||||
|
|
||||||
// Check subscriber's codec
|
// Check subscriber's codec
|
||||||
WebElement subscriberVideo = user.getDriver().findElement(By.cssSelector("#openvidu-instance-1 video.remote"));
|
WebElement subscriberVideo = user.getDriver().findElement(By.cssSelector("#openvidu-instance-1 video.remote"));
|
||||||
waitUntilVideoLayersNotEmpty(user, subscriberVideo);
|
String subscriberCodec = this.getSubscriberVideoCodec(user, subscriberVideo);
|
||||||
JsonArray json = this.getLayersAsJsonArray(user, subscriberVideo);
|
|
||||||
String subscriberCodec = json.get(0).getAsJsonObject().get("codec").getAsString();
|
|
||||||
Assertions.assertEquals(expectedCodec, subscriberCodec);
|
Assertions.assertEquals(expectedCodec, subscriberCodec);
|
||||||
|
|
||||||
gracefullyLeaveParticipants(user, 2);
|
gracefullyLeaveParticipants(user, 2);
|
||||||
|
|
@ -2124,9 +2122,7 @@ public class OpenViduTestAppE2eTest extends AbstractOpenViduTestappE2eTest {
|
||||||
// Check subscriber's codec
|
// Check subscriber's codec
|
||||||
WebElement subscriberVideo = firefoxUser.getDriver()
|
WebElement subscriberVideo = firefoxUser.getDriver()
|
||||||
.findElement(By.cssSelector("#openvidu-instance-0 video.remote"));
|
.findElement(By.cssSelector("#openvidu-instance-0 video.remote"));
|
||||||
waitUntilVideoLayersNotEmpty(firefoxUser, subscriberVideo);
|
String subscriberCodec = this.getSubscriberVideoCodec(firefoxUser, subscriberVideo);
|
||||||
JsonArray json = this.getLayersAsJsonArray(firefoxUser, subscriberVideo);
|
|
||||||
String subscriberCodec = json.get(0).getAsJsonObject().get("codec").getAsString();
|
|
||||||
Assertions.assertEquals(expectedCodec, subscriberCodec);
|
Assertions.assertEquals(expectedCodec, subscriberCodec);
|
||||||
latch.countDown();
|
latch.countDown();
|
||||||
latch.await(10, TimeUnit.SECONDS);
|
latch.await(10, TimeUnit.SECONDS);
|
||||||
|
|
@ -3112,8 +3108,7 @@ public class OpenViduTestAppE2eTest extends AbstractOpenViduTestappE2eTest {
|
||||||
WebElement subscriberVideo = user.getDriver().findElement(By.cssSelector("#openvidu-instance-1 video.remote"));
|
WebElement subscriberVideo = user.getDriver().findElement(By.cssSelector("#openvidu-instance-1 video.remote"));
|
||||||
|
|
||||||
// Check subscriber video codec
|
// Check subscriber video codec
|
||||||
JsonArray layers = this.getLayersAsJsonArray(user, subscriberVideo);
|
String subscriberCodec = this.getSubscriberVideoCodec(user, subscriberVideo);
|
||||||
String subscriberCodec = layers.get(0).getAsJsonObject().get("codec").getAsString();
|
|
||||||
Assertions.assertEquals("video/" + codec.toUpperCase(), subscriberCodec);
|
Assertions.assertEquals("video/" + codec.toUpperCase(), subscriberCodec);
|
||||||
|
|
||||||
// Subscriber should settle in 1920x1080p
|
// Subscriber should settle in 1920x1080p
|
||||||
|
|
@ -3176,8 +3171,7 @@ public class OpenViduTestAppE2eTest extends AbstractOpenViduTestappE2eTest {
|
||||||
WebElement subscriberVideo = user.getDriver().findElement(By.cssSelector("#openvidu-instance-1 video.remote"));
|
WebElement subscriberVideo = user.getDriver().findElement(By.cssSelector("#openvidu-instance-1 video.remote"));
|
||||||
|
|
||||||
// Check subscriber video codec
|
// Check subscriber video codec
|
||||||
JsonArray layers = this.getLayersAsJsonArray(user, subscriberVideo);
|
String subscriberCodec = this.getSubscriberVideoCodec(user, subscriberVideo);
|
||||||
String subscriberCodec = layers.get(0).getAsJsonObject().get("codec").getAsString();
|
|
||||||
Assertions.assertEquals("video/" + codec.toUpperCase(), subscriberCodec);
|
Assertions.assertEquals("video/" + codec.toUpperCase(), subscriberCodec);
|
||||||
|
|
||||||
// Subscriber should settle in 960
|
// Subscriber should settle in 960
|
||||||
|
|
@ -3244,8 +3238,7 @@ public class OpenViduTestAppE2eTest extends AbstractOpenViduTestappE2eTest {
|
||||||
WebElement subscriberVideo = user.getDriver().findElement(By.cssSelector("#openvidu-instance-1 video.remote"));
|
WebElement subscriberVideo = user.getDriver().findElement(By.cssSelector("#openvidu-instance-1 video.remote"));
|
||||||
|
|
||||||
// Check subscriber video codec
|
// Check subscriber video codec
|
||||||
JsonArray layers = this.getLayersAsJsonArray(user, subscriberVideo);
|
String subscriberCodec = this.getSubscriberVideoCodec(user, subscriberVideo);
|
||||||
String subscriberCodec = layers.get(0).getAsJsonObject().get("codec").getAsString();
|
|
||||||
Assertions.assertEquals("video/" + codec.toUpperCase(), subscriberCodec);
|
Assertions.assertEquals("video/" + codec.toUpperCase(), subscriberCodec);
|
||||||
|
|
||||||
// After subscription all layers should be active
|
// After subscription all layers should be active
|
||||||
|
|
@ -3346,9 +3339,7 @@ public class OpenViduTestAppE2eTest extends AbstractOpenViduTestappE2eTest {
|
||||||
|
|
||||||
// Subscriber video
|
// Subscriber video
|
||||||
WebElement subscriberVideo = user.getDriver().findElement(By.cssSelector("#openvidu-instance-1 video.remote"));
|
WebElement subscriberVideo = user.getDriver().findElement(By.cssSelector("#openvidu-instance-1 video.remote"));
|
||||||
waitUntilVideoLayersNotEmpty(user, subscriberVideo);
|
String subscriberCodec = this.getSubscriberVideoCodec(user, subscriberVideo);
|
||||||
JsonArray layers = this.getLayersAsJsonArray(user, subscriberVideo);
|
|
||||||
String subscriberCodec = layers.get(0).getAsJsonObject().get("codec").getAsString();
|
|
||||||
Assertions.assertEquals("video/" + codecUpperCase, subscriberCodec);
|
Assertions.assertEquals("video/" + codecUpperCase, subscriberCodec);
|
||||||
|
|
||||||
// Validate SVC by dynamically switching subscriber quality and checking
|
// Validate SVC by dynamically switching subscriber quality and checking
|
||||||
|
|
@ -4174,8 +4165,7 @@ public class OpenViduTestAppE2eTest extends AbstractOpenViduTestappE2eTest {
|
||||||
long bytesReceived = this.getSubscriberVideoBytesReceived(user, subscriberVideo);
|
long bytesReceived = this.getSubscriberVideoBytesReceived(user, subscriberVideo);
|
||||||
this.waitUntilSubscriberBytesReceivedIncrease(user, subscriberVideo, bytesReceived);
|
this.waitUntilSubscriberBytesReceivedIncrease(user, subscriberVideo, bytesReceived);
|
||||||
this.waitUntilSubscriberFramesPerSecondNotZero(user, subscriberVideo);
|
this.waitUntilSubscriberFramesPerSecondNotZero(user, subscriberVideo);
|
||||||
JsonArray json = this.getLayersAsJsonArray(user, subscriberVideo);
|
String subscriberCodec = this.getSubscriberVideoCodec(user, subscriberVideo);
|
||||||
String subscriberCodec = json.get(0).getAsJsonObject().get("codec").getAsString();
|
|
||||||
String expectedCodec = "video/VP8";
|
String expectedCodec = "video/VP8";
|
||||||
Assertions.assertEquals(expectedCodec, subscriberCodec);
|
Assertions.assertEquals(expectedCodec, subscriberCodec);
|
||||||
}
|
}
|
||||||
|
|
@ -4215,14 +4205,12 @@ public class OpenViduTestAppE2eTest extends AbstractOpenViduTestappE2eTest {
|
||||||
|
|
||||||
// Check subscriber's codec
|
// Check subscriber's codec
|
||||||
if (codec != null) {
|
if (codec != null) {
|
||||||
JsonArray json = this.getLayersAsJsonArray(user, subscriberVideo);
|
String subscriberCodec = this.getSubscriberVideoCodec(user, subscriberVideo);
|
||||||
String subscriberCodec = json.get(0).getAsJsonObject().get("codec").getAsString();
|
|
||||||
String expectedCodec = "video/" + codec.toUpperCase();
|
String expectedCodec = "video/" + codec.toUpperCase();
|
||||||
Assertions.assertEquals(expectedCodec, subscriberCodec);
|
Assertions.assertEquals(expectedCodec, subscriberCodec);
|
||||||
}
|
}
|
||||||
if (preset != null) {
|
if (preset != null) {
|
||||||
JsonArray json = this.getLayersAsJsonArray(user, subscriberVideo);
|
String subscriberCodec = this.getSubscriberVideoCodec(user, subscriberVideo);
|
||||||
String subscriberCodec = json.get(0).getAsJsonObject().get("codec").getAsString();
|
|
||||||
Assertions.assertEquals("video/H264", subscriberCodec);
|
Assertions.assertEquals("video/H264", subscriberCodec);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -4307,6 +4295,18 @@ public class OpenViduTestAppE2eTest extends AbstractOpenViduTestappE2eTest {
|
||||||
return json.get(0).getAsJsonObject().get("framesPerSecond").getAsInt();
|
return json.get(0).getAsJsonObject().get("framesPerSecond").getAsInt();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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 eagerly (which would 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();
|
||||||
|
}
|
||||||
|
|
||||||
// If rid is null, retrieve the first layer
|
// If rid is null, retrieve the first layer
|
||||||
private JsonElement getPublisherVideoLayerAttribute(OpenViduTestappUser user, WebElement publisherVideo, String rid,
|
private JsonElement getPublisherVideoLayerAttribute(OpenViduTestappUser user, WebElement publisherVideo, String rid,
|
||||||
String attribute) {
|
String attribute) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue