diff options
author | Robert Yang <liezhi.yang@windriver.com> | 2012-06-06 13:52:43 +0800 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2012-06-15 15:12:42 +0100 |
commit | 3d78bc19c5b63541fd45dad7580ade55ba512764 (patch) | |
tree | f2d95055e6adfeb1a6b432aa83c28a5fc11f766f /scripts/pybootchartgui/pybootchartgui/tests/parser_test.py | |
parent | bc19f8bc9c7c52365d3e7cc26f43a08a62a8492b (diff) | |
download | poky-3d78bc19c5b63541fd45dad7580ade55ba512764.tar.gz |
pybootchartgui: add the original code
This is from:
http://pybootchartgui.googlecode.com/files/pybootchartgui-r124.tar.gz
Will modify it to make the build profiling in pictures.
Remove the examples since they would not work any more, and they cost
much disk space.
[YOCTO #2403]
(From OE-Core rev: 1f0791109e1aed715f02945834d6d7fdb9a411b4)
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts/pybootchartgui/pybootchartgui/tests/parser_test.py')
-rw-r--r-- | scripts/pybootchartgui/pybootchartgui/tests/parser_test.py | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/scripts/pybootchartgui/pybootchartgui/tests/parser_test.py b/scripts/pybootchartgui/pybootchartgui/tests/parser_test.py new file mode 100644 index 0000000000..574c2c7a2b --- /dev/null +++ b/scripts/pybootchartgui/pybootchartgui/tests/parser_test.py | |||
@@ -0,0 +1,93 @@ | |||
1 | import sys, os, re, struct, operator, math | ||
2 | from collections import defaultdict | ||
3 | import unittest | ||
4 | |||
5 | sys.path.insert(0, os.getcwd()) | ||
6 | |||
7 | import parsing | ||
8 | |||
9 | debug = False | ||
10 | |||
11 | def floatEq(f1, f2): | ||
12 | return math.fabs(f1-f2) < 0.00001 | ||
13 | |||
14 | class TestBCParser(unittest.TestCase): | ||
15 | |||
16 | def setUp(self): | ||
17 | self.name = "My first unittest" | ||
18 | self.rootdir = '../examples/1' | ||
19 | |||
20 | def mk_fname(self,f): | ||
21 | return os.path.join(self.rootdir, f) | ||
22 | |||
23 | def testParseHeader(self): | ||
24 | state = parsing.parse_file(parsing.ParserState(), self.mk_fname('header')) | ||
25 | self.assertEqual(6, len(state.headers)) | ||
26 | self.assertEqual(2, parsing.get_num_cpus(state.headers)) | ||
27 | |||
28 | def test_parseTimedBlocks(self): | ||
29 | state = parsing.parse_file(parsing.ParserState(), self.mk_fname('proc_diskstats.log')) | ||
30 | self.assertEqual(141, len(state.disk_stats)) | ||
31 | |||
32 | def testParseProcPsLog(self): | ||
33 | state = parsing.parse_file(parsing.ParserState(), self.mk_fname('proc_ps.log')) | ||
34 | samples = state.ps_stats | ||
35 | processes = samples.process_list | ||
36 | sorted_processes = sorted(processes, key=lambda p: p.pid ) | ||
37 | |||
38 | for index, line in enumerate(open(self.mk_fname('extract2.proc_ps.log'))): | ||
39 | tokens = line.split(); | ||
40 | process = sorted_processes[index] | ||
41 | if debug: | ||
42 | print tokens[0:4] | ||
43 | print process.pid, process.cmd, process.ppid, len(process.samples) | ||
44 | print '-------------------' | ||
45 | |||
46 | self.assertEqual(tokens[0], str(process.pid)) | ||
47 | self.assertEqual(tokens[1], str(process.cmd)) | ||
48 | self.assertEqual(tokens[2], str(process.ppid)) | ||
49 | self.assertEqual(tokens[3], str(len(process.samples))) | ||
50 | |||
51 | |||
52 | def testparseProcDiskStatLog(self): | ||
53 | state_with_headers = parsing.parse_file(parsing.ParserState(), self.mk_fname('header')) | ||
54 | state_with_headers.headers['system.cpu'] = 'xxx (2)' | ||
55 | samples = parsing.parse_file(state_with_headers, self.mk_fname('proc_diskstats.log')).disk_stats | ||
56 | self.assertEqual(141, len(samples)) | ||
57 | |||
58 | for index, line in enumerate(open(self.mk_fname('extract.proc_diskstats.log'))): | ||
59 | tokens = line.split('\t') | ||
60 | sample = samples[index] | ||
61 | if debug: | ||
62 | print line.rstrip(), | ||
63 | print sample | ||
64 | print '-------------------' | ||
65 | |||
66 | self.assertEqual(tokens[0], str(sample.time)) | ||
67 | self.assert_(floatEq(float(tokens[1]), sample.read)) | ||
68 | self.assert_(floatEq(float(tokens[2]), sample.write)) | ||
69 | self.assert_(floatEq(float(tokens[3]), sample.util)) | ||
70 | |||
71 | def testparseProcStatLog(self): | ||
72 | samples = parsing.parse_file(parsing.ParserState(), self.mk_fname('proc_stat.log')).cpu_stats | ||
73 | self.assertEqual(141, len(samples)) | ||
74 | |||
75 | for index, line in enumerate(open(self.mk_fname('extract.proc_stat.log'))): | ||
76 | tokens = line.split('\t') | ||
77 | sample = samples[index] | ||
78 | if debug: | ||
79 | print line.rstrip() | ||
80 | print sample | ||
81 | print '-------------------' | ||
82 | self.assert_(floatEq(float(tokens[0]), sample.time)) | ||
83 | self.assert_(floatEq(float(tokens[1]), sample.user)) | ||
84 | self.assert_(floatEq(float(tokens[2]), sample.sys)) | ||
85 | self.assert_(floatEq(float(tokens[3]), sample.io)) | ||
86 | |||
87 | def testParseLogDir(self): | ||
88 | res = parsing.parse([self.rootdir], False) | ||
89 | self.assertEqual(4, len(res)) | ||
90 | |||
91 | if __name__ == '__main__': | ||
92 | unittest.main() | ||
93 | |||