示例#1
0
def _get_address_mapping(args):
    if args.min is not None:
        services_to_mock = [
            'deviceState',
            'can',
            'pandaState',
            'sensorEvents',
            'gpsNMEA',
            'roadCameraState',
            'roadEncodeIdx',
            'modelV2',
            'liveLocation',
        ]
    elif args.enabled is not None:
        services_to_mock = args.enabled
    else:
        services_to_mock = service_list.keys()

    address_mapping = {
        service_name: service_name
        for service_name in services_to_mock
    }
    address_mapping.update(dict(args.address_mapping))

    for k in args.disabled:
        address_mapping.pop(k, None)

    non_services = set(address_mapping) - set(service_list)
    if non_services:
        print("WARNING: Unknown services {}".format(list(non_services)))

    return address_mapping
示例#2
0
class TestServices(unittest.TestCase):
    @parameterized.expand(service_list.keys())
    def test_services(self, s):
        service = service_list[s]
        self.assertTrue(service.port > 8000)
        self.assertTrue(service.frequency <= 100)

    def test_no_duplicate_port(self):
        ports = {}
        for name, service in service_list.items():
            self.assertFalse(service.port in ports.keys(),
                             f"duplicate port {service.port}")
            ports[service.port] = name

    def test_generated_header(self):
        with tempfile.NamedTemporaryFile(suffix=".h") as f:
            ret = os.system(
                f"python3 {services.__file__} > {f.name} && clang++ {f.name}")
            self.assertEqual(ret, 0,
                             "generated services header is not valid C")
示例#3
0
import os
import capnp
import multiprocessing
import numbers
import random
import threading
import time
import unittest
from parameterized import parameterized

from cereal import log, car
import cereal.messaging as messaging
from cereal.services import service_list

events = [
    evt for evt in log.Event.schema.union_fields if evt in service_list.keys()
]


def random_sock():
    return random.choice(events)


def random_socks(num_socks=10):
    return list(set([random_sock() for _ in range(num_socks)]))


def random_bytes(length=1000):
    return bytes([random.randrange(0xFF) for _ in range(length)])