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);
});
}