3706170628f061fc0881cd466172a1fd0ea2cca8
[deliverable/lttng-analyses.git] / tests / test_io.py
1 from TraceTest import AnalysesTest
2 import sys
3
4
5 class IoTest(AnalysesTest):
6 def __init__(self, delete_trace=False, verbose=False):
7 super().__init__(delete_trace=delete_trace,
8 verbose=verbose)
9 self.test_list = [('iousagetop', self.run_iousagetop),
10 ('iolatencytop', self.run_iolatencytop)]
11
12 def write_trace(self):
13 # app (99) is known at statedump
14 self.t.write_lttng_statedump_process_state(1000, 0, 99, 99, 99, 99, 98,
15 98, "app", 0, 5, 0, 5, 0)
16 # app2 (100) unknown at statedump has testfile, FD 3 defined at
17 # statedump
18 self.t.write_lttng_statedump_file_descriptor(1001, 0, 100, 3, 0, 0,
19 "testfile")
20 # app write 10 bytes to FD 4
21 self.t.write_sched_switch(1002, 0, "swapper/0", 0, "app", 99)
22 self.t.write_syscall_write(1004, 0, 1, 4, 0xabcd, 10, 10)
23 # app2 reads 100 bytes in FD 3
24 self.t.write_sched_switch(1006, 0, "app", 99, "app2", 100)
25 self.t.write_syscall_read(1008, 0, 1, 3, 0xcafe, 100, 100)
26 # app3 and its FD 3 are completely unknown at statedump, tries to read 100
27 # bytes from FD 3 but only gets 42
28 self.t.write_sched_switch(1010, 0, "app2", 100, "app3", 101)
29 self.t.write_syscall_read(1012, 0, 1, 3, 0xcafe, 100, 42)
30 # block write
31 self.t.write_block_rq_issue(1015, 0, 264241152, 33, 10, 40, 99, 0, 0, "", "app")
32 self.t.write_block_rq_complete(1016, 0, 264241152, 33, 10, 0, 0, 0, "")
33 # block read
34 # FIXME: does not look right
35 self.t.write_block_rq_issue(1017, 0, 8388608, 33, 11, 90, 101, 1, 0, "", "app3")
36 self.t.write_block_rq_complete(1018, 0, 8388608, 33, 11, 0, 1, 0, "")
37 # net xmit
38 # FIXME: does not look right
39 self.t.write_net_dev_xmit(1020, 2, 0xff, 32, 0, "wlan0")
40 # net receive
41 self.t.write_netif_receive_skb(1021, 1, 0xff, 100, "wlan1")
42 self.t.write_netif_receive_skb(1022, 1, 0xff, 200, "wlan0")
43 # syscall open
44 self.t.write_syscall_open(1023, 0, 1, "test/open/file", 0, 0, 42)
45 self.t.flush()
46
47 def run_iousagetop(self):
48 expected = """Timerange: [1969-12-31 19:00:01.000000000, 1969-12-31 19:00:01.022000000]
49 Per-process I/O Read
50 ###############################################################################
51 ██████████████████████████████████████████████████ 100.00 B (100) 0 B file 0 B net 100.00 B unknown
52 █████████████████████ 42.00 B app3 (unknown (tid=101)) 0 B file 0 B net 42.00 B unknown
53 0 B app (99) 0 B file 0 B net 0 B unknown
54 Per-process I/O Write
55 ###############################################################################
56 ██████████████████████████████████████████████████ 10.00 B app (99) 0 B file 0 B net 10.00 B unknown
57 0 B (100) 0 B file 0 B net 0 B unknown
58 0 B app3 (unknown (tid=101)) 0 B file 0 B net 0 B unknown
59 Files read
60 ###############################################################################
61 ██████████████████████████████████████████████████ 100.00 B testfile fd 3 in (100)
62 █████████████████████ 42.00 B unknown(app3) fd 3 in app3 (101)
63 Files write
64 ###############################################################################
65 ██████████████████████████████████████████████████ 10.00 B unknown(app) fd 4 in app (99)
66 Block I/O Read
67 ###############################################################################
68 ██████████████████████████████████████████████████ 5.00 KB app (pid=99)
69 Block I/O Write
70 ###############################################################################
71 ██████████████████████████████████████████████████ 5.00 KB app (pid=99)
72 Disk requests sector count
73 ###############################################################################
74 ██████████████████████████████████████████████████████████████████ 11.00 sectors (8,0)
75 ████████████████████████████████████████████████████████████ 10.00 sectors (252,0)
76 Disk request count
77 ###############################################################################
78 ███████████████████████████████████████████████████████████████████ 1.00 requests (252,0)
79 ███████████████████████████████████████████████████████████████████ 1.00 requests (8,0)
80 Disk request average latency
81 ###############################################################################
82 █████████████████████████████████████████████████████████████████ 1.00 ms (252,0)
83 █████████████████████████████████████████████████████████████████ 1.00 ms (8,0)
84 Network received bytes
85 ###############################################################################
86 ██████████████████████████████████████████████████████████ 200.00 B wlan0
87 █████████████████████████████ 100.00 B wlan1
88 Network sent bytes
89 ###############################################################################
90 0 B wlan0
91 0 B wlan1"""
92
93 return self.compare_output('%slttng-iousagetop %s "%s"' % (
94 self.cmd_root, self.common_options, self.t.trace_root),
95 expected)
96
97 def run_iolatencytop(self):
98 expected = """Timerange: [1969-12-31 19:00:01.000000000, 1969-12-31 19:00:01.022000000]
99
100 Top system call latencies read (usec)
101 Begin End Name Duration (usec) Size Proc PID Filename
102 [19:00:01.008000000,19:00:01.009000000] read 1000.000 100.00 B 100 testfile (fd=3)
103 [19:00:01.008000000,19:00:01.009000000] read 1000.000 100.00 B 100 testfile (fd=3)
104 [19:00:01.012000000,19:00:01.013000000] read 1000.000 42.00 B app3 101 unknown (fd=3)
105 [19:00:01.012000000,19:00:01.013000000] read 1000.000 42.00 B app3 101 unknown (fd=3)
106
107 Top system call latencies write (usec)
108 Begin End Name Duration (usec) Size Proc PID Filename
109 [19:00:01.004000000,19:00:01.005000000] write 1000.000 10.00 B app 99 unknown (fd=4)
110 [19:00:01.004000000,19:00:01.005000000] write 1000.000 10.00 B app 99 unknown (fd=4)"""
111
112 return self.compare_output('%slttng-iolatencytop %s "%s"' % (
113 self.cmd_root, self.common_options,
114 self.t.get_trace_root()), expected)
115
116
117 def test_answer():
118 t = IoTest(verbose=True)
119 ok = t.run()
120 assert(ok)
121
122 test_answer()
This page took 0.035759 seconds and 4 git commands to generate.