|
|
@ -1,12 +1,11 @@ |
|
|
|
#!/usr/bin/env python3 |
|
|
|
#!/usr/bin/env python3 |
|
|
|
from functools import wraps |
|
|
|
from functools import partial |
|
|
|
import http.server |
|
|
|
import http.server |
|
|
|
import os |
|
|
|
import os |
|
|
|
import threading |
|
|
|
|
|
|
|
import time |
|
|
|
|
|
|
|
import unittest |
|
|
|
import unittest |
|
|
|
|
|
|
|
|
|
|
|
from parameterized import parameterized |
|
|
|
from parameterized import parameterized |
|
|
|
|
|
|
|
from openpilot.selfdrive.athena.tests.helpers import with_http_server |
|
|
|
|
|
|
|
|
|
|
|
from openpilot.tools.lib.url_file import URLFile |
|
|
|
from openpilot.tools.lib.url_file import URLFile |
|
|
|
|
|
|
|
|
|
|
@ -30,27 +29,7 @@ class CachingTestRequestHandler(http.server.BaseHTTPRequestHandler): |
|
|
|
self.end_headers() |
|
|
|
self.end_headers() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class CachingTestServer(threading.Thread): |
|
|
|
with_caching_server = partial(with_http_server, handler=CachingTestRequestHandler) |
|
|
|
def run(self): |
|
|
|
|
|
|
|
self.server = http.server.HTTPServer(("127.0.0.1", 0), CachingTestRequestHandler) |
|
|
|
|
|
|
|
self.port = self.server.server_port |
|
|
|
|
|
|
|
self.server.serve_forever() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def stop(self): |
|
|
|
|
|
|
|
self.server.server_close() |
|
|
|
|
|
|
|
self.server.shutdown() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def with_caching_server(func): |
|
|
|
|
|
|
|
@wraps(func) |
|
|
|
|
|
|
|
def wrapper(*args, **kwargs): |
|
|
|
|
|
|
|
server = CachingTestServer() |
|
|
|
|
|
|
|
server.start() |
|
|
|
|
|
|
|
time.sleep(0.25) # wait for server to get it's port |
|
|
|
|
|
|
|
try: |
|
|
|
|
|
|
|
func(*args, **kwargs, port=server.port) |
|
|
|
|
|
|
|
finally: |
|
|
|
|
|
|
|
server.stop() |
|
|
|
|
|
|
|
return wrapper |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class TestFileDownload(unittest.TestCase): |
|
|
|
class TestFileDownload(unittest.TestCase): |
|
|
@ -110,10 +89,10 @@ class TestFileDownload(unittest.TestCase): |
|
|
|
|
|
|
|
|
|
|
|
@parameterized.expand([(True, ), (False, )]) |
|
|
|
@parameterized.expand([(True, ), (False, )]) |
|
|
|
@with_caching_server |
|
|
|
@with_caching_server |
|
|
|
def test_recover_from_missing_file(self, cache_enabled, port): |
|
|
|
def test_recover_from_missing_file(self, cache_enabled, host): |
|
|
|
os.environ["FILEREADER_CACHE"] = "1" if cache_enabled else "0" |
|
|
|
os.environ["FILEREADER_CACHE"] = "1" if cache_enabled else "0" |
|
|
|
|
|
|
|
|
|
|
|
file_url = f"http://localhost:{port}/test.png" |
|
|
|
file_url = f"{host}/test.png" |
|
|
|
|
|
|
|
|
|
|
|
CachingTestRequestHandler.FILE_EXISTS = False |
|
|
|
CachingTestRequestHandler.FILE_EXISTS = False |
|
|
|
length = URLFile(file_url).get_length() |
|
|
|
length = URLFile(file_url).get_length() |
|
|
|