From 558ceabc6c08f275ce6c6e7ff295e74272eb851a Mon Sep 17 00:00:00 2001 From: Klement Sekera Date: Thu, 8 Apr 2021 19:37:41 +0200 Subject: tests: cpus awareness Introduce MAX_CPUS parameters to control maximum number of CPUs used by VPP(s) during testing, with default value 'auto' corresponding to all CPUs available. Calculate test CPU requirements by taking into account the number of workers, so a test requires 1 (main thread) + # of worker CPUs. When running tests, keep track of both running test jobs (controlled by TEST_JOBS parameter) and free CPUs. This then causes two limits in the system - to not exceed number of jobs in parallel but also to not exceed number of CPUs available. Skip tests which require more CPUs than are available in system (or more than MAX_CPUS) and print a warning message. Type: improvement Change-Id: Ib8fda54e4c6a36179d64160bb87fbd3a0011762d Signed-off-by: Klement Sekera --- src/plugins/memif/test/test_memif.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'src/plugins') diff --git a/src/plugins/memif/test/test_memif.py b/src/plugins/memif/test/test_memif.py index caaab87f1e8..fc7cf9b2e7e 100644 --- a/src/plugins/memif/test/test_memif.py +++ b/src/plugins/memif/test/test_memif.py @@ -16,11 +16,24 @@ from vpp_papi import VppEnum @tag_run_solo class TestMemif(VppTestCase): """ Memif Test Case """ + remote_class = RemoteVppTestCase + + @classmethod + def get_cpus_required(cls): + return (super().get_cpus_required() + + cls.remote_class.get_cpus_required()) + + @classmethod + def assign_cpus(cls, cpus): + remote_cpus = cpus[:cls.remote_class.get_cpus_required()] + my_cpus = cpus[cls.remote_class.get_cpus_required():] + cls.remote_class.assign_cpus(remote_cpus) + super().assign_cpus(my_cpus) @classmethod def setUpClass(cls): # fork new process before client connects to VPP - cls.remote_test = RemoteClass(RemoteVppTestCase) + cls.remote_test = RemoteClass(cls.remote_class) cls.remote_test.start_remote() cls.remote_test.set_request_timeout(10) super(TestMemif, cls).setUpClass() -- cgit 1.2.3-korg