diff options
author | Simon Glass <sjg@chromium.org> | 2018-10-01 21:12:47 -0600 |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2018-10-08 07:34:34 -0600 |
commit | 11ae93eef40c09280f36104b6a8cf5d807f0bb0d (patch) | |
tree | 66b0e782d4901eb24e87354444bb73dda4f39a0e /tools/concurrencytest/README.md | |
parent | 2673afe221d17b8d43df3ecae3e3a6024b209ffe (diff) | |
download | u-boot-11ae93eef40c09280f36104b6a8cf5d807f0bb0d.zip u-boot-11ae93eef40c09280f36104b6a8cf5d807f0bb0d.tar.gz u-boot-11ae93eef40c09280f36104b6a8cf5d807f0bb0d.tar.bz2 |
binman: Run tests concurrently
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>
Diffstat (limited to 'tools/concurrencytest/README.md')
-rw-r--r-- | tools/concurrencytest/README.md | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/tools/concurrencytest/README.md b/tools/concurrencytest/README.md new file mode 100644 index 0000000..8e65776 --- /dev/null +++ b/tools/concurrencytest/README.md @@ -0,0 +1,74 @@ +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 +``` |