You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
1.9 KiB
82 lines
1.9 KiB
5 years ago
|
import os
|
||
|
import errno
|
||
|
import shutil
|
||
|
import random
|
||
|
import tempfile
|
||
|
import unittest
|
||
|
|
||
|
import selfdrive.loggerd.uploader as uploader
|
||
|
|
||
|
def create_random_file(file_path, size_mb, lock=False):
|
||
|
try:
|
||
|
os.mkdir(os.path.dirname(file_path))
|
||
|
except OSError:
|
||
|
pass
|
||
|
|
||
|
lock_path = file_path + ".lock"
|
||
|
os.close(os.open(lock_path, os.O_CREAT | os.O_EXCL))
|
||
|
|
||
|
chunks = 128
|
||
|
chunk_bytes = int(size_mb * 1024 * 1024 / chunks)
|
||
|
data = os.urandom(chunk_bytes)
|
||
|
|
||
|
with open(file_path, 'wb') as f:
|
||
|
for _ in range(chunks):
|
||
|
f.write(data)
|
||
|
|
||
|
if not lock:
|
||
|
os.remove(lock_path)
|
||
|
|
||
|
class MockResponse():
|
||
|
def __init__(self, text):
|
||
|
self.text = text
|
||
|
|
||
|
class MockApi():
|
||
|
def __init__(self, dongle_id):
|
||
|
pass
|
||
|
|
||
|
def get(self, *args, **kwargs):
|
||
|
return MockResponse('{"url": "http://localhost/does/not/exist", "headers": {}}')
|
||
|
|
||
|
def get_token(self):
|
||
|
return "fake-token"
|
||
|
|
||
|
class MockParams():
|
||
|
def __init__(self):
|
||
|
self.params = {
|
||
|
"DongleId": b"0000000000000000",
|
||
|
"IsUploadRawEnabled": b"1",
|
||
|
}
|
||
|
|
||
|
def get(self, k):
|
||
|
return self.params[k]
|
||
|
|
||
|
class UploaderTestCase(unittest.TestCase):
|
||
|
f_type = "UNKNOWN"
|
||
|
|
||
|
def setUp(self):
|
||
|
self.root = tempfile.mkdtemp()
|
||
|
uploader.ROOT = self.root # Monkey patch root dir
|
||
|
uploader.Api = MockApi
|
||
|
uploader.Params = MockParams
|
||
|
uploader.fake_upload = 1
|
||
|
uploader.is_on_hotspot = lambda *args: False
|
||
|
uploader.is_on_wifi = lambda *args: True
|
||
|
self.seg_num = random.randint(1, 300)
|
||
|
self.seg_format = "2019-04-18--12-52-54--{}"
|
||
|
self.seg_format2 = "2019-05-18--11-22-33--{}"
|
||
|
self.seg_dir = self.seg_format.format(self.seg_num)
|
||
|
|
||
|
def tearDown(self):
|
||
|
try:
|
||
|
shutil.rmtree(self.root)
|
||
|
except OSError as e:
|
||
|
if e.errno != errno.ENOENT:
|
||
|
raise
|
||
|
|
||
|
def make_file_with_data(self, f_dir, fn, size_mb=.1, lock=False):
|
||
|
file_path = os.path.join(self.root, f_dir, fn)
|
||
|
create_random_file(file_path, size_mb, lock)
|
||
|
|
||
|
return file_path
|