Exemplo n.º 1
0
def test_start_should_not_update_existing_startfile(tmpdir):
    with open(str(tmpdir / 'started'), 'w') as f:
        print(u'old', file=f)
    req = Request(0, 1, path=str(tmpdir))
    req.execute()
    with open(os.path.join(req.path, 'started')) as f:
        assert u'old\n' == f.read()
Exemplo n.º 2
0
def test_state_should_tolerate_empty_exitcode_file(tmpdir):
    request = Request(0, 1, path=str(tmpdir))
    request.save()
    with open(str(tmpdir / 'exitcode'), 'w') as f:
        print('', file=f)
    assert request.exitcode is None
    assert request.state == Request.PENDING
Exemplo n.º 3
0
def test_execute_should_skip_execution_if_script_not_applicable(tmpdir):
    request = Request(0,
                      1,
                      script='echo >> did_something',
                      path=str(tmpdir),
                      applicable='/bin/false')
    request.execute()
    assert os.path.exists(os.path.join(request.path, 'did_something')) is False
Exemplo n.º 4
0
def test_update_should_accept_datetime(tmpdir):
    r = Request(0, 1, path=str(tmpdir))
    r.update(starttime=datetime.datetime(2011, 7, 28, 14, 20, tzinfo=pytz.utc))
    assert r.starttime == datetime.datetime(2011,
                                            7,
                                            28,
                                            14,
                                            20,
                                            tzinfo=pytz.utc)
Exemplo n.º 5
0
def test_update_should_accept_str(tmpdir):
    r = Request(0, 1, path=str(tmpdir))
    r.update(starttime='2011-07-28T14:22:00+00:00')
    assert r.starttime == datetime.datetime(2011,
                                            7,
                                            28,
                                            14,
                                            22,
                                            tzinfo=pytz.utc)
Exemplo n.º 6
0
def test_execute_should_write_stdout_stderr(tmpdir):
    request = Request(0,
                      1,
                      script='echo stdout; echo stderr >&2',
                      path=str(tmpdir))
    request.execute()
    with open(os.path.join(request.path, 'stdout')) as f:
        assert f.read() == 'stdout\n'
    with open(os.path.join(request.path, 'stderr')) as f:
        assert f.read() == 'stderr\n'
Exemplo n.º 7
0
def test_stopped(tmpdir):
    with freezegun.freeze_time('2011-07-26 09:26:00', tz_offset=0):
        request = Request(0, 1, path=str(tmpdir))
        request.stop()
        with open(os.path.join(request.path, 'stopped'), 'w') as f:
            print('2011-07-26T09:26:00+00:00\n', file=f)
        assert request.stopped == datetime.datetime(2011,
                                                    7,
                                                    26,
                                                    9,
                                                    26,
                                                    tzinfo=pytz.utc)
Exemplo n.º 8
0
def test_state_pending(tmpdir):
    with freezegun.freeze_time('2011-07-05 08:37:00', tz_offset=0):
        request = Request(0,
                          1,
                          path=str(tmpdir),
                          starttime=datetime.datetime(2011,
                                                      7,
                                                      5,
                                                      8,
                                                      38,
                                                      tzinfo=pytz.utc))
        request.save()
        assert request.state == Request.PENDING
Exemplo n.º 9
0
def test_execution_time_should_return_executiontime(tmpdir):
    request = Request(0, 1, path=str(tmpdir))
    with open(os.path.join(request.path, 'started'), 'w') as f:
        print('2011-07-26T09:27:00+00:00\n', file=f)
    with open(os.path.join(request.path, 'stopped'), 'w') as f:
        print('2011-07-26T10:55:12+00:00\n', file=f)
    assert request.executiontime == 5292
Exemplo n.º 10
0
def test_reset_started_stopped(tmpdir):
    request = Request(0, 1, path=str(tmpdir))
    request.start()
    assert p.exists(p.join(request.path, 'started')) is True
    request.stop()
    assert p.exists(p.join(request.path, 'stopped')) is True
    request.reset_started_stopped()
    assert p.exists(p.join(request.path, 'started')) is False
    assert p.exists(p.join(request.path, 'stopped')) is False
Exemplo n.º 11
0
def test_deserialize():
    io = StringIO.StringIO("""\
{
  "comment": "user notice",
  "reqid": 16,
  "estimate": 950,
  "starttime": "2011-07-25T16:09:41+00:00",
  "script": "echo",
  "applicable": "true",
  "uuid": "2345fa72-7f9f-42c2-aa33-6eaf5d891e29"
}
""")
    assert Request.deserialize(io) == Request(
        16,
        950,
        'echo',
        'user notice',
        datetime.datetime(2011, 7, 25, 16, 9, 41, tzinfo=pytz.UTC),
        'true',
        uuid=pyuuid.UUID('2345fa72-7f9f-42c2-aa33-6eaf5d891e29'))
Exemplo n.º 12
0
def test_serialize():
    io = StringIO.StringIO()
    request = Request(51,
                      900,
                      '/bin/true',
                      'do something',
                      datetime.datetime(2011, 7, 25, 3, 5, tzinfo=pytz.UTC),
                      'check_something',
                      uuid='0ae23c8f-46e0-11e3-8000-001fd0a3d7a6')
    request.serialize(io)
    assert """\
{
  "comment": "do something",\x20
  "uuid": "iSDJhfaauzAEMRtAaNXPw3",\x20
  "script": "/bin/true",\x20
  "applicable": "check_something",\x20
  "reqid": 51,\x20
  "starttime": "2011-07-25T03:05:00+00:00",\x20
  "estimate": 900
}
""" == io.getvalue()
Exemplo n.º 13
0
def test_state_retrylimit(tmpdir):
    request = Request(0, 1, script='exit 75', path=str(tmpdir))
    request.save()
    with open(os.path.join(request.path, 'attempt'), 'w') as f:
        print(Request.MAX_TRIES, file=f)
    request.execute()
    assert request.state == Request.RETRYLIMIT
