Make 'wait' tests resilient on slow test systems

This commit is contained in:
Lars T Hansen 2017-09-06 10:01:22 +02:00 committed by Rick Waldron
parent 7f88a6d7f9
commit b279f4c1b8
2 changed files with 7 additions and 7 deletions

View File

@ -15,7 +15,7 @@ $262.agent.receiveBroadcast(function (sab, id) {
var ia = new Int32Array(sab);
var then = Date.now();
$262.agent.report(Atomics.wait(ia, 0, 0, 500)); // Timeout 500ms
$262.agent.report(Date.now() - then);
$262.agent.report(Date.now() - then); // Actual time can be more than 500ms
$262.agent.leaving();
})
`);
@ -24,11 +24,11 @@ var ia = new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT));
$262.agent.broadcast(ia.buffer);
assert.sameValue(getReport(), "timed-out");
assert.sameValue(Math.abs((getReport()|0) - 500) < $ATOMICS_MAX_TIME_EPSILON, true);
assert.sameValue(Math.abs((getReport()|0) >= 500 - $ATOMICS_MAX_TIME_EPSILON, true);
function getReport() {
var r;
while ((r = $262.agent.getReport()) == null)
$262.agent.sleep(100);
$262.agent.sleep(100);
return r;
}

View File

@ -15,7 +15,7 @@ $262.agent.receiveBroadcast(function (sab, id) {
var ia = new Int32Array(sab);
var then = Date.now();
Atomics.wait(ia, 0, 0);
var diff = Date.now() - then; // Should be about 1000 ms
var diff = Date.now() - then; // Should be about 1000 ms but can be more
$262.agent.report(diff);
$262.agent.leaving();
})
@ -25,10 +25,10 @@ var ia = new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT));
$262.agent.broadcast(ia.buffer);
$262.agent.sleep(500); // Give the agent a chance to wait
Atomics.store(ia, 0, 1); // Change the value, should not wake the agent
Atomics.store(ia, 0, 1); // Change the value, should not wake the agent
$262.agent.sleep(500); // Wait some more so that we can tell
Atomics.wake(ia, 0); // Really wake it up
assert.sameValue(Math.abs((getReport()|0) - 1000) < $ATOMICS_MAX_TIME_EPSILON, true);
Atomics.wake(ia, 0); // Really wake it up
assert.sameValue((getReport()|0) >= 1000 - $ATOMICS_MAX_TIME_EPSILON, true);
function getReport() {
var r;