Add test for tsstats.log._parse_line

This commit is contained in:
Thor77 2017-09-15 11:35:21 +02:00
parent 1e1f112867
commit 871210dde4
1 changed files with 44 additions and 0 deletions

View File

@ -1,11 +1,14 @@
import pendulum import pendulum
import pytest import pytest
from tsstats import events
from tsstats.log import TimedLog, _bundle_logs, _parse_line, parse_logs from tsstats.log import TimedLog, _bundle_logs, _parse_line, parse_logs
from tsstats.template import render_servers from tsstats.template import render_servers
testlog_path = 'tsstats/tests/res/test.log' testlog_path = 'tsstats/tests/res/test.log'
static_timestamp = pendulum.Pendulum(2015, 5, 18, 15, 52, 52, 685612)
@pytest.fixture @pytest.fixture
def clients(): def clients():
@ -97,3 +100,44 @@ def test_parse_utf8(output):
def test_parse_invalid_line(): def test_parse_invalid_line():
assert _parse_line('INVALID') == [] assert _parse_line('INVALID') == []
@pytest.mark.parametrize('line,expected_events', [
(
"client connected 'Client1'(id:1) from 1.2.3.4:1234",
[
events.connect(static_timestamp, '1')
]
),
(
"client disconnected 'Client1'(id:1) reason 'reasonmsg=ByeBye!'",
[
events.disconnect(static_timestamp, '1')
]
),
(
"client disconnected 'Client1'(id:1) reason 'invokerid=1"
" invokername=Client2 invokeruid=UIDClient2 reasonmsg'",
[
events.disconnect(static_timestamp, '1'),
events.nick(None, 'UIDClient2', 'Client2'),
events.kick(None, 'UIDClient2', '1')
]
),
(
"client disconnected 'Client1'(id:1) reason 'invokerid=2 "
"invokername=Client2 invokeruid=UIDClient2 reasonmsg bantime=0'",
[
events.disconnect(static_timestamp, '1'),
events.nick(None, 'UIDClient2', 'Client2'),
events.ban(None, 'UIDClient2', '1')
]
)
])
def test_parse_line(line, expected_events):
line = '2015-05-18 15:52:52.685612|INFO |VirtualServerBase| 3| ' + line
expected_events.insert(0, events.nick(None, '1', 'Client1'))
expected_events = [
event._replace(timestamp=static_timestamp) for event in expected_events
]
assert _parse_line(line) == expected_events