Exemplo n.º 14
0
def test_applicable_postpone(tmpdir):
    request = Request(0,
                      1,
                      script='true',
                      applicable='exit 69',
                      path=str(tmpdir))
    request.save()
    request.execute()
    assert request.state == Request.POSTPONE
Exemplo n.º 15
0
def test_applicable_error(tmpdir):
    request = Request(0,
                      1,
                      script='true',
                      applicable='exit 2',
                      path=str(tmpdir))
    request.save()
    request.execute()
    assert request.state == Request.ERROR
    assert request.exitcode == 2
Exemplo n.º 16
0
def test_not_applicable_but_success(tmpdir):
    request = Request(0,
                      1,
                      script='true',
                      applicable='exit 1',
                      path=str(tmpdir))
    request.save()
    request.execute()
    assert request.state == Request.SUCCESS
    assert request.exitcode == 0
Exemplo n.º 17
0
def test_execute_should_just_record_time_if_no_script(tmpdir):
    with freezegun.freeze_time('2011-07-27 07:35:00', tz_offset=0):
        request = Request(0, 1, path=str(tmpdir))
        request.save()
        request.execute()
        assert request.state == Request.SUCCESS
        assert request.started == datetime.datetime(2011,
                                                    7,
                                                    27,
                                                    7,
                                                    35,
                                                    tzinfo=pytz.utc)
        assert request.stopped == datetime.datetime(2011,
                                                    7,
                                                    27,
                                                    7,
                                                    35,
                                                    tzinfo=pytz.utc)
Exemplo n.º 18
0
def test_repr_rpc():
    request = Request(66, 160, 'script', 'a comment')
    assert request.repr_rpc == {'estimate': 160, 'comment': 'a comment'}
Exemplo n.º 19
0
def test_execute_should_write_exitcode(tmpdir):
    request = Request(0, 1, script='exit 70', path=str(tmpdir))
    request.execute()
    with open(os.path.join(request.path, 'exitcode')) as f:
        assert f.read() == '70\n'
Exemplo n.º 20
0
def test_save(tmpdir):
    r = Request(19, 980, path=str(tmpdir / '19'))
    r.save()
    assert os.path.exists(str(tmpdir / '19/data')) is True
Exemplo n.º 21
0
def test_eq():
    stub_uuid = pyuuid.UUID('11afa30a-46de-11e3-8000-000000000000')
    assert Request(11, 39, uuid=stub_uuid) == Request(11, 39, uuid=stub_uuid)
    assert Request(11, 39, uuid=stub_uuid) != Request(12, 39, uuid=stub_uuid)
Exemplo n.º 22
0
def test_uuid_decode_short(tmpdir):
    r = Request(0, 1, path=str(tmpdir), uuid='hQiTKzANzaJ33zRjoSkAzk')
    assert 'hQiTKzANzaJ33zRjoSkAzk' == r.uuid
Exemplo n.º 23
0
def test_uuid_decode_long(tmpdir):
    r = Request(0,
                1,
                path=str(tmpdir),
                uuid='f198be2e-b826-11e4-a65e-001fd0a3d7a6')
    assert 'hQiTKzANzaJ33zRjoSkAzk' == r.uuid
Exemplo n.º 24
0
def test_uuid_encode(tmpdir):
    r = Request(0,
                1,
                path=str(tmpdir),
                uuid=pyuuid.UUID('f198be2e-b826-11e4-a65e-001fd0a3d7a6'))
    assert 'hQiTKzANzaJ33zRjoSkAzk' == r.uuid
Exemplo n.º 25
0
def test_incr_attempt_should_create_counter_if_none(tmpdir):
    request = Request(0, 1, path=str(tmpdir))
    request.incr_attempt()
    with open(os.path.join(request.path, 'attempt')) as f:
        assert f.read() == '1\n'
Exemplo n.º 26
0
def test_exitcode_should_read_last_line(tmpdir):
    request = Request(0, 1, path=str(tmpdir))
    request.save()
    with open(str(tmpdir / 'exitcode'), 'w') as f:
        print('0\n2', file=f)
    assert request.exitcode == 2
Exemplo n.º 27
0
def test_estimate_readable():
    assert Request(0, 1).estimate_readable == '1s'
    assert Request(0, 61).estimate_readable == '1m 1s'
    assert Request(0, 3600).estimate_readable == '1h'
    assert Request(0, 3661).estimate_readable == '1h 1m 1s'
Exemplo n.º 28
0
def test_update_should_del_starttime_if_none(tmpdir):
    r = Request(0, 1, path=str(tmpdir))
    r.starttime = datetime.datetime(2011, 7, 28, 14, 18, tzinfo=pytz.utc)
    r.update(starttime=None)
    assert r.starttime is None
Exemplo n.º 29
0
def test_attempt_counter(tmpdir):
    request = Request(0, 1, path=str(tmpdir))
    with open(os.path.join(request.path, 'attempt'), 'w') as f:
        print(2, file=f)
    request.incr_attempt()
    assert request.attempt == 3
Exemplo n.º 30
0
def test_execute_should_cd_to_requestpath(tmpdir):
    request = Request(0, 1, script='echo foo > localfile', path=str(tmpdir))
    request.execute()
    with open(os.path.join(request.path, 'localfile')) as f:
        assert f.read() == 'foo\n'