def test_artnet_integration(self): sender = udp.QueuedSender(SEND_ADDRESS) receiver = udp.QueuedReceiver(RECEIVE_ADDRESS) project = make_project(ARTNET_PROJECT) with sender.joiner(), receiver.joiner(): project.start() time.sleep(0.01) sender.queue.put(OUTGOING_MESSAGE) project.join() result = [] while True: try: result.append(receiver.queue.get(timeout=0.1)) except queue.Empty: break msgs = [artnet_message.bytes_to_message(i) for i in result] data = [m.data for m in msgs] self.assertEqual(len(msgs), 3) self.assertTrue(not any(data[0])) self.assertTrue(not any(data[2])) actual = bytearray(data[1]) # We expect to lose the last two bytes because we have uneven sizes. # TODO: perhaps we should round UP instead of DOWN? self.assertEqual(actual[:-2], TEST_DATA[:-2]) self.assertEqual(actual[-2], 0) self.assertEqual(actual[-1], 0)
def test_artnet_control(self): project = make_project(ARTNET_CONTROL) q = queue.Queue() project.test_callback = q.put project.controls[0].set_project(project) sender = udp.QueuedSender(SEND_ADDRESS) with project.controls[0].run_until_stop(), sender.run_until_stop(): sender.send(OUTGOING_MESSAGE) results = q.get(timeout=3) self.assertEqual(results, TEST_DATA)
def test_artnet_control(self): project = make_project(ARTNET_CONTROL) results = [] project.test_callback = results.append project.controls[0].set_root(project) sender = udp.QueuedSender(SEND_ADDRESS) with project.controls[0].joiner(), sender.joiner(): sender.send(OUTGOING_MESSAGE) self.assertTrue(results) self.assertEquals(results[0], TEST_DATA)
def test_full(self): messages = [s.encode() for s in ('foo', '', 'bar', 'baz', '', 'bing')] expected = [s for s in messages if s] # Note that empty messages are either not sent, or not received. actual = [] with receive_udp(TEST_ADDRESS, actual): sender = udp.QueuedSender(TEST_ADDRESS) sender.start() for m in messages: sender.send(m) self.assertEquals(actual, expected)
def test_full(self): messages = [s.encode() for s in ('foo', '', 'bar', 'baz', '', 'bing')] expected = [s for s in messages if s] # Note that empty messages are either not sent, or not received. actual = [] with receive_udp(TEST_ADDRESS, actual, len(expected)): sender = udp.QueuedSender(TEST_ADDRESS) sender.start() for m in messages: sender.send(m) self.assertEquals(actual, expected) # TODO: if I don't have something here, this hangs! time.sleep(0.001)