Esempio n. 1
0
 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)
Esempio n. 2
0
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)))
Esempio n. 3
0
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)))
Esempio n. 4
0
    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()
Esempio n. 5
0
 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)