예제 #1
0
 def test_report_artifact(self):
     bus = MagicMock()
     c = LoRa(bus=bus, config={'device_id': 1})
     with patch('osgar.node.Node.update') as p:
         p.return_value = 'raw'
         c.raw = b"3|['TYPE_BACKPACK', 3506, -18369, -752]\n"
         c.update()
         self.assertEqual(bus.method_calls, [
             call.register('raw', 'cmd', 'robot_status', 'artf'),
             call.publish('artf',
                          [3, ['TYPE_BACKPACK', 3506, -18369, -752]]),
             call.publish('raw',
                          b"3|['TYPE_BACKPACK', 3506, -18369, -752]\n")
         ])
예제 #2
0
 def test_autodetect(self):
     SAMPLE_DATA = b'1|cmd=home\n'
     logger = MagicMock(write=MagicMock(return_value=datetime.timedelta()))
     bus = Bus(logger)
     c = LoRa(bus=bus.handle('lora'), config={'device_id': 4})
     tester = bus.handle('tester')
     tester.register('raw')
     bus.connect('tester.raw', 'lora.raw')
     c.start()
     tester.publish('raw', SAMPLE_DATA)
     c.request_stop()
     c.join()
     self.assertEqual(c.device_id, 4)
예제 #3
0
    def test_autodetect(self):
        SAMPLE_DATA = b'1|cmd=home\n'
        logger = MagicMock()
        robot_bus = BusHandler(logger, out={}, name='robot')
        bus = BusHandler(logger,
                         out={'raw':[(robot_bus.queue, 'raw')]},
                         name='lora')

        c = LoRa(bus=bus, config={'device_id': 4})
        c.start()
        c.bus.queue.put((123, 'raw', SAMPLE_DATA))
        c.request_stop()
        c.join()
        self.assertEqual(c.device_id, 4)
예제 #4
0
 def test_send_cmd(self):
     logger = MagicMock()
     bus = Bus(logger)
     logger.write = MagicMock(return_value=datetime.timedelta(
         microseconds=9721))
     c = LoRa(bus=bus.handle('lora'), config={'device_id': 3})
     tester = bus.handle('tester')
     tester.register('raw')
     bus.connect('lora.cmd', 'tester.cmd')
     bus.connect('tester.raw', 'lora.raw')
     c.start()
     tester.publish('raw', b'1|3:GoHome:1234\n')
     c.request_stop()
     c.join()
     self.assertEqual(tester.listen()[2], b'GoHome')
예제 #5
0
 def test_autodetect_bug(self):
     logger = MagicMock()
     logger.write = MagicMock(return_value=datetime.timedelta(
         microseconds=9721))
     bus = Bus(logger)
     c = LoRa(bus=bus.handle('lora'), config={})  # force autodetection
     tester = bus.handle('tester')
     tester.register('raw')
     bus.connect('tester.raw', 'lora.raw')
     c.start()
     tester.publish('raw', b'4|alive\n')
     tester.publish('raw', b'4|alive-97')
     tester.publish('raw', b'21\n')
     c.request_stop()
     c.join()
     self.assertEqual(c.device_id, 4)
예제 #6
0
    def test_autodetect_bug(self):
        logger = MagicMock()
        robot_bus = BusHandler(logger, out={}, name='robot')
        logger.write = MagicMock(return_value=datetime.timedelta(microseconds=9721))
        bus = BusHandler(logger,
                         out={'raw':[(robot_bus.queue, 'raw')]},
                         name='lora')

        c = LoRa(bus=bus, config={})  # force autodetection
        c.start()
        c.bus.queue.put((datetime.timedelta(microseconds=1331), 'raw', b'4|alive\n'))
#        c.bus.queue.put((datetime.timedelta(microseconds=29000), 'raw', b'4|alive-9721\n'))
        c.bus.queue.put((datetime.timedelta(microseconds=29000), 'raw', b'4|alive-97'))
        c.bus.queue.put((datetime.timedelta(microseconds=29200), 'raw', b'21\n'))
        c.request_stop()
        c.join()
        self.assertEqual(c.device_id, 4)
예제 #7
0
 def test_control_center(self):
     logger = MagicMock()
     bus = Bus(logger)
     logger.write = MagicMock(return_value=datetime.timedelta(seconds=97))
     c = LoRa(bus=bus.handle('lora'), config={'device_id': 1})
     app = bus.handle('app')
     app.register('cmd')
     tester = bus.handle('serial')
     tester.register('raw')
     bus.connect('app.cmd', 'lora.cmd')
     bus.connect('lora.raw', 'serial.raw')
     c.start()
     app.publish('cmd', [3, b'Pause'])
     c.request_stop()
     c.join()
     self.assertEqual(tester.listen()[2], b'alive\n')
     self.assertEqual(tester.listen()[2], b'3:Pause:97\n')
예제 #8
0
    def test_on_radio(self):
        # virtual world
        data = [b'A0F150L', b"['TYPE_RESCUE_RANDY', 15982, 104845, 3080]\n"]
        bus = MagicMock()
        dev = LoRa(bus=bus, config={'device_id': 1})
        bus.reset_mock()
        dev.on_radio(data)
        bus.publish.assert_called()

        data = [b'A0F150L', b'[11896, 7018, -11886]\n']
        bus.reset_mock()
        dev.on_radio(data)
        bus.publish.assert_not_called()