def test_timed_out_env_removed_from_envs_list(self): suite_time = 10 suites = [ self._new_test_suite('suite1', requires=['env1'], run_for=suite_time), self._new_test_suite('suite2', requires=['env1'], run_for=suite_time), self._new_test_suite('suite3', handler_configuration='config1', run_for=suite_time) ] handler_configurations = { 'config1': { 'env': 'env1_id', 'tags': ['env1'] } } scheduler = SuitesScheduler(suites, handler_configurations, suite_timeout=1) scheduler.run() self.assertIsNone(suites[1].started) self.assertIsNone(suites[2].started) self.assertEqual(2, len(scheduler.skipped_suites))
def test_suites_running_in_parallel(self): suites = [ self._new_test_suite('suite1', requires=['env1'], run_for=10), self._new_test_suite('suite2', handler_configuration='config1', run_for=1), self._new_test_suite('suite3', requires=['env2'], run_for=5) ] handler_configurations = { 'config1': { 'env': 'env1_id', 'tags': ['env1'] }, 'config2': { 'env': 'env2_id', 'tags': ['env2'] } } scheduler = SuitesScheduler(suites, handler_configurations) scheduler.run() self.assertEqual('config1', suites[0].handler_configuration) self.assertEqual('config1', suites[1].handler_configuration) self.assertEqual('config2', suites[2].handler_configuration) self.assertFalse(suites[0].is_running) self.assertFalse(suites[1].is_running) self.assertFalse(suites[2].is_running) self.assertTrue(suites[1].started > suites[0].terminated) self.assertTrue(suites[2].started < suites[0].terminated)
def test_run_suite(self): test_suites = [ self._new_test_suite('suite1', ['env1']) ] handler_configurations = { 'config1': {'env': 'env1_id', 'tags': ['env1']} } scheduler = SuitesScheduler(test_suites, handler_configurations) scheduler.run() self.assertFalse(test_suites[0].is_running)
def test_run_suite(self): test_suites = [self._new_test_suite('suite1', ['env1'])] handler_configurations = { 'config1': { 'env': 'env1_id', 'tags': ['env1'] } } scheduler = SuitesScheduler(test_suites, handler_configurations) scheduler.run() self.assertFalse(test_suites[0].is_running)
def test_failed_suite(self): suites = [ self._new_test_suite('suite1', requires=['env1']) ] suites[0].failed = True handler_configurations = { 'config1': {'env': 'env1_id', 'tags': ['env1']} } scheduler = SuitesScheduler( suites, handler_configurations, suite_timeout=1) scheduler.run() self.assertEqual(scheduler.failed_suites, suites)
def test_run_two_suites(self): test_suites = [ self._new_test_suite('suite1', ['env1']), self._new_test_suite('suite2', ['env1']) ] handler_configurations = { 'config1': {'env': 'env1_id', 'tags': ['env1']} } scheduler = SuitesScheduler( test_suites, handler_configurations) scheduler.run() self.assertFalse(test_suites[0].is_running) self.assertFalse(test_suites[1].is_running) self.assertTrue(test_suites[1].started > test_suites[0].terminated)
def test_run_two_suites(self): test_suites = [ self._new_test_suite('suite1', ['env1']), self._new_test_suite('suite2', ['env1']) ] handler_configurations = { 'config1': { 'env': 'env1_id', 'tags': ['env1'] } } scheduler = SuitesScheduler(test_suites, handler_configurations) scheduler.run() self.assertFalse(test_suites[0].is_running) self.assertFalse(test_suites[1].is_running) self.assertTrue(test_suites[1].started > test_suites[0].terminated)
def test_handler_configuration_and_tags_matching(self): test_suites = [ self._new_test_suite('suite1', requires=['env1']), self._new_test_suite('suite2', handler_configuration='config1'), self._new_test_suite('suite3', requires=['env1']) ] handler_configurations = { 'config1': {'env': 'env1_id', 'tags': ['env1']} } scheduler = SuitesScheduler( test_suites, handler_configurations) scheduler.run() self.assertFalse(test_suites[0].is_running) self.assertFalse(test_suites[1].is_running) self.assertFalse(test_suites[2].is_running) self.assertTrue(test_suites[1].started > test_suites[0].terminated) self.assertTrue(test_suites[2].started > test_suites[1].terminated)
def test_handler_configuration_and_tags_matching(self): test_suites = [ self._new_test_suite('suite1', requires=['env1']), self._new_test_suite('suite2', handler_configuration='config1'), self._new_test_suite('suite3', requires=['env1']) ] handler_configurations = { 'config1': { 'env': 'env1_id', 'tags': ['env1'] } } scheduler = SuitesScheduler(test_suites, handler_configurations) scheduler.run() self.assertFalse(test_suites[0].is_running) self.assertFalse(test_suites[1].is_running) self.assertFalse(test_suites[2].is_running) self.assertTrue(test_suites[1].started > test_suites[0].terminated) self.assertTrue(test_suites[2].started > test_suites[1].terminated)
def test_configuration_specific_prioritization(self): suites = [ self._new_test_suite('suite1', requires=['env2']), self._new_test_suite('suite2', handler_configuration='config1'), self._new_test_suite('suite3', handler_configuration='config2') ] handler_configurations = { 'config1': {'env': 'env1_id', 'tags': ['env1']}, 'config2': {'env': 'env2_id', 'tags': ['env2']} } scheduler = SuitesScheduler( suites, handler_configurations, optimize=True) scheduler.run() self.assertTrue(suites[0].started > suites[1].started) self.assertTrue(suites[0].started > suites[2].started) self.assertTrue(suites[2].terminated < suites[0].started)
def test_timed_out_suite(self): suite_time = 10 suites = [ self._new_test_suite('suite1', requires=['env1'], run_for=suite_time) ] handler_configurations = { 'config1': {'env': 'env1_id', 'tags': ['env1']} } scheduler = SuitesScheduler( suites, handler_configurations, suite_timeout=1) start = time.time() scheduler.run() delta = time.time() - start self.assertTrue( delta < suite_time, msg='Scheduler running time should be less than {0} seconds but ' 'was {1} seconds.'.format(suite_time, delta)) self.assertTrue(suites[0].timed_out)
def test_configuration_specific_prioritization(self): suites = [ self._new_test_suite('suite1', requires=['env2']), self._new_test_suite('suite2', handler_configuration='config1'), self._new_test_suite('suite3', handler_configuration='config2') ] handler_configurations = { 'config1': { 'env': 'env1_id', 'tags': ['env1'] }, 'config2': { 'env': 'env2_id', 'tags': ['env2'] } } scheduler = SuitesScheduler(suites, handler_configurations, optimize=True) scheduler.run() self.assertTrue(suites[0].started > suites[1].started) self.assertTrue(suites[0].started > suites[2].started) self.assertTrue(suites[2].terminated < suites[0].started)
def test_timed_out_env_removed_from_envs_list(self): suite_time = 10 suites = [ self._new_test_suite('suite1', requires=['env1'], run_for=suite_time), self._new_test_suite('suite2', requires=['env1'], run_for=suite_time), self._new_test_suite('suite3', handler_configuration='config1', run_for=suite_time) ] handler_configurations = { 'config1': {'env': 'env1_id', 'tags': ['env1']} } scheduler = SuitesScheduler( suites, handler_configurations, suite_timeout=1) scheduler.run() self.assertIsNone(suites[1].started) self.assertIsNone(suites[2].started) self.assertEqual(2, len(scheduler.skipped_suites))
def test_suites_running_in_parallel(self): suites = [ self._new_test_suite('suite1', requires=['env1'], run_for=10), self._new_test_suite('suite2', handler_configuration='config1', run_for=1), self._new_test_suite('suite3', requires=['env2'], run_for=5) ] handler_configurations = { 'config1': {'env': 'env1_id', 'tags': ['env1']}, 'config2': {'env': 'env2_id', 'tags': ['env2']} } scheduler = SuitesScheduler( suites, handler_configurations) scheduler.run() self.assertEqual('config1', suites[0].handler_configuration) self.assertEqual('config1', suites[1].handler_configuration) self.assertEqual('config2', suites[2].handler_configuration) self.assertFalse(suites[0].is_running) self.assertFalse(suites[1].is_running) self.assertFalse(suites[2].is_running) self.assertTrue(suites[1].started > suites[0].terminated) self.assertTrue(suites[2].started < suites[0].terminated)
def test_timed_out_suite(self): suite_time = 10 suites = [ self._new_test_suite('suite1', requires=['env1'], run_for=suite_time) ] handler_configurations = { 'config1': { 'env': 'env1_id', 'tags': ['env1'] } } scheduler = SuitesScheduler(suites, handler_configurations, suite_timeout=1) start = time.time() scheduler.run() delta = time.time() - start self.assertTrue( delta < suite_time, msg='Scheduler running time should be less than {0} seconds but ' 'was {1} seconds.'.format(suite_time, delta)) self.assertTrue(suites[0].timed_out)