Bug 1641289: Bye, bye Steeplechase. r=dminor,froydnj
authorNils Ohlmeier [:drno] <drno@ohlmeier.org>
Fri, 29 May 2020 03:19:27 +0000
changeset 596607 1eb4ed3edfedf78bd689d1fdf9cda2ed591bdec7
parent 596606 f519fea12dfc504e55daad335bfada4866383a02
child 596608 264bbddd5c2773b0cb405683fbfe2767c55b81d4
push id13186
push userffxbld-merge
push dateMon, 01 Jun 2020 09:52:46 +0000
treeherdermozilla-beta@3e7c70a1e4a1 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersdminor, froydnj
bugs1641289
milestone78.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1641289: Bye, bye Steeplechase. r=dminor,froydnj Differential Revision: https://phabricator.services.mozilla.com/D77114
dom/media/moz.build
dom/media/tests/mochitest/head.js
dom/media/tests/mochitest/pc.js
dom/media/tests/mochitest/steeplechase.ini
dom/media/tests/mochitest/steeplechase_long/long.js
dom/media/tests/mochitest/steeplechase_long/steeplechase_long.ini
dom/media/tests/mochitest/steeplechase_long/test_peerConnection_basicAudioVideoCombined_long.html
dom/media/tests/mochitest/steeplechase_long/test_peerConnection_basicAudio_long.html
dom/media/tests/mochitest/steeplechase_long/test_peerConnection_basicVideo_long.html
dom/media/tests/mochitest/templates.js
dom/media/tests/mochitest/test_peerConnection_localRollback.html
dom/media/tests/mochitest/test_peerConnection_restartIceLocalAndRemoteRollback.html
dom/media/tests/mochitest/test_peerConnection_restartIceLocalAndRemoteRollbackNoSubsequentRestart.html
dom/media/tests/mochitest/test_peerConnection_restartIceLocalRollback.html
dom/media/tests/mochitest/test_peerConnection_restartIceLocalRollbackNoSubsequentRestart.html
python/mozbuild/mozbuild/frontend/context.py
testing/mozbase/moztest/moztest/resolve.py
testing/runtimes/manifest-runtimes-android.json
testing/runtimes/manifest-runtimes-unix.json
testing/runtimes/manifest-runtimes-windows.json
testing/testsuite-targets.mk
--- a/dom/media/moz.build
+++ b/dom/media/moz.build
@@ -84,18 +84,16 @@ MOCHITEST_MANIFESTS += [
 
 BROWSER_CHROME_MANIFESTS += [
     'mediacontrol/tests/browser.ini',
     'mediasession/test/browser.ini',
 ]
 
 if CONFIG['MOZ_WEBRTC']:
     MOCHITEST_MANIFESTS += ['tests/mochitest/mochitest.ini']
-    WEBRTC_SIGNALLING_TEST_MANIFESTS += ['tests/mochitest/steeplechase.ini']
-    WEBRTC_SIGNALLING_TEST_MANIFESTS += ['tests/mochitest/steeplechase_long/steeplechase_long.ini']
 
 XPIDL_SOURCES += [
     'nsIAudioDeviceInfo.idl',
     'nsIAutoplay.idl',
     'nsIDOMNavigatorUserMedia.idl',
     'nsIMediaManager.idl',
 ]
 
--- a/dom/media/tests/mochitest/head.js
+++ b/dom/media/tests/mochitest/head.js
@@ -414,21 +414,16 @@ function getUserMedia(constraints) {
 var setTestOptions;
 var testConfigured = new Promise(r => (setTestOptions = r));
 
 function pushPrefs(...p) {
   return SpecialPowers.pushPrefEnv({ set: p });
 }
 
 function setupEnvironment() {
-  if (!window.SimpleTest) {
-    // Running under Steeplechase
-    return;
-  }
-
   var defaultMochitestPrefs = {
     set: [
       ["media.peerconnection.enabled", true],
       ["media.peerconnection.identity.enabled", true],
       ["media.peerconnection.identity.timeout", 120000],
       ["media.peerconnection.ice.stun_client_maximum_transmits", 14],
       ["media.peerconnection.ice.trickle_grace_period", 30000],
       ["media.peerconnection.rtpsourcesapi.enabled", true],
@@ -467,35 +462,16 @@ function setupEnvironment() {
   window.finish = () => SimpleTest.finish();
   SpecialPowers.pushPrefEnv(defaultMochitestPrefs, setTestOptions);
 
   // We don't care about waiting for this to complete, we just want to ensure
   // that we don't build up a huge backlog of GC work.
   SpecialPowers.exactGC();
 }
 
-// This is called by steeplechase; which provides the test configuration options
-// directly to the test through this function.  If we're not on steeplechase,
-// the test is configured directly and immediately.
-function run_test(is_initiator, timeout) {
-  var options = { is_local: is_initiator, is_remote: !is_initiator };
-
-  setTimeout(() => {
-    unexpectedEventArrived(
-      new Error("PeerConnectionTest timed out after " + timeout + "s")
-    );
-  }, timeout);
-
-  // Also load the steeplechase test code.
-  var s = document.createElement("script");
-  s.src = "/test.js";
-  s.onload = () => setTestOptions(options);
-  document.head.appendChild(s);
-}
-
 function runTestWhenReady(testFunc) {
   setupEnvironment();
   return testConfigured
     .then(options => testFunc(options))
     .catch(e => {
       ok(
         false,
         "Error executing test: " +
--- a/dom/media/tests/mochitest/pc.js
+++ b/dom/media/tests/mochitest/pc.js
@@ -116,18 +116,16 @@ function PeerConnectionTest(options) {
     this.pcRemote = new PeerConnectionWrapper(
       "pcRemote",
       options.config_remote || options.config_local
     );
   } else {
     this.pcRemote = null;
   }
 
-  options.steeplechase = !options.is_local || !options.is_remote;
-
   // Create command chain instance and assign default commands
   this.chain = new CommandChain(this, options.commands);
 
   this.testOptions = options;
 }
 
 /** TODO: consider removing this dependency on timeouts */
 function timerGuard(p, time, message) {
@@ -427,19 +425,16 @@ PeerConnectionTest.prototype.setLocalDes
   });
 
   var stateChanged = peer.setLocalDescription(desc).then(() => {
     peer.setLocalDescDate = new Date();
   });
 
   peer.endOfTrickleSdp = peer.endOfTrickleIce
     .then(() => {
-      if (this.testOptions.steeplechase) {
-        send_message({ type: "end_of_trickle_ice" });
-      }
       return peer._pc.localDescription;
     })
     .catch(e => ok(false, "Sending EOC message failed: " + e));
 
   return Promise.all([eventFired, stateChanged]);
 };
 
 /**
@@ -2072,39 +2067,37 @@ PeerConnectionWrapper.prototype = {
   },
 
   /**
    * Checks that we are getting the media streams we expect.
    *
    * @param {object} stats
    *        The stats to check from this PeerConnectionWrapper
    */
-  checkStats(stats, twoMachines) {
+  checkStats(stats) {
     const isRemote = ({ type }) =>
       ["remote-outbound-rtp", "remote-inbound-rtp"].includes(type);
     var counters = {};
     for (let [key, res] of stats) {
       info("Checking stats for " + key + " : " + res);
       // validate stats
       ok(res.id == key, "Coherent stats id");
       const now = performance.timeOrigin + performance.now();
       const minimum = performance.timeOrigin;
       const type = isRemote(res) ? "rtcp" : "rtp";
-      if (!twoMachines) {
-        ok(
-          res.timestamp >= minimum,
-          `Valid ${type} timestamp ${res.timestamp} >= ${minimum} (
-              ${res.timestamp - minimum} ms)`
-        );
-        ok(
-          res.timestamp <= now,
-          `Valid ${type} timestamp ${res.timestamp} <= ${now} (
-              ${res.timestamp - now} ms)`
-        );
-      }
+      ok(
+        res.timestamp >= minimum,
+        `Valid ${type} timestamp ${res.timestamp} >= ${minimum} (
+            ${res.timestamp - minimum} ms)`
+      );
+      ok(
+        res.timestamp <= now,
+        `Valid ${type} timestamp ${res.timestamp} <= ${now} (
+            ${res.timestamp - now} ms)`
+      );
       if (isRemote(res)) {
         continue;
       }
       counters[res.type] = (counters[res.type] || 0) + 1;
 
       switch (res.type) {
         case "inbound-rtp":
         case "outbound-rtp":
deleted file mode 100644
--- a/dom/media/tests/mochitest/steeplechase.ini
+++ /dev/null
@@ -1,11 +0,0 @@
-[DEFAULT]
-support-files =
-  head.js
-  mediaStreamPlayback.js
-  network.js
-  pc.js
-  sdpUtils.js
-  templates.js
-  turnConfig.js
-
-[test_peerConnection_basicAudio.html]
deleted file mode 100644
--- a/dom/media/tests/mochitest/steeplechase_long/long.js
+++ /dev/null
@@ -1,223 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-/**
- * Returns true if res is a local rtp
- *
- * @param {Object} statObject
- *        One of the objects comprising the report received from getStats()
- * @returns {boolean}
- *        True if object is a local rtp
- */
-function isLocalRtp(statObject) {
-  return typeof statObject === "object" && statObject.isRemote === false;
-}
-
-/**
- * Dumps the local, dynamic parts of the stats object as a formatted block
- * Used for capturing and monitoring test status during execution
- *
- * @param {Object} stats
- *        Stats object to use for output
- * @param {string} label
- *        Used in the header of the output
- */
-function outputPcStats(stats, label) {
-  var outputStr = "\n\n";
-  function appendOutput(line) {
-    outputStr += line.toString() + "\n";
-  }
-
-  var firstRtp = true;
-  for (var prop in stats) {
-    if (isLocalRtp(stats[prop])) {
-      var rtp = stats[prop];
-      if (firstRtp) {
-        appendOutput(
-          label.toUpperCase() +
-            " STATS " +
-            "(" +
-            new Date(rtp.timestamp).toISOString() +
-            "):"
-        );
-        firstRtp = false;
-      }
-      appendOutput("  " + rtp.id + ":");
-      if (rtp.type === "inboundrtp") {
-        appendOutput("    bytesReceived: " + rtp.bytesReceived);
-        appendOutput("    jitter: " + rtp.jitter);
-        appendOutput("    packetsLost: " + rtp.packetsLost);
-        appendOutput("    packetsReceived: " + rtp.packetsReceived);
-      } else {
-        appendOutput("    bytesSent: " + rtp.bytesSent);
-        appendOutput("    packetsSent: " + rtp.packetsSent);
-      }
-    }
-  }
-  outputStr += "\n\n";
-  dump(outputStr);
-}
-
-var _lastStats = {};
-
-const MAX_ERROR_CYCLES = 5;
-var _errorCount = {};
-
-/**
- * Verifies the peer connection stats interval over interval
- *
- * @param {Object} stats
- *        Stats object to use for verification
- * @param {string} label
- *        Identifies the peer connection. Differentiates stats for
- *        interval-over-interval verification in cases where more than one set
- *        is being verified
- */
-function verifyPcStats(stats, label) {
-  const INCREASING_INBOUND_STAT_NAMES = ["bytesReceived", "packetsReceived"];
-
-  const INCREASING_OUTBOUND_STAT_NAMES = ["bytesSent", "packetsSent"];
-
-  if (_lastStats[label] !== undefined) {
-    var errorsInCycle = false;
-
-    function verifyIncrease(rtpName, statNames) {
-      var timestamp = new Date(stats[rtpName].timestamp).toISOString();
-
-      statNames.forEach(function(statName) {
-        var passed =
-          stats[rtpName][statName] > _lastStats[label][rtpName][statName];
-        if (!passed) {
-          errorsInCycle = true;
-        }
-        ok(
-          passed,
-          timestamp + "." + label + "." + rtpName + "." + statName,
-          label +
-            "." +
-            rtpName +
-            "." +
-            statName +
-            " increased (value=" +
-            stats[rtpName][statName] +
-            ")"
-        );
-      });
-    }
-
-    for (var prop in stats) {
-      if (isLocalRtp(stats[prop])) {
-        if (stats[prop].type === "inboundrtp") {
-          verifyIncrease(prop, INCREASING_INBOUND_STAT_NAMES);
-        } else {
-          verifyIncrease(prop, INCREASING_OUTBOUND_STAT_NAMES);
-        }
-      }
-    }
-
-    if (errorsInCycle) {
-      _errorCount[label] += 1;
-      info(label + ": increased error counter to " + _errorCount[label]);
-    } else {
-      // looks like we recovered from a temp glitch
-      if (_errorCount[label] > 0) {
-        info(label + ": reseting error counter to zero");
-      }
-      _errorCount[label] = 0;
-    }
-  } else {
-    _errorCount[label] = 0;
-  }
-
-  _lastStats[label] = stats;
-}
-
-/**
- * Retrieves and performs a series of operations on PeerConnection stats
- *
- * @param {PeerConnectionWrapper} pc
- *        PeerConnectionWrapper from which to get stats
- * @param {string} label
- *        Label for the peer connection, passed to each stats callback
- * @param {Array} operations
- *        Array of stats callbacks, each as function (stats, label)
- */
-function processPcStats(pc, label, operations) {
-  pc.getStats(null, function(stats) {
-    operations.forEach(function(operation) {
-      operation(stats, label);
-    });
-  });
-}
-
-/**
- * Outputs and verifies the status for local and/or remote PeerConnection as
- * appropriate
- *
- * @param {Object} test
- *        Test containing the peer connection(s) for verification
- */
-function verifyConnectionStatus(test) {
-  const OPERATIONS = [outputPcStats, verifyPcStats];
-
-  if (test.pcLocal) {
-    processPcStats(test.pcLocal, "LOCAL", OPERATIONS);
-  }
-
-  if (test.pcRemote) {
-    processPcStats(test.pcRemote, "REMOTE", OPERATIONS);
-  }
-}
-
-/**
- * Generates a setInterval wrapper command link for use in pc.js command chains
- *
- * This function returns a promise that will resolve once the link repeatedly
- * calls the given callback function every interval ms
- * until duration ms have passed, then it will continue the test.
- *
- * @param {function} callback
- *        Function to be called on each interval
- * @param {number} [interval=1000]
- *        Frequency in milliseconds with which callback will be called
- * @param {number} [duration=3 hours]
- *        Length of time in milliseconds for which callback will be called
-
-
- */
-function generateIntervalCommand(callback, interval, duration) {
-  interval = interval || 1000;
-  duration = duration || 1000 * 3600 * 3;
-
-  return function INTERVAL_COMMAND(test) {
-    return new Promise(resolve => {
-      var startTime = Date.now();
-      var intervalId = setInterval(function() {
-        if (callback) {
-          callback(test);
-        }
-
-        var failed = false;
-        Object.keys(_errorCount).forEach(function(label) {
-          if (_errorCount[label] > MAX_ERROR_CYCLES) {
-            ok(
-              false,
-              "Encountered more then " +
-                MAX_ERROR_CYCLES +
-                " cycles" +
-                " with errors on " +
-                label
-            );
-            failed = true;
-          }
-        });
-        var timeElapsed = Date.now() - startTime;
-        if (timeElapsed >= duration || failed) {
-          clearInterval(intervalId);
-          resolve();
-        }
-      }, interval);
-    });
-  };
-}
deleted file mode 100644
--- a/dom/media/tests/mochitest/steeplechase_long/steeplechase_long.ini
+++ /dev/null
@@ -1,12 +0,0 @@
-[DEFAULT]
-support-files =
-  long.js
-  ../head.js
-  ../mediaStreamPlayback.js
-  ../pc.js
-  ../templates.js
-  ../turnConfig.js
-  ../network.js
-
-[test_peerConnection_basicAudioVideoCombined_long.html]
-
deleted file mode 100644
--- a/dom/media/tests/mochitest/steeplechase_long/test_peerConnection_basicAudioVideoCombined_long.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE HTML>
-
-<!-- This Source Code Form is subject to the terms of the Mozilla Public
-   - License, v. 2.0. If a copy of the MPL was not distributed with this
-   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-
-<html>
-<head>
-  <script type="application/javascript" src="long.js"></script>
-  <script type="application/javascript" src="pc.js"></script>
-</head>
-<body>
-<pre id="test">
-<script type="application/javascript">
-  createHTML({
-    bug: "1014328",
-    title: "Basic audio/video (combined) peer connection, long running",
-    visible: true
-  });
-
-  var STEEPLECHASE_TIMEOUT = 1000 * 3600 * 3;
-  var test;
-  runNetworkTest(function (options) {
-    options = options || {};
-    options.commands = makeDefaultCommands();
-    options.commands.push(generateIntervalCommand(verifyConnectionStatus,
-                                                  1000 * 10,
-                                                  STEEPLECHASE_TIMEOUT));
-
-    test = new PeerConnectionTest(options);
-    test.setMediaConstraints([{audio: true, video: true, fake: false}],
-                             [{audio: true, video: true, fake: false}]);
-    test.run();
-  });
-</script>
-</pre>
-</body>
-</html>
deleted file mode 100644
--- a/dom/media/tests/mochitest/steeplechase_long/test_peerConnection_basicAudio_long.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE HTML>
-
-<!-- This Source Code Form is subject to the terms of the Mozilla Public
-   - License, v. 2.0. If a copy of the MPL was not distributed with this
-   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-
-<html>
-<head>
-  <script type="application/javascript" src="long.js"></script>
-  <script type="application/javascript" src="pc.js"></script>
-</head>
-<body>
-<pre id="test">
-<script type="application/javascript">
-  createHTML({
-    bug: "796892",
-    title: "Basic audio-only peer connection",
-    visible: true
-  });
-
-  var STEEPLECHASE_TIMEOUT = 1000 * 3600 * 3;
-  var test;
-  runNetworkTest(function (options) {
-    options = options || {};
-    options.commands = makeDefaultCommands();
-    options.commands.push(generateIntervalCommand(verifyConnectionStatus,
-                                                  1000 * 10,
-                                                  STEEPLECHASE_TIMEOUT));
-
-    test = new PeerConnectionTest(options);
-    test.setMediaConstraints([{audio: true, fake: false}],
-                             [{audio: true, fake: false}]);
-    test.run();
-  });
-</script>
-</pre>
-</body>
-</html>
deleted file mode 100644
--- a/dom/media/tests/mochitest/steeplechase_long/test_peerConnection_basicVideo_long.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE HTML>
-
-<!-- This Source Code Form is subject to the terms of the Mozilla Public
-   - License, v. 2.0. If a copy of the MPL was not distributed with this
-   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-
-<html>
-<head>
-  <script type="application/javascript" src="long.js"></script>
-  <script type="application/javascript" src="pc.js"></script>
-</head>
-<body>
-<pre id="test">
-<script type="application/javascript">
-  createHTML({
-    bug: "796888",
-    title: "Basic video-only peer connection",
-    visible: true
-  });
-
-  var STEEPLECHASE_TIMEOUT = 1000 * 3600 * 3;
-  var test;
-  runNetworkTest(function (options) {
-    options = options || {};
-    options.commands = makeDefaultCommands();
-    options.commands.push(generateIntervalCommand(verifyConnectionStatus,
-                                                  1000 * 10,
-                                                  STEEPLECHASE_TIMEOUT));
-
-    test = new PeerConnectionTest(options);
-    test.setMediaConstraints([{video: true, fake: false}],
-                             [{video: true, fake: false}]);
-    test.run();
-  });
-</script>
-</pre>
-</body>
-</html>
--- a/dom/media/tests/mochitest/templates.js
+++ b/dom/media/tests/mochitest/templates.js
@@ -194,29 +194,16 @@ var checkAllTrackStats = pc => {
       pc.getExpectedSendTracks().map(track => checkTrackStats(pc, track, true))
     )
   );
 };
 
 // Commands run once at the beginning of each test, even when performing a
 // renegotiation test.
 var commandsPeerConnectionInitial = [
-  function PC_SETUP_SIGNALING_CLIENT(test) {
-    if (test.testOptions.steeplechase) {
-      test.setupSignalingClient();
-      test.registerSignalingCallback("ice_candidate", function(message) {
-        var pc = test.pcRemote ? test.pcRemote : test.pcLocal;
-        pc.storeOrAddIceCandidate(message.ice_candidate);
-      });
-      test.registerSignalingCallback("end_of_trickle_ice", function(message) {
-        test.signalingMessagesFinished();
-      });
-    }
-  },
-
   function PC_LOCAL_SETUP_ICE_LOGGER(test) {
     test.pcLocal.logIceConnectionState();
   },
 
   function PC_REMOTE_SETUP_ICE_LOGGER(test) {
     test.pcRemote.logIceConnectionState();
   },
 
@@ -311,55 +298,33 @@ var commandsPeerConnectionOfferAnswer = 
       is(
         test.pcLocal.signalingState,
         STABLE,
         "Local create offer does not change signaling state"
       );
     });
   },
 
-  function PC_LOCAL_STEEPLECHASE_SIGNAL_OFFER(test) {
-    if (test.testOptions.steeplechase) {
-      send_message({
-        type: "offer",
-        offer: test.originalOffer,
-        offer_constraints: test.pcLocal.constraints,
-        offer_options: test.pcLocal.offerOptions,
-      });
-      test._local_offer = test.originalOffer;
-      test._offer_constraints = test.pcLocal.constraints;
-      test._offer_options = test.pcLocal.offerOptions;
-    }
-  },
-
   function PC_LOCAL_SET_LOCAL_DESCRIPTION(test) {
     return test
       .setLocalDescription(test.pcLocal, test.originalOffer, HAVE_LOCAL_OFFER)
       .then(() => {
         is(
           test.pcLocal.signalingState,
           HAVE_LOCAL_OFFER,
           "signalingState after local setLocalDescription is 'have-local-offer'"
         );
       });
   },
 
   function PC_REMOTE_GET_OFFER(test) {
-    if (!test.testOptions.steeplechase) {
-      test._local_offer = test.originalOffer;
-      test._offer_constraints = test.pcLocal.constraints;
-      test._offer_options = test.pcLocal.offerOptions;
-      return Promise.resolve();
-    }
-    return test.getSignalingMessage("offer").then(message => {
-      ok("offer" in message, "Got an offer message");
-      test._local_offer = new RTCSessionDescription(message.offer);
-      test._offer_constraints = message.offer_constraints;
-      test._offer_options = message.offer_options;
-    });
+    test._local_offer = test.originalOffer;
+    test._offer_constraints = test.pcLocal.constraints;
+    test._offer_options = test.pcLocal.offerOptions;
+    return Promise.resolve();
   },
 
   function PC_REMOTE_SET_REMOTE_DESCRIPTION(test) {
     return test
       .setRemoteDescription(test.pcRemote, test._local_offer, HAVE_REMOTE_OFFER)
       .then(() => {
         is(
           test.pcRemote.signalingState,
@@ -399,52 +364,35 @@ var commandsPeerConnectionOfferAnswer = 
 
   function PC_REMOTE_CREATE_ANSWER(test) {
     return test.createAnswer(test.pcRemote).then(answer => {
       is(
         test.pcRemote.signalingState,
         HAVE_REMOTE_OFFER,
         "Remote createAnswer does not change signaling state"
       );
-      if (test.testOptions.steeplechase) {
-        send_message({
-          type: "answer",
-          answer: test.originalAnswer,
-          answer_constraints: test.pcRemote.constraints,
-        });
-        test._remote_answer = test.pcRemote._last_answer;
-        test._answer_constraints = test.pcRemote.constraints;
-      }
     });
   },
 
   function PC_REMOTE_SET_LOCAL_DESCRIPTION(test) {
     return test
       .setLocalDescription(test.pcRemote, test.originalAnswer, STABLE)
       .then(() => {
         is(
           test.pcRemote.signalingState,
           STABLE,
           "signalingState after remote setLocalDescription is 'stable'"
         );
       });
   },
 
   function PC_LOCAL_GET_ANSWER(test) {
-    if (!test.testOptions.steeplechase) {
-      test._remote_answer = test.originalAnswer;
-      test._answer_constraints = test.pcRemote.constraints;
-      return Promise.resolve();
-    }
-
-    return test.getSignalingMessage("answer").then(message => {
-      ok("answer" in message, "Got an answer message");
-      test._remote_answer = new RTCSessionDescription(message.answer);
-      test._answer_constraints = message.answer_constraints;
-    });
+    test._remote_answer = test.originalAnswer;
+    test._answer_constraints = test.pcRemote.constraints;
+    return Promise.resolve();
   },
 
   function PC_LOCAL_SET_REMOTE_DESCRIPTION(test) {
     return test
       .setRemoteDescription(test.pcLocal, test._remote_answer, STABLE)
       .then(() => {
         is(
           test.pcLocal.signalingState,
@@ -514,23 +462,23 @@ var commandsPeerConnectionOfferAnswer = 
   },
 
   function PC_REMOTE_WAIT_FOR_MEDIA_FLOW(test) {
     return test.pcRemote.waitForMediaFlow();
   },
 
   function PC_LOCAL_CHECK_STATS(test) {
     return test.pcLocal.getStats().then(stats => {
-      test.pcLocal.checkStats(stats, test.testOptions.steeplechase);
+      test.pcLocal.checkStats(stats);
     });
   },
 
   function PC_REMOTE_CHECK_STATS(test) {
     return test.pcRemote.getStats().then(stats => {
-      test.pcRemote.checkStats(stats, test.testOptions.steeplechase);
+      test.pcRemote.checkStats(stats);
     });
   },
 
   function PC_LOCAL_CHECK_ICE_CONNECTION_TYPE(test) {
     return test.pcLocal.getStats().then(stats => {
       test.pcLocal.checkStatsIceConnectionType(
         stats,
         test.testOptions.expectedLocalCandidateType
--- a/dom/media/tests/mochitest/test_peerConnection_localRollback.html
+++ b/dom/media/tests/mochitest/test_peerConnection_localRollback.html
@@ -33,21 +33,16 @@
 
         // Rolling back should shut down gathering
         function PC_REMOTE_WAIT_FOR_END_OF_TRICKLE(test) {
           return test.pcRemote.endOfTrickleIce;
         },
 
         function PC_REMOTE_SETUP_ICE_HANDLER(test) {
           test.pcRemote.setupIceCandidateHandler(test);
-          if (test.testOptions.steeplechase) {
-            test.pcRemote.endOfTrickleIce.then(() => {
-              send_message({"type": "end_of_trickle_ice"});
-              });
-          }
         },
     ]);
     test.run();
   });
 </script>
 </pre>
 </body>
 </html>
--- a/dom/media/tests/mochitest/test_peerConnection_restartIceLocalAndRemoteRollback.html
+++ b/dom/media/tests/mochitest/test_peerConnection_restartIceLocalAndRemoteRollback.html
@@ -15,21 +15,16 @@
   runNetworkTest(function (options) {
     test = new PeerConnectionTest(options);
 
     addRenegotiation(test.chain,
       [
         async function PC_LOCAL_SETUP_ICE_HANDLER(test) {
           await test.pcLocal.endOfTrickleIce;
           test.pcLocal.setupIceCandidateHandler(test);
-          if (test.testOptions.steeplechase) {
-            test.pcLocal.endOfTrickleIce.then(() => {
-              send_message({"type": "end_of_trickle_ice"});
-            });
-          }
         },
 
         // causes a full, normal ice restart
         function PC_LOCAL_SET_OFFER_OPTION(test) {
           test.setOfferOptions({ iceRestart: true });
         }
       ]
     );
--- a/dom/media/tests/mochitest/test_peerConnection_restartIceLocalAndRemoteRollbackNoSubsequentRestart.html
+++ b/dom/media/tests/mochitest/test_peerConnection_restartIceLocalAndRemoteRollbackNoSubsequentRestart.html
@@ -14,29 +14,19 @@
   var test;
   runNetworkTest(function (options) {
     test = new PeerConnectionTest(options);
 
     addRenegotiation(test.chain,
       [
         function PC_LOCAL_SETUP_ICE_HANDLER(test) {
           test.pcLocal.setupIceCandidateHandler(test);
-          if (test.testOptions.steeplechase) {
-            test.pcLocal.endOfTrickleIce.then(() => {
-              send_message({"type": "end_of_trickle_ice"});
-            });
-          }
         },
         function PC_REMOTE_SETUP_ICE_HANDLER(test) {
           test.pcRemote.setupIceCandidateHandler(test);
-          if (test.testOptions.steeplechase) {
-            test.pcRemote.endOfTrickleIce.then(() => {
-              send_message({"type": "end_of_trickle_ice"});
-            });
-          }
         },
 
         // causes a full, normal ice restart
         function PC_LOCAL_SET_OFFER_OPTION(test) {
           test.setOfferOptions({ iceRestart: true });
         }
       ]
     );
--- a/dom/media/tests/mochitest/test_peerConnection_restartIceLocalRollback.html
+++ b/dom/media/tests/mochitest/test_peerConnection_restartIceLocalRollback.html
@@ -20,21 +20,16 @@
         // causes a full, normal ice restart
         function PC_LOCAL_SET_OFFER_OPTION(test) {
           test.setOfferOptions({ iceRestart: true });
         },
         // causes an ice restart and then rolls it back
         // (does not result in sending an offer)
         function PC_LOCAL_SETUP_ICE_HANDLER(test) {
           test.pcLocal.setupIceCandidateHandler(test, () => {});
-          if (test.testOptions.steeplechase) {
-            test.pcLocal.endOfTrickleIce.then(() => {
-              send_message({"type": "end_of_trickle_ice"});
-            });
-          }
         },
         function PC_LOCAL_CREATE_AND_SET_OFFER(test) {
           return test.createOffer(test.pcLocal).then(offer => {
             return test.setLocalDescription(test.pcLocal,
                                             offer,
                                             HAVE_LOCAL_OFFER);
           });
         },
--- a/dom/media/tests/mochitest/test_peerConnection_restartIceLocalRollbackNoSubsequentRestart.html
+++ b/dom/media/tests/mochitest/test_peerConnection_restartIceLocalRollbackNoSubsequentRestart.html
@@ -20,21 +20,16 @@
         // causes a full, normal ice restart
         function PC_LOCAL_SET_OFFER_OPTION(test) {
           test.setOfferOptions({ iceRestart: true });
         },
         // causes an ice restart and then rolls it back
         // (does not result in sending an offer)
         function PC_LOCAL_SETUP_ICE_HANDLER(test) {
           test.pcLocal.setupIceCandidateHandler(test, () => {});
-          if (test.testOptions.steeplechase) {
-            test.pcLocal.endOfTrickleIce.then(() => {
-              send_message({"type": "end_of_trickle_ice"});
-            });
-          }
         },
         function PC_LOCAL_CREATE_AND_SET_OFFER(test) {
           return test.createOffer(test.pcLocal).then(offer => {
             return test.setLocalDescription(test.pcLocal,
                                             offer,
                                             HAVE_LOCAL_OFFER);
           });
         },
--- a/python/mozbuild/mozbuild/frontend/context.py
+++ b/python/mozbuild/mozbuild/frontend/context.py
@@ -2056,20 +2056,16 @@ VARIABLES = {
         """),
 
     'CRASHTEST_MANIFESTS': (ReftestManifestList, list,
                             """List of manifest files defining crashtests.
 
         These are commonly named crashtests.list.
         """),
 
-    'WEBRTC_SIGNALLING_TEST_MANIFESTS': (ManifestparserManifestList, list,
-                                         """List of manifest files defining WebRTC signalling tests.
-        """),
-
     'XPCSHELL_TESTS_MANIFESTS': (ManifestparserManifestList, list,
                                  """List of manifest files defining xpcshell tests.
         """),
 
     'PYTHON_UNITTEST_MANIFESTS': (ManifestparserManifestList, list,
                                   """List of manifest files defining python unit tests.
         """),
 
--- a/testing/mozbase/moztest/moztest/resolve.py
+++ b/testing/mozbase/moztest/moztest/resolve.py
@@ -288,17 +288,16 @@ for i in range(1, MOCHITEST_TOTAL_CHUNKS
     'crashtest': 'crashtest',
     'firefox-ui-functional': 'firefox-ui-functional',
     'firefox-ui-update': 'firefox-ui-update',
     'marionette': 'marionette',
     'mochitest': 'mochitest-plain',
     'puppeteer': 'puppeteer',
     'python': 'python',
     'reftest': 'reftest',
-    'steeplechase': '',
     'telemetry-tests-client': 'telemetry-tests-client',
     'web-platform-tests': 'web-platform-tests',
     'xpcshell': 'xpcshell',
 }
 
 _test_subsuites = {
     ('browser-chrome', 'devtools'): 'mochitest-devtools-chrome',
     ('browser-chrome', 'remote'): 'mochitest-remote',
--- a/testing/runtimes/manifest-runtimes-android.json
+++ b/testing/runtimes/manifest-runtimes-android.json
@@ -65,17 +65,16 @@
     "layout/svg/crashtests/crashtests.list": 34.67
   }, 
   "mochitest-media": {
     "dom/media/mediasession/test/mochitest.ini": 5.59, 
     "dom/media/mediasource/test/mochitest.ini": 45.45, 
     "dom/media/test/mochitest.ini": 690.76, 
     "dom/media/tests/mochitest/identity/mochitest.ini": 7.49, 
     "dom/media/tests/mochitest/mochitest.ini": 392.03, 
-    "dom/media/tests/mochitest/steeplechase.ini": 1.33, 
     "dom/media/webaudio/test/blink/mochitest.ini": 2.93, 
     "dom/media/webaudio/test/mochitest.ini": 118.2, 
     "dom/media/webspeech/recognition/test/mochitest.ini": 33.31, 
     "dom/media/webspeech/synth/test/mochitest.ini": 5.75, 
     "dom/media/webspeech/synth/test/startup/mochitest.ini": 1.26
   }, 
   "mochitest-plain": {
     "caps/tests/mochitest/mochitest.ini": 1.53, 
@@ -691,9 +690,9 @@
     "toolkit/components/windowcreator/tests/unit/xpcshell.ini": 1.14, 
     "toolkit/content/tests/unit/xpcshell.ini": 0.57, 
     "toolkit/modules/tests/xpcshell/xpcshell.ini": 28.4, 
     "toolkit/mozapps/downloads/tests/unit/xpcshell.ini": 2.39, 
     "uriloader/exthandler/tests/unit/xpcshell.ini": 5.12, 
     "widget/tests/unit/xpcshell.ini": 0.55, 
     "xpcom/tests/unit/xpcshell.ini": 22.43
   }
-}
\ No newline at end of file
+}
--- a/testing/runtimes/manifest-runtimes-unix.json
+++ b/testing/runtimes/manifest-runtimes-unix.json
@@ -458,17 +458,16 @@
     "devtools/startup/tests/browser/browser.ini": 2.97
   }, 
   "mochitest-media": {
     "dom/media/mediasession/test/mochitest.ini": 13.8, 
     "dom/media/mediasource/test/mochitest.ini": 184.88, 
     "dom/media/test/mochitest.ini": 1490.54, 
     "dom/media/tests/mochitest/identity/mochitest.ini": 24.86, 
     "dom/media/tests/mochitest/mochitest.ini": 722.95, 
-    "dom/media/tests/mochitest/steeplechase.ini": 3.68, 
     "dom/media/webaudio/test/blink/mochitest.ini": 3.9, 
     "dom/media/webaudio/test/mochitest.ini": 258.87, 
     "dom/media/webspeech/recognition/test/mochitest.ini": 48.74, 
     "dom/media/webspeech/synth/test/mochitest.ini": 7.09, 
     "dom/media/webspeech/synth/test/startup/mochitest.ini": 1.43
   }, 
   "mochitest-plain": {
     "browser/components/extensions/test/mochitest/mochitest.ini": 2.36, 
@@ -1259,9 +1258,9 @@
     "toolkit/xre/test/xpcshell.ini": 22.22, 
     "tools/code-coverage/tests/xpcshell/xpcshell.ini": 44.96, 
     "tools/profiler/tests/xpcshell/xpcshell.ini": 169.6, 
     "uriloader/exthandler/tests/unit/xpcshell.ini": 5.57, 
     "widget/headless/tests/xpcshell.ini": 4.33, 
     "widget/tests/unit/xpcshell.ini": 4.81, 
     "xpcom/tests/unit/xpcshell.ini": 68.82
   }
-}
\ No newline at end of file
+}
--- a/testing/runtimes/manifest-runtimes-windows.json
+++ b/testing/runtimes/manifest-runtimes-windows.json
@@ -453,17 +453,16 @@
     "devtools/startup/tests/browser/browser.ini": 2.41
   }, 
   "mochitest-media": {
     "dom/media/mediasession/test/mochitest.ini": 6.3, 
     "dom/media/mediasource/test/mochitest.ini": 146.77, 
     "dom/media/test/mochitest.ini": 1107.47, 
     "dom/media/tests/mochitest/identity/mochitest.ini": 13.47, 
     "dom/media/tests/mochitest/mochitest.ini": 533.51, 
-    "dom/media/tests/mochitest/steeplechase.ini": 1.94, 
     "dom/media/webaudio/test/blink/mochitest.ini": 2.9, 
     "dom/media/webaudio/test/mochitest.ini": 116.73, 
     "dom/media/webspeech/recognition/test/mochitest.ini": 31.98, 
     "dom/media/webspeech/synth/test/mochitest.ini": 5.65, 
     "dom/media/webspeech/synth/test/startup/mochitest.ini": 1.25
   }, 
   "mochitest-plain": {
     "browser/components/extensions/test/mochitest/mochitest.ini": 1.75, 
@@ -1258,9 +1257,9 @@
     "toolkit/xre/test/xpcshell.ini": 66.81, 
     "tools/code-coverage/tests/xpcshell/xpcshell.ini": 144.72, 
     "tools/profiler/tests/xpcshell/xpcshell.ini": 43.97, 
     "uriloader/exthandler/tests/unit/xpcshell.ini": 10.21, 
     "widget/headless/tests/xpcshell.ini": 6.36, 
     "widget/tests/unit/xpcshell.ini": 0.58, 
     "xpcom/tests/unit/xpcshell.ini": 262.39
   }
-}
\ No newline at end of file
+}
--- a/testing/testsuite-targets.mk
+++ b/testing/testsuite-targets.mk
@@ -99,19 +99,16 @@ PKG_STAGE = $(DIST)/test-stage
 stage-all: \
   stage-config \
   stage-mach \
   stage-extensions \
   stage-mochitest \
   stage-jstests \
   test-packages-manifest \
   $(NULL)
-ifdef MOZ_WEBRTC
-stage-all: stage-steeplechase
-endif
 
 ifdef COMPILE_ENVIRONMENT
 stage-all: stage-cppunittests
 endif
 
 TEST_PKGS_TARGZ := \
   common \
   condprof \
@@ -247,22 +244,16 @@ ifdef STRIP_COMPILED_TESTS
 	$(OBJCOPY) $(or $(STRIP_FLAGS),--strip-unneeded) $(DIST)/bin/jsapi-tests$(BIN_SUFFIX) $(PKG_STAGE)/cppunittest/jsapi-tests$(BIN_SUFFIX)
 else
 	cp -RL $(DIST)/bin/jsapi-tests$(BIN_SUFFIX) $(PKG_STAGE)/cppunittest
 endif
 ifdef MOZ_COPY_PDBS
 	cp -RL $(DIST)/bin/jsapi-tests.pdb $(PKG_STAGE)/cppunittest
 endif
 
-stage-steeplechase: make-stage-dir
-	$(NSINSTALL) -D $(PKG_STAGE)/steeplechase/
-	cp -RL $(DEPTH)/_tests/steeplechase $(PKG_STAGE)/steeplechase/tests
-	cp -RL $(DIST)/xpi-stage/specialpowers $(PKG_STAGE)/steeplechase
-	cp -RL $(topsrcdir)/testing/profiles/common/user.js $(PKG_STAGE)/steeplechase/prefs_general.js
-
 TEST_EXTENSIONS := \
     specialpowers@mozilla.org.xpi \
 	$(NULL)
 
 stage-extensions: make-stage-dir
 	$(NSINSTALL) -D $(PKG_STAGE)/extensions/
 	@$(foreach ext,$(TEST_EXTENSIONS), cp -RL $(DIST)/xpi-stage/$(ext) $(PKG_STAGE)/extensions;)
 
@@ -287,12 +278,11 @@ check::
   package-tests-prepare-dest \
   package-tests-common \
   make-stage-dir \
   stage-all \
   stage-config \
   stage-mochitest \
   stage-jstests \
   stage-android \
-  stage-steeplechase \
   test-packages-manifest \
   check \
   $(NULL)