def test_slave_state_expired(): slave_state = SlaveState('10.0.0.2', timedelta(hours=3), '34', 'cp34m', 'linux_armv7l', 'piwheels2') slave_state._first_seen = datetime.now(tz=UTC) - timedelta(hours=5) assert not slave_state.expired slave_state._last_seen = datetime.now(tz=UTC) - timedelta(hours=4) assert slave_state.expired
def test_slave_recv_bad_built(build_state, file_state, slave_queue): slave_state = SlaveState('10.0.0.2', timedelta(hours=3), '34', 'cp34m', 'linux_armv7l', 'piwheels2') with mock.patch('piwheels.states.datetime') as dt: now = datetime.now(tz=UTC) dt.now.return_value = now slave_state._reply = ('BUILD', ['foo', '0.1']) slave_state.request = ('BUILT', None) assert slave_state.build is None slave_state.reply = ('DONE', None) assert slave_state.build is None
def test_slave_state_recv_hello(master_status_queue, slave_queue): with mock.patch('piwheels.states.datetime') as dt: now = datetime.now(tz=UTC) dt.now.return_value = now slave_state = SlaveState('10.0.0.2', timedelta(hours=3), '34', 'cp34m', 'linux_armv7l', 'piwheels2') slave_state._reply = ('IDLE', None) slave_state.hello() assert master_status_queue.recv_msg() == ('SLAVE', [ slave_state.slave_id, now, 'HELLO', [timedelta(hours=3), '34', 'cp34m', 'linux_armv7l', 'piwheels2'] ]) assert master_status_queue.recv_msg() == ('SLAVE', [ slave_state.slave_id, now, 'IDLE', None ])
def test_slave_recv_reply(build_state, file_state, slave_queue): slave_state = SlaveState('10.0.0.2', timedelta(hours=3), '34', 'cp34m', 'linux_armv7l', 'piwheels2') with mock.patch('piwheels.states.datetime') as dt: now = datetime.now(tz=UTC) dt.now.return_value = now slave_state._reply = ('BUILD', ['foo', '0.1']) slave_state.request = ('BUILT', [ build_state.status, build_state.duration, build_state.output, [file_state.as_message()] ]) build_state._slave_id = slave_state.slave_id assert slave_state.build == build_state slave_state.reply = ('DONE', None) assert slave_state.build is None
def test_slave_state_hello(master_status_queue, slave_queue): with mock.patch('piwheels.states.datetime') as dt: now = datetime.now(tz=UTC) dt.now.return_value = now slave_state = SlaveState('10.0.0.2', timedelta(hours=3), '34', 'cp34m', 'linux_armv7l', 'piwheels2') slave_state.reply = ('ACK', [slave_state.slave_id, const.PYPI_XMLRPC]) assert master_status_queue.recv_msg() == ('SLAVE', [ slave_state.slave_id, now, 'HELLO', [timedelta(hours=3), '34', 'cp34m', 'linux_armv7l', 'piwheels2'] ]) assert master_status_queue.recv_msg() == ('SLAVE', [ slave_state.slave_id, now, 'ACK', [slave_state.slave_id, 'https://pypi.org/pypi'] ])
def test_slave_state_init(): now = datetime.now(tz=UTC) with mock.patch('piwheels.states.datetime') as dt: dt.now.return_value = now slave_state = SlaveState('10.0.0.2', timedelta(hours=3), timedelta(minutes=2), '34', 'cp34m', 'linux_armv7l', 'piwheels2', 'Raspbian GNU/Linux', '9 (stretch)', 'a020d3', '12345678') assert slave_state.slave_id == 1 assert slave_state.address == '10.0.0.2' assert slave_state.label == 'piwheels2' assert slave_state.build_timeout == timedelta(hours=3) assert slave_state.busy_timeout == timedelta(minutes=2) assert slave_state.native_py_version == '34' assert slave_state.native_abi == 'cp34m' assert slave_state.native_platform == 'linux_armv7l' assert slave_state.os_name == 'Raspbian GNU/Linux' assert slave_state.os_version == '9 (stretch)' assert slave_state.board_revision == 'a020d3' assert slave_state.board_serial == '12345678' assert slave_state.first_seen == now assert slave_state.last_seen == now assert slave_state.request is None assert slave_state.reply is None assert slave_state.build is None assert list(slave_state.stats) == [] assert slave_state.clock_skew is None assert not slave_state.killed assert not slave_state.paused assert not slave_state.skipped
def test_slave_state_init(): now = datetime.now(tz=UTC) with mock.patch('piwheels.states.datetime') as dt: dt.now.return_value = now slave_state = SlaveState('10.0.0.2', timedelta(hours=3), '34', 'cp34m', 'linux_armv7l', 'piwheels2') assert slave_state.slave_id == 1 assert slave_state.address == '10.0.0.2' assert slave_state.label == 'piwheels2' assert slave_state.timeout == timedelta(hours=3) assert slave_state.native_py_version == '34' assert slave_state.native_abi == 'cp34m' assert slave_state.native_platform == 'linux_armv7l' assert slave_state.first_seen == now assert slave_state.last_seen == now assert slave_state.request is None assert slave_state.reply is None assert slave_state.build is None assert not slave_state.terminated
def slave_state(slave_queue): return SlaveState('10.0.0.2', timedelta(hours=3), timedelta(minutes=2), '34', 'cp34m', 'linux_armv7l', 'piwheels2', 'Raspbian GNU/Linux', '9 (stretch)', 'a020d3', '12345678')
def test_slave_state_kill(): slave_state = SlaveState('10.0.0.2', timedelta(hours=3), '34', 'cp34m', 'linux_armv7l', 'piwheels2') assert not slave_state.terminated slave_state.kill() assert slave_state.terminated