test: parallelize unit tests
authorAnatoly Burakov <anatoly.burakov@intel.com>
Fri, 27 Jul 2018 09:40:17 +0000 (10:40 +0100)
committerThomas Monjalon <thomas@monjalon.net>
Tue, 31 Jul 2018 14:37:18 +0000 (16:37 +0200)
commit22dcd9a4d90f9218843e6cdfd3f000000452a90e
tree377535987321dfb58510f674df62ad3dee6eded0
parent82dc85c4e63a61c9120e8790215a6ce65e496955
test: parallelize unit tests

Now that everything else is in place, we can run unit tests in a
different fashion to what they were running as before. Previously,
we had all autotests as part of groups (largely obtained through
trial and error) to ensure parallel execution while still limiting
amounts of memory used by those tests.

This is no longer necessary, and as of previous commit, all tests
are now in the same group (still broken into two categories). They
still run one-by-one though. Fix this by initializing child
processes in multiprocessing Pool initialization, and putting all
tests on the queue, so that tests are executed by the first idle
worker. Tests are also affinitized to different NUMA nodes using
taskset in a round-robin fashion, to prevent over-exhausting
memory on any given NUMA node.

Non-parallel tests are executed in similar fashion, but on a
separate queue which will have only one pool worker, ensuring
non-parallel execution.

Support for FreeBSD is also added to ensure that on FreeBSD, all
tests are run sequentially even for the parallel section.

Cc: stable@dpdk.org
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
test/test/autotest.py
test/test/autotest_runner.py