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:
@@ -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
23
test/unit/log.py
Normal 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
|
||||
Reference in New Issue
Block a user