toil.test.src.threadingTest¶
Attributes¶
Classes¶
Class that lets a bunch of processes detect and elect a last process |
|
A common base class for Toil tests. |
|
Test Toil threading/synchronization tools. |
Functions¶
Get the rounded-up integer number of whole CPUs available. |
|
|
Context manager that locks a mutex. The mutex is identified by the given |
Module Contents¶
- class toil.test.src.threadingTest.LastProcessStandingArena(base_dir, name)[source]¶
Class that lets a bunch of processes detect and elect a last process standing.
Process enter and leave (sometimes due to sudden existence failure). We guarantee that the last process to leave, if it leaves properly, will get a chance to do some cleanup. If new processes try to enter during the cleanup, they will be delayed until after the cleanup has happened and the previous “last” process has finished leaving.
The user is responsible for making sure you always leave if you enter! Consider using a try/finally; this class is not a context manager.
- enter()[source]¶
This process is entering the arena. If cleanup is in progress, blocks until it is finished.
You may not enter the arena again before leaving it.
- Return type:
None
- leave()[source]¶
This process is leaving the arena. If this process happens to be the last process standing, yields something, with other processes blocked from joining the arena until the loop body completes and the process has finished leaving. Otherwise, does not yield anything.
Should be used in a loop:
- for _ in arena.leave():
# If we get here, we were the last process. Do the cleanup pass
- Return type:
Iterator[bool]
- toil.test.src.threadingTest.cpu_count()[source]¶
Get the rounded-up integer number of whole CPUs available.
Counts hyperthreads as CPUs.
Uses the system’s actual CPU count, or the current v1 cgroup’s quota per period, if the quota is set.
Ignores the cgroup’s cpu shares value, because it’s extremely difficult to interpret. See https://github.com/kubernetes/kubernetes/issues/81021.
Caches result for efficiency.
- Returns:
Integer count of available CPUs, minimum 1.
- Return type:
- toil.test.src.threadingTest.global_mutex(base_dir, mutex)[source]¶
Context manager that locks a mutex. The mutex is identified by the given name, and scoped to the given directory. Works across all containers that have access to the given diectory. Mutexes held by dead processes are automatically released.
Only works between processes, NOT between threads.
- class toil.test.src.threadingTest.ToilTest(methodName='runTest')[source]¶
Bases:
unittest.TestCaseA common base class for Toil tests.
Please have every test case directly or indirectly inherit this one.
When running tests you may optionally set the TOIL_TEST_TEMP environment variable to the path of a directory where you want temporary test files be placed. The directory will be created if it doesn’t exist. The path may be relative in which case it will be assumed to be relative to the project root. If TOIL_TEST_TEMP is not defined, temporary files and directories will be created in the system’s default location for such files and any temporary files or directories left over from tests will be removed automatically removed during tear down. Otherwise, left-over files will not be removed.
- classmethod setUpClass()[source]¶
Hook method for setting up class fixture before running tests in the class.
- Return type:
None
- classmethod tearDownClass()[source]¶
Hook method for deconstructing the class fixture after running all tests in the class.
- Return type:
None
- setUp()[source]¶
Hook method for setting up the test fixture before exercising it.
- Return type:
None