diff options
Diffstat (limited to 'mobile/android/tests/browser/robocop/testUITelemetry.js')
-rw-r--r-- | mobile/android/tests/browser/robocop/testUITelemetry.js | 154 |
1 files changed, 0 insertions, 154 deletions
diff --git a/mobile/android/tests/browser/robocop/testUITelemetry.js b/mobile/android/tests/browser/robocop/testUITelemetry.js deleted file mode 100644 index 5edf06f19..000000000 --- a/mobile/android/tests/browser/robocop/testUITelemetry.js +++ /dev/null @@ -1,154 +0,0 @@ -// -*- indent-tabs-mode: nil; js-indent-level: 2 -*- -/* 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/. */ - -var Cc = Components.classes; -var Ci = Components.interfaces; -var Cu = Components.utils; - -Cu.import("resource://gre/modules/Services.jsm"); - -const EVENT_TEST1 = "_test_event_1.1"; -const EVENT_TEST2 = "_test_event_2.1"; -const EVENT_TEST3 = "_test_event_3.1"; -const EVENT_TEST4 = "_test_event_4.1"; - -const METHOD_TEST1 = "_test_method_1"; -const METHOD_TEST2 = "_test_method_2"; - -const METHOD_NONE = null; - -const REASON_TEST1 = "_test_reason_1"; -const REASON_TEST2 = "_test_reason_2"; - -const SESSION_STARTED_TWICE = "_test_session_started_twice.1"; -const SESSION_STOPPED_TWICE = "_test_session_stopped_twice.1"; - -function do_check_array_eq(a1, a2) { - do_check_eq(a1.length, a2.length); - for (let i = 0; i < a1.length; ++i) { - do_check_eq(a1[i], a2[i]); - } -} - -/** - * Asserts that the given measurements are equal. Assumes that measurements - * of type "event" have their sessions arrays sorted. - */ -function do_check_measurement_eq(m1, m2) { - do_check_eq(m1.type, m2.type); - - switch (m1.type) { - case "event": - do_check_eq(m1.action, m2.action); - do_check_eq(m1.method, m2.method); - do_check_array_eq(m1.sessions, m2.sessions); - do_check_eq(m1.extras, m2.extras); - break; - - case "session": - do_check_eq(m1.name, m2.name); - do_check_eq(m1.reason, m2.reason); - break; - - default: - do_throw("Unknown event type: " + m1.type); - } -} - -function getObserver() { - let bridge = Cc["@mozilla.org/android/bridge;1"] - .getService(Ci.nsIAndroidBridge); - let obsXPCOM = bridge.browserApp.getUITelemetryObserver(); - do_check_true(!!obsXPCOM); - return obsXPCOM.wrappedJSObject; -} - -/** - * The following event test will fail if telemetry isn't enabled. The Java-side - * part of this test should have turned it on; fail if it didn't work. - */ -add_test(function test_enabled() { - let obs = getObserver(); - do_check_true(!!obs); - do_check_true(obs.enabled); - run_next_test(); -}); - -add_test(function test_telemetry_events() { - let expected = expectedArraysToObjs([ - ["event", EVENT_TEST1, METHOD_TEST1, [], undefined], - ["event", EVENT_TEST2, METHOD_TEST1, [SESSION_STARTED_TWICE], undefined], - ["event", EVENT_TEST2, METHOD_TEST2, [SESSION_STARTED_TWICE], undefined], - ["event", EVENT_TEST3, METHOD_TEST1, [SESSION_STARTED_TWICE, SESSION_STOPPED_TWICE], "foobarextras"], - ["session", SESSION_STARTED_TWICE, REASON_TEST1], - ["event", EVENT_TEST4, METHOD_TEST1, [SESSION_STOPPED_TWICE], "barextras"], - ["session", SESSION_STOPPED_TWICE, REASON_TEST2], - ["event", EVENT_TEST1, METHOD_NONE, [], undefined], - ]); - - let clearMeasurements = false; - let obs = getObserver(); - let measurements = removeNonTestMeasurements(obs.getUIMeasurements(clearMeasurements)); - - measurements.forEach(function (m, i) { - if (m.type === "event") { - m.sessions = removeNonTestSessions(m.sessions); - m.sessions.sort(); // Mutates. - } - - do_check_measurement_eq(expected[i], m); - }); - - expected.forEach(function (m, i) { - do_check_measurement_eq(m, measurements[i]); - }); - - run_next_test(); -}); - -/** - * Converts the expected value arrays to objects, - * for less typing when initializing the expected arrays. - */ -function expectedArraysToObjs(expectedArrays) { - return expectedArrays.map(function (arr) { - let type = arr[0]; - if (type === "event") { - return { - type: type, - action: arr[1], - method: arr[2], - sessions: arr[3].sort(), // Sort, just in case it's not sorted by hand! - extras: arr[4], - }; - - } else if (type === "session") { - return { - type: type, - name: arr[1], - reason: arr[2], - }; - } - }); -} - -function removeNonTestMeasurements(measurements) { - return measurements.filter(function (measurement) { - if (measurement.type === "event") { - return measurement.action.startsWith("_test_event_"); - } else if (measurement.type === "session") { - return measurement.name.startsWith("_test_session_"); - } - return false; - }); -} - -function removeNonTestSessions(sessions) { - return sessions.filter(function (sessionName) { - return sessionName.startsWith("_test_session_"); - }); -} - -run_next_test(); |