/* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ "use strict"; add_setup(() => { // FOG needs to be initialized in order for data to flow. Services.fog.initializeFOG(); Services.telemetry.clearScalars(); }); /** * Tests that calling `BackupService.takeMeasurements` will call the measure * method of all registered BackupResource classes. */ add_task(async function test_takeMeasurements() { let sandbox = sinon.createSandbox(); sandbox.stub(FakeBackupResource1.prototype, "measure").resolves(); sandbox .stub(FakeBackupResource2.prototype, "measure") .rejects(new Error("Some failure to measure")); let bs = new BackupService({ FakeBackupResource1, FakeBackupResource2 }); await bs.takeMeasurements(); for (let backupResourceClass of [FakeBackupResource1, FakeBackupResource2]) { Assert.ok( backupResourceClass.prototype.measure.calledOnce, "Measure was called" ); Assert.ok( backupResourceClass.prototype.measure.calledWith(PathUtils.profileDir), "Measure was called with the profile directory argument" ); } sandbox.restore(); }); /** * Tests that we can measure the disk space available in the profile directory. */ add_task(async function test_profDDiskSpace() { let bs = new BackupService(); await bs.takeMeasurements(); let measurement = Glean.browserBackup.profDDiskSpace.testGetValue(); TelemetryTestUtils.assertScalar( TelemetryTestUtils.getProcessScalars("parent", false, true), "browser.backup.prof_d_disk_space", measurement ); Assert.greater( measurement, 0, "Should have collected a measurement for the profile directory storage " + "device" ); });