Title: [218518] trunk/LayoutTests
Revision
218518
Author
commit-qu...@webkit.org
Date
2017-06-19 16:53:00 -0700 (Mon, 19 Jun 2017)

Log Message

Improve debugging ability of some webrtc tests
https://bugs.webkit.org/show_bug.cgi?id=173549

Patch by Youenn Fablet <you...@apple.com> on 2017-06-19
Reviewed by Eric Carlson.

Improve debugging ability for first two tests.
Improve reliability for the next three tests.

* webrtc/audio-replace-track-expected.txt:
* webrtc/audio-replace-track.html: Checking connected state.
* webrtc/video-mute-expected.txt:
* webrtc/video-mute.html: Ditto.
* webrtc/video-replace-track-to-null.html: Improving reliability of test.
* webrtc/video-rotation.html: Adding some delay before testing black frames and increasing delay between the tests..
* webrtc/video-unmute.html: Using counter based testing of black frames.

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (218517 => 218518)


--- trunk/LayoutTests/ChangeLog	2017-06-19 23:51:00 UTC (rev 218517)
+++ trunk/LayoutTests/ChangeLog	2017-06-19 23:53:00 UTC (rev 218518)
@@ -1,3 +1,21 @@
+2017-06-19  Youenn Fablet  <you...@apple.com>
+
+        Improve debugging ability of some webrtc tests
+        https://bugs.webkit.org/show_bug.cgi?id=173549
+
+        Reviewed by Eric Carlson.
+
+        Improve debugging ability for first two tests.
+        Improve reliability for the next three tests.
+
+        * webrtc/audio-replace-track-expected.txt:
+        * webrtc/audio-replace-track.html: Checking connected state.
+        * webrtc/video-mute-expected.txt:
+        * webrtc/video-mute.html: Ditto.
+        * webrtc/video-replace-track-to-null.html: Improving reliability of test.
+        * webrtc/video-rotation.html: Adding some delay before testing black frames and increasing delay between the tests..
+        * webrtc/video-unmute.html: Using counter based testing of black frames.
+
 2017-06-19  Alex Christensen  <achristen...@webkit.org>
 
         [Cocoa] implement URLSession:task:needNewBodyStream: delegate method

Modified: trunk/LayoutTests/webrtc/audio-replace-track-expected.txt (218517 => 218518)


--- trunk/LayoutTests/webrtc/audio-replace-track-expected.txt	2017-06-19 23:51:00 UTC (rev 218517)
+++ trunk/LayoutTests/webrtc/audio-replace-track-expected.txt	2017-06-19 23:53:00 UTC (rev 218518)
@@ -1,5 +1,6 @@
 
 PASS Starting an audio connection 
+PASS Ensuring connection state is connected 
 PASS Ensuring mock audio source is received on the remote side 
 PASS Using replaceTrack for audio 
 PASS Ensuring remote audio gets the replacing track data 

Modified: trunk/LayoutTests/webrtc/audio-replace-track.html (218517 => 218518)


--- trunk/LayoutTests/webrtc/audio-replace-track.html	2017-06-19 23:51:00 UTC (rev 218517)
+++ trunk/LayoutTests/webrtc/audio-replace-track.html	2017-06-19 23:53:00 UTC (rev 218518)
@@ -2,7 +2,7 @@
 <html>
 <head>
     <meta charset="utf-8">
-    <title>Testing local audio capture playback causes "playing" event to fire</title>
+    <title>Testing replacing an audio track during a WebRTC call</title>
     <script src=""
     <script src=""
     <script src =""
@@ -12,6 +12,7 @@
     var sender;
     var remoteStream;
     var secondStream;
