diff --git a/src/control/cmd/dmg/main.go b/src/control/cmd/dmg/main.go index 34573d5cada..d9d1eacfa2d 100644 --- a/src/control/cmd/dmg/main.go +++ b/src/control/cmd/dmg/main.go @@ -223,6 +223,12 @@ and access control settings, along with system wide operations.` logCmd.SetLog(log) } + switch cmd.(type) { + case *versionCmd: + // this command don't need the rest of the setup + return cmd.Execute(args) + } + ctlCfg, err := control.LoadConfig(opts.ConfigPath) if err != nil { if errors.Cause(err) != control.ErrNoConfigFile { diff --git a/src/tests/ftest/control/daos_agent_config.py b/src/tests/ftest/control/daos_agent_config.py index a191180cf44..c9d023d832e 100644 --- a/src/tests/ftest/control/daos_agent_config.py +++ b/src/tests/ftest/control/daos_agent_config.py @@ -33,7 +33,7 @@ def test_daos_agent_config_basic(self): :avocado: tags=all,daily_regression :avocado: tags=vm :avocado: tags=control,basic - :avocado: tags=agent_start,daos_agent_config_test,test_daos_agent_config_basic + :avocado: tags=DaosAgentConfigTest,test_daos_agent_config_basic """ # Setup the agents self.add_agent_manager() diff --git a/src/tests/ftest/control/daos_agent_config.yaml b/src/tests/ftest/control/daos_agent_config.yaml index b6d8c22619d..965f931683f 100644 --- a/src/tests/ftest/control/daos_agent_config.yaml +++ b/src/tests/ftest/control/daos_agent_config.yaml @@ -32,8 +32,13 @@ agent_config_val: !mux name_special_chars: config_val: - "name" - - "! @#$%^&*()_+{}|:<>?-=[];',./" + - "! @#$%^&*()_+{}" - "PASS" + name_exceeds_max_length: + config_val: + - "name" + - "! @#$%^&*()_+{}|:<>?-=[];',./" + - "FAIL" name_alphanumeric: config_val: - "name" diff --git a/src/tests/ftest/control/daos_control_config.py b/src/tests/ftest/control/daos_control_config.py index 98044e1a0f5..2757816102e 100644 --- a/src/tests/ftest/control/daos_control_config.py +++ b/src/tests/ftest/control/daos_control_config.py @@ -26,7 +26,7 @@ def test_daos_control_config_basic(self): :avocado: tags=all,daily_regression :avocado: tags=vm :avocado: tags=control,basic - :avocado: tags=control_start,test_daos_control_config_basic + :avocado: tags=DaosControlConfigTest,test_daos_control_config_basic """ # Get the input to verify c_val = self.params.get("config_val", "/run/control_config_val/*/") diff --git a/src/tests/ftest/control/daos_control_config.yaml b/src/tests/ftest/control/daos_control_config.yaml index 47e5b86303a..a1c085002d8 100644 --- a/src/tests/ftest/control/daos_control_config.yaml +++ b/src/tests/ftest/control/daos_control_config.yaml @@ -32,8 +32,13 @@ control_config_val: !mux name_special_chars: config_val: - "name" - - "! @#$%^&*()_+{}|:<>?-=[];',./" + - "! @#$%^&*()_+{}" - "PASS" + name_exceeds_max_length: + config_val: + - "name" + - "! @#$%^&*()_+{}|:<>?-=[];',./" + - "FAIL" name_numeric: config_val: - "name" diff --git a/src/tests/ftest/control/version.py b/src/tests/ftest/control/version.py index ce74549d03e..e04a3ab2644 100644 --- a/src/tests/ftest/control/version.py +++ b/src/tests/ftest/control/version.py @@ -22,32 +22,69 @@ class DAOSVersion(TestWithServers): def __init__(self, *args, **kwargs): """Initialize a DAOSVersion object.""" super().__init__(*args, **kwargs) + # Don't waste time starting servers and agents. self.setup_start_servers = False self.setup_start_agents = False + self.errors = [] + + def report_result(self): + """Helper printing test result""" + self.log.info("###### Test Result ######") + report_errors(test=self, errors=self.errors) + self.log.info("#########################") + + def append_error(self, title, details): + """Helper adding an error to the list of errors + + Args: + title (str): Error message title + details (list): List of string of the error details + """ + msg = title + if details: + msg += "\n\t" + "\n\t".join(details) + self.errors.append(msg) + def test_version(self): """Verify version number for dmg, daos, daos_server, and daos_agent against RPM. :avocado: tags=all,full_regression :avocado: tags=vm :avocado: tags=control,daos_cmd - :avocado: tags=version_number,test_version + :avocado: tags=DAOSVersion,test_version """ - errors = [] - # Get RPM version. rpm_command = "rpm -qa|grep daos-server" output = run_pcmd(hosts=self.hostlist_servers, command=rpm_command) - self.log.info("RPM output = %s", output) - stdout = output[0]["stdout"][0] - self.log.info("RPM stdout = %s", stdout) - result = re.findall(r"daos-server-[tests-|tests_openmpi-]*([\d.]+)", stdout) + self.log.debug("RPM output = %s", output) + rc = output[0]["exit_status"] + stdout = output[0]["stdout"] + if rc != 0: + msg = "DAOS RPMs not properly installed: rc={}".format(rc) + self.append_error(msg, stdout) + self.report_result() + rpm_version = None + for rpm in stdout: + result = re.findall(r"daos-server-[tests-|tests_openmpi-]*([\d.]+)", rpm) + if result: + rpm_version = result[0] + break if not result: - errors.append("RPM version is not in the output! {}".format(output)) - else: - rpm_version = result[0] - self.log.info("RPM version = %s", rpm_version) + msg = "RPM version could not be defined" + self.append_error(msg, stdout) + self.report_result() + self.log.info("RPM version = %s", rpm_version) + + # Remove configuration files + cleanup_cmds = [ + "sudo find /etc/daos/certs -type f -delete -print", + "sudo rm -fv /etc/daos/daos_server.yml /etc/daos/daos_control.yml" + " /etc/daos/daos_agent.yml", + ] + for cmd in cleanup_cmds: + run_pcmd(hosts=self.hostlist_servers, command=cmd) # Get dmg version. dmg_version = self.get_dmg_command().version()["response"]["version"] @@ -58,10 +95,19 @@ def test_version(self): self.log.info("daos version = %s", daos_version) # Get daos_agent version. + daos_agent_version = None daos_agent_cmd = "daos_agent --json version" output = run_pcmd(hosts=self.hostlist_servers, command=daos_agent_cmd) - daos_agent_version = json.loads("".join(output[0]["stdout"]))["response"]["version"] - self.log.info("daos_agent version = %s", daos_agent_version) + self.log.debug("DAOS Agent output = %s", output) + rc = output[0]["exit_status"] + stdout = output[0]["stdout"] + if rc != 0: + msg = "DAOS Agent not properly installed: rc={}".format(rc) + self.append_error(msg, stdout) + else: + self.log.info("DAOS Agent stdout = %s", "".join(stdout)) + daos_agent_version = json.loads("".join(stdout))["response"]["version"] + self.log.info("daos_agent version = %s", daos_agent_version) # Get daos_server version daos_server_cmd = DaosServerCommandRunner(path=self.bin) @@ -82,8 +128,6 @@ def test_version(self): if version != rpm_version: msg = "Unexpected version! {} = {}, RPM = {}".format( tool, version, rpm_version) - errors.append(msg) + self.errors.append(msg) - self.log.info("###### Test Result ######") - report_errors(test=self, errors=errors) - self.log.info("#########################") + self.report_result()