| // META: timeout=long |
| // META: variant=?globalScope=window |
| // META: variant=?globalScope=dedicated_worker |
| // META: script=/resources/testdriver.js |
| // META: script=/resources/testdriver-vendor.js |
| // META: script=/common/utils.js |
| // META: script=/common/dispatcher/dispatcher.js |
| // META: script=./resources/common.js |
| // META: script=./resources/sync-pressure-observer.js |
| |
| 'use strict'; |
| |
| pressure_test(async (t) => { |
| await create_virtual_pressure_source('cpu'); |
| t.add_cleanup(async () => { |
| await remove_virtual_pressure_source('cpu'); |
| }); |
| |
| const syncObserver = new SyncPressureObserver(t); |
| await syncObserver.observer().observe('cpu'); |
| |
| await update_virtual_pressure_source('cpu', 'critical', 0.2); |
| await syncObserver.waitForUpdate(); |
| assert_equals(syncObserver.changes()[0][0].state, 'critical'); |
| assert_equals(syncObserver.changes()[0][0].ownContributionEstimate, 0.2); |
| |
| await update_virtual_pressure_source('cpu', 'critical', 0.2); |
| await new Promise(resolve => {t.step_timeout(resolve, 3000)}); |
| assert_equals(syncObserver.changes().length, 1); |
| |
| await update_virtual_pressure_source('cpu', 'nominal', 0.2); |
| await syncObserver.waitForUpdate(); |
| assert_equals(syncObserver.changes()[1][0].state, 'nominal'); |
| assert_equals(syncObserver.changes()[1][0].ownContributionEstimate, 0.2); |
| |
| assert_equals(syncObserver.changes().length, 2); |
| }, 'Changes that fail the "should dispatch" test are discarded.'); |
| |
| pressure_test(async (t) => { |
| await create_virtual_pressure_source('cpu'); |
| t.add_cleanup(async () => { |
| await remove_virtual_pressure_source('cpu'); |
| }); |
| |
| const syncObserver = new SyncPressureObserver(t); |
| await syncObserver.observer().observe('cpu', {sampleInterval: 500}); |
| |
| await update_virtual_pressure_source('cpu', 'critical'); |
| await syncObserver.waitForUpdate(); |
| assert_equals(syncObserver.changes()[0][0].state, 'critical'); |
| |
| await update_virtual_pressure_source('cpu', 'critical'); |
| await syncObserver.waitForUpdate(); |
| assert_equals(syncObserver.changes()[1][0].state, 'critical'); |
| |
| await update_virtual_pressure_source('cpu', 'nominal'); |
| await syncObserver.waitForUpdate(); |
| assert_equals(syncObserver.changes()[2][0].state, 'nominal'); |
| |
| assert_equals(syncObserver.changes().length, 3); |
| }, 'Updates should be received even when no state change, if sampleInterval is set.'); |
| |
| mark_as_done(); |