mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-08-22 01:48:52 +09:00
![Simon Glass](/assets/img/avatar_default.png)
At present the tests run one after the other using a single CPU. This is not very efficient. Bring in the concurrencytest module and run the tests concurrently, using one process for each CPU by default. A -P option allows this to be overridden, which is necessary for code-coverage to function correctly. This requires fixing a few tests which are currently not fully independent. At some point we might consider doing this across all pytests in U-Boot. There is a pytest version that supports specifying the number of processes to use, but it did not work for me. Signed-off-by: Simon Glass <sjg@chromium.org>
75 lines
1.5 KiB
Markdown
75 lines
1.5 KiB
Markdown
concurrencytest
|
|
===============
|
|
|
|
![testing goats](https://raw.github.com/cgoldberg/concurrencytest/master/testing-goats.png "testing goats")
|
|
|
|
Python testtools extension for running unittest suites concurrently.
|
|
|
|
----
|
|
|
|
Install from PyPI:
|
|
```
|
|
pip install concurrencytest
|
|
```
|
|
|
|
----
|
|
|
|
Requires:
|
|
|
|
* [testtools](https://pypi.python.org/pypi/testtools) : `pip install testtools`
|
|
* [python-subunit](https://pypi.python.org/pypi/python-subunit) : `pip install python-subunit`
|
|
|
|
----
|
|
|
|
Example:
|
|
|
|
```python
|
|
import time
|
|
import unittest
|
|
|
|
from concurrencytest import ConcurrentTestSuite, fork_for_tests
|
|
|
|
|
|
class SampleTestCase(unittest.TestCase):
|
|
"""Dummy tests that sleep for demo."""
|
|
|
|
def test_me_1(self):
|
|
time.sleep(0.5)
|
|
|
|
def test_me_2(self):
|
|
time.sleep(0.5)
|
|
|
|
def test_me_3(self):
|
|
time.sleep(0.5)
|
|
|
|
def test_me_4(self):
|
|
time.sleep(0.5)
|
|
|
|
|
|
# Load tests from SampleTestCase defined above
|
|
suite = unittest.TestLoader().loadTestsFromTestCase(SampleTestCase)
|
|
runner = unittest.TextTestRunner()
|
|
|
|
# Run tests sequentially
|
|
runner.run(suite)
|
|
|
|
# Run same tests across 4 processes
|
|
suite = unittest.TestLoader().loadTestsFromTestCase(SampleTestCase)
|
|
concurrent_suite = ConcurrentTestSuite(suite, fork_for_tests(4))
|
|
runner.run(concurrent_suite)
|
|
```
|
|
Output:
|
|
|
|
```
|
|
....
|
|
----------------------------------------------------------------------
|
|
Ran 4 tests in 2.003s
|
|
|
|
OK
|
|
....
|
|
----------------------------------------------------------------------
|
|
Ran 4 tests in 0.504s
|
|
|
|
OK
|
|
```
|