Fix testSchedulingTaskOnSleepingLoopWakesUpOnce (#1992)

Motivation:

This test is flaky, and has always been flaky.

The issue here is simply a timing one. It has always been possible
for the thread running in the background DispatchQueue to be take
longer between calling semaphore.signal and promise.cascade(to:)
than it does for the event loop to process the tasks. If that
happens, this test will fail by eventually timing out.

Modifications:

- Adjust the test to avoid using promise.cascade(to:), and so prevent it
  from having at timing window.

Result:

The test will be not flaky, or at least less flaky.

Resolves #1971.

Co-authored-by: George Barnett <gbarnett@apple.com>
This commit is contained in:
Cory Benfield 2021-11-25 10:04:25 +00:00 committed by GitHub
parent 926fe9de58
commit 37e7a33de4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 4 additions and 3 deletions

View File

@ -66,12 +66,13 @@ final class SALEventLoopTests: XCTestCase, SALTest {
}
// Now enqueue a "last" task.
let lastTask = thisLoop.submit { i &+= 1 }
thisLoop.execute {
i &+= 1
promise.succeed(())
}
// Now we can unblock the semaphore.
semaphore.signal()
lastTask.cascade(to: promise)
}
return promise.futureResult