def test_default(self): def stream_process_mock(cmd): yield 'a\n' yield 0 self.mock(swarming_run_shim, 'stream_process', stream_process_mock) self.mock(swarming_run_shim.swarming_utils, 'find_client', lambda _: '/a') self.mock(swarming_run_shim.swarming_utils, 'get_version', lambda _: (0, 4)) self.mock(sys, 'stdout', StringIO.StringIO()) cmd = [ '--swarming', 'http://*****:*****@@@SEED_STEP base_test@@@\n' '\n@@@STEP_CURSOR base_test@@@\n' '\n@@@STEP_STARTED@@@\n' '\n@@@STEP_TEXT@%(OS)s@@@\n' '\n@@@STEP_TEXT@1234@@@\n' 'a\n' '\n@@@STEP_CLOSED@@@\n' '\n' ) % {'OS': swarming_run_shim.swarming_utils.OS_MAPPING[sys.platform]} self.assertEqual(expected, sys.stdout.getvalue())
def test_none(self): def stream_process_mock(cmd): self.fail() def find_client_mock(path): return '/doesn\'t/exist/' self.mock(swarming_run_shim, 'stream_process', stream_process_mock) self.mock(swarming_run_shim.swarming_utils, 'find_client', find_client_mock) self.mock(swarming_run_shim.swarming_utils, 'get_version', lambda _: (0, 4)) self.mock(sys, 'stdout', StringIO.StringIO()) cmd = [ '--swarming', 'http://*****:*****@@@STEP_WARNINGS@@@\n' self.assertEqual(expected, sys.stdout.getvalue())
def test_one(self): cmds = [] def stream_process_mock(cmd): cmds.append(cmd) yield 'a\n' yield 'b\n' yield 'c\n' yield 0 def find_client_mock(path): return '/doesn\'t/exist/' self.mock(swarming_run_shim, 'stream_process', stream_process_mock) self.mock(swarming_run_shim.swarming_utils, 'find_client', find_client_mock) self.mock(swarming_run_shim.swarming_utils, 'get_version', lambda _: (0, 4)) self.mock(sys, 'stdout', StringIO.StringIO()) cmd = [ '--swarming', 'http://*****:*****@@@SEED_STEP base_test@@@\n' '\n@@@STEP_CURSOR base_test@@@\n' '\n@@@STEP_STARTED@@@\n' '\n@@@STEP_TEXT@Mac@@@\n' '\n@@@STEP_TEXT@1234@@@\n' 'a\nb\nc\n' '\n@@@STEP_CLOSED@@@\n' '\n' ) self.assertEqual(expected, sys.stdout.getvalue())
def test_default(self): def stream_process_mock(cmd): yield 'a\n' yield 0 self.mock(swarming_run_shim, 'stream_process', stream_process_mock) self.mock(swarming_run_shim.swarming_utils, 'find_client', lambda _: '/a') self.mock(swarming_run_shim.swarming_utils, 'get_version', lambda _: (0, 4)) self.mock(sys, 'stdout', StringIO.StringIO()) cmd = [ '--swarming', 'http://*****:*****@@@SEED_STEP base_test@@@\n' '\n@@@STEP_CURSOR base_test@@@\n' '\n@@@STEP_STARTED@@@\n' '\n@@@STEP_TEXT@%(OS)s@@@\n' '\n@@@STEP_TEXT@1234@@@\n' 'a\n' '\n@@@STEP_CLOSED@@@\n' '\n') % { 'OS': swarming_run_shim.swarming_utils.OS_MAPPING[sys.platform] } self.assertEqual(expected, sys.stdout.getvalue())
def test_three(self): out = Queue.Queue() def drive_many(*args, **kwargs): # Inject our own queue. return swarming_run_shim._drive_many(*args, out=out, **kwargs) self.mock(swarming_run_shim, 'drive_many', drive_many) lock = threading.Lock() cmds = set() step = StateMachine() def stream_process_mock(cmd): """The unlocking pattern is: 0. base_test outputs 2 lines and complete. 1. slow_test outputs 1 line 2. bloa_test outputs 1 line 3. slow_test outputs 1 line 4. bloa_test outputs 1 line 5. slow_test complete 6. bloa_test complete """ with lock: cmds.add(tuple(cmd)) if 'base_test/Mac/1234/win_rel/18' in cmd: step.wait_for(0) yield 'base1\n' out.join() yield 'base2\n' out.join() yield 0 out.join() step.increment() elif 'slow_test/Mac/4321/win_rel/18' in cmd: step.wait_for(1) yield 'slow1\n' out.join() step.increment() step.wait_for(3) yield 'slow2\n' out.join() step.increment() step.wait_for(5) yield 1 out.join() step.increment() elif 'bloa_test/Mac/0000/win_rel/18' in cmd: step.wait_for(2) yield 'bloated1\n' out.join() step.increment() step.wait_for(4) yield 'bloated2\n' out.join() yield 'bloated3\n' out.join() step.increment() step.wait_for(6) yield 0 out.join() step.increment() else: logging.info('OOOPS') self.fail() def find_client_mock(path): return '/doesn\'t/exist/' self.mock(swarming_run_shim, 'stream_process', stream_process_mock) self.mock(swarming_run_shim.swarming_utils, 'find_client', find_client_mock) self.mock(swarming_run_shim.swarming_utils, 'get_version', lambda _: (0, 4)) self.mock(sys, 'stdout', StringIO.StringIO()) cmd = [ '--swarming', 'http://*****:*****@@@SEED_STEP base_test@@@\n' u'\n@@@SEED_STEP bloa_test@@@\n' u'\n@@@SEED_STEP slow_test@@@\n' u'\n@@@STEP_CURSOR base_test@@@\n' u'\n@@@STEP_STARTED@@@\n' u'\n@@@STEP_TEXT@Mac@@@\n' u'\n@@@STEP_TEXT@1234@@@\n' u'\n@@@STEP_CURSOR bloa_test@@@\n' u'\n@@@STEP_STARTED@@@\n' u'\n@@@STEP_TEXT@Mac@@@\n' u'\n@@@STEP_TEXT@0000@@@\n' u'\n@@@STEP_CURSOR slow_test@@@\n' u'\n@@@STEP_STARTED@@@\n' u'\n@@@STEP_TEXT@Mac@@@\n' u'\n@@@STEP_TEXT@4321@@@\n' u'\n@@@STEP_CURSOR base_test@@@\n' u'\n' u'base1\nbase2\n' u'\n@@@STEP_CLOSED@@@\n' u'\n' u'\n@@@STEP_CURSOR slow_test@@@\n' u'\n' u'slow1\n' u'\n@@@STEP_CURSOR bloa_test@@@\n' u'\n' u'bloated1\n' u'\n@@@STEP_CURSOR slow_test@@@\n' u'\n' u'slow2\n' u'\n@@@STEP_CURSOR bloa_test@@@\n' u'\n' u'bloated2\n' u'bloated3\n' u'\n@@@STEP_CURSOR slow_test@@@\n' u'\n' u'\n@@@STEP_FAILURE@@@\n' u'\n@@@STEP_CLOSED@@@\n' u'\n' u'\n@@@STEP_CURSOR bloa_test@@@\n' u'\n' u'\n@@@STEP_CLOSED@@@\n' u'\n' ) self.assertEqual(expected.splitlines(), actual.splitlines())
def test_one(self): cmds = [] def stream_process_mock(cmd): cmds.append(cmd) yield 'a\n' yield 'b\n' yield 'c\n' yield 0 def find_client_mock(path): return '/doesn\'t/exist/' self.mock(swarming_run_shim, 'stream_process', stream_process_mock) self.mock(swarming_run_shim.swarming_utils, 'find_client', find_client_mock) self.mock(swarming_run_shim.swarming_utils, 'get_version', lambda _: (0, 4)) self.mock(sys, 'stdout', StringIO.StringIO()) cmd = [ '--swarming', 'http://*****:*****@@@SEED_STEP base_test@@@\n' '\n@@@STEP_CURSOR base_test@@@\n' '\n@@@STEP_STARTED@@@\n' '\n@@@STEP_TEXT@Mac@@@\n' '\n@@@STEP_TEXT@1234@@@\n' 'a\nb\nc\n' '\n@@@STEP_CLOSED@@@\n' '\n') self.assertEqual(expected, sys.stdout.getvalue())
def test_three(self): out = Queue.Queue() def drive_many(*args, **kwargs): # Inject our own queue. return swarming_run_shim._drive_many(*args, out=out, **kwargs) self.mock(swarming_run_shim, 'drive_many', drive_many) lock = threading.Lock() cmds = set() step = StateMachine() def stream_process_mock(cmd): """The unlocking pattern is: 0. base_test outputs 2 lines and complete. 1. slow_test outputs 1 line 2. bloa_test outputs 1 line 3. slow_test outputs 1 line 4. bloa_test outputs 1 line 5. slow_test complete 6. bloa_test complete """ with lock: cmds.add(tuple(cmd)) if 'base_test/Mac/1234/win_rel/18' in cmd: step.wait_for(0) yield 'base1\n' out.join() yield 'base2\n' out.join() yield 0 out.join() step.increment() elif 'slow_test/Mac/4321/win_rel/18' in cmd: step.wait_for(1) yield 'slow1\n' out.join() step.increment() step.wait_for(3) yield 'slow2\n' out.join() step.increment() step.wait_for(5) yield 1 out.join() step.increment() elif 'bloa_test/Mac/0000/win_rel/18' in cmd: step.wait_for(2) yield 'bloated1\n' out.join() step.increment() step.wait_for(4) yield 'bloated2\n' out.join() yield 'bloated3\n' out.join() step.increment() step.wait_for(6) yield 0 out.join() step.increment() else: logging.info('OOOPS') self.fail() def find_client_mock(path): return '/doesn\'t/exist/' self.mock(swarming_run_shim, 'stream_process', stream_process_mock) self.mock(swarming_run_shim.swarming_utils, 'find_client', find_client_mock) self.mock(swarming_run_shim.swarming_utils, 'get_version', lambda _: (0, 4)) self.mock(sys, 'stdout', StringIO.StringIO()) cmd = [ '--swarming', 'http://*****:*****@@@SEED_STEP base_test@@@\n' u'\n@@@SEED_STEP bloa_test@@@\n' u'\n@@@SEED_STEP slow_test@@@\n' u'\n@@@STEP_CURSOR base_test@@@\n' u'\n@@@STEP_STARTED@@@\n' u'\n@@@STEP_TEXT@Mac@@@\n' u'\n@@@STEP_TEXT@1234@@@\n' u'\n@@@STEP_CURSOR bloa_test@@@\n' u'\n@@@STEP_STARTED@@@\n' u'\n@@@STEP_TEXT@Mac@@@\n' u'\n@@@STEP_TEXT@0000@@@\n' u'\n@@@STEP_CURSOR slow_test@@@\n' u'\n@@@STEP_STARTED@@@\n' u'\n@@@STEP_TEXT@Mac@@@\n' u'\n@@@STEP_TEXT@4321@@@\n' u'\n@@@STEP_CURSOR base_test@@@\n' u'\n' u'base1\nbase2\n' u'\n@@@STEP_CLOSED@@@\n' u'\n' u'\n@@@STEP_CURSOR slow_test@@@\n' u'\n' u'slow1\n' u'\n@@@STEP_CURSOR bloa_test@@@\n' u'\n' u'bloated1\n' u'\n@@@STEP_CURSOR slow_test@@@\n' u'\n' u'slow2\n' u'\n@@@STEP_CURSOR bloa_test@@@\n' u'\n' u'bloated2\n' u'bloated3\n' u'\n@@@STEP_CURSOR slow_test@@@\n' u'\n' u'\n@@@STEP_FAILURE@@@\n' u'\n@@@STEP_CLOSED@@@\n' u'\n' u'\n@@@STEP_CURSOR bloa_test@@@\n' u'\n' u'\n@@@STEP_CLOSED@@@\n' u'\n') self.assertEqual(expected.splitlines(), actual.splitlines())