def setUp(self): """Set up SUT.""" confparser = ConfigParser() confparser.add_section('bureaucrat') confparser.set('bureaucrat', 'storage_dir', STORAGE_DIR) Configs.instance(confparser) Storage.instance() self.ch = Mock() self.schedule = Schedule(self.ch)
class TestSchedule(unittest.TestCase): """Tests for Schedule class.""" def setUp(self): """Set up SUT.""" confparser = ConfigParser() confparser.add_section('bureaucrat') confparser.set('bureaucrat', 'storage_dir', STORAGE_DIR) Configs.instance(confparser) Storage.instance() self.ch = Mock() self.schedule = Schedule(self.ch) def tearDown(self): """Clean up environment.""" Configs._instance = None Storage._instance = None os.rmdir(os.path.join(STORAGE_DIR, "schedule")) os.removedirs(STORAGE_DIR) def test_register(self): """Test Schedule.register().""" instant = 10000 self.schedule.register(code="timeout", instant=instant, target="fake-id") storage = Storage.instance() schedules = [{ "code": "timeout", "target": "fake-id" }] self.assertEqual(storage.load("schedule", str(instant)), json.dumps(schedules)) storage.delete("schedule", str(instant)) def test_handle_alarm(self): """Test Schedule.handle_alarm().""" instant = 10000 storage = Storage.instance() schedules = [{ "code": "timeout", "target": "fake-id" }] storage.save("schedule", str(instant), json.dumps(schedules)) with patch('bureaucrat.schedule.Message') as MockMessage: newmsg = Message(name='timeout', target='fake-id', origin='') MockMessage.return_value = newmsg self.schedule.handle_alarm() MockMessage.assert_called_once_with(name='timeout', target='fake-id', origin='') self.schedule.channel.send.assert_called_once_with(newmsg) self.assertFalse(storage.exists("schedule", str(instant)))
class TestSchedule(unittest.TestCase): """Tests for Schedule class.""" def setUp(self): """Set up SUT.""" confparser = ConfigParser() confparser.add_section('bureaucrat') confparser.set('bureaucrat', 'storage_dir', STORAGE_DIR) Configs.instance(confparser) Storage.instance() self.ch = Mock() self.schedule = Schedule(self.ch) def tearDown(self): """Clean up environment.""" Configs._instance = None Storage._instance = None os.rmdir(os.path.join(STORAGE_DIR, "schedule")) os.removedirs(STORAGE_DIR) def test_register(self): """Test Schedule.register().""" instant = 10000 self.schedule.register(code="timeout", instant=instant, target="fake-id") storage = Storage.instance() schedules = [{"code": "timeout", "target": "fake-id"}] self.assertEqual(storage.load("schedule", str(instant)), json.dumps(schedules)) storage.delete("schedule", str(instant)) def test_handle_alarm(self): """Test Schedule.handle_alarm().""" instant = 10000 storage = Storage.instance() schedules = [{"code": "timeout", "target": "fake-id"}] storage.save("schedule", str(instant), json.dumps(schedules)) with patch('bureaucrat.schedule.Message') as MockMessage: newmsg = Message(name='timeout', target='fake-id', origin='') MockMessage.return_value = newmsg self.schedule.handle_alarm() MockMessage.assert_called_once_with(name='timeout', target='fake-id', origin='') self.schedule.channel.send.assert_called_once_with(newmsg) self.assertFalse(storage.exists("schedule", str(instant)))
def run(self): """Event cycle.""" config = Configs.instance() LOG.debug("create connection") self.connection = pika.BlockingConnection(config.amqp_params) LOG.debug("Bureaucrat connected") self.channel = self.connection.channel() self.schedule = Schedule(ChannelWrapper(self.channel)) self.channel.queue_declare(queue="bureaucrat", durable=True, exclusive=False, auto_delete=False) self.channel.queue_declare(queue=config.message_queue, durable=True, exclusive=False, auto_delete=False) self.channel.queue_declare(queue=config.event_queue, durable=True, exclusive=False, auto_delete=False) self.channel.queue_declare(queue="bureaucrat_schedule", durable=True, exclusive=False, auto_delete=False) self.channel.basic_qos(prefetch_count=1) self.channel.basic_consume("bureaucrat", self.launch_process) self.channel.basic_consume(config.message_queue, self.handle_message) self.channel.basic_consume(config.event_queue, self.handle_event) self.channel.basic_consume("bureaucrat_schedule", self.add_schedule) signal.signal(signal.SIGALRM, self.handle_alarm) signal.setitimer(signal.ITIMER_REAL, 60, 60) self.channel.start_consuming()