def test_sub_channel_with_exception(self): """ Whether Sub Channel exception handling is working """ chan = BaseChannel(name="test_channel4", loop=self.loop) n1 = TestNode(name="main") n2 = TestNode(name="sub") n3 = ExceptNode(name="sub2") msg = generate_msg() chan.add(n1) sub = chan.fork(name="Hello") sub.add(n2, n3) # Launch channel processing self.start_channels() self.loop.run_until_complete(chan.handle(msg)) self.assertEqual(n1.processed, 1, "Sub Channel not working") with self.assertRaises(TestException) as cm: self.clean_loop() self.assertEqual(n2.processed, 1, "Sub Channel not working")
def test_sub_channel(self): """ Whether Sub Channel is working """ chan = BaseChannel(name="test_channel3", loop=self.loop) n1 = TestNode(name="main") n2 = TestNode(name="sub") n3 = TestNode(name="sub1") n4 = TestNode(name="sub2") msg = generate_msg() same_chan = chan.append(n1) self.assertEqual(chan, same_chan, "Append don't return channel.") sub = chan.fork(name="subchannel") sub.append(n2, n3, n4) # Launch channel processing self.start_channels() self.loop.run_until_complete(chan.handle(msg)) self.assertTrue(n2.processed, "Sub Channel not working") self.assertTrue(n3.processed, "Sub Channel not working") self.assertTrue(n4.processed, "Sub Channel not working") self.assertEqual(sub.name, "test_channel3.subchannel", "Subchannel name is incorrect")
def test_channel_subchannel(self): """ Whether BaseChannel subchannel works """ chan = BaseChannel(name="test_channel6.5", loop=self.loop) chan_fork = chan.fork() chan_when = chan_fork.when(lambda: True) chan_case1, chan_case2 = chan_when.case(lambda: True, lambda: False) print(chan.subchannels()) self.assertEqual(len(chan.subchannels()[0]['subchannels'][0]['subchannels']), 2, "Subchannel graph not working")
def test_memory_message_store_in_fork(self): """ We can store a message in FileMessageStore """ store_factory = msgstore.MemoryMessageStoreFactory() chan = BaseChannel(name="test_channel10.25", loop=self.loop, message_store_factory=store_factory) n1 = TestNode() n2 = TestNode() n3 = TestNode() n4 = TestNode() chan.add(n1, n2) fork = chan.fork() fork.add(n3) self.assertTrue(isinstance(fork.message_store, msgstore.NullMessageStore)) whe = chan.when(True, message_store_factory=store_factory) whe.add(n4) self.assertTrue(isinstance(whe.message_store, msgstore.MemoryMessageStore))
def test_remote_admin_list(self): """ Channel remote listing working """ store_factory = msgstore.MemoryMessageStoreFactory() chan = BaseChannel(name="test_remote050", loop=self.loop, message_store_factory=store_factory) n = TestNode() n2 = TestNode(name="sub") n3 = TestNode(name="sub1") n4 = TestNode(name="sub2") msg = generate_msg(with_context=True) msg2 = generate_msg(timestamp=(1982, 11, 27, 12, 35)) msg3 = generate_msg(timestamp=(1982, 11, 28, 12, 35)) msg4 = generate_msg(timestamp=(1982, 11, 28, 14, 35)) idref_msg3 = msg3.uuid chan.add(n) sub = chan.fork(name="subchannel") sub.append(n2, n3, n4) # Launch channel processing self.start_channels() self.loop.run_until_complete(chan.handle(msg)) self.loop.run_until_complete(chan.handle(msg2)) self.loop.run_until_complete(chan.handle(msg3)) self.loop.run_until_complete(chan.handle(msg4)) server = RemoteAdminServer(loop=self.loop) self.loop.run_until_complete(server.start()) client = RemoteAdminClient(loop=self.loop) client.init() # List channels chans = client.channels() print (chans) self.assertEqual(chans[0]['name'], 'test_remote050' , "Channel listing not working") self.assertEqual(chans[0]['subchannels'][0]['name'], 'test_remote050.subchannel' , "Subchannel listing not working") # Stop channel result = client.stop('test_remote050') self.assertEqual(chan.status, BaseChannel.STOPPED, "Stopping channel doesn't work") # Start channel result = client.start('test_remote050') self.assertEqual(chan.status, BaseChannel.WAITING, "Starting channel doesn't work") # Search message msg_list = client.list_msg(channel='test_remote050', start=2, count=5, order_by='-timestamp') print(msg_list) self.assertEqual(msg_list['total'], 4, 'List channel messages broken') self.assertEqual(msg_list['messages'][0]['id'], idref_msg3, 'List channel messages broken') # Replay message result = client.replay_msg('test_remote050', [idref_msg3]) msg_list = client.list_msg(channel='test_remote050', start=0, count=5, order_by='-timestamp') self.assertEqual(msg_list['total'], 5, 'List channel messages broken') self.assertEqual(msg_list['messages'][0]['id'], result[0].uuid, 'Replay messages broken') # Push message result = client.push_msg(channel='test_remote050', text="Yaaay") msg_list = client.list_msg(channel='test_remote050', start=0, count=5, order_by='-timestamp') self.assertEqual(msg_list['total'], 6, 'Push message broken') self.assertEqual(msg_list['messages'][0]['id'], result.uuid, 'Push message broken')