compute_pressure_duplicate_updates.https.window.js (2362B)
1 // META: timeout=long 2 // META: variant=?globalScope=window 3 // META: variant=?globalScope=dedicated_worker 4 // META: script=/resources/testdriver.js 5 // META: script=/resources/testdriver-vendor.js 6 // META: script=/common/utils.js 7 // META: script=/common/dispatcher/dispatcher.js 8 // META: script=./resources/common.js 9 // META: script=./resources/sync-pressure-observer.js 10 11 'use strict'; 12 13 pressure_test(async (t) => { 14 await create_virtual_pressure_source('cpu'); 15 t.add_cleanup(async () => { 16 await remove_virtual_pressure_source('cpu'); 17 }); 18 19 const syncObserver = new SyncPressureObserver(t); 20 await syncObserver.observer().observe('cpu'); 21 22 await update_virtual_pressure_source('cpu', 'critical', 0.2); 23 await syncObserver.waitForUpdate(); 24 assert_equals(syncObserver.changes()[0][0].state, 'critical'); 25 assert_equals(syncObserver.changes()[0][0].ownContributionEstimate, 0.2); 26 27 await update_virtual_pressure_source('cpu', 'critical', 0.2); 28 await new Promise(resolve => {t.step_timeout(resolve, 3000)}); 29 assert_equals(syncObserver.changes().length, 1); 30 31 await update_virtual_pressure_source('cpu', 'nominal', 0.2); 32 await syncObserver.waitForUpdate(); 33 assert_equals(syncObserver.changes()[1][0].state, 'nominal'); 34 assert_equals(syncObserver.changes()[1][0].ownContributionEstimate, 0.2); 35 36 assert_equals(syncObserver.changes().length, 2); 37 }, 'Changes that fail the "should dispatch" test are discarded.'); 38 39 pressure_test(async (t) => { 40 await create_virtual_pressure_source('cpu'); 41 t.add_cleanup(async () => { 42 await remove_virtual_pressure_source('cpu'); 43 }); 44 45 const syncObserver = new SyncPressureObserver(t); 46 await syncObserver.observer().observe('cpu', {sampleInterval: 500}); 47 48 await update_virtual_pressure_source('cpu', 'critical'); 49 await syncObserver.waitForUpdate(); 50 assert_equals(syncObserver.changes()[0][0].state, 'critical'); 51 52 await update_virtual_pressure_source('cpu', 'critical'); 53 await syncObserver.waitForUpdate(); 54 assert_equals(syncObserver.changes()[1][0].state, 'critical'); 55 56 await update_virtual_pressure_source('cpu', 'nominal'); 57 await syncObserver.waitForUpdate(); 58 assert_equals(syncObserver.changes()[2][0].state, 'nominal'); 59 60 assert_equals(syncObserver.changes().length, 3); 61 }, 'Updates should be received even when no state change, if sampleInterval is set.'); 62 63 mark_as_done();