From ba5c53d7eac580e5b0242fa846a066823f1666b8 Mon Sep 17 00:00:00 2001 From: Sinan Akpolat Date: Thu, 23 Jul 2020 19:25:31 +0300 Subject: [PATCH] tests: boardfarm: Init can be skipped for docker containers If you add an attribute-value pair '"skip-init": "True",' to a prplmesh_docker device definition in tests/boardfarm_plugins/boardfarm_prplmesh/prplmesh_config.json file then docker initialization for that device will be skipped. An example setup where initialization for all docker containers are skipped is as follows: { "prplmesh_docker": { "name": "agent", "board_type": "prplmesh_docker", "skip-init": "True", "role": "agent", "conn_cmd": "", "devices": [ { "name": "lan", "type": "prplmesh_docker", "skip-init": "True", "role": "controller", "conn_cmd": "" }, { "name": "lan2", "type": "prplmesh_docker", "skip-init": "True", "role": "agent", "conn_cmd": "" }, { "name": "wifi", "type": "STA_dummy", "mac": "51:a1:10:20:00:01", "conn_cmd": "" } ] } } Note that care must be taken when skipping initialization. It should only be used for development purposes and even then for some tests restarting the docker containers and prplmesh applications each time can be mandatory. Signed-off-by: Sinan Akpolat --- .../devices/prplmesh_docker.py | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/tests/boardfarm_plugins/boardfarm_prplmesh/devices/prplmesh_docker.py b/tests/boardfarm_plugins/boardfarm_prplmesh/devices/prplmesh_docker.py index 7e890c800d..3624aa0ad1 100644 --- a/tests/boardfarm_plugins/boardfarm_prplmesh/devices/prplmesh_docker.py +++ b/tests/boardfarm_plugins/boardfarm_prplmesh/devices/prplmesh_docker.py @@ -27,6 +27,13 @@ def __init__(self, *args, **kwargs): config = kwargs.get("config", kwargs) + skip_init = False + try: + if config["skip-init"] == "True": + skip_init = True + except (KeyError, ValueError): + pass + # List of device's consoles test can interact with self.consoles = [self] @@ -49,17 +56,23 @@ def __init__(self, *args, **kwargs): if self.role == "controller": # Spawn dockerized controller docker_args.append("start-controller-agent") - self._run_shell_cmd(docker_cmd, docker_args) + if not skip_init: + self._run_shell_cmd(docker_cmd, docker_args) + time.sleep(self.delay) + else: + print("Skipping init for {}".format(self.name)) - time.sleep(self.delay) self.controller_entity = ALEntityDocker(self.docker_name, device=self, is_controller=True) else: # Spawn dockerized agent docker_args.append("start-agent") - self._run_shell_cmd(docker_cmd, docker_args) + if not skip_init: + self._run_shell_cmd(docker_cmd, docker_args) + time.sleep(self.delay) + else: + print("Skipping init for {}".format(self.name)) - time.sleep(self.delay) self.agent_entity = ALEntityDocker(self.docker_name, device=self, is_controller=False)