Adding Two way video and audio streaming test to RtcBot
NOTE: This code review based on this running issue:
https://review.webrtc.org/24939004/
R=andresp@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/25879004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@7498 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/webrtc/tools/rtcbot/test/two_way_video_streaming.js b/webrtc/tools/rtcbot/test/two_way_video_streaming.js
new file mode 100644
index 0000000..888542b
--- /dev/null
+++ b/webrtc/tools/rtcbot/test/two_way_video_streaming.js
@@ -0,0 +1,112 @@
+// Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
+//
+// Use of this source code is governed by a BSD-style license
+// that can be found in the LICENSE file in the root of the source
+// tree. An additional intellectual property rights grant can be found
+// in the file PATENTS. All contributing project authors may
+// be found in the AUTHORS file in the root of the source tree.
+//
+// A two way video and audio flowing test between bot 1 and bot 2.
+// The test succeeds after collecting stats for 10 seconds from both bots
+// and then write these stats to a file.
+//
+// Note: the source of the video and audio stream is getUserMedia().
+function testTwoWayVideoStreaming(test, bot1, bot2) {
+ var report = test.createStatisticsReport("two_way_video_streaming");
+ var statsCollector;
+
+ test.wait([
+ createPeerConnectionWithLocalStream.bind(bot1),
+ createPeerConnectionWithLocalStream.bind(bot2)],
+ onPeerConnectionCreated);
+
+ function createPeerConnectionWithLocalStream(done) {
+ this.getUserMedia({video:true, audio:true},
+ onUserMediaSuccess.bind(this), test.fail);
+
+ function onUserMediaSuccess(stream) {
+ test.log("User has granted access to local media.");
+ test.createTurnConfig(onTurnConfig.bind(this), test.fail);
+
+ function onTurnConfig(config) {
+ this.createPeerConnection(null, addAndShowStream.bind(this),
+ test.fail);
+ };
+
+ function addAndShowStream(pc) {
+ pc.addStream(stream);
+ this.showStream(stream.id, true, true);
+
+ done(pc);
+ }
+ }
+ }
+
+ function onPeerConnectionCreated(pc1, pc2) {
+ test.log("RTC Peers created.");
+ pc1.addEventListener('addstream', onAddStream.bind(bot1));
+ pc2.addEventListener('addstream', onAddStream.bind(bot2));
+ pc1.addEventListener('icecandidate', onIceCandidate.bind(pc2));
+ pc2.addEventListener('icecandidate', onIceCandidate.bind(pc1));
+
+ createOfferAndAnswer(pc1, pc2);
+ }
+
+ function onAddStream(event) {
+ test.log("On Add stream.");
+ this.showStream(event.stream.id, true, false);
+ }
+
+ function onIceCandidate(event) {
+ if(event.candidate) {
+ test.log(event.candidate.candidate);
+ this.addIceCandidate(event.candidate,
+ onAddIceCandidateSuccess, test.fail);
+ };
+
+ function onAddIceCandidateSuccess() {
+ test.log("Candidate added successfully");
+ };
+ }
+
+ function createOfferAndAnswer(pc1, pc2) {
+ test.log("Creating offer.");
+ pc1.createOffer(gotOffer, test.fail);
+
+ function gotOffer(offer) {
+ test.log("Got offer");
+ pc1.setLocalDescription(offer, onSetSessionDescriptionSuccess, test.fail);
+ pc2.setRemoteDescription(offer, onSetSessionDescriptionSuccess,
+ test.fail);
+ test.log("Creating answer");
+ pc2.createAnswer(gotAnswer, test.fail);
+ }
+
+ function gotAnswer(answer) {
+ test.log("Got answer");
+ pc2.setLocalDescription(answer, onSetSessionDescriptionSuccess,
+ test.fail);
+ pc1.setRemoteDescription(answer, onSetSessionDescriptionSuccess,
+ test.fail);
+ collectStats();
+ }
+
+ function onSetSessionDescriptionSuccess() {
+ test.log("Set session description success.");
+ }
+
+ function collectStats() {
+ report.collectStatsFromPeerConnection("bot1", pc1);
+ report.collectStatsFromPeerConnection("bot2", pc2);
+
+ setTimeout(function() {
+ report.finish(test.done);
+ }, 10000);
+ }
+ }
+}
+
+registerBotTest('testTwoWayVideo/android-android',
+ testTwoWayVideoStreaming, ['android-chrome', 'android-chrome']);
+registerBotTest('testTwoWayVideo/chrome-chrome',
+ testTwoWayVideoStreaming, ['chrome', 'chrome']);
\ No newline at end of file
diff --git a/webrtc/tools/rtcbot/test/webrtc_video_streaming.js b/webrtc/tools/rtcbot/test/webrtc_video_streaming.js
index 60df68e..6518c20 100644
--- a/webrtc/tools/rtcbot/test/webrtc_video_streaming.js
+++ b/webrtc/tools/rtcbot/test/webrtc_video_streaming.js
@@ -20,7 +20,7 @@
onPeerConnectionCreated);
function createPeerConnection(done) {
- test.createTurnConfig(onTrunConfig.bind(this), test.fail);
+ test.createTurnConfig(onTurnConfig.bind(this), test.fail);
function onTurnConfig(config) {
this.createPeerConnection(config, done, test.fail);