示例#1
0
    async def test_getVehicle(self):
        """Test getting a vehicle from the manager"""
        self.manager = vehicleManager.VehicleManager(self.loop)
        self.manager.onPacketBufTxAttach(self.pktbuffertxcallback)
        await self.manager.add_vehicle("VehA", 255, 0, 4, 0, self.dialect,
                                       self.version,
                                       'tcpclient:127.0.0.1:15001')
        await self.manager.add_vehicle("VehB", 255, 0, 5, 0, self.dialect,
                                       self.version,
                                       'tcpclient:127.0.0.1:15021')

        with self.assertRaises(Exception) as context:
            self.manager.get_vehicle("VehX")

        assert 'No vehicle with that name' in str(context.exception)
        assert self.manager.get_vehicle("VehA") is not None
        assert self.manager.get_vehicle("VehA").name == "VehA"
示例#2
0
    async def test_packetRx(self):
        """Packet passing from connection manager -> vehiclemanager"""
        self.manager = vehicleManager.VehicleManager(self.loop)
        await self.manager.add_vehicle("VehA", 255, 0, 4, 0, self.dialect,
                                       self.version,
                                       'tcpclient:127.0.0.1:15001')
        await self.manager.add_vehicle("VehB", 255, 0, 5, 0, self.dialect,
                                       self.version,
                                       'tcpclient:127.0.0.1:15021')

        pkt = self.mod.MAVLink_heartbeat_message(5, 4, 0, 0, 0,
                                                 int(self.version))
        self.manager.onPacketRecieved("VehA", pkt, 'tcpclient:127.0.0.1:15001')

        assert len(self.manager.get_vehicle("VehA").latestPacketDict) == 1
        assert self.manager.get_vehicle("VehA").latestPacketDict[0] == pkt

        assert len(self.manager.get_vehicle("VehB").latestPacketDict) == 0
示例#3
0
    async def test_addlinkerror(self):
        """add a link to a vehicle that does not exist"""
        self.manager = vehicleManager.VehicleManager(self.loop)
        # Add callbacks
        await self.manager.onLinkAddAttach(self.linkaddcallback)
        self.manager.onAddVehicleAttach(self.vehicleaddcallback)

        await self.manager.add_vehicle("VehA", 255, 0, 4, 0, self.dialect,
                                       self.version,
                                       'tcpclient:127.0.0.1:15001')
        self.callbacks = {}

        with self.assertRaises(Exception) as context:
            await self.manager.add_extraLink("VehX",
                                             'tcpclient:127.0.0.1:15021')

        assert 'No vehicle with that name' in str(context.exception)
        assert self.callbacks == {}
示例#4
0
    async def test_addremovevehicle(self):
        """Add and remove vehicles, plus callbacks"""
        self.manager = vehicleManager.VehicleManager(self.loop)
        # Add callbacks
        await self.manager.onLinkAddAttach(self.linkaddcallback)
        await self.manager.onLinkRemoveAttach(self.linkremovecallback)
        self.manager.onAddVehicleAttach(self.vehicleaddcallback)
        self.manager.onRemoveVehicleAttach(self.vehicleremovecallback)

        await self.manager.add_vehicle("VehA", 255, 0, 4, 0, self.dialect,
                                       self.version,
                                       'tcpclient:127.0.0.1:15001')

        await asyncio.sleep(0.20)

        assert self.callbacks['linkadd'] == ("VehA", 4,
                                             'tcpclient:127.0.0.1:15001')
        assert self.callbacks['vehicleadd'] == ("VehA")

        await self.manager.add_vehicle("VehB", 254, 0, 3, 0, self.dialect,
                                       self.version,
                                       'tcpserver:127.0.0.1:15020')

        await asyncio.sleep(0.20)

        assert self.callbacks['linkadd'] == ("VehB", 3,
                                             'tcpserver:127.0.0.1:15020')
        assert self.callbacks['vehicleadd'] == ("VehB")

        assert len(self.manager.get_vehiclelist()) == 2

        await self.manager.remove_vehicle("VehB")
        await asyncio.sleep(0.20)

        assert self.callbacks['linkremove'] == ("VehB")
        assert self.callbacks['vehicleremove'] == ("VehB")
        assert self.manager.get_vehiclelist() == ["VehA"]

        await self.manager.remove_vehicle("VehA")
        await asyncio.sleep(0.20)

        assert len(self.manager.get_vehiclelist()) == 0
        assert self.callbacks['linkremove'] == ("VehA")
        assert self.callbacks['vehicleremove'] == ("VehA")
示例#5
0
    async def test_addvehiclemultilink(self):
        """Add multiple links for a vehicle, plus callbacks"""
        self.manager = vehicleManager.VehicleManager(self.loop)
        # Add callbacks
        await self.manager.onLinkAddAttach(self.linkaddcallback)
        self.manager.onAddVehicleAttach(self.vehicleaddcallback)

        await self.manager.add_vehicle("VehA", 255, 0, 4, 0, self.dialect,
                                       self.version,
                                       'tcpclient:127.0.0.1:15001')
        await asyncio.sleep(0.5)
        assert self.callbacks['linkadd'] == ("VehA", 4,
                                             'tcpclient:127.0.0.1:15001')
        assert self.callbacks['vehicleadd'] == ("VehA")
        self.callbacks = {}

        await self.manager.add_extraLink("VehA", 'tcpserver:127.0.0.1:15021')
        assert self.callbacks['linkadd'] == ("VehA", 4,
                                             'tcpserver:127.0.0.1:15021')
        assert 'vehicleadd' not in self.callbacks
示例#6
0
    async def test_packetTx(self):
        """Packet passing from vehicle to connectionManager"""
        self.manager = vehicleManager.VehicleManager(self.loop)
        self.manager.onPacketBufTxAttach(self.pktbuffertxcallback)
        await self.manager.add_vehicle("VehA", 255, 0, 4, 0, self.dialect,
                                       self.version,
                                       'tcpclient:127.0.0.1:15001')
        await self.manager.add_vehicle("VehB", 255, 0, 5, 0, self.dialect,
                                       self.version,
                                       'tcpclient:127.0.0.1:15021')

        # Send a packet from GCS to Veh
        self.manager.get_vehicle("VehA").sendPacket(
            self.mod.MAVLINK_MSG_ID_HEARTBEAT,
            type=self.mod.MAV_TYPE_GCS,
            autopilot=self.mod.MAV_AUTOPILOT_INVALID,
            base_mode=0,
            custom_mode=0,
            system_status=0,
            mavlink_version=int(self.version))

        assert self.callbacks['pktbuffertx'][0] == "VehA"
        assert self.callbacks['pktbuffertx'][1] is not None
示例#7
0
    def test_manager(self):
        """Check initialisation"""
        self.manager = vehicleManager.VehicleManager(self.loop)

        assert len(self.manager.veh_list) == 0