summaryrefslogtreecommitdiffstats
path: root/startupcache/test/TestStartupCacheTelemetry.js
diff options
context:
space:
mode:
Diffstat (limited to 'startupcache/test/TestStartupCacheTelemetry.js')
-rw-r--r--startupcache/test/TestStartupCacheTelemetry.js60
1 files changed, 60 insertions, 0 deletions
diff --git a/startupcache/test/TestStartupCacheTelemetry.js b/startupcache/test/TestStartupCacheTelemetry.js
new file mode 100644
index 000000000..7a570187f
--- /dev/null
+++ b/startupcache/test/TestStartupCacheTelemetry.js
@@ -0,0 +1,60 @@
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const Cu = Components.utils;
+
+Cu.import("resource://gre/modules/Services.jsm");
+Cu.import("resource://gre/modules/XPCOMUtils.jsm");
+
+function shouldHaveChanged(a, b)
+{
+ if (a.length != b.length) {
+ throw Error("TEST-UNEXPECTED-FAIL: telemetry count array size changed");
+ }
+
+ for (let i = 0; i < a.length; ++i) {
+ if (a[i] == b[i]) {
+ continue;
+ }
+ return; // something was different, that's all that matters
+ }
+ throw Error("TEST-UNEXPECTED-FAIL: telemetry data didn't change");
+}
+
+function TestStartupCacheTelemetry() { }
+
+TestStartupCacheTelemetry.prototype = {
+ classID: Components.ID("{73cbeffd-d6c7-42f0-aaf3-f176430dcfc8}"),
+ QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver]),
+
+ saveInitial: function() {
+ let t = Services.telemetry;
+ this._age = t.getHistogramById("STARTUP_CACHE_AGE_HOURS").snapshot.counts;
+ this._invalid = t.getHistogramById("STARTUP_CACHE_INVALID").snapshot.counts;
+ },
+
+ checkFinal: function() {
+ let t = Services.telemetry;
+ let newAge = t.getHistogramById("STARTUP_CACHE_AGE_HOURS").snapshot.counts;
+ shouldHaveChanged(this._age, newAge);
+
+ let newInvalid = t.getHistogramById("STARTUP_CACHE_INVALID").snapshot.counts;
+ shouldHaveChanged(this._invalid, newInvalid);
+ },
+
+ observe: function(subject, topic, data) {
+ switch (topic) {
+ case "save-initial":
+ this.saveInitial();
+ break;
+
+ case "check-final":
+ this.checkFinal();
+ break;
+
+ default:
+ throw Error("BADDOG, NO MILKBONE FOR YOU");
+ }
+ },
+};
+
+this.NSGetFactory = XPCOMUtils.generateNSGetFactory([TestStartupCacheTelemetry]);