Skip to content

Commit

Permalink
Fix testSchedulingTaskOnSleepingLoopWakesUpOnce (#1992)
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
Lukasa and glbrntt authored Nov 25, 2021
1 parent 926fe9d commit 37e7a33
Showing 1 changed file with 4 additions and 3 deletions.
7 changes: 4 additions & 3 deletions Tests/NIOPosixTests/SALEventLoopTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 37e7a33

Please sign in to comment.