From 539601a0c1494218d57559a058d2fd7df6ab69c2 Mon Sep 17 00:00:00 2001 From: Eugene Crosser Date: Wed, 22 Jun 2022 17:55:43 +0200 Subject: [PATCH] test: opencellid downloader --- test/common.py | 16 +++++++++++++++- test/test_ocid_dload.py | 27 +++++++++++++++++++++++++++ test/test_storage.py | 3 +-- 3 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 test/test_ocid_dload.py diff --git a/test/common.py b/test/common.py index 434fef9..b9f768c 100644 --- a/test/common.py +++ b/test/common.py @@ -2,6 +2,7 @@ from configparser import ConfigParser, SectionProxy from contextlib import closing, ExitStack +from http.server import HTTPServer, SimpleHTTPRequestHandler from importlib import import_module from multiprocessing import Process from os import kill, unlink @@ -15,6 +16,7 @@ from socket import ( socket, SocketType, ) +from sys import exit from tempfile import mkstemp from time import sleep from typing import Optional @@ -44,6 +46,7 @@ class TestWithServers(TestCase): } self.conf["opencellid"] = { "dbfn": self.tmpfilebase + ".opencellid.sqlite", + "downloadurl": f"http://localhost:{freeports[2]}/test/262.csv.gz", } self.conf["lookaside"] = { "backend": "opencellid", @@ -62,7 +65,18 @@ class TestWithServers(TestCase): p.start() self.children.append((srvname, p)) if httpd: - pass + server = HTTPServer(("", freeports[2]), SimpleHTTPRequestHandler) + + def run(server): + try: + server.serve_forever() + except KeyboardInterrupt: + # TODO: this still leaves unclosed socket in the server + server.shutdown() + + p = Process(target=run, args=(server,)) + p.start() + self.children.append(("httpd", p)) sleep(1) def tearDown(self) -> None: diff --git a/test/test_ocid_dload.py b/test/test_ocid_dload.py new file mode 100644 index 0000000..0089ce0 --- /dev/null +++ b/test/test_ocid_dload.py @@ -0,0 +1,27 @@ +""" Send junk to the collector """ + +from sqlite3 import connect +from time import sleep +from typing import Any +import unittest +from .common import send_and_drain, TestWithServers +from gps303 import ocid_dload + + +class Ocid_Dload(TestWithServers): + def setUp(self, *args: str, **kwargs: Any) -> None: + super().setUp(httpd=True) + + def tearDown(self) -> None: + sleep(1) # give collector some time + super().tearDown() + + def test_ocid_dload(self) -> None: + ocid_dload.main(self.conf) + with connect(self.conf.get("opencellid", "dbfn")) as db: + (count,) = db.execute("select count(*) from cells").fetchone() + self.assertEqual(count, 163) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_storage.py b/test/test_storage.py index 80ccba6..98366aa 100644 --- a/test/test_storage.py +++ b/test/test_storage.py @@ -2,7 +2,7 @@ from random import Random from socket import getaddrinfo, socket, AF_INET, SOCK_STREAM -from sqlite3 import connect, Row +from sqlite3 import connect from time import sleep from typing import Any import unittest @@ -38,7 +38,6 @@ class Storage(TestWithServers): sleep(1) got = set() with connect(self.conf.get("storage", "dbfn")) as db: - db.row_factory = Row for is_incoming, packet in db.execute( "select is_incoming, packet from events" ): -- 2.39.2