Example #1
0
    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)
Example #2
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)
Example #3
0
    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)
Example #4
0
    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)
Example #5
0
    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)