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())
Example #2
0
    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())
Example #4
0
    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_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())
Example #7
0
    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())
Example #8
0
    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())