class TestScenarioExecutor(BZTestCase): def setUp(self): super(TestScenarioExecutor, self).setUp() self.engine = EngineEmul() self.executor = ScenarioExecutor() self.executor.engine = self.engine def test_creates_hostaliases_file(self): self.engine.config.merge({ "settings": { "hostaliases": { "demo": "blazedemo.com" } } }) path = os.path.join(__dir__(), "data", "hostaliases" + EXE_SUFFIX) process = self.executor.execute([path]) stdout, _ = process.communicate() hosts_file = os.path.join(self.engine.artifacts_dir, "hostaliases") self.assertTrue(os.path.exists(hosts_file)) self.assertIn(hosts_file, str(stdout)) def test_doesnt_create_hostaliases(self): self.executor.execute(["echo"]) hosts_file = os.path.join(self.engine.artifacts_dir, "hostaliases") self.assertFalse(os.path.exists(hosts_file)) def test_passes_artifacts_dir(self): cmdline = "echo %TAURUS_ARTIFACTS_DIR%" if is_windows() else "echo $TAURUS_ARTIFACTS_DIR" process = self.executor.execute(cmdline, shell=True) stdout, _ = process.communicate() self.assertEquals(self.engine.artifacts_dir, stdout.decode().strip())
class TestScenarioExecutor(BZTestCase): def setUp(self): super(TestScenarioExecutor, self).setUp() self.engine = EngineEmul() self.executor = ScenarioExecutor() self.executor.engine = self.engine def test_creates_hostaliases_file(self): self.engine.config.merge( {"settings": { "hostaliases": { "demo": "blazedemo.com" } }}) path = os.path.join(__dir__(), "data", "hostaliases" + EXE_SUFFIX) process = self.executor.execute([path]) stdout, _ = process.communicate() hosts_file = os.path.join(self.engine.artifacts_dir, "hostaliases") self.assertTrue(os.path.exists(hosts_file)) self.assertIn(hosts_file, str(stdout)) def test_doesnt_create_hostaliases(self): self.executor.execute(["echo"]) hosts_file = os.path.join(self.engine.artifacts_dir, "hostaliases") self.assertFalse(os.path.exists(hosts_file)) def test_passes_artifacts_dir(self): cmdline = "echo %TAURUS_ARTIFACTS_DIR%" if is_windows( ) else "echo $TAURUS_ARTIFACTS_DIR" process = self.executor.execute(cmdline, shell=True) stdout, _ = process.communicate() self.assertEquals(self.engine.artifacts_dir, stdout.decode().strip())
class TestScenarioExecutor(BZTestCase): def setUp(self): super(TestScenarioExecutor, self).setUp() self.engine = EngineEmul() self.executor = ScenarioExecutor() self.executor.engine = self.engine def test_creates_hostaliases_file(self): self.engine.config.merge({ "settings": { "hostaliases": { "demo": "blazedemo.com" } } }) path = os.path.join(__dir__(), "data", "hostaliases" + EXE_SUFFIX) process = self.executor.execute([path]) stdout, _ = process.communicate() hosts_file = os.path.join(self.engine.artifacts_dir, "hostaliases") self.assertTrue(os.path.exists(hosts_file)) self.assertIn(hosts_file, str(stdout)) def test_doesnt_create_hostaliases(self): self.executor.execute(["echo"]) hosts_file = os.path.join(self.engine.artifacts_dir, "hostaliases") self.assertFalse(os.path.exists(hosts_file))
def setUp(self): super(TestScenarioExecutor, self).setUp() self.engine = EngineEmul() self.executor = ScenarioExecutor() self.executor.engine = self.engine self.executor.env = self.executor.engine.env
class TestScenarioExecutor(BZTestCase): def setUp(self): super(TestScenarioExecutor, self).setUp() self.engine = EngineEmul() self.executor = ScenarioExecutor() self.executor.engine = self.engine self.executor.env = self.executor.engine.env def test_scenario_extraction_script(self): self.engine.config.merge({ "execution": [{ "scenario": { "script": "tests/resources/selenium/python/test_blazemeter_fail.py", "param": "value" }}]}) self.executor.execution = self.engine.config.get('execution')[0] self.executor.get_scenario() config = self.engine.config self.assertEqual(config['execution'][0]['scenario'], 'test_blazemeter_fail.py') self.assertIn('test_blazemeter_fail.py', config['scenarios']) def test_body_files(self): body_file1 = RESOURCES_DIR + "jmeter/body-file.dat" body_file2 = RESOURCES_DIR + "jmeter/jmx/http.jmx" self.engine.config.merge({ 'execution': [{ 'iterations': 1, 'executor': 'siege', 'scenario': 'bf'}], 'scenarios': { 'bf': { "requests": [ { 'url': 'http://first.com', 'body-file': body_file1 }, { 'url': 'http://second.com', 'body': 'body2', 'body-file': body_file2}]}}}) self.executor.execution = self.engine.config.get('execution')[0] scenario = self.executor.get_scenario() # check body fields in get_requests() results reqs = list(scenario.get_requests()) body_fields = [req.body for req in reqs] self.assertIn('sample of body', body_fields[0]) self.assertIn('body2', body_fields[1]) # check body fields and body-files fields after get_requests() scenario = self.executor.get_scenario() body_files = [req.get('body-file') for req in scenario.get('requests')] body_fields = [req.get('body') for req in scenario.get('requests')] self.assertTrue(all(body_files)) self.assertFalse(body_fields[0]) self.assertIn('body2', body_fields[1]) def test_scenario_is_script(self): self.engine.config.merge({ "execution": [{ "scenario": "tests/resources/selenium/python/test_blazemeter_fail.py" }]}) self.executor.execution = self.engine.config.get('execution')[0] self.executor.get_scenario() config = self.engine.config self.assertEqual(config['execution'][0]['scenario'], 'test_blazemeter_fail.py') self.assertIn('test_blazemeter_fail.py', config['scenarios']) def test_scenario_extraction_request(self): self.engine.config.merge({ "execution": [{ "scenario": { "requests": [{"url": "url.example"}], "param": "value" }}]}) self.executor.execution = self.engine.config.get('execution')[0] self.executor.get_scenario() config = self.engine.config scenario = config['execution'][0]['scenario'] self.assertTrue(isinstance(scenario, string_types)) self.assertIn(scenario, config['scenarios']) def test_scenario_not_found(self): self.engine.config.merge({ "execution": [{ "scenario": "non-existent" }]}) self.executor.execution = self.engine.config.get('execution')[0] self.assertRaises(TaurusConfigError, self.executor.get_scenario) def test_scenario_no_requests(self): self.engine.config.merge({ "execution": [{ "scenario": ["url1", "url2"] }]}) self.executor.execution = self.engine.config.get('execution')[0] self.assertRaises(TaurusConfigError, self.executor.get_scenario) def test_passes_artifacts_dir(self): cmdline = "echo %TAURUS_ARTIFACTS_DIR%" if is_windows() else "echo $TAURUS_ARTIFACTS_DIR" self.engine.eval_env() self.engine.prepare() self.executor.env.set(self.engine.env.get()) process = self.executor.execute(cmdline, shell=True) stdout, _ = communicate(process) self.assertEquals(self.engine.artifacts_dir, stdout.strip()) def test_case_of_variables(self): env = {'aaa': 333, 'AAA': 666} line_tpl = "echo %%%s%%" if is_windows() else "echo $%s" cmdlines = [line_tpl % "aaa", line_tpl % "AAA"] results = set() for cmdline in cmdlines: self.executor.env.set(env) process = self.executor.execute(cmdline, shell=True) stdout, _ = communicate(process) results.add(stdout.strip()) if is_windows(): self.assertEqual(1, len(results)) else: self.assertEqual(2, len(results)) def test_get_load_str(self): self.executor.execution.merge({ "concurrency": "2", "hold-for": "3", "ramp-up": "4", "iterations": "5", "throughput": "6", "steps": "7", }) load = self.executor.get_load() self.assertEquals(2, load.concurrency) self.assertEquals(3, load.hold) self.assertEquals(4, load.ramp_up) self.assertEquals(5, load.iterations) self.assertEquals(6, load.throughput) self.assertEquals(7, load.steps) def test_get_load_str_fail(self): self.executor.execution.merge({ "concurrency": "2VU", }) self.assertRaises(TaurusConfigError, self.executor.get_load)
class TestScenarioExecutor(BZTestCase): def setUp(self): super(TestScenarioExecutor, self).setUp() self.engine = EngineEmul() self.executor = ScenarioExecutor() self.executor.engine = self.engine def test_scenario_extraction_script(self): self.engine.config.merge({ "execution": [{ "scenario": { "script": "tests/selenium/python/test_blazemeter_fail.py", "param": "value" } }] }) self.executor.execution = self.engine.config.get('execution')[0] self.executor.get_scenario() config = self.engine.config self.assertEqual(config['execution'][0]['scenario'], 'test_blazemeter_fail.py') self.assertIn('test_blazemeter_fail.py', config['scenarios']) def test_body_files(self): body_file1 = __dir__() + "/jmeter/body-file.dat" body_file2 = __dir__() + "/jmeter/jmx/http.jmx" self.engine.config.merge({ 'execution': [{ 'iterations': 1, 'executor': 'siege', 'scenario': 'bf' }], 'scenarios': { 'bf': { "requests": [{ 'url': 'http://first.com', 'body-file': body_file1 }, { 'url': 'http://second.com', 'body': 'body2', 'body-file': body_file2 }] } } }) self.executor.execution = self.engine.config.get('execution')[0] scenario = self.executor.get_scenario() # check body fields in get_requests() results reqs = list(scenario.get_requests()) body_fields = [req.body for req in reqs] self.assertIn('sample of body', body_fields[0]) self.assertIn('body2', body_fields[1]) # check body fields and body-files fields after get_requests() scenario = self.executor.get_scenario() body_files = [req.get('body-file') for req in scenario.get('requests')] body_fields = [req.get('body') for req in scenario.get('requests')] self.assertTrue(all(body_files)) self.assertEqual(None, body_fields[0]) self.assertIn('body2', body_fields[1]) def test_scenario_is_script(self): self.engine.config.merge({ "execution": [{ "scenario": "tests/selenium/python/test_blazemeter_fail.py" }] }) self.executor.execution = self.engine.config.get('execution')[0] self.executor.get_scenario() config = self.engine.config self.assertEqual(config['execution'][0]['scenario'], 'test_blazemeter_fail.py') self.assertIn('test_blazemeter_fail.py', config['scenarios']) def test_scenario_extraction_request(self): self.engine.config.merge({ "execution": [{ "scenario": { "requests": [{ "url": "url.example" }], "param": "value" } }] }) self.executor.execution = self.engine.config.get('execution')[0] self.executor.get_scenario() config = self.engine.config scenario = config['execution'][0]['scenario'] self.assertTrue(isinstance(scenario, string_types)) self.assertIn(scenario, config['scenarios']) def test_scenario_not_found(self): self.engine.config.merge({"execution": [{"scenario": "non-existent"}]}) self.executor.execution = self.engine.config.get('execution')[0] self.assertRaises(ValueError, self.executor.get_scenario) def test_scenario_no_requests(self): self.engine.config.merge( {"execution": [{ "scenario": ["url1", "url2"] }]}) self.executor.execution = self.engine.config.get('execution')[0] self.assertRaises(ValueError, self.executor.get_scenario) def test_creates_hostaliases_file(self): self.engine.config.merge( {"settings": { "hostaliases": { "demo": "blazedemo.com" } }}) path = os.path.join(__dir__(), "data", "hostaliases" + EXE_SUFFIX) process = self.executor.execute([path]) stdout, _ = process.communicate() hosts_file = os.path.join(self.engine.artifacts_dir, "hostaliases") self.assertTrue(os.path.exists(hosts_file)) self.assertIn(hosts_file, str(stdout)) def test_doesnt_create_hostaliases(self): self.executor.execute(["echo"], shell=True) hosts_file = os.path.join(self.engine.artifacts_dir, "hostaliases") self.assertFalse(os.path.exists(hosts_file)) def test_passes_artifacts_dir(self): cmdline = "echo %TAURUS_ARTIFACTS_DIR%" if is_windows( ) else "echo $TAURUS_ARTIFACTS_DIR" process = self.executor.execute(cmdline, shell=True) stdout, _ = process.communicate() self.assertEquals(self.engine.artifacts_dir, stdout.decode().strip())
def setUp(self): super(TestScenarioExecutor, self).setUp() self.engine = EngineEmul() self.executor = ScenarioExecutor() self.executor.engine = self.engine
class TestScenarioExecutor(BZTestCase): def setUp(self): super(TestScenarioExecutor, self).setUp() self.engine = EngineEmul() self.executor = ScenarioExecutor() self.executor.engine = self.engine def test_scenario_extraction_script(self): self.engine.config.merge({ "execution": [{ "scenario": { "script": "tests/selenium/python/test_blazemeter_fail.py", "param": "value" }}]}) self.executor.execution = self.engine.config.get('execution')[0] self.executor.get_scenario() config = self.engine.config self.assertEqual(config['execution'][0]['scenario'], 'test_blazemeter_fail.py') self.assertIn('test_blazemeter_fail.py', config['scenarios']) def test_body_files(self): body_file1 = __dir__() + "/jmeter/body-file.dat" body_file2 = __dir__() + "/jmeter/jmx/http.jmx" self.engine.config.merge({ 'execution': [{ 'iterations': 1, 'executor': 'siege', 'scenario': 'bf'}], 'scenarios': { 'bf': { "requests": [ { 'url': 'http://first.com', 'body-file': body_file1 }, { 'url': 'http://second.com', 'body': 'body2', 'body-file': body_file2}]}}}) self.executor.execution = self.engine.config.get('execution')[0] scenario = self.executor.get_scenario() # check body fields in get_requests() results reqs = list(scenario.get_requests()) body_fields = [req.body for req in reqs] self.assertIn('sample of body', body_fields[0]) self.assertIn('body2', body_fields[1]) # check body fields and body-files fields after get_requests() scenario = self.executor.get_scenario() body_files = [req.get('body-file') for req in scenario.get('requests')] body_fields = [req.get('body') for req in scenario.get('requests')] self.assertTrue(all(body_files)) self.assertEqual(None, body_fields[0]) self.assertIn('body2', body_fields[1]) def test_scenario_is_script(self): self.engine.config.merge({ "execution": [{ "scenario": "tests/selenium/python/test_blazemeter_fail.py" }]}) self.executor.execution = self.engine.config.get('execution')[0] self.executor.get_scenario() config = self.engine.config self.assertEqual(config['execution'][0]['scenario'], 'test_blazemeter_fail.py') self.assertIn('test_blazemeter_fail.py', config['scenarios']) def test_scenario_extraction_request(self): self.engine.config.merge({ "execution": [{ "scenario": { "requests": [{"url": "url.example"}], "param": "value" }}]}) self.executor.execution = self.engine.config.get('execution')[0] self.executor.get_scenario() config = self.engine.config scenario = config['execution'][0]['scenario'] self.assertTrue(isinstance(scenario, string_types)) self.assertIn(scenario, config['scenarios']) def test_scenario_not_found(self): self.engine.config.merge({ "execution": [{ "scenario": "non-existent" }]}) self.executor.execution = self.engine.config.get('execution')[0] self.assertRaises(ValueError, self.executor.get_scenario) def test_scenario_no_requests(self): self.engine.config.merge({ "execution": [{ "scenario": ["url1", "url2"] }]}) self.executor.execution = self.engine.config.get('execution')[0] self.assertRaises(ValueError, self.executor.get_scenario) def test_creates_hostaliases_file(self): self.engine.config.merge({ "settings": { "hostaliases": { "demo": "blazedemo.com"}}}) path = os.path.join(__dir__(), "data", "hostaliases" + EXE_SUFFIX) process = self.executor.execute([path]) stdout, _ = process.communicate() hosts_file = os.path.join(self.engine.artifacts_dir, "hostaliases") self.assertTrue(os.path.exists(hosts_file)) self.assertIn(hosts_file, str(stdout)) def test_doesnt_create_hostaliases(self): self.executor.execute(["echo"]) hosts_file = os.path.join(self.engine.artifacts_dir, "hostaliases") self.assertFalse(os.path.exists(hosts_file)) def test_passes_artifacts_dir(self): cmdline = "echo %TAURUS_ARTIFACTS_DIR%" if is_windows() else "echo $TAURUS_ARTIFACTS_DIR" process = self.executor.execute(cmdline, shell=True) stdout, _ = process.communicate() self.assertEquals(self.engine.artifacts_dir, stdout.decode().strip())
class TestScenarioExecutor(BZTestCase): def setUp(self): super(TestScenarioExecutor, self).setUp() self.engine = EngineEmul() self.executor = ScenarioExecutor() self.executor.engine = self.engine self.executor.env = self.executor.engine.env def test_scenario_extraction_script(self): self.engine.config.merge({ "execution": [{ "scenario": { "script": "tests/resources/selenium/python/test_blazemeter_fail.py", "param": "value" }}]}) self.executor.execution = self.engine.config.get('execution')[0] self.executor.get_scenario() config = self.engine.config self.assertEqual(config['execution'][0]['scenario'], 'test_blazemeter_fail.py') self.assertIn('test_blazemeter_fail.py', config['scenarios']) def test_body_files(self): body_file1 = RESOURCES_DIR + "jmeter/body-file.dat" body_file2 = RESOURCES_DIR + "jmeter/jmx/http.jmx" self.engine.config.merge({ 'execution': [{ 'iterations': 1, 'executor': 'siege', 'scenario': 'bf'}], 'scenarios': { 'bf': { "requests": [ { 'url': 'http://first.com', 'body-file': body_file1 }, { 'url': 'http://second.com', 'body': 'body2', 'body-file': body_file2}]}}}) self.executor.execution = self.engine.config.get('execution')[0] scenario = self.executor.get_scenario() # check body fields in get_requests() results reqs = list(scenario.get_requests()) body_fields = [req.body for req in reqs] self.assertIn('sample of body', body_fields[0]) self.assertIn('body2', body_fields[1]) # check body fields and body-files fields after get_requests() scenario = self.executor.get_scenario() body_files = [req.get('body-file') for req in scenario.get('requests')] body_fields = [req.get('body') for req in scenario.get('requests')] self.assertTrue(all(body_files)) self.assertFalse(body_fields[0]) self.assertIn('body2', body_fields[1]) def test_scenario_is_script(self): self.engine.config.merge({ "execution": [{ "scenario": "tests/resources/selenium/python/test_blazemeter_fail.py" }]}) self.executor.execution = self.engine.config.get('execution')[0] self.executor.get_scenario() config = self.engine.config self.assertEqual(config['execution'][0]['scenario'], 'test_blazemeter_fail.py') self.assertIn('test_blazemeter_fail.py', config['scenarios']) def test_scenario_extraction_request(self): self.engine.config.merge({ "execution": [{ "scenario": { "requests": [{"url": "url.example"}], "param": "value" }}]}) self.executor.execution = self.engine.config.get('execution')[0] self.executor.get_scenario() config = self.engine.config scenario = config['execution'][0]['scenario'] self.assertTrue(isinstance(scenario, string_types)) self.assertIn(scenario, config['scenarios']) def test_scenario_not_found(self): self.engine.config.merge({ "execution": [{ "scenario": "non-existent" }]}) self.executor.execution = self.engine.config.get('execution')[0] self.assertRaises(TaurusConfigError, self.executor.get_scenario) def test_scenario_no_requests(self): self.engine.config.merge({ "execution": [{ "scenario": ["url1", "url2"] }]}) self.executor.execution = self.engine.config.get('execution')[0] self.assertRaises(TaurusConfigError, self.executor.get_scenario) def test_passes_artifacts_dir(self): cmdline = "echo %TAURUS_ARTIFACTS_DIR%" if is_windows() else "echo $TAURUS_ARTIFACTS_DIR" self.engine.eval_env() self.engine.prepare() self.executor.env.set(self.engine.env.get()) process = self.executor.execute(cmdline, shell=True) stdout, _ = communicate(process) self.assertEquals(self.engine.artifacts_dir, stdout.strip()) def test_case_of_variables(self): env = {'aaa': 333, 'AAA': 666} line_tpl = "echo %%%s%%" if is_windows() else "echo $%s" cmdlines = [line_tpl % "aaa", line_tpl % "AAA"] results = set() for cmdline in cmdlines: self.executor.env.set(env) process = self.executor.execute(cmdline, shell=True) stdout, _ = communicate(process) results.add(stdout.strip()) if is_windows(): self.assertEqual(1, len(results)) else: self.assertEqual(2, len(results)) def test_get_load_str(self): self.executor.execution.merge({ "concurrency": "2", "hold-for": "3", "ramp-up": "4", "iterations": "5", "throughput": "6", "steps": "7", }) load = self.executor.get_load() self.assertEquals(2, load.concurrency) self.assertEquals(3, load.hold) self.assertEquals(4, load.ramp_up) self.assertEquals(5, load.iterations) self.assertEquals(6, load.throughput) self.assertEquals(7, load.steps) def test_get_load_str_fail(self): self.executor.execution.merge({ "concurrency": "2VU", }) self.assertRaises(TaurusConfigError, self.executor.get_load)
class TestScenarioExecutor(BZTestCase): def setUp(self): super(TestScenarioExecutor, self).setUp() self.engine = EngineEmul() self.executor = ScenarioExecutor() self.executor.engine = self.engine def test_scenario_extraction_script(self): self.engine.config.merge({ "execution": [{ "scenario": { "script": "tests/resources/selenium/python/test_blazemeter_fail.py", "param": "value" } }] }) self.executor.execution = self.engine.config.get('execution')[0] self.executor.get_scenario() config = self.engine.config self.assertEqual(config['execution'][0]['scenario'], 'test_blazemeter_fail.py') self.assertIn('test_blazemeter_fail.py', config['scenarios']) def test_body_files(self): body_file1 = __dir__() + "/resources/jmeter/body-file.dat" body_file2 = __dir__() + "/resources/jmeter/jmx/http.jmx" self.engine.config.merge({ 'execution': [{ 'iterations': 1, 'executor': 'siege', 'scenario': 'bf' }], 'scenarios': { 'bf': { "requests": [{ 'url': 'http://first.com', 'body-file': body_file1 }, { 'url': 'http://second.com', 'body': 'body2', 'body-file': body_file2 }] } } }) self.executor.execution = self.engine.config.get('execution')[0] scenario = self.executor.get_scenario() # check body fields in get_requests() results reqs = list(scenario.get_requests()) body_fields = [req.body for req in reqs] self.assertIn('sample of body', body_fields[0]) self.assertIn('body2', body_fields[1]) # check body fields and body-files fields after get_requests() scenario = self.executor.get_scenario() body_files = [req.get('body-file') for req in scenario.get('requests')] body_fields = [req.get('body') for req in scenario.get('requests')] self.assertTrue(all(body_files)) self.assertEqual(None, body_fields[0]) self.assertIn('body2', body_fields[1]) def test_scenario_is_script(self): self.engine.config.merge({ "execution": [{ "scenario": "tests/resources/selenium/python/test_blazemeter_fail.py" }] }) self.executor.execution = self.engine.config.get('execution')[0] self.executor.get_scenario() config = self.engine.config self.assertEqual(config['execution'][0]['scenario'], 'test_blazemeter_fail.py') self.assertIn('test_blazemeter_fail.py', config['scenarios']) def test_scenario_extraction_request(self): self.engine.config.merge({ "execution": [{ "scenario": { "requests": [{ "url": "url.example" }], "param": "value" } }] }) self.executor.execution = self.engine.config.get('execution')[0] self.executor.get_scenario() config = self.engine.config scenario = config['execution'][0]['scenario'] self.assertTrue(isinstance(scenario, string_types)) self.assertIn(scenario, config['scenarios']) def test_scenario_not_found(self): self.engine.config.merge({"execution": [{"scenario": "non-existent"}]}) self.executor.execution = self.engine.config.get('execution')[0] self.assertRaises(TaurusConfigError, self.executor.get_scenario) def test_scenario_no_requests(self): self.engine.config.merge( {"execution": [{ "scenario": ["url1", "url2"] }]}) self.executor.execution = self.engine.config.get('execution')[0] self.assertRaises(TaurusConfigError, self.executor.get_scenario) def test_passes_artifacts_dir(self): cmdline = "echo %TAURUS_ARTIFACTS_DIR%" if is_windows( ) else "echo $TAURUS_ARTIFACTS_DIR" process = self.executor.execute(cmdline, shell=True) stdout, _ = process.communicate() self.assertEquals(self.engine.artifacts_dir, stdout.decode().strip()) def test_case_of_variables(self): env = {'aaa': 333, 'AAA': 666} line_tpl = "echo %%%s%%" if is_windows() else "echo $%s" cmdlines = [line_tpl % "aaa", line_tpl % "AAA"] results = set() for cmdline in cmdlines: process = self.executor.execute(cmdline, shell=True, env=env) stdout, _ = process.communicate() results.add(stdout.decode().strip()) if is_windows(): self.assertEqual(1, len(results)) else: self.assertEqual(2, len(results))
class TestScenarioExecutor(BZTestCase): def setUp(self): super(TestScenarioExecutor, self).setUp() self.engine = EngineEmul() self.executor = ScenarioExecutor() self.executor.engine = self.engine def test_scenario_extraction_script(self): self.engine.config.merge({ "execution": [{ "scenario": { "script": "tests/selenium/python/test_blazemeter_fail.py", "param": "value" } }] }) self.executor.execution = self.engine.config.get('execution')[0] self.executor.get_scenario() config = self.engine.config self.assertEqual(config['execution'][0]['scenario'], 'test_blazemeter_fail.py') self.assertIn('test_blazemeter_fail.py', config['scenarios']) def test_scenario_is_script(self): self.engine.config.merge({ "execution": [{ "scenario": "tests/selenium/python/test_blazemeter_fail.py" }] }) self.executor.execution = self.engine.config.get('execution')[0] self.executor.get_scenario() config = self.engine.config self.assertEqual(config['execution'][0]['scenario'], 'test_blazemeter_fail.py') self.assertIn('test_blazemeter_fail.py', config['scenarios']) def test_scenario_extraction_request(self): self.engine.config.merge({ "execution": [{ "scenario": { "requests": [{ "url": "url.example" }], "param": "value" } }] }) self.executor.execution = self.engine.config.get('execution')[0] self.executor.get_scenario() config = self.engine.config scenario = config['execution'][0]['scenario'] self.assertTrue(isinstance(scenario, string_types)) self.assertIn(scenario, config['scenarios']) def test_scenario_not_found(self): self.engine.config.merge({"execution": [{"scenario": "non-existent"}]}) self.executor.execution = self.engine.config.get('execution')[0] self.assertRaises(ValueError, self.executor.get_scenario) def test_creates_hostaliases_file(self): self.engine.config.merge( {"settings": { "hostaliases": { "demo": "blazedemo.com" } }}) path = os.path.join(__dir__(), "data", "hostaliases" + EXE_SUFFIX) process = self.executor.execute([path]) stdout, _ = process.communicate() hosts_file = os.path.join(self.engine.artifacts_dir, "hostaliases") self.assertTrue(os.path.exists(hosts_file)) self.assertIn(hosts_file, str(stdout)) def test_doesnt_create_hostaliases(self): self.executor.execute(["echo"]) hosts_file = os.path.join(self.engine.artifacts_dir, "hostaliases") self.assertFalse(os.path.exists(hosts_file)) def test_passes_artifacts_dir(self): cmdline = "echo %TAURUS_ARTIFACTS_DIR%" if is_windows( ) else "echo $TAURUS_ARTIFACTS_DIR" process = self.executor.execute(cmdline, shell=True) stdout, _ = process.communicate() self.assertEquals(self.engine.artifacts_dir, stdout.decode().strip())
class TestScenarioExecutor(BZTestCase): def setUp(self): super(TestScenarioExecutor, self).setUp() self.engine = EngineEmul() self.executor = ScenarioExecutor() self.executor.engine = self.engine def test_scenario_extraction_script(self): self.engine.config.merge({ "execution": [{ "scenario": { "script": "tests/selenium/python/test_blazemeter_fail.py", "param": "value" }}]}) self.executor.execution = self.engine.config.get('execution')[0] self.executor.get_scenario() config = self.engine.config self.assertEqual(config['execution'][0]['scenario'], 'test_blazemeter_fail.py') self.assertIn('test_blazemeter_fail.py', config['scenarios']) def test_scenario_is_script(self): self.engine.config.merge({ "execution": [{ "scenario": "tests/selenium/python/test_blazemeter_fail.py" }]}) self.executor.execution = self.engine.config.get('execution')[0] self.executor.get_scenario() config = self.engine.config self.assertEqual(config['execution'][0]['scenario'], 'test_blazemeter_fail.py') self.assertIn('test_blazemeter_fail.py', config['scenarios']) def test_scenario_extraction_request(self): self.engine.config.merge({ "execution": [{ "scenario": { "requests": [{"url": "url.example"}], "param": "value" }}]}) self.executor.execution = self.engine.config.get('execution')[0] self.executor.get_scenario() config = self.engine.config scenario = config['execution'][0]['scenario'] self.assertTrue(isinstance(scenario, string_types)) self.assertIn(scenario, config['scenarios']) def test_scenario_not_found(self): self.engine.config.merge({ "execution": [{ "scenario": "non-existent" }]}) self.executor.execution = self.engine.config.get('execution')[0] self.assertRaises(ValueError, self.executor.get_scenario) def test_creates_hostaliases_file(self): self.engine.config.merge({ "settings": { "hostaliases": { "demo": "blazedemo.com" } } }) path = os.path.join(__dir__(), "data", "hostaliases" + EXE_SUFFIX) process = self.executor.execute([path]) stdout, _ = process.communicate() hosts_file = os.path.join(self.engine.artifacts_dir, "hostaliases") self.assertTrue(os.path.exists(hosts_file)) self.assertIn(hosts_file, str(stdout)) def test_doesnt_create_hostaliases(self): self.executor.execute(["echo"]) hosts_file = os.path.join(self.engine.artifacts_dir, "hostaliases") self.assertFalse(os.path.exists(hosts_file)) def test_passes_artifacts_dir(self): cmdline = "echo %TAURUS_ARTIFACTS_DIR%" if is_windows() else "echo $TAURUS_ARTIFACTS_DIR" process = self.executor.execute(cmdline, shell=True) stdout, _ = process.communicate() self.assertEquals(self.engine.artifacts_dir, stdout.decode().strip())