/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
/**
* Test that we have allocation data coming from the front.
*/
"use strict";
const { PerformanceFront } = require("devtools/shared/fronts/performance");
add_task(async function () {
await addTab(MAIN_DOMAIN + "doc_allocations.html");
initDebuggerServer();
let client = new DebuggerClient(DebuggerServer.connectPipe());
let form = await connectDebuggerClient(client);
let front = PerformanceFront(client, form);
await front.connect();
let rec = await front.startRecording(
{ withMarkers: true, withAllocations: true, withTicks: true });
await waitUntil(() => rec.getAllocations().frames.length);
await waitUntil(() => rec.getAllocations().timestamps.length);
await waitUntil(() => rec.getAllocations().sizes.length);
await waitUntil(() => rec.getAllocations().sites.length);
await front.stopRecording(rec);
let { timestamps, sizes } = rec.getAllocations();
is(timestamps.length, sizes.length, "we have the same amount of timestamps and sizes");
ok(timestamps.every(time => time > 0 && typeof time === "number"),
"all timestamps have numeric values");
ok(sizes.every(n => n > 0 && typeof n === "number"), "all sizes are positive numbers");
await front.destroy();
await client.close();
gBrowser.removeCurrentTab();
});