Tests: preserving unit.log when run without restart.

Introducing "unit.log.Log" class for "unit.log" file management.
Moving "findall()" function into TestApplicationProto.
Using "os.kill()" to send signals.
This commit is contained in:
Max Romanov
2021-04-08 19:11:11 +03:00
parent 30922c5741
commit 74b1b1fc17
9 changed files with 94 additions and 96 deletions

View File

@@ -4,6 +4,7 @@ import time
from unit.control import TestControl
from unit.option import option
from unit.log import Log
class TestApplicationProto(TestControl):
@@ -15,18 +16,23 @@ class TestApplicationProto(TestControl):
def date_to_sec_epoch(self, date, template='%a, %d %b %Y %H:%M:%S %Z'):
return time.mktime(time.strptime(date, template))
def findall(self, pattern, name='unit.log'):
with Log.open(name) as f:
return re.findall(pattern, f.read())
def search_in_log(self, pattern, name='unit.log'):
with open(option.temp_dir + '/' + name, 'r', errors='ignore') as f:
with Log.open(name) as f:
return re.search(pattern, f.read())
def wait_for_record(self, pattern, name='unit.log', wait=150):
for i in range(wait):
found = self.search_in_log(pattern, name)
with Log.open(name) as f:
for i in range(wait):
found = re.search(pattern, f.read())
if found is not None:
break
if found is not None:
break
time.sleep(0.1)
time.sleep(0.1)
return found

23
test/unit/log.py Normal file
View File

@@ -0,0 +1,23 @@
UNIT_LOG = 'unit.log'
class Log:
temp_dir = None
pos = {}
def open(name=UNIT_LOG, encoding=None):
f = open(Log.get_path(name), 'r', encoding=encoding, errors='ignore')
f.seek(Log.pos.get(name, 0))
return f
def set_pos(pos, name=UNIT_LOG):
Log.pos[name] = pos
def swap(name):
pos = Log.pos.get(UNIT_LOG, 0)
Log.pos[UNIT_LOG] = Log.pos.get(name, 0)
Log.pos[name] = pos
def get_path(name=UNIT_LOG):
return Log.temp_dir + '/' + name