+    var receivingConnection;
     promise_test((test) => {
         if (window.testRunner)
             testRunner.setUserMediaPermission(true);
@@ -21,6 +22,7 @@
                 createConnections((firstConnection) => {
                     sender = firstConnection.addTrack(firstStream.getAudioTracks()[0], firstStream);
                 }, (secondConnection) => {
+                    receivingConnection = secondConnection;
                     secondConnection._ontrack_ = (trackEvent) => { resolve(trackEvent.streams[0]); };
                 });
                 setTimeout(() => reject("Test timed out"), 5000);
@@ -31,6 +33,18 @@
     }, "Starting an audio connection");
 
     promise_test(() => {
+        if (receivingConnection.connectionState === "connected")
+            return Promise.resolve();
+        return new Promise((resolve, reject) => {
+            receivingConnection._onconnectionstatechange_ = () => {
+                if (receivingConnection.connectionState === "connected")
+                    resolve();
+            };
+            setTimeout(() => reject("Test timed out"), 5000);
+        });
+    }, "Ensuring connection state is connected");
+
+    promise_test(() => {
         return doHumAnalysis(remoteStream, true).then((result) => {
             assert_true(result, "heard hum 1");
         });

Modified: trunk/LayoutTests/webrtc/video-mute-expected.txt (218517 => 218518)


--- trunk/LayoutTests/webrtc/video-mute-expected.txt	2017-06-19 23:51:00 UTC (rev 218517)
+++ trunk/LayoutTests/webrtc/video-mute-expected.txt	2017-06-19 23:53:00 UTC (rev 218518)
@@ -3,6 +3,7 @@
   
 
 PASS Setting video exchange 
+PASS Ensuring connection state is connected 
 PASS Track is enabled, video should not be black 
 PASS Track is disabled, video should be black 
 PASS If disabled, black frames should still be coming 

Modified: trunk/LayoutTests/webrtc/video-mute.html (218517 => 218518)


--- trunk/LayoutTests/webrtc/video-mute.html	2017-06-19 23:51:00 UTC (rev 218517)
+++ trunk/LayoutTests/webrtc/video-mute.html	2017-06-19 23:53:00 UTC (rev 218518)
@@ -2,7 +2,7 @@
 <html>
     <head>
         <meta charset="utf-8">
-        <title>Testing basic video exchange from offerer to receiver</title>
+        <title>Testing muting video</title>
         <script src=""
         <script src=""
     </head>
@@ -52,6 +52,7 @@
 
 var track;
 var remoteTrack;
+var receivingConnection;
 promise_test((test) => {
     if (window.testRunner)
         testRunner.setUserMediaPermission(true);
@@ -63,9 +64,10 @@
             createConnections((firstConnection) => {
                 firstConnection.addTrack(track, localStream);
             }, (secondConnection) => {
+                receivingConnection = secondConnection;
                 secondConnection._ontrack_ = (trackEvent) => {
                     remoteTrack = trackEvent.track;
-                    resolve(trackEvent.streams[0]); 
+                    resolve(trackEvent.streams[0]);
                 };
             });
             setTimeout(() => reject("Test timed out"), 5000);
@@ -76,6 +78,18 @@
     });
 }, "Setting video exchange");
 
+promise_test(() => {
+    if (receivingConnection.connectionState === "connected")
+        return Promise.resolve();
+    return new Promise((resolve, reject) => {
+        receivingConnection._onconnectionstatechange_ = () => {
+            if (receivingConnection.connectionState === "connected")
+                resolve();
+        };
+        setTimeout(() => reject("Test timed out"), 5000);
+    });
+}, "Ensuring connection state is connected");
+
 promise_test((test) => {
     return checkVideoBlack(false, "canvas1");
 }, "Track is enabled, video should not be black");

Modified: trunk/LayoutTests/webrtc/video-replace-track-to-null.html (218517 => 218518)


--- trunk/LayoutTests/webrtc/video-replace-track-to-null.html	2017-06-19 23:51:00 UTC (rev 218517)
+++ trunk/LayoutTests/webrtc/video-replace-track-to-null.html	2017-06-19 23:53:00 UTC (rev 218518)
@@ -32,7 +32,7 @@
     firstFrameData = grabImagePixels();
 }
 
-function testCameraImage()
+function checkCameraImageIsDifferent()
 {
     data = ""
 
@@ -47,9 +47,25 @@
             break;
         }
     }
-    assert_false(same);
+    return !same;
 }
 
