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
This commit is contained in:
parent
e9b7d03db6
commit
3382059e55
112
webrtc/tools/rtcbot/test/two_way_video_streaming.js
Normal file
112
webrtc/tools/rtcbot/test/two_way_video_streaming.js
Normal file
@ -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']);
|
@ -20,7 +20,7 @@ function testOneWayVideo(test, bot1, bot2) {
|
|||||||
onPeerConnectionCreated);
|
onPeerConnectionCreated);
|
||||||
|
|
||||||
function createPeerConnection(done) {
|
function createPeerConnection(done) {
|
||||||
test.createTurnConfig(onTrunConfig.bind(this), test.fail);
|
test.createTurnConfig(onTurnConfig.bind(this), test.fail);
|
||||||
|
|
||||||
function onTurnConfig(config) {
|
function onTurnConfig(config) {
|
||||||
this.createPeerConnection(config, done, test.fail);
|
this.createPeerConnection(config, done, test.fail);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user