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:08:54 +0100 |
commit | 1f0791109e1aed715f02945834d6d7fdb9a411b4 (patch) | |
tree | 027c0b6c76212952b0450174476c69ca511639de /scripts/pybootchartgui/pybootchartgui/tests/parser_test.py | |
parent | 66cc81d2a5f5c74e4a44e79521a791f402deeb26 (diff) | |
download | openembedded-core-contrib-1f0791109e1aed715f02945834d6d7fdb9a411b4.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]
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
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 @@ +import sys, os, re, struct, operator, math +from collections import defaultdict +import unittest + +sys.path.insert(0, os.getcwd()) + +import parsing + +debug = False + +def floatEq(f1, f2): + return math.fabs(f1-f2) < 0.00001 + +class TestBCParser(unittest.TestCase): + + def setUp(self): + self.name = "My first unittest" + self.rootdir = '../examples/1' + + def mk_fname(self,f): + return os.path.join(self.rootdir, f) + + def testParseHeader(self): + state = parsing.parse_file(parsing.ParserState(), self.mk_fname('header')) + self.assertEqual(6, len(state.headers)) + self.assertEqual(2, parsing.get_num_cpus(state.headers)) + + def test_parseTimedBlocks(self): + state = parsing.parse_file(parsing.ParserState(), self.mk_fname('proc_diskstats.log')) + self.assertEqual(141, len(state.disk_stats)) + + def testParseProcPsLog(self): + state = parsing.parse_file(parsing.ParserState(), self.mk_fname('proc_ps.log')) + samples = state.ps_stats + processes = samples.process_list + sorted_processes = sorted(processes, key=lambda p: p.pid ) + + for index, line in enumerate(open(self.mk_fname('extract2.proc_ps.log'))): + tokens = line.split(); + process = sorted_processes[index] + if debug: + print tokens[0:4] + print process.pid, process.cmd, process.ppid, len(process.samples) + print '-------------------' + + self.assertEqual(tokens[0], str(process.pid)) + self.assertEqual(tokens[1], str(process.cmd)) + self.assertEqual(tokens[2], str(process.ppid)) + self.assertEqual(tokens[3], str(len(process.samples))) + + + def testparseProcDiskStatLog(self): + state_with_headers = parsing.parse_file(parsing.ParserState(), self.mk_fname('header')) + state_with_headers.headers['system.cpu'] = 'xxx (2)' + samples = parsing.parse_file(state_with_headers, self.mk_fname('proc_diskstats.log')).disk_stats + self.assertEqual(141, len(samples)) + + for index, line in enumerate(open(self.mk_fname('extract.proc_diskstats.log'))): + tokens = line.split('\t') + sample = samples[index] + if debug: + print line.rstrip(), + print sample + print '-------------------' + + self.assertEqual(tokens[0], str(sample.time)) + self.assert_(floatEq(float(tokens[1]), sample.read)) + self.assert_(floatEq(float(tokens[2]), sample.write)) + self.assert_(floatEq(float(tokens[3]), sample.util)) + + def testparseProcStatLog(self): + samples = parsing.parse_file(parsing.ParserState(), self.mk_fname('proc_stat.log')).cpu_stats + self.assertEqual(141, len(samples)) + + for index, line in enumerate(open(self.mk_fname('extract.proc_stat.log'))): + tokens = line.split('\t') + sample = samples[index] + if debug: + print line.rstrip() + print sample + print '-------------------' + self.assert_(floatEq(float(tokens[0]), sample.time)) + self.assert_(floatEq(float(tokens[1]), sample.user)) + self.assert_(floatEq(float(tokens[2]), sample.sys)) + self.assert_(floatEq(float(tokens[3]), sample.io)) + + def testParseLogDir(self): + res = parsing.parse([self.rootdir], False) + self.assertEqual(4, len(res)) + +if __name__ == '__main__': + unittest.main() + |