CAN fingerprinting test (#29427)
* timing test
* test
* fix
* print
* loop
* clean up
* wider range
* Update selfdrive/car/tests/test_models.py
* Apply suggestions from code review
* run many times
* Update selfdrive/car/tests/test_models.py
* run for many its
* run with unittest and print as list
* Update .github/workflows/selfdrive_tests.yaml
* Update .github/workflows/selfdrive_tests.yaml
* total time is super inconsistent (body)
* Update selfdrive/car/tests/test_models.py
* clean up
* clean up
* clean up
* this works!
* draft
* test suite not as modular
* try something like this
* can do kb, but not too representative
* clean up
* remove kb? it depends on signals
* clean up
* more clean up
* rename
* just measure all CANParsers
* can do all this manually
* but this is way simpler
* comment
* stash
* draft
* draft
* remove old script
* clean up
* revert
* use it
* remove test
* opt
* no partial
* remove
* revert test_models
* test can fingerprinting
* so much simpler!
* fix dict resizing
* simplify
* need to do this
* fix
* move to new file
* rename
* comment
* ignore function-uses-loop-variable
old-commit-hash: fd8f8d8785
beeps
parent
52bc87c4f2
commit
c817cb942d
2 changed files with 30 additions and 3 deletions
@ -0,0 +1,27 @@ |
|||||||
|
#!/usr/bin/env python3 |
||||||
|
from parameterized import parameterized |
||||||
|
import unittest |
||||||
|
|
||||||
|
from cereal import log, messaging |
||||||
|
from selfdrive.car.car_helpers import can_fingerprint |
||||||
|
from selfdrive.car.fingerprints import _FINGERPRINTS as FINGERPRINTS |
||||||
|
|
||||||
|
|
||||||
|
class TestCanFingerprint(unittest.TestCase): |
||||||
|
@parameterized.expand([(c, f) for c, f in FINGERPRINTS.items()]) |
||||||
|
def test_can_fingerprint(self, car_model, fingerprints): |
||||||
|
# Tests online fingerprinting function on offline fingerprints |
||||||
|
for fingerprint in fingerprints: # can have multiple fingerprints for each platform |
||||||
|
can = messaging.new_message('can', 1) |
||||||
|
can.can = [log.CanData(address=address, dat=b'\x00' * length) |
||||||
|
for address, length in fingerprint.items()] |
||||||
|
|
||||||
|
fingerprint_iter = iter([can]) |
||||||
|
empty_can = messaging.new_message('can', 0) |
||||||
|
car_fingerprint, finger = can_fingerprint(lambda: next(fingerprint_iter, empty_can)) # noqa: B023 |
||||||
|
|
||||||
|
self.assertEqual(car_fingerprint, car_model) |
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__": |
||||||
|
unittest.main() |
Loading…
Reference in new issue