def test_set_status_command(self): """Test set status command by generating a suite of tests.""" config1 = file_format.TestConfigLoader().validate({ 'scheduler': 'raw', 'run': { 'env': { 'foo': 'bar', }, 'cmds': ['echo "I $foo, punks"'], }, }) config1['name'] = 'run_test0' config2 = file_format.TestConfigLoader().validate({ 'scheduler': 'raw', 'run': { 'env': { 'too': 'tar', }, 'cmds': ['echo "I $too, punks"'], }, }) config2['name'] = 'run_test1' config3 = file_format.TestConfigLoader().validate({ 'scheduler': 'raw', 'run': { 'env': { 'too': 'tar', }, 'cmds': ['sleep 10'], }, }) config3['name'] = 'run_test2' configs = [config1, config2, config3] tests = [TestRun(self.pav_cfg, test) for test in configs] for test in tests: test.RUN_SILENT_TIMEOUT = 1 set_status_cmd = commands.get_command('set_status') set_status_cmd.outfile = io.StringIO() # Testing for individual tests with json output for test in tests: start_status = test.status.current() parser = argparse.ArgumentParser() set_status_cmd._setup_arguments(parser) arg_list = [ '-s', 'RUN_USER', '-n', 'tacos are delicious', str(test.id) ] args = parser.parse_args(arg_list) self.assertEqual(set_status_cmd.run(self.pav_cfg, args), 0) end_status = test.status.current() self.assertNotEqual(end_status.state, start_status.state) self.assertNotEqual(end_status.note, start_status.note) self.assertEqual(end_status.state, 'RUN_USER') self.assertEqual(end_status.note, 'tacos are delicious')
def _test_config_cmd(self, *_): file_format.TestConfigLoader().dump(self.outfile)
def test_wait_command(self): """Test wait command.""" config1 = file_format.TestConfigLoader().validate({ 'scheduler': 'raw', 'run': { 'env': { 'foo': 'bar', }, 'cmds': ['echo 0'], }, }) config1['name'] = 'run_test0' config2 = file_format.TestConfigLoader().validate({ 'scheduler': 'raw', 'run': { 'env': { 'too': 'tar', }, 'cmds': ['echo 1'], }, }) config2['name'] = 'run_test1' config3 = file_format.TestConfigLoader().validate({ 'scheduler': 'raw', 'run': { 'env': { 'too': 'tar', }, 'cmds': ['sleep 1'], }, }) config3['name'] = 'run_test2' configs = [config1, config2, config3] tests = [TestRun(self.pav_cfg, test, VariableSetManager()) for test in configs] for test in tests: test.RUN_SILENT_TIMEOUT = 1 # Make sure this doesn't explode suite = TestSeries(self.pav_cfg, tests) test_str = " ".join([str(test) for test in suite.tests]) wait_cmd = commands.get_command('wait') wait_cmd.outfile = io.StringIO() # Testing for individual tests with json output for test in suite.tests: parser = argparse.ArgumentParser() wait_cmd._setup_arguments(parser) arg_list = ['-j', '-t', '1', str(test)] args = parser.parse_args(arg_list) self.assertEqual(wait_cmd.run(self.pav_cfg, args), 0) # Testing for multiple tests with json output parser = argparse.ArgumentParser() wait_cmd._setup_arguments(parser) arg_list = ['-j', '-t', '1'] + test_str.split() args = parser.parse_args(arg_list) self.assertEqual(wait_cmd.run(self.pav_cfg, args), 0) # Testing for individual tests with tabular output for test in suite.tests: parser = argparse.ArgumentParser() wait_cmd._setup_arguments(parser) arg_list = ['-j', '-t', '1', str(test)] args = parser.parse_args(arg_list) self.assertEqual(wait_cmd.run(self.pav_cfg, args), 0) # Testing for multiple tests with tabular output parser = argparse.ArgumentParser() wait_cmd._setup_arguments(parser) arg_list = ['-j', '-t', '1'] + test_str.split() args = parser.parse_args(arg_list) self.assertEqual(wait_cmd.run(self.pav_cfg, args), 0)
def test_status_command(self): """Test status command by generating a suite of tests.""" config1 = file_format.TestConfigLoader().validate({ 'scheduler': 'raw', 'run': { 'env': { 'foo': 'bar', }, 'cmds': ['echo "I $foo, punks"'], }, }) config1['name'] = 'run_test0' config2 = file_format.TestConfigLoader().validate({ 'scheduler': 'raw', 'run': { 'env': { 'too': 'tar', }, 'cmds': ['echo "I $too, punks"'], }, }) config2['name'] = 'run_test1' config3 = file_format.TestConfigLoader().validate({ 'scheduler': 'raw', 'run': { 'env': { 'too': 'tar', }, 'cmds': ['sleep 10'], }, }) config3['name'] = 'run_test2' configs = [config1, config2, config3] var_man = VariableSetManager() tests = [self._quick_test(cfg) for cfg in configs] for test in tests: test.RUN_SILENT_TIMEOUT = 1 # Make sure this doesn't explode suite = TestSeries(self.pav_cfg, tests) test_str = " ".join([str(test) for test in suite.tests]) status_cmd = commands.get_command('status') status_cmd.outfile = io.StringIO() # Testing for individual tests with json output for test in suite.tests: parser = argparse.ArgumentParser() status_cmd._setup_arguments(parser) arg_list = ['-j', str(test)] args = parser.parse_args(arg_list) self.assertEqual(status_cmd.run(self.pav_cfg, args), 0) # Testing for multiple tests with json output parser = argparse.ArgumentParser() status_cmd._setup_arguments(parser) arg_list = ['-j'] + test_str.split() args = parser.parse_args(arg_list) self.assertEqual(status_cmd.run(self.pav_cfg, args), 0) # Testing for individual tests with tabular output for test in suite.tests: parser = argparse.ArgumentParser() status_cmd._setup_arguments(parser) args = parser.parse_args([str(test)]) self.assertEqual(status_cmd.run(self.pav_cfg, args), 0) # Testing for multiple tests with tabular output parser = argparse.ArgumentParser() status_cmd._setup_arguments(parser) arg_list = test_str.split() args = parser.parse_args(arg_list) self.assertEqual(status_cmd.run(self.pav_cfg, args), 0)
def _test_config_cmd(self, *_): """Show the basic test config format.""" file_format.TestConfigLoader().dump(self.outfile)
def _scheduler_cmd(self, _, args): """ :param argparse.Namespace args: """ sched = None # type : schedulers.SchedulerPlugin sched_name = None if args.vars is not None or args.config is not None: sched_name = args.vars if args.vars is not None else args.config try: sched = schedulers.get_plugin(sched_name) except schedulers.SchedulerPluginError: output.fprint( "Invalid scheduler plugin '{}'.".format(sched_name), color=output.RED, ) return errno.EINVAL if args.vars is not None: sched_vars = [] empty_config = file_format.TestConfigLoader().load_empty() svars = sched.get_vars(empty_config[sched_name]) for key in sorted(list(svars.keys())): sched_vars.append(svars.info(key)) output.draw_table( self.outfile, fields=['name', 'deferred', 'example', 'help'], rows=sched_vars, title="Variables for the {} scheduler plugin.".format(args.vars) ) elif args.config is not None: sched_config = sched.get_conf() class Loader(yaml_config.YamlConfigLoader): """Loader for just a scheduler's config.""" ELEMENTS = [sched_config] defaults = Loader().load_empty() Loader().dump(self.outfile, values=defaults) else: # Assuming --list was given scheds = [] for sched_name in schedulers.list_plugins(): sched = schedulers.get_plugin(sched_name) scheds.append({ 'name': sched_name, 'description': sched.description, 'path': sched.path }) fields = ['name', 'description'] if args.verbose: fields.append('path') output.draw_table( self.outfile, fields=fields, rows=scheds, title="Available Scheduler Plugins" )