X-Git-Url: http://average.org/gitweb/?a=blobdiff_plain;f=test%2Ftest_storage.py;h=7101c1aae422ffa0225f40e40d907933d56ff170;hb=5d269ed1a4e097d1c52ee7d7dd784d81dbd3757a;hp=0c5e260e9243a90265a814e0a08c9a542571c175;hpb=7ff26a2079e56969c65937b1bae7f6d908aa0664;p=loctrkd.git diff --git a/test/test_storage.py b/test/test_storage.py index 0c5e260..7101c1a 100644 --- a/test/test_storage.py +++ b/test/test_storage.py @@ -2,10 +2,11 @@ from random import Random from socket import getaddrinfo, socket, AF_INET6, SOCK_STREAM -from sqlite3 import connect +from sqlite3 import connect, Row from time import sleep import unittest from .common import send_and_drain, TestWithServers +from gps303.gps303proto import * class Storage(TestWithServers): @@ -23,19 +24,29 @@ class Storage(TestWithServers): def tearDown(self) -> None: sleep(1) # give collector some time - send_and_drain(self.sock, None) - self.sock.close() super().tearDown() def test_storage(self) -> None: - buf = b"xx\r\x01\x03Y3\x90w\x19q\x85\x05\r\n" - send_and_drain(self.sock, buf) - # TODO: make a proper sequence + for buf in ( + LOGIN.In(imei="9999123456780000", ver=9).packed, + STATUS.In().packed, + HIBERNATION.In().packed, + ): + send_and_drain(self.sock, b"xx" + buf + b"\r\n") + self.sock.close() + sleep(1) + got = set() with connect(self.conf.get("storage", "dbfn")) as db: - c = db.cursor() - c.execute("select * from events") - events = [dict(row) for row in c] - print(events) + db.row_factory = Row + for is_incoming, packet in db.execute( + "select is_incoming, packet from events" + ): + msg = parse_message(packet, is_incoming=is_incoming) + # print(msg) + got.add(type(msg)) + self.assertEqual( + got, {LOGIN.Out, HIBERNATION.In, LOGIN.In, STATUS.Out, STATUS.In} + ) if __name__ == "__main__":