tenfourfox/browser/extensions/loop/chrome/test/mochitest/browser_mozLoop_telemetry.js
Cameron Kaiser c9b2922b70 hello FPR
2017-04-19 00:56:45 -07:00

238 lines
8.9 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
/*
* This file contains tests for the mozLoop telemetry API.
*/
"use strict";
var [, gHandlers] = LoopAPI.inspect();
var gConstants;
gHandlers.GetAllConstants({}, constants => gConstants = constants);
/**
* Enable local telemetry recording for the duration of the tests.
*/
add_task(function* test_initialize() {
let oldCanRecord = Services.telemetry.canRecordExtended;
Services.telemetry.canRecordExtended = true;
registerCleanupFunction(function() {
Services.telemetry.canRecordExtended = oldCanRecord;
});
});
/**
* Tests that enumerated bucket histograms exist and can be updated.
*/
add_task(function* test_mozLoop_telemetryAdd_buckets() {
let histogramId = "LOOP_TWO_WAY_MEDIA_CONN_LENGTH_1";
let histogram = Services.telemetry.getHistogramById(histogramId);
let CONN_LENGTH = gConstants.TWO_WAY_MEDIA_CONN_LENGTH;
histogram.clear();
for (let value of [CONN_LENGTH.SHORTER_THAN_10S,
CONN_LENGTH.BETWEEN_10S_AND_30S,
CONN_LENGTH.BETWEEN_10S_AND_30S,
CONN_LENGTH.BETWEEN_30S_AND_5M,
CONN_LENGTH.BETWEEN_30S_AND_5M,
CONN_LENGTH.BETWEEN_30S_AND_5M,
CONN_LENGTH.MORE_THAN_5M,
CONN_LENGTH.MORE_THAN_5M,
CONN_LENGTH.MORE_THAN_5M,
CONN_LENGTH.MORE_THAN_5M]) {
gHandlers.TelemetryAddValue({ data: [histogramId, value] }, () => {});
}
let snapshot = histogram.snapshot();
is(snapshot.counts[CONN_LENGTH.SHORTER_THAN_10S], 1, "TWO_WAY_MEDIA_CONN_LENGTH.SHORTER_THAN_10S");
is(snapshot.counts[CONN_LENGTH.BETWEEN_10S_AND_30S], 2, "TWO_WAY_MEDIA_CONN_LENGTH.BETWEEN_10S_AND_30S");
is(snapshot.counts[CONN_LENGTH.BETWEEN_30S_AND_5M], 3, "TWO_WAY_MEDIA_CONN_LENGTH.BETWEEN_30S_AND_5M");
is(snapshot.counts[CONN_LENGTH.MORE_THAN_5M], 4, "TWO_WAY_MEDIA_CONN_LENGTH.MORE_THAN_5M");
});
add_task(function* test_mozLoop_telemetryAdd_sharingURL_buckets() {
let histogramId = "LOOP_SHARING_ROOM_URL";
let histogram = Services.telemetry.getHistogramById(histogramId);
const SHARING_TYPES = gConstants.SHARING_ROOM_URL;
histogram.clear();
for (let value of [SHARING_TYPES.COPY_FROM_PANEL,
SHARING_TYPES.COPY_FROM_CONVERSATION,
SHARING_TYPES.COPY_FROM_CONVERSATION,
SHARING_TYPES.EMAIL_FROM_CALLFAILED,
SHARING_TYPES.EMAIL_FROM_CALLFAILED,
SHARING_TYPES.EMAIL_FROM_CALLFAILED,
SHARING_TYPES.EMAIL_FROM_CONVERSATION,
SHARING_TYPES.EMAIL_FROM_CONVERSATION,
SHARING_TYPES.EMAIL_FROM_CONVERSATION,
SHARING_TYPES.EMAIL_FROM_CONVERSATION]) {
gHandlers.TelemetryAddValue({ data: [histogramId, value] }, () => {});
}
let snapshot = histogram.snapshot();
Assert.strictEqual(snapshot.counts[SHARING_TYPES.COPY_FROM_PANEL], 1,
"SHARING_ROOM_URL.COPY_FROM_PANEL");
Assert.strictEqual(snapshot.counts[SHARING_TYPES.COPY_FROM_CONVERSATION], 2,
"SHARING_ROOM_URL.COPY_FROM_CONVERSATION");
Assert.strictEqual(snapshot.counts[SHARING_TYPES.EMAIL_FROM_CALLFAILED], 3,
"SHARING_ROOM_URL.EMAIL_FROM_CALLFAILED");
Assert.strictEqual(snapshot.counts[SHARING_TYPES.EMAIL_FROM_CONVERSATION], 4,
"SHARING_ROOM_URL.EMAIL_FROM_CONVERSATION");
});
add_task(function* test_mozLoop_telemetryAdd_roomCreate_buckets() {
let histogramId = "LOOP_ROOM_CREATE";
let histogram = Services.telemetry.getHistogramById(histogramId);
const ACTION_TYPES = gConstants.ROOM_CREATE;
histogram.clear();
for (let value of [ACTION_TYPES.CREATE_SUCCESS,
ACTION_TYPES.CREATE_FAIL,
ACTION_TYPES.CREATE_FAIL]) {
gHandlers.TelemetryAddValue({ data: [histogramId, value] }, () => {});
}
let snapshot = histogram.snapshot();
Assert.strictEqual(snapshot.counts[ACTION_TYPES.CREATE_SUCCESS], 1,
"SHARING_ROOM_URL.CREATE_SUCCESS");
Assert.strictEqual(snapshot.counts[ACTION_TYPES.CREATE_FAIL], 2,
"SHARING_ROOM_URL.CREATE_FAIL");
});
add_task(function* test_mozLoop_telemetryAdd_roomDelete_buckets() {
let histogramId = "LOOP_ROOM_DELETE";
let histogram = Services.telemetry.getHistogramById(histogramId);
const ACTION_TYPES = gConstants.ROOM_DELETE;
histogram.clear();
for (let value of [ACTION_TYPES.DELETE_SUCCESS,
ACTION_TYPES.DELETE_FAIL,
ACTION_TYPES.DELETE_FAIL]) {
gHandlers.TelemetryAddValue({ data: [histogramId, value] }, () => {});
}
let snapshot = histogram.snapshot();
Assert.strictEqual(snapshot.counts[ACTION_TYPES.DELETE_SUCCESS], 1,
"SHARING_ROOM_URL.DELETE_SUCCESS");
Assert.strictEqual(snapshot.counts[ACTION_TYPES.DELETE_FAIL], 2,
"SHARING_ROOM_URL.DELETE_FAIL");
});
add_task(function* test_mozLoop_telemetryAdd_roomSessionWithChat() {
let histogramId = "LOOP_ROOM_SESSION_WITHCHAT";
let histogram = Services.telemetry.getHistogramById(histogramId);
histogram.clear();
let snapshot;
for (let i = 1; i < 4; ++i) {
gHandlers.TelemetryAddValue({ data: [histogramId, 1] }, () => {});
snapshot = histogram.snapshot();
Assert.strictEqual(snapshot.counts[0], i);
}
});
// Skip until bug 1208416 has landed.
/*
add_task(function* test_mozLoop_telemetryAdd_infobarActionButtons() {
let histogramId = "LOOP_INFOBAR_ACTION_BUTTONS";
let histogram = Services.telemetry.getHistogramById(histogramId);
const ACTION_TYPES = gConstants.SHARING_SCREEN;
histogram.clear();
for (let value of [ACTION_TYPES.PAUSED,
ACTION_TYPES.PAUSED,
ACTION_TYPES.RESUMED]) {
gHandlers.TelemetryAddValue({ data: [histogramId, value] }, () => {});
}
let snapshot = histogram.snapshot();
Assert.strictEqual(snapshot.counts[ACTION_TYPES.RESUMED], 1,
"SHARING_SCREEN.RESUMED");
Assert.strictEqual(snapshot.counts[ACTION_TYPES.PAUSED], 2,
"SHARING_SCREEN.PAUSED");
});
add_task(function* test_mozLoop_telemetryAdd_loopMauType_buckets() {
let histogramId = "LOOP_MAU";
let histogram = Services.telemetry.getHistogramById(histogramId);
const ACTION_TYPES = gConstants.LOOP_MAU_TYPE;
histogram.clear();
for (let value of [ACTION_TYPES.OPEN_PANEL,
ACTION_TYPES.OPEN_CONVERSATION,
ACTION_TYPES.ROOM_OPEN,
ACTION_TYPES.ROOM_SHARE,
ACTION_TYPES.ROOM_DELETE]) {
gHandlers.TelemetryAddValue({ data: [histogramId, value] }, () => {});
}
let snapshot = histogram.snapshot();
Assert.strictEqual(snapshot.counts[ACTION_TYPES.OPEN_PANEL], 1,
"LOOP_MAU_TYPE.OPEN_PANEL");
Assert.strictEqual(snapshot.counts[ACTION_TYPES.OPEN_CONVERSATION], 1,
"LOOP_MAU_TYPE.OPEN_CONVERSATION");
Assert.strictEqual(snapshot.counts[ACTION_TYPES.ROOM_OPEN], 1,
"LOOP_MAU_TYPE.ROOM_OPEN");
Assert.strictEqual(snapshot.counts[ACTION_TYPES.ROOM_SHARE], 1,
"LOOP_MAU_TYPE.ROOM_SHARE");
Assert.strictEqual(snapshot.counts[ACTION_TYPES.ROOM_DELETE], 1,
"LOOP_MAU_TYPE.ROOM_DELETE");
});
*/
/**
* Tests that only one event is sent every 30 days
*/
// Skip until bug 1208416 has landed.
/*
add_task(function* test_mozLoop_telemetryAdd_loopMau_more_than_30_days() {
let histogramId = "LOOP_MAU";
let histogram = Services.telemetry.getHistogramById(histogramId);
const ACTION_TYPES = gConstants.LOOP_MAU_TYPE;
histogram.clear();
gHandlers.TelemetryAddValue({ data: [histogramId, ACTION_TYPES.OPEN_PANEL] }, () => {});
let snapshot = histogram.snapshot();
Assert.strictEqual(snapshot.counts[ACTION_TYPES.OPEN_PANEL], 1,
"LOOP_MAU_TYPE.OPEN_PANEL");
// Let's be sure that the last event was sent a month ago
let timestamp = (Math.floor(Date.now() / 1000)) - 2593000;
Services.prefs.setIntPref("loop.mau.openPanel", timestamp);
gHandlers.TelemetryAddValue({ data: [histogramId, ACTION_TYPES.OPEN_PANEL] }, () => {});
snapshot = histogram.snapshot();
Assert.strictEqual(snapshot.counts[ACTION_TYPES.OPEN_PANEL], 2,
"LOOP_MAU_TYPE.OPEN_PANEL");
Services.prefs.clearUserPref("loop.mau.openPanel");
});
add_task.skip(function* test_mozLoop_telemetryAdd_loopMau_less_than_30_days() {
let histogramId = "LOOP_MAU";
let histogram = Services.telemetry.getHistogramById(histogramId);
const ACTION_TYPES = gConstants.LOOP_MAU_TYPE;
histogram.clear();
gHandlers.TelemetryAddValue({ data: [histogramId, ACTION_TYPES.OPEN_PANEL] }, () => {});
let snapshot = histogram.snapshot();
Assert.strictEqual(snapshot.counts[ACTION_TYPES.OPEN_PANEL], 1,
"LOOP_MAU_TYPE.OPEN_PANEL");
let timestamp = (Math.floor(Date.now() / 1000)) - 1000;
Services.prefs.setIntPref("loop.mau.openPanel", timestamp);
gHandlers.TelemetryAddValue({ data: [histogramId, ACTION_TYPES.OPEN_PANEL] }, () => {});
snapshot = histogram.snapshot();
Assert.strictEqual(snapshot.counts[ACTION_TYPES.OPEN_PANEL], 1,
"LOOP_MAU_TYPE.OPEN_PANEL");
Services.prefs.clearUserPref("loop.mau.openPanel");
});
*/