HomePhabricator

[qa] parallelize tests suite rather than polling subprocesses

Description

[qa] parallelize tests suite rather than polling subprocesses

Summary:
Currently, the test suite runs several processes, and polls them repeatedly for completion while printing dots. This limits what kind of status updates can be provided to developers running the test suite.

This commit refactors the test runner to have several python threads which pass messages up to a status thread. This allows keeping track of which tests are running and reporting on that.

Additionally, this opens up the ability to directly import test files in the future while running them in parallel. That will enable printing detailed messages about which subtests are running rather than being per file.

Output now looks like the following:

bip68-112-113-p2p.py started
rpcbind_test.py skipped
abandonconflict.py started
Running jobs: bip68-112-113-p2p.py, p2p-compactblocks.py, abandonconflict.py, sendheaders.py
abandonconflict.py passed, Duration: 12 s
mempool_persist.py started

Note "Running jobs" rather than dots.

Test Plan: ./test/functional/test_runner.py

Reviewers: #bitcoin_abc, deadalnix

Reviewed By: #bitcoin_abc, deadalnix

Subscribers: deadalnix, teamcity

Differential Revision: https://reviews.bitcoinabc.org/D1400

Details

Provenance
schancelAuthored on May 9 2018, 04:00
schancelPushed on Jun 4 2018, 21:17
Reviewer
Restricted Project
Differential Revision
D1400: [qa] parallelize tests suite rather than polling subprocesses
Parents
rABC86bdb5b870b6: One more C++11 loop in validation.cpp
Branches
Unknown
Tags
Unknown