Backed out changeset 577158be08e8 (bug 1290598)
authorCarsten "Tomcat" Book <cbook@mozilla.com>
Wed, 03 Aug 2016 15:12:29 +0200
changeset 333689 a9d00c5d21cc6bd91873582d9df5f9f1ba4bc6bf
parent 333688 ac0f19e5a50adc926767ad421ac73c375b5bd0a9
child 333690 34de0687c35a7eeb2cde81695a62355e083892eb
push id10033
push userraliiev@mozilla.com
push dateMon, 19 Sep 2016 13:50:26 +0000
treeherdermozilla-aurora@5dddbefdf759 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs1290598
milestone51.0a1
backs out577158be08e8c1211ffa1198a21e3c059f98f477
Backed out changeset 577158be08e8 (bug 1290598)
toolkit/components/extensions/test/xpcshell/native_messaging.ini
toolkit/components/extensions/test/xpcshell/test_ext_native_messaging.js
toolkit/components/extensions/test/xpcshell/test_ext_native_messaging_unresponsive.js
--- a/toolkit/components/extensions/test/xpcshell/native_messaging.ini
+++ b/toolkit/components/extensions/test/xpcshell/native_messaging.ini
@@ -4,9 +4,8 @@ tail =
 firefox-appdir = browser
 skip-if = toolkit == 'gonk' || appname == "thunderbird" || os == "android"
 subprocess = true
 support-files =
   data/**
 
 [test_ext_native_messaging.js]
 [test_ext_native_messaging_perf.js]
-[test_ext_native_messaging_unresponsive.js]
--- a/toolkit/components/extensions/test/xpcshell/test_ext_native_messaging.js
+++ b/toolkit/components/extensions/test/xpcshell/test_ext_native_messaging.js
@@ -29,16 +29,43 @@ const INFO_BODY = String.raw`
   import sys
 
   msg = json.dumps({"args": sys.argv, "cwd": os.getcwd()})
   sys.stdout.write(struct.pack('@I', len(msg)))
   sys.stdout.write(msg)
   sys.exit(0)
 `;
 
+const WONTDIE_BODY = String.raw`
+  import signal
+  import struct
+  import sys
+  import time
+
+  signal.signal(signal.SIGTERM, signal.SIG_IGN)
+
+  def spin():
+      while True:
+          try:
+              signal.pause()
+          except AttributeError:
+              time.sleep(5)
+
+  while True:
+      rawlen = sys.stdin.read(4)
+      if len(rawlen) == 0:
+          spin()
+
+      msglen = struct.unpack('@I', rawlen)[0]
+      msg = sys.stdin.read(msglen)
+
+      sys.stdout.write(struct.pack('@I', msglen))
+      sys.stdout.write(msg)
+`;
+
 const STDERR_LINES = ["hello stderr", "this should be a separate line"];
 let STDERR_MSG = STDERR_LINES.join("\\n");
 
 const STDERR_BODY = String.raw`
   import sys
   sys.stderr.write("${STDERR_MSG}")
 `;
 
@@ -49,16 +76,21 @@ const SCRIPTS = [
     script: ECHO_BODY.replace(/^ {2}/gm, ""),
   },
   {
     name: "info",
     description: "a native app that gives some info about how it was started",
     script: INFO_BODY.replace(/^ {2}/gm, ""),
   },
   {
+    name: "wontdie",
+    description: "a native app that does not exit when stdin closes or on SIGTERM",
+    script: WONTDIE_BODY.replace(/^ {2}/gm, ""),
+  },
+  {
     name: "stderr",
     description: "a native app that writes to stderr and then exits",
     script: STDERR_BODY.replace(/^ {2}/gm, ""),
   },
 ];
 
 add_task(function* setup() {
   yield setupHosts(SCRIPTS);
@@ -426,16 +458,54 @@ add_task(function* test_child_process() 
   equal(msg.cwd.replace(/^\/private\//, "/"), tmpDir.path,
         "Working directory is the directory containing the native appliation");
 
   let exitPromise = waitForSubprocessExit();
   yield extension.unload();
   yield exitPromise;
 });
 
+// Test that an unresponsive native application still gets killed eventually
+add_task(function* test_unresponsive_native_app() {
+  // XXX expose GRACEFUL_SHUTDOWN_TIME as a pref and reduce it
+  // just for this test?
+
+  function background() {
+    let port = browser.runtime.connectNative("wontdie");
+
+    const MSG = "echo me";
+    // bounce a message to make sure the process actually starts
+    port.onMessage.addListener(msg => {
+      browser.test.assertEq(msg, MSG, "Received echoed message");
+      browser.test.sendMessage("ready");
+    });
+    port.postMessage(MSG);
+  }
+
+  let extension = ExtensionTestUtils.loadExtension({
+    background,
+    manifest: {
+      permissions: ["nativeMessaging"],
+    },
+  }, ID);
+
+  yield extension.startup();
+  yield extension.awaitMessage("ready");
+
+  let procCount = yield getSubprocessCount();
+  equal(procCount, 1, "subprocess is running");
+
+  let exitPromise = waitForSubprocessExit();
+  yield extension.unload();
+  yield exitPromise;
+
+  procCount = yield getSubprocessCount();
+  equal(procCount, 0, "subprocess was succesfully killed");
+});
+
 add_task(function* test_stderr() {
   function background() {
     let port = browser.runtime.connectNative("stderr");
     port.onDisconnect.addListener(() => {
       browser.test.sendMessage("finished");
     });
   }
 
deleted file mode 100644
--- a/toolkit/components/extensions/test/xpcshell/test_ext_native_messaging_unresponsive.js
+++ /dev/null
@@ -1,81 +0,0 @@
-/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* vim: set sts=2 sw=2 et tw=80: */
-"use strict";
-
-const WONTDIE_BODY = String.raw`
-  import signal
-  import struct
-  import sys
-  import time
-
-  signal.signal(signal.SIGTERM, signal.SIG_IGN)
-
-  def spin():
-      while True:
-          try:
-              signal.pause()
-          except AttributeError:
-              time.sleep(5)
-
-  while True:
-      rawlen = sys.stdin.read(4)
-      if len(rawlen) == 0:
-          spin()
-
-      msglen = struct.unpack('@I', rawlen)[0]
-      msg = sys.stdin.read(msglen)
-
-      sys.stdout.write(struct.pack('@I', msglen))
-      sys.stdout.write(msg)
-`;
-
-const SCRIPTS = [
-  {
-    name: "wontdie",
-    description: "a native app that does not exit when stdin closes or on SIGTERM",
-    script: WONTDIE_BODY.replace(/^ {2}/gm, ""),
-  },
-];
-
-add_task(function* setup() {
-  yield setupHosts(SCRIPTS);
-});
-
-
-// Test that an unresponsive native application still gets killed eventually
-add_task(function* test_unresponsive_native_app() {
-  // XXX expose GRACEFUL_SHUTDOWN_TIME as a pref and reduce it
-  // just for this test?
-
-  function background() {
-    let port = browser.runtime.connectNative("wontdie");
-
-    const MSG = "echo me";
-    // bounce a message to make sure the process actually starts
-    port.onMessage.addListener(msg => {
-      browser.test.assertEq(msg, MSG, "Received echoed message");
-      browser.test.sendMessage("ready");
-    });
-    port.postMessage(MSG);
-  }
-
-  let extension = ExtensionTestUtils.loadExtension({
-    background,
-    manifest: {
-      permissions: ["nativeMessaging"],
-    },
-  }, ID);
-
-  yield extension.startup();
-  yield extension.awaitMessage("ready");
-
-  let procCount = yield getSubprocessCount();
-  equal(procCount, 1, "subprocess is running");
-
-  let exitPromise = waitForSubprocessExit();
-  yield extension.unload();
-  yield exitPromise;
-
-  procCount = yield getSubprocessCount();
-  equal(procCount, 0, "subprocess was succesfully killed");
-});