+function testCameraImage(resolve, reject, counter)
+{
+    if (!counter)
+        counter = 0;
+
+    if (checkCameraImageIsDifferent()) {
+        resolve();
+        return;
+    }
+    if (++counter === 20) {
+        reject("testCameraImage timed out");
+        return;
+    }
+    setTimeout(() => testCameraImage(resolve, reject, counter));
+}
+
 function testStoppedImage()
 {
     assert_array_equals(grabImagePixels(), firstFrameData);
@@ -83,7 +99,9 @@
         storeFrame();
         return waitFor(100);
     }).then(() => {
-        testCameraImage();
+        return new Promise((resolve, reject) => {
+            testCameraImage(resolve, reject);
+        });
     }).then(() => {
         promise = sender.replaceTrack(null);
         assert_true(!!sender.track);

Modified: trunk/LayoutTests/webrtc/video-rotation.html (218517 => 218518)


--- trunk/LayoutTests/webrtc/video-rotation.html	2017-06-19 23:51:00 UTC (rev 218517)
+++ trunk/LayoutTests/webrtc/video-rotation.html	2017-06-19 23:53:00 UTC (rev 218518)
@@ -2,7 +2,7 @@
 <html>
     <head>
         <meta charset="utf-8">
-        <title>Testing basic video exchange from offerer to receiver</title>
+        <title>Testing video rotation in basic video exchange </title>
         <script src=""
         <script src=""
     </head>
@@ -37,7 +37,7 @@
         return;
     }
 
-    setTimeout(() => pollVideoBlackCheck(expected, id, resolve), 50);
+    setTimeout(() => pollVideoBlackCheck(expected, id, resolve), 100);
 }
 
 function checkVideoBlack(expected, id)
@@ -49,7 +49,6 @@
 }
 
 var track;
-var remoteTrack;
 promise_test((test) => {
     if (window.testRunner)
         testRunner.setUserMediaPermission(true);
@@ -64,8 +63,7 @@
                     internals.applyRotationForOutgoingVideoSources(firstConnection);
             }, (secondConnection) => {
                 secondConnection._ontrack_ = (trackEvent) => {
-                    remoteTrack = trackEvent.track;
-                    resolve(trackEvent.streams[0]); 
+                    resolve(trackEvent.streams[0]);
                 };
             });
             setTimeout(() => reject("Test timed out"), 5000);
@@ -91,7 +89,9 @@
 
 promise_test((test) => {
     track.enabled = false;
-    return checkVideoBlack(true, "canvas2");
+    return waitFor(500).then(() => {
+        return checkVideoBlack(true, "canvas2");
+    })
 }, "Track is disabled, video should be black");
 
         </script>

Modified: trunk/LayoutTests/webrtc/video-unmute.html (218517 => 218518)


--- trunk/LayoutTests/webrtc/video-unmute.html	2017-06-19 23:51:00 UTC (rev 218517)
+++ trunk/LayoutTests/webrtc/video-unmute.html	2017-06-19 23:53:00 UTC (rev 218518)
@@ -31,7 +31,7 @@
     return true;
 }
 
-function pollVideoBlackCheck(expected, id, resolve)
+function pollVideoBlackCheck(expected, id, resolve, reject, counter)
 {
     if (isVideoBlack(id) === expected) {
         resolve();
@@ -38,7 +38,13 @@
         return;
     }
 
-    setTimeout(() => pollVideoBlackCheck(expected, id, resolve), 50);
+    if (!counter)
+        counter = 0;
+    else if (++counter > 20) {
+        reject("test for " + id + " timed out");
+        return;
+    }
+    setTimeout(() => pollVideoBlackCheck(expected, id, resolve, reject, counter), 100);
 }
 
 function checkVideoBlack(expected, id)
@@ -45,7 +51,6 @@
 {
     return new Promise((resolve, reject) => {
         pollVideoBlackCheck(expected, id, resolve);
-        setTimeout(() => reject("checkVideoBlack timed out for " + id + " expected " + expected), 5000);
     });
 }
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to