Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding a test-helper class TestCoroutineContext. #1

Open
wants to merge 66 commits into
base: master
Choose a base branch
from

Conversation

streetsofboston
Copy link

The purpose of this PR is to add a component that allows unit-tests that exercise code with Coroutines with delays and timeouts to run as fast as possible in near zero time.

Running a unit-test for code that contains one or more Coroutine with delays or timeouts requires the unit-test to wait and delay until the delays and timeouts of the various Coroutines come to pass.

This can cause unit-tests to take too much time to finish.

The addition of a new Coroutine context, called TestCoroutineContext alleviates this problem much like a TestScheduler does for RxJava2. When Coroutines use an instance of TestCoroutineContext, delays and timeouts can be fast-forwarded by calling its methods such as advanceTimeBy and advanceTimeTo and this will speed up the execution of these Coroutines.

elizarov and others added 30 commits March 13, 2018 17:22
of the source channels under all circumstances;
`onCompletion` added to `produce` builder;
`ReceiveChannel.consumes(): CompletionHandler` extension fun.

Fixes Kotlin#279
Make `CoroutineContext#DEBUG_PROPERTY_NAME` public, also move `"on"`, `"off"`, `"auto"` to public constants.
Fixes Kotlin#316
…anges except making JobImpl internal (not private)
qwwdfsad and others added 27 commits April 25, 2018 11:56
…lias to a cause.

CompletionHandler receives JobCancellationException if it was invoked during regular cancellation.
Test coverage for cancellation paths improved.
…disabling stacktraces of JobCancellationException in production mode
…handle concurrent mutations, make handler JobNode to avoid extra object allocation
JobCancellationException.job is made internal.
# Conflicts:
#	common/kotlinx-coroutines-core-common/src/test/kotlin/kotlinx/coroutines/experimental/channels/ArrayBroadcastChannelTest.kt
#	common/kotlinx-coroutines-core-common/src/test/kotlin/kotlinx/coroutines/experimental/channels/ArrayChannelTest.kt
#	common/kotlinx-coroutines-core-common/src/test/kotlin/kotlinx/coroutines/experimental/channels/ConflatedChannelTest.kt
#	common/kotlinx-coroutines-core-common/src/test/kotlin/kotlinx/coroutines/experimental/channels/LinkedListChannelTest.kt
#	common/kotlinx-coroutines-core-common/src/test/kotlin/kotlinx/coroutines/experimental/channels/ProduceTest.kt
#	common/kotlinx-coroutines-core-common/src/test/kotlin/kotlinx/coroutines/experimental/channels/RendezvousChannelTest.kt
Invoke clearTimeout on cancellation in JSDispatcher
Remove delayed task on cancellation from ThreadSafeHeap on cancellation to avoid memory leak
@streetsofboston streetsofboston force-pushed the testcoroutinecontext branch from 82eb9e8 to 289f3ba Compare May 7, 2018 19:32
@streetsofboston streetsofboston force-pushed the testcoroutinecontext branch from 289f3ba to afb3dea Compare May 7, 2018 19:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants