def test_refresh(self, connector): url = 'amqp://localhost' descriptor = Mock(main=Mock(enabled='1', threads=4), messaging=Mock(uuid='x99', url='amqp://localhost', cacert='ca', clientkey='key', clientcert='crt', heartbeat='8')) # test plugin = Plugin(descriptor, '') plugin.refresh() # validation connector.assert_called_once_with(descriptor.messaging.url) connector = connector.return_value connector.add.assert_called_once_with() self.assertEqual(connector.ssl.ca_certificate, descriptor.messaging.cacert) self.assertEqual(connector.ssl.client_key, descriptor.messaging.clientkey) self.assertEqual(connector.ssl.client_certificate, descriptor.messaging.clientcert) self.assertEqual(connector.ssl.host_validation, descriptor.messaging.host_validation)
def test_detach_not_attached(self, model): descriptor = Mock(main=Mock(threads=4)) # test plugin = Plugin(descriptor, '') plugin.detach() # validation self.assertFalse(model.called)
def test_provides(self): descriptor = Mock(main=Mock(threads=4)) # test plugin = Plugin(descriptor, '') plugin.dispatcher = Mock() provides = plugin.provides('Dog') # validation self.assertEqual(provides, plugin.dispatcher.provides.return_value)
def test_start_already_started(self, scheduler): descriptor = Mock(main=Mock(threads=4)) scheduler.return_value.isAlive.return_value = True # test plugin = Plugin(descriptor, '') plugin.attach = Mock() plugin.start() # validation self.assertFalse(plugin.attach.called) self.assertFalse(scheduler.return_value.start.called)
def test_start(self, scheduler): descriptor = Mock(main=Mock(threads=4)) scheduler.return_value.isAlive.return_value = False # test plugin = Plugin(descriptor, '') plugin.attach = Mock() plugin.start() # validation plugin.attach.assert_called_once_with() scheduler.return_value.start.assert_called_once_with()
def test_detach_no_teardown(self, model): descriptor = Mock(main=Mock(threads=4)) consumer = Mock() # test plugin = Plugin(descriptor, '') plugin.consumer = consumer plugin.detach(teardown=False) # validation consumer.shutdown.assert_called_once_with() consumer.join.assert_called_once_with() self.assertFalse(model.teardown.called) self.assertEqual(plugin.consumer, None)
def test_shutdown_not_running(self, pool, scheduler): descriptor = Mock(main=Mock(threads=4)) scheduler.return_value.isAlive.return_value = False # test plugin = Plugin(descriptor, '') plugin.detach = Mock() plugin.shutdown(False) # validation self.assertFalse(plugin.detach.called) self.assertFalse(scheduler.return_value.shutdown.called) self.assertFalse(scheduler.return_value.join.called) self.assertFalse(pool.return_value.shutdown.called)
def test_shutdown(self, pool, scheduler): descriptor = Mock(main=Mock(threads=4)) scheduler.return_value.isAlive.return_value = True # test plugin = Plugin(descriptor, '') plugin.detach = Mock() plugin.shutdown(False) # validation plugin.detach.assert_called_once_with(False) scheduler.return_value.shutdown.assert_called_once_with() scheduler.return_value.join.assert_called_once_with() pool.return_value.shutdown.assert_called_once_with(hard=False)
def test_detach(self, model): descriptor = Mock(main=Mock(threads=4)) consumer = Mock() # test plugin = Plugin(descriptor, '') plugin.consumer = consumer plugin.detach() # validation consumer.shutdown.assert_called_once_with() consumer.join.assert_called_once_with() model.assert_called_with(plugin) model = model.return_value model.teardown.assert_called_once_with() self.assertEqual(plugin.consumer, None)
def test_properties(self, connector, model): descriptor = Mock(main=Mock(enabled='1', threads=4, latency=0.5, forward='a, b, c', accept='d, e, f'), messaging=Mock(uuid='x99', url='amqp://localhost')) plugin = Plugin(descriptor, '') plugin.scheduler = Mock() # name self.assertEqual(plugin.name, descriptor.main.name) # cfg self.assertEqual(plugin.cfg, descriptor) # uuid self.assertEqual(plugin.uuid, descriptor.messaging.uuid) # latency self.assertEqual(plugin.latency, descriptor.main.latency) # url self.assertEqual(plugin.url, descriptor.messaging.url) # enabled self.assertTrue(plugin.enabled) # connector self.assertEqual(plugin.connector, connector.return_value) connector.assert_called_once_with(descriptor.messaging.url) # queue self.assertEqual(plugin.node, model.return_value.node) model.assert_called_once_with(plugin) # forward _list = descriptor.main.forward self.assertEqual(plugin.forward, set([p.strip() for p in _list.split(',')])) # accept _list = descriptor.main.accept self.assertEqual(plugin.accept, set([p.strip() for p in _list.split(',')])) # is_started self.assertEqual(plugin.is_started, plugin.scheduler.isAlive.return_value)
def test_attach(self, pool, model, consumer, node): queue = 'test' descriptor = Mock(main=Mock(threads=4)) pool.return_value.run.side_effect = lambda fn: fn() model.return_value.queue = queue # test plugin = Plugin(descriptor, '') plugin.authenticator = Mock() plugin.detach = Mock() plugin.refresh = Mock() plugin.attach() # validation plugin.detach.assert_called_once_with(False) model.assert_called_with(plugin) model.return_value.setup.assert_called_once_with() node.assert_called_once_with(queue) consumer.assert_called_once_with(node.return_value, plugin) consumer = consumer.return_value consumer.start.assert_called_once_with() self.assertEqual(consumer.authenticator, plugin.authenticator) self.assertEqual(plugin.consumer, consumer)
def test_init(self, pool, dispatcher, whiteboard, scheduler, delegate): threads = 4 descriptor = Mock(main=Mock(threads=threads)) path = '/tmp/path' # test plugin = Plugin(descriptor, path) # validation pool.assert_called_once_with(threads) dispatcher.assert_called_once_with() scheduler.assert_called_once_with(plugin) delegate.assert_called_once_with() self.assertEqual(plugin.descriptor, descriptor) self.assertEqual(plugin.path, path) self.assertEqual(plugin.pool, pool.return_value) self.assertEqual(plugin.impl, None) self.assertEqual(plugin.actions, []) self.assertEqual(plugin.dispatcher, dispatcher.return_value) self.assertEqual(plugin.whiteboard, whiteboard.return_value) self.assertEqual(plugin.scheduler, scheduler.return_value) self.assertEqual(plugin.delegate, delegate.return_value) self.assertEqual(plugin.authenticator, None) self.assertEqual(plugin.consumer, None)