def test_get_slave_raises_exception_on_invalid_arguments( self, get_slave_kwargs): master = ClusterMaster() master.connect_new_slave('raphael.turtles.gov', 10) with self.assertRaises(ValueError): master.get_slave(**get_slave_kwargs)
def test_updating_slave_to_nonexistent_state_should_raise_bad_request_error(self): master = ClusterMaster() slave_url = 'raphael.turtles.gov' master.connect_new_slave(slave_url, 10) slave = master.get_slave(slave_url=slave_url) with self.assertRaises(BadRequestError): master.handle_slave_state_update(slave, 'NONEXISTENT_STATE')
def test_updating_slave_to_nonexistent_state_should_raise_bad_request_error( self): master = ClusterMaster() slave_url = 'raphael.turtles.gov' master.connect_new_slave(slave_url, 10) slave = master.get_slave(slave_url=slave_url) with self.assertRaises(BadRequestError): master.handle_slave_state_update(slave, 'NONEXISTENT_STATE')
def test_updating_slave_to_disconnected_state_should_reset_slave_current_build_id(self): master = ClusterMaster() slave_url = 'raphael.turtles.gov' master.connect_new_slave(slave_url, num_executors=10) slave = master.get_slave(slave_url=slave_url) slave.current_build_id = 4 master.handle_slave_state_update(slave, SlaveState.DISCONNECTED) self.assertIsNone(slave.current_build_id)
def test_updating_slave_to_disconnected_state_should_mark_slave_as_dead(self): master = ClusterMaster() slave_url = 'raphael.turtles.gov' master.connect_new_slave(slave_url, num_executors=10) slave = master.get_slave(slave_url=slave_url) self.assertTrue(slave.is_alive()) master.handle_slave_state_update(slave, SlaveState.DISCONNECTED) self.assertFalse(slave.is_alive())
def test_updating_slave_to_setup_completed_state_should_tell_build_to_begin_subjob_execution(self): master = ClusterMaster() fake_build = MagicMock() master.get_build = MagicMock(return_value=fake_build) slave_url = 'raphael.turtles.gov' master.connect_new_slave(slave_url, 10) slave = master.get_slave(slave_url=slave_url) master.handle_slave_state_update(slave, SlaveState.SETUP_COMPLETED) fake_build.begin_subjob_executions_on_slave.assert_called_once_with(slave)
def test_updating_slave_to_disconnected_state_should_reset_slave_current_build_id( self): master = ClusterMaster() slave_url = 'raphael.turtles.gov' master.connect_new_slave(slave_url, num_executors=10) slave = master.get_slave(slave_url=slave_url) slave.current_build_id = 4 master.handle_slave_state_update(slave, SlaveState.DISCONNECTED) self.assertIsNone(slave.current_build_id)
def test_updating_slave_to_disconnected_state_should_mark_slave_as_dead( self): master = ClusterMaster() slave_url = 'raphael.turtles.gov' master.connect_new_slave(slave_url, num_executors=10) slave = master.get_slave(slave_url=slave_url) self.assertTrue(slave.is_alive()) master.handle_slave_state_update(slave, SlaveState.DISCONNECTED) self.assertFalse(slave.is_alive())
def test_updating_slave_to_setup_completed_state_should_tell_build_to_begin_subjob_execution( self): master = ClusterMaster() fake_build = MagicMock() master.get_build = MagicMock(return_value=fake_build) slave_url = 'raphael.turtles.gov' master.connect_new_slave(slave_url, 10) slave = master.get_slave(slave_url=slave_url) master.handle_slave_state_update(slave, SlaveState.SETUP_COMPLETED) fake_build.begin_subjob_executions_on_slave.assert_called_once_with( slave)
def test_get_slave_raises_exception_on_slave_not_found(self, get_slave_kwargs): master = ClusterMaster() master.connect_new_slave('raphael.turtles.gov', 10) master.connect_new_slave('leonardo.turtles.gov', 10) master.connect_new_slave('donatello.turtles.gov', 10) with self.assertRaises(ItemNotFoundError): master.get_slave(**get_slave_kwargs)
def test_get_slave_raises_exception_on_slave_not_found( self, get_slave_kwargs): master = ClusterMaster() master.connect_new_slave('raphael.turtles.gov', 10) master.connect_new_slave('leonardo.turtles.gov', 10) master.connect_new_slave('donatello.turtles.gov', 10) with self.assertRaises(ItemNotFoundError): master.get_slave(**get_slave_kwargs)
def test_get_slave_returns_expected_value_given_valid_arguments(self): master = ClusterMaster() master.connect_new_slave('raphael.turtles.gov', 10) master.connect_new_slave('leonardo.turtles.gov', 10) master.connect_new_slave('donatello.turtles.gov', 10) actual_slave_by_id = master.get_slave(slave_id=2) actual_slave_by_url = master.get_slave(slave_url='leonardo.turtles.gov') self.assertEqual(2, actual_slave_by_id.id, 'Retrieved slave should have the same id as requested.') self.assertEqual('leonardo.turtles.gov', actual_slave_by_url.url, 'Retrieved slave should have the same url as requested.')
def test_get_slave_returns_expected_value_given_valid_arguments(self): master = ClusterMaster() master.connect_new_slave('raphael.turtles.gov', 10) master.connect_new_slave('leonardo.turtles.gov', 10) master.connect_new_slave('donatello.turtles.gov', 10) actual_slave_by_id = master.get_slave(slave_id=2) actual_slave_by_url = master.get_slave( slave_url='leonardo.turtles.gov') self.assertEqual( 2, actual_slave_by_id.id, 'Retrieved slave should have the same id as requested.') self.assertEqual( 'leonardo.turtles.gov', actual_slave_by_url.url, 'Retrieved slave should have the same url as requested.')
def test_get_slave_raises_exception_on_invalid_arguments(self, get_slave_kwargs): master = ClusterMaster() master.connect_new_slave('raphael.turtles.gov', 10) with self.assertRaises(ValueError): master.get_slave(**get_slave_kwargs)