summaryrefslogtreecommitdiffstats
path: root/devtools/server/tests/unit/test_monitor_actor.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/server/tests/unit/test_monitor_actor.js')
-rw-r--r--devtools/server/tests/unit/test_monitor_actor.js76
1 files changed, 76 insertions, 0 deletions
diff --git a/devtools/server/tests/unit/test_monitor_actor.js b/devtools/server/tests/unit/test_monitor_actor.js
new file mode 100644
index 000000000..17c272d80
--- /dev/null
+++ b/devtools/server/tests/unit/test_monitor_actor.js
@@ -0,0 +1,76 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+/**
+ * Test the monitor actor.
+ */
+
+"use strict";
+
+function run_test()
+{
+ let EventEmitter = require("devtools/shared/event-emitter");
+
+ function MonitorClient(client, form) {
+ this.client = client;
+ this.actor = form.monitorActor;
+ this.events = ["update"];
+
+ EventEmitter.decorate(this);
+ client.registerClient(this);
+ }
+ MonitorClient.prototype.destroy = function () {
+ this.client.unregisterClient(this);
+ };
+ MonitorClient.prototype.start = function (callback) {
+ this.client.request({
+ to: this.actor,
+ type: "start"
+ }, callback);
+ };
+ MonitorClient.prototype.stop = function (callback) {
+ this.client.request({
+ to: this.actor,
+ type: "stop"
+ }, callback);
+ };
+
+ let monitor, client;
+
+ // Start the monitor actor.
+ get_chrome_actors((c, form) => {
+ client = c;
+ monitor = new MonitorClient(client, form);
+ monitor.on("update", gotUpdate);
+ monitor.start(update);
+ });
+
+ let time = Date.now();
+
+ function update() {
+ let event = {
+ graph: "Test",
+ curve: "test",
+ value: 42,
+ time: time,
+ };
+ Services.obs.notifyObservers(null, "devtools-monitor-update", JSON.stringify(event));
+ }
+
+ function gotUpdate(type, packet) {
+ packet.data.forEach(function (event) {
+ // Ignore updates that were not sent by this test.
+ if (event.graph === "Test") {
+ do_check_eq(event.curve, "test");
+ do_check_eq(event.value, 42);
+ do_check_eq(event.time, time);
+ monitor.stop(function (aResponse) {
+ monitor.destroy();
+ finishClient(client);
+ });
+ }
+ });
+ }
+
+ do_test_pending();
+}