1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179
|
#!/usr/bin/env python2.7 -B
import logs
import ps
import datetime
import StringIO
def test_empty():
"""Test parsing no tag and no text, not well formed."""
expected = [ logs.LogLine(None, "03-29 00:46:58.872", "1000", "1815", "1816", "I", "",
"") ]
text = """[ 03-29 00:46:58.872 1000: 1815: 1816 I/ ]
"""
check_parsing(expected, text)
def test_none():
"""Test parsing no tag and no text."""
expected = [ logs.LogLine(None, "03-29 00:46:58.872", "1000", "1815", "1816", "I", "",
"") ]
text = """[ 03-29 00:46:58.872 1000: 1815: 1816 I/ ]
"""
check_parsing(expected, text)
def test_trailing_blank():
"""Test parsing text containing an extra intended newline at the end."""
expected = [ logs.LogLine(None, "03-29 00:46:58.872", "1000", "1815", "1816", "I", "abcd",
"Newline after\n") ]
text = """[ 03-29 00:46:58.872 1000: 1815: 1816 I/abcd ]
Newline after
"""
check_parsing(expected, text)
def test_blank_between():
"""Test parsing text containing a newline in the middle."""
expected = [ logs.LogLine(None, "03-29 00:46:58.872", "1000", "1815", "1816", "I", "abcd",
"Message\n\nNewline between") ]
text = """[ 03-29 00:46:58.872 1000: 1815: 1816 I/abcd ]
Message
Newline between
"""
check_parsing(expected, text)
def test_preceeding_blank():
"""Test parsing text containing a newline then text."""
expected = [ logs.LogLine(None, "03-29 00:46:58.872", "1000", "1815", "1816", "I", "abcd",
"\nNewline before") ]
text = """[ 03-29 00:46:58.872 1000: 1815: 1816 I/abcd ]
Newline before
"""
check_parsing(expected, text)
def test_one_blank():
"""Test parsing text one blank line."""
expected = [ logs.LogLine(None, "03-29 00:46:58.872", "1000", "1815", "1816", "I", "abcd",
"\n") ]
text = """[ 03-29 00:46:58.872 1000: 1815: 1816 I/abcd ]
"""
check_parsing(expected, text)
def test_two_blanks():
"""Test parsing text two blank lines."""
expected = [ logs.LogLine(None, "03-29 00:46:58.872", "1000", "1815", "1816", "I", "abcd",
"\n\n") ]
text = """[ 03-29 00:46:58.872 1000: 1815: 1816 I/abcd ]
"""
check_parsing(expected, text)
def test_two_lines_noblanks():
"""Test parsing two lines of text with no blank lines."""
expected = [ logs.LogLine(None, "03-29 00:46:58.872", "1000", "1815", "1816", "I", "abcd",
"One\nTwo") ]
text = """[ 03-29 00:46:58.872 1000: 1815: 1816 I/abcd ]
One
Two
"""
check_parsing(expected, text)
def test_chatty():
"""Test a log with chatty identical messages."""
expected = [
logs.LogLine("system", "03-29 00:46:58.857", "1000", "1815", "1816", "I", "Noisy", "Message"),
logs.LogLine("system", "03-29 00:46:58.858", "1000", "1815", "1816", "I", "Noisy", "Message"),
logs.LogLine("system", "03-29 00:46:58.858", "1000", "1815", "1816", "I", "Noisy", "Message"),
logs.LogLine("system", "03-29 00:46:58.858", "1000", "1815", "1816", "I", "Noisy", "Message"),
logs.LogLine("system", "03-29 00:46:58.859", "1000", "1815", "1816", "I", "Noisy", "Message"),
]
text = """--------- beginning of system
[ 03-29 00:46:58.857 1000: 1815: 1816 I/Noisy ]
Message
[ 03-29 00:46:58.858 1000: 1815: 1816 I/chatty ]
uid=1000(system) Thread-6 identical 3 lines
[ 03-29 00:46:58.859 1000: 1815: 1816 I/Noisy ]
Message
"""
check_parsing(expected, text)
def test_normal():
"""Test a realistic (albeit short) log."""
expected = [
logs.LogLine("system", "03-29 00:46:58.857", "1000", "1815", "1816", "I", "Package: ]Manager",
"/system/app/KeyChain changed; collecting certs"),
logs.LogLine("system", "03-29 00:46:58.872", "1000", "1815", "1816", "I", "PackageManager",
"/system/app/HiddenMenu changed; collecting certs"),
logs.LogLine("main", "03-29 00:46:58.872", "1000", "1815", "1816", "I", "PackageManager",
"/system/app/HiddenMenu changed; collecting certs"),
]
text = """--------- beginning of system
[ 03-29 00:46:58.857 1000: 1815: 1816 I/Package: ]Manager ]
/system/app/KeyChain changed; collecting certs
[ 03-29 00:46:58.872 1000: 1815: 1816 I/PackageManager ]
/system/app/HiddenMenu changed; collecting certs
--------- switch to main
[ 03-29 00:46:58.872 1000: 1815: 1816 I/PackageManager ]
/system/app/HiddenMenu changed; collecting certs
"""
check_parsing(expected, text)
def check_parsing(expected, text):
"""Parse the text and see if it parsed as expected."""
processes = ps.ProcessSet()
result = [x for x in logs.ParseLogcat(StringIO.StringIO(text), processes)]
if result != expected:
raise Exception("test failed.\nexpected:\n[%s]\nactual\n[%s]" % (
", ".join([str(r) for r in expected]),
", ".join([str(r) for r in result])))
def main():
test_empty()
test_none()
test_trailing_blank()
test_blank_between()
test_preceeding_blank()
test_one_blank()
test_two_blanks()
test_chatty()
test_normal()
if __name__ == "__main__":
main()
# vim: set ts=2 sw=2 sts=2 tw=100 nocindent autoindent smartindent expandtab:
|