Commit d6aa423c authored by Zentaro Kavanagh's avatar Zentaro Kavanagh Committed by Commit Bot

Diagnostics: Add tests for resetting observers

- Test each observer firing twice resetting the provider
  between calls.

Bug: 1125150
Test: browser_tests --gtest_filter=DiagnosticsApp*
Change-Id: I847b0af524ffaa5d5c905698677e101a94b73c74
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2441308
Commit-Queue: Zentaro Kavanagh <zentaro@chromium.org>
Reviewed-by: default avatarBailey Berro <baileyberro@chromium.org>
Cr-Commit-Position: refs/heads/master@{#813602}
parent b6835e47
......@@ -307,4 +307,53 @@ suite('FakeSystemDataProviderTest', () => {
return completeResolver.promise;
});
});
test('ObserveWithResetBetweenTriggers', () => {
// The fake needs to have at least 2 samples.
assertTrue(fakeCpuUsage.length >= 2);
provider.setFakeCpuUsage(fakeCpuUsage);
// Keep track of which call to the callback.
let whichSample = 0;
let firstResolver = new PromiseResolver();
let completeResolver = new PromiseResolver();
/** @type {!CpuUsageObserver} */
const cpuObserverRemote = {
onCpuUsageUpdated: (cpuUsage) => {
// Only expect 2 calls.
assertTrue(whichSample >= 0);
assertTrue(whichSample <= 1);
// In both cases we should get the first sample only.
assertDeepEquals(fakeCpuUsage[0], cpuUsage);
if (whichSample === 0) {
firstResolver.resolve();
} else {
completeResolver.resolve();
}
whichSample++;
}
};
return provider.observeCpuUsage(cpuObserverRemote)
.then(() => {
return firstResolver.promise;
})
.then(() => {
// After the observer fires the first time, reset it and observe
// again. We should go back to the initial sample.
provider.reset();
provider.setFakeCpuUsage(fakeCpuUsage);
// Observing will implicitly trigger again.
return provider.observeCpuUsage(cpuObserverRemote);
})
.then(() => {
// Wait for the second callback which should return the first sample
// because it was reset.
return completeResolver.promise;
});
});
});
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment