diff --git a/src/tests/ftest/container/list.py b/src/tests/ftest/container/list.py index ae1f0b3766a..bddd5240ce7 100644 --- a/src/tests/ftest/container/list.py +++ b/src/tests/ftest/container/list.py @@ -4,6 +4,9 @@ SPDX-License-Identifier: BSD-2-Clause-Patent ''' +import queue +import threading + from apricot import TestWithServers @@ -20,6 +23,22 @@ class ListContainerTest(TestWithServers): :avocado: recursive """ + def __container_create(self, pool, result_queue): + """ + Create a container in the given pool and put the result in the result queue. + + Args: + pool (TestPool): The pool in which to create the container. + result_queue (queue.Queue): Queue to store the result of the container creation. + """ + try: + container = self.get_container(pool, create=False) + container.silent.value = True + result = container.create() + result_queue.put( + (result["response"]["container_uuid"], result["response"]["container_label"])) + except Exception as error: # pylint: disable=broad-except + result_queue.put(error) def create_list(self, count, pool, expected_uuids_labels): """Create container and call daos pool list-cont to list and verify. @@ -30,12 +49,24 @@ def create_list(self, count, pool, expected_uuids_labels): expected_uuids_labels (list): list of tuples containing expected (uuid, label) for all containers in the pool """ - # Create containers and store the container UUIDs and labels + result_queue = queue.Queue() + + # Create containers in parallel and store the container UUIDs and labels + threads = [] for _ in range(count): - container = self.get_container(pool, create=False) - result = container.create() - expected_uuids_labels.append( - (result["response"]["container_uuid"], result["response"]["container_label"])) + thread = threading.Thread(target=self.__container_create, args=(pool, result_queue)) + thread.start() + threads.append(thread) + + for thread in threads: + thread.join() + + while not result_queue.empty(): + result = result_queue.get() + if isinstance(result, Exception): + self.fail(f"Container creation failed with error: {result}") + expected_uuids_labels.append(result) + expected_uuids_labels.sort() # Call container list and collect the UUIDs. diff --git a/src/tests/ftest/container/list.yaml b/src/tests/ftest/container/list.yaml index 6c2d4eaf7df..3820be9eead 100644 --- a/src/tests/ftest/container/list.yaml +++ b/src/tests/ftest/container/list.yaml @@ -2,7 +2,7 @@ hosts: test_servers: 1 test_clients: 1 -timeout: 480 +timeout: 420 server_config: name: daos_server