Beispiel #1
0
def test_run_event_command_should_not_hide_handler_exception():
    """Test handler exceptions."""
    handler = _RaisingHandler(_FakeError)
    with pytest.raises(_FakeError):
        eventlib.run_event_command(
            event_handler=handler,
            args=['bash', '-c', 'echo starting; echo completed'])
Beispiel #2
0
def test_run_event_command_with_invalid_events():
    """Test passing invalid events."""
    handler = _FakeHandler()
    eventlib.run_event_command(event_handler=handler,
                               args=['bash', '-c', 'echo foo; echo bar'])
    # Handler should not be called with invalid events.
    assert handler.events == []
Beispiel #3
0
def test_run_event_command_with_failed_command():
    """Test passing invalid events."""
    handler = _FakeHandler()
    ret = eventlib.run_event_command(event_handler=handler,
                                     args=['bash', '-c', 'exit 1'])
    # Handler should return the exit status of the command.
    assert ret == 1
Beispiel #4
0
def test_run_event_command_normal_with_messages():
    """Test happy path with messages."""
    handler = _FakeHandler()

    ret = eventlib.run_event_command(event_handler=handler,
                                     args=['bash', '-c', 'echo starting foo'])

    # Handler should be called with events and messages.
    assert handler.events == [(Event('starting'), 'foo')]
    # Handler should return the exit status of the command.
    assert ret == 0
Beispiel #5
0
def test_run_event_command_normal(capfd):
    """Test happy path."""
    handler = _FakeHandler()

    ret = eventlib.run_event_command(event_handler=handler,
                                     args=[
                                         'bash', '-c', 'echo starting;'
                                         'echo log message >&2;'
                                         'echo completed;'
                                     ])

    # Handler should be called with events in order.
    assert handler.events == [(Event('starting'), ''),
                              (Event('completed'), '')]
    # Handler should return the exit status of the command.
    assert ret == 0
    # Child stderr should go to stderr.
    out, err = capfd.readouterr()
    assert out == ''
    assert err == 'log message\n'
def _run_lucifer_job(event_handler, args, job):
    """Run lucifer test.

    Issued events will be handled by event_handler.

    @param event_handler: callable that takes an Event
    @param args: parsed arguments
    @returns: exit status of lucifer
    """
    command_args = [args.lucifer_path]
    command_args.extend([
            'test',
            '-autotestdir', '/usr/local/autotest',

            '-abortsock', _abort_sock_path(args.jobdir, args.job_id),
            '-hosts', ','.join(jobx.hostnames(job)),

            '-x-level', args.lucifer_level,
            '-resultsdir', args.results_dir,
    ])
    _add_level_specific_args(command_args, args, job)
    return eventlib.run_event_command(
            event_handler=event_handler, args=command_args)
Beispiel #7
0
def _run_lucifer_job(event_handler, args):
    """Run lucifer_run_job.

    Issued events will be handled by event_handler.

    @param event_handler: callable that takes an Event
    @param args: parsed arguments
    @returns: exit status of lucifer_run_job
    """
    models = autotest.load('frontend.afe.models')
    command_args = [args.run_job_path]
    job = models.Job.objects.get(id=args.job_id)
    command_args.extend([
        '-autotestdir',
        autotest.AUTOTEST_DIR,
        '-watcherpath',
        args.watcher_path,
        '-abortsock',
        _abort_sock_path(args.jobdir, args.job_id),
        '-hosts',
        ','.join(jobx.hostnames(job)),
        '-x-level',
        args.lucifer_level,
        '-x-resultsdir',
        args.results_dir,
        '-x-autoserv-exit',
        str(args.autoserv_exit),
    ])
    if args.need_gather:
        command_args.extend([
            '-x-need-gather',
            '-x-num-tests-failed',
            str(args.num_tests_failed),
        ])
    return eventlib.run_event_command(event_handler=event_handler,
                                      args=command_args)