Bug 1093835 - Check audio flow in test_pc_addSecondAudioStreamNoBundle.html. r?jib draft
authorAndreas Pehrson <pehrsons@gmail.com>
Thu, 04 May 2017 11:38:19 +0200
changeset 572602 7d04cc4f6708f6d8226aa84517d4bafc13c93920
parent 572601 713b2a0489c7633e7401302d48d3e9126c45c182
child 572603 d61041f9f9fd823de30417be0269e409e79ce2d9
push id57123
push userbmo:pehrson@telenordigital.com
push dateThu, 04 May 2017 11:29:40 +0000
reviewersjib
bugs1093835
milestone55.0a1
Bug 1093835 - Check audio flow in test_pc_addSecondAudioStreamNoBundle.html. r?jib MozReview-Commit-ID: I7ZpshtPgAA
dom/media/tests/mochitest/test_peerConnection_addSecondAudioStreamNoBundle.html
--- a/dom/media/tests/mochitest/test_peerConnection_addSecondAudioStreamNoBundle.html
+++ b/dom/media/tests/mochitest/test_peerConnection_addSecondAudioStreamNoBundle.html
@@ -6,34 +6,45 @@
 <body>
 <pre id="test">
 <script type="application/javascript">
   createHTML({
     bug: "1017888",
     title: "Renegotiation: add second audio stream, no bundle"
   });
 
-  var test;
-  runNetworkTest(function (options) {
-    options = options || { };
+  runNetworkTest(function (options = {}) {
     options.bundle = false;
-    test = new PeerConnectionTest(options);
+    const test = new PeerConnectionTest(options);
     addRenegotiation(test.chain,
       [
         function PC_LOCAL_ADD_SECOND_STREAM(test) {
           test.setMediaConstraints([{audio: true}, {audio: true}],
                                    [{audio: true}]);
           // Since this is a NoBundle variant, adding a track will cause us to
           // go back to checking.
           test.pcLocal.expectIceChecking();
           return test.pcLocal.getAllUserMedia([{audio: true}]);
         },
         function PC_REMOTE_EXPECT_ICE_CHECKING(test) {
           test.pcRemote.expectIceChecking();
         },
+      ],
+      [
+        function PC_REMOTE_CHECK_ADDED_TRACK(test) {
+          // We test both tracks to avoid an ordering problem
+          is(test.pcRemote._pc.getReceivers().length, 2,
+             "pcRemote should have two receivers");
+          return Promise.all(test.pcRemote._pc.getReceivers().map(r => {
+            const analyser = new AudioStreamAnalyser(
+                new AudioContext(), new MediaStream([r.track]));
+            const freq = analyser.binIndexForFrequency(TEST_AUDIO_FREQ);
+            return analyser.waitForAnalysisSuccess(arr => arr[freq] > 200);
+          }));
+        },
       ]
     );
 
     // TODO(bug 1093835): figure out how to verify if media flows through the new stream
     test.setMediaConstraints([{audio: true}], [{audio: true}]);
     test.run();
   });
 </script>