Tests: added tests for the log format.
Also added tests for the following variables: $request_line, $time_local, $bytes_sent, and $status.
This commit is contained in:
parent
69e690affe
commit
698680d894
1 changed files with 80 additions and 0 deletions
|
@ -15,6 +15,15 @@ class TestAccessLog(TestApplicationPython):
|
|||
'"' + option.temp_dir + '/access.log"', 'access_log'
|
||||
), 'access_log configure'
|
||||
|
||||
def set_format(self, format):
|
||||
assert 'success' in self.conf(
|
||||
{
|
||||
'path': option.temp_dir + '/access.log',
|
||||
'format': format,
|
||||
},
|
||||
'access_log',
|
||||
), 'access_log format'
|
||||
|
||||
def wait_for_record(self, pattern, name='access.log'):
|
||||
return super().wait_for_record(pattern, name)
|
||||
|
||||
|
@ -263,3 +272,74 @@ Connection: close
|
|||
self.wait_for_record(r'"GET / HTTP/1.1" 200 0 "-" "-"', 'new.log')
|
||||
is not None
|
||||
), 'change'
|
||||
|
||||
def test_access_log_format(self):
|
||||
self.load('empty')
|
||||
|
||||
def check_format(format, expect, url='/'):
|
||||
self.set_format(format)
|
||||
|
||||
assert self.get(url=url)['status'] == 200
|
||||
assert self.wait_for_record(expect) is not None, 'found'
|
||||
|
||||
format = 'BLAH\t0123456789'
|
||||
check_format(format, format)
|
||||
check_format('$uri $status $uri $status', '/ 200 / 200')
|
||||
|
||||
def test_access_log_variables(self):
|
||||
self.load('mirror')
|
||||
|
||||
# $time_local
|
||||
|
||||
self.set_format('$uri $time_local $uri')
|
||||
assert self.get(url='/time_local')['status'] == 200
|
||||
assert self.wait_for_record('/time_local') is not None, 'time log'
|
||||
date = self.search_in_log(
|
||||
r'^\/time_local (.*) \/time_local$', 'access.log'
|
||||
)[1]
|
||||
assert (
|
||||
abs(
|
||||
self.date_to_sec_epoch(date, '%d/%b/%Y:%X %z')
|
||||
- time.mktime(time.localtime())
|
||||
)
|
||||
< 5
|
||||
), '$time_local'
|
||||
|
||||
# $request_line
|
||||
|
||||
self.set_format('$request_line')
|
||||
assert self.get(url='/r_line')['status'] == 200
|
||||
assert self.wait_for_record(r'^GET \/r_line HTTP\/1\.1$') is not None
|
||||
|
||||
# $body_bytes_sent
|
||||
|
||||
self.set_format('$uri $body_bytes_sent')
|
||||
body = '0123456789' * 50
|
||||
self.post(
|
||||
url='/bbs',
|
||||
headers={
|
||||
'Host': 'localhost',
|
||||
'Connection': 'close',
|
||||
'Content-Type': 'text/html',
|
||||
},
|
||||
body=body,
|
||||
read_timeout=1,
|
||||
)
|
||||
assert (
|
||||
self.wait_for_record(r'^\/bbs ' + str(len(body)) + r'$') is not None
|
||||
), '$body_bytes_sent'
|
||||
|
||||
def test_access_log_incorrect(self, skip_alert):
|
||||
skip_alert(r'failed to apply new conf')
|
||||
|
||||
assert 'error' in self.conf(
|
||||
option.temp_dir + '/blah/access.log' 'access_log/path',
|
||||
), 'access_log path incorrect'
|
||||
|
||||
assert 'error' in self.conf(
|
||||
{
|
||||
'path': option.temp_dir + '/access.log',
|
||||
'format': '$remote_add',
|
||||
},
|
||||
'access_log',
|
||||
), 'access_log format incorrect'
|
||||
|
|
Loading…
Reference in a new issue