summaryrefslogtreecommitdiffstats
path: root/toolkit/components/webextensions/test/xpcshell/test_ext_native_messaging_perf.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/webextensions/test/xpcshell/test_ext_native_messaging_perf.js')
-rw-r--r--toolkit/components/webextensions/test/xpcshell/test_ext_native_messaging_perf.js128
1 files changed, 0 insertions, 128 deletions
diff --git a/toolkit/components/webextensions/test/xpcshell/test_ext_native_messaging_perf.js b/toolkit/components/webextensions/test/xpcshell/test_ext_native_messaging_perf.js
deleted file mode 100644
index 693f67dde..000000000
--- a/toolkit/components/webextensions/test/xpcshell/test_ext_native_messaging_perf.js
+++ /dev/null
@@ -1,128 +0,0 @@
-/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* vim: set sts=2 sw=2 et tw=80: */
-"use strict";
-
-XPCOMUtils.defineLazyModuleGetter(this, "MockRegistry",
- "resource://testing-common/MockRegistry.jsm");
-XPCOMUtils.defineLazyModuleGetter(this, "OS",
- "resource://gre/modules/osfile.jsm");
-
-Cu.import("resource://gre/modules/Subprocess.jsm");
-
-const MAX_ROUND_TRIP_TIME_MS = AppConstants.DEBUG || AppConstants.ASAN ? 36 : 18;
-const MAX_RETRIES = 5;
-
-
-const ECHO_BODY = String.raw`
- import struct
- import sys
-
- while True:
- rawlen = sys.stdin.read(4)
- if len(rawlen) == 0:
- sys.exit(0)
-
- 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: "echo",
- description: "A native app that echoes back messages it receives",
- script: ECHO_BODY.replace(/^ {2}/gm, ""),
- },
-];
-
-add_task(function* setup() {
- yield setupHosts(SCRIPTS);
-});
-
-add_task(function* test_round_trip_perf() {
- let extension = ExtensionTestUtils.loadExtension({
- background() {
- browser.test.onMessage.addListener(msg => {
- if (msg != "run-tests") {
- return;
- }
-
- let port = browser.runtime.connectNative("echo");
-
- function next() {
- port.postMessage({
- "Lorem": {
- "ipsum": {
- "dolor": [
- "sit amet",
- "consectetur adipiscing elit",
- "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
- ],
- "Ut enim": [
- "ad minim veniam",
- "quis nostrud exercitation ullamco",
- "laboris nisi ut aliquip ex ea commodo consequat.",
- ],
- "Duis": [
- "aute irure dolor in reprehenderit in",
- "voluptate velit esse cillum dolore eu",
- "fugiat nulla pariatur.",
- ],
- "Excepteur": [
- "sint occaecat cupidatat non proident",
- "sunt in culpa qui officia deserunt",
- "mollit anim id est laborum.",
- ],
- },
- },
- });
- }
-
- const COUNT = 1000;
- let now;
- function finish() {
- let roundTripTime = (Date.now() - now) / COUNT;
-
- port.disconnect();
- browser.test.sendMessage("result", roundTripTime);
- }
-
- let count = 0;
- port.onMessage.addListener(() => {
- if (count == 0) {
- // Skip the first round, since it includes the time it takes
- // the app to start up.
- now = Date.now();
- }
-
- if (count++ <= COUNT) {
- next();
- } else {
- finish();
- }
- });
-
- next();
- });
- },
- manifest: {
- applications: {gecko: {id: ID}},
- permissions: ["nativeMessaging"],
- },
- });
-
- yield extension.startup();
-
- let roundTripTime = Infinity;
- for (let i = 0; i < MAX_RETRIES && roundTripTime > MAX_ROUND_TRIP_TIME_MS; i++) {
- extension.sendMessage("run-tests");
- roundTripTime = yield extension.awaitMessage("result");
- }
-
- yield extension.unload();
-
- ok(roundTripTime <= MAX_ROUND_TRIP_TIME_MS,
- `Expected round trip time (${roundTripTime}ms) to be less than ${MAX_ROUND_TRIP_TIME_MS}ms`);
-});