summaryrefslogtreecommitdiffstats
path: root/meta/lib/oeqa/runtime
diff options
context:
space:
mode:
authorHongzhi.Song <hongzhi.song@windriver.com>2018-06-29 02:16:20 -0400
committerRichard Purdie <richard.purdie@linuxfoundation.org>2018-07-02 21:37:47 +0100
commitec2bb229653461f981c8c5bd0f714870a0e42d74 (patch)
tree708c986a8cb12f50cf0e334f9b02fd2c024c525f /meta/lib/oeqa/runtime
parent28a1f5cd95cfd6888db969485a6164ae98ef7aa0 (diff)
downloadpoky-ec2bb229653461f981c8c5bd0f714870a0e42d74.tar.gz
oeqa/runtime: Add testcases for kernel sample
We are going to let runtime test support kernel tests. Now we just add kernel self-contained sample tests. And we plan to add overall kernel tests in the future. This patch is just add kernel samples test which contains about 13 tests enabled by kernel-sample.scc. So it needs statement, KERNEL_FEATURES_append += " features/kernel-sample/kernel-sample.scc" in local.conf. (From OE-Core rev: be6ef728fd36049ea3822a54909a995bdecf6dd0) Signed-off-by: Hongzhi.Song <hongzhi.song@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/lib/oeqa/runtime')
-rw-r--r--meta/lib/oeqa/runtime/cases/ksample.py206
1 files changed, 206 insertions, 0 deletions
diff --git a/meta/lib/oeqa/runtime/cases/ksample.py b/meta/lib/oeqa/runtime/cases/ksample.py
new file mode 100644
index 0000000000..260bc3cfbd
--- /dev/null
+++ b/meta/lib/oeqa/runtime/cases/ksample.py
@@ -0,0 +1,206 @@
1import os
2import time
3
4from oeqa.runtime.case import OERuntimeTestCase
5from oeqa.core.decorator.depends import OETestDepends
6from oeqa.core.decorator.oeid import OETestID
7from oeqa.core.decorator.data import skipIfNotFeature
8
9# need some kernel fragments
10# echo "KERNEL_FEATURES_append += \" features\/kernel\-sample\/kernel\-sample.scc\"" >> local.conf
11class KSample(OERuntimeTestCase):
12 def cmd_and_check(self, cmd='', match_string=''):
13 status, output = self.target.run(cmd)
14 if not match_string:
15 # send cmd
16 msg = '%s failed, %s' % (cmd, output)
17 self.assertEqual(status, 0, msg=msg)
18 else:
19 # check result
20 result = ("%s" % match_string) in output
21 self.assertTrue(result)
22 self.assertEqual(status, 0, cmd)
23
24 def check_config(self, config_opt=''):
25 cmd = "zcat /proc/config.gz | grep %s" % config_opt
26 status, output = self.target.run(cmd)
27 result = ("%s=y" % config_opt) in output
28 if not result:
29 self.skipTest("%s is not set" % config_opt)
30
31 def check_module_exist(self, path='', module_name=''):
32 status, output = self.target.run("uname -r")
33 cmd = "ls " + "/lib/modules/" + output + "/kernel/samples/" + path + module_name
34 status, output = self.target.run(cmd)
35 if status != 0:
36 error_info = module_name + "doesn't exist"
37 self.skipTest(error_info)
38
39 def kfifo_func(self, name=''):
40 module_prename = name + "-example"
41 module_name = name + "-example.ko"
42 sysmbol_name = name + "_example"
43
44 # make sure if module exists
45 self.check_module_exist("kfifo/", module_name)
46 # modprobe
47 self.cmd_and_check("modprobe %s" % module_prename)
48 # lsmod
49 self.cmd_and_check("lsmod | grep %s | cut -d\' \' -f1" % sysmbol_name, sysmbol_name)
50 # check result
51 self.cmd_and_check("dmesg | grep \"test passed\" ", "test passed")
52 # rmmod
53 self.cmd_and_check("rmmod %s" % module_prename)
54
55 def kprobe_func(self, name=''):
56 # check config
57 self.check_config("CONFIG_KPROBES")
58
59 module_prename = name + "_example"
60 module_name = name + "_example.ko"
61 sysmbol_name = module_prename
62
63 # make sure if module exists
64 self.check_module_exist("kprobes/", module_name)
65 # modprobe
66 self.cmd_and_check("modprobe %s" % module_prename)
67 # lsmod
68 self.cmd_and_check("lsmod | grep %s | cut -d\' \' -f1" % sysmbol_name, sysmbol_name)
69 # check result
70 self.cmd_and_check("dmesg | grep Planted | head -n10", "Planted")
71 # rmmod
72 self.cmd_and_check("rmmod %s" % module_prename)
73
74 def kobject_func(self, name=''):
75 module_prename = name + "_example"
76 module_name = name + "-example.ko"
77 sysmbol_name = module_prename
78
79 # make sure if module exists
80 self.check_module_exist("kobject/", module_name)
81 # modprobe
82 self.cmd_and_check("modprobe %s" % module_prename)
83 # lsmod
84 self.cmd_and_check("lsmod | grep %s | cut -d\' \' -f1" % sysmbol_name, sysmbol_name)
85 # check result
86 self.cmd_and_check("ls /sys/kernel/%s/" % sysmbol_name, "bar")
87 # rmmod
88 self.cmd_and_check("rmmod %s" % module_prename)
89
90class KSampleTest(KSample):
91 # kfifo
92 @OETestDepends(['ssh.SSHTest.test_ssh'])
93 def test_kfifo_test(self):
94 index = ["dma", "bytestream", "inttype", "record"]
95 for i in index:
96 self.kfifo_func(i)
97
98 # kprobe
99 @OETestDepends(['ssh.SSHTest.test_ssh'])
100 def test_kprobe_test(self):
101 index = ["kprobe", "kretprobe"]
102 for i in index:
103 self.kprobe_func(i)
104
105 # kobject
106 @OETestDepends(['ssh.SSHTest.test_ssh'])
107 def test_kobject_test(self):
108 index = ["kobject", "kset"]
109 for i in index:
110 self.kobject_func(i)
111
112 #trace
113 @OETestDepends(['ssh.SSHTest.test_ssh'])
114 def test_trace_events(self):
115 # check config
116 self.check_config("CONFIG_TRACING_SUPPORT")
117 # make sure if module exists
118 self.check_module_exist("trace_events/", "trace-events-sample.ko")
119 # modprobe
120 self.cmd_and_check("modprobe trace-events-sample")
121 # lsmod
122 self.cmd_and_check("lsmod | grep trace_events_sample | cut -d\' \' -f1", "trace_events_sample")
123 # check dir
124 self.cmd_and_check("ls /sys/kernel/debug/tracing/events/ | grep sample-trace", "sample-trace")
125 # enable trace
126 self.cmd_and_check("echo 1 > /sys/kernel/debug/tracing/events/sample-trace/enable")
127 self.cmd_and_check("cat /sys/kernel/debug/tracing/events/sample-trace/enable")
128 # check result
129 self.cmd_and_check("cat /sys/kernel/debug/tracing/trace | grep hello | head -n1 | cut -d\':\' -f2", " foo_bar")
130 # disable trace
131 self.cmd_and_check("echo 0 > /sys/kernel/debug/tracing/events/sample-trace/enable")
132 # clean up trace
133 self.cmd_and_check("echo > /sys/kernel/debug/tracing/trace")
134 # rmmod
135 self.cmd_and_check("rmmod trace-events-sample")
136
137 @OETestDepends(['ssh.SSHTest.test_ssh'])
138 def test_trace_printk(self):
139 # check config
140 self.check_config("CONFIG_TRACING_SUPPORT")
141 # make sure if module exists
142 self.check_module_exist("trace_printk/", "trace-printk.ko")
143 # modprobe
144 self.cmd_and_check("modprobe trace-printk")
145 # lsmod
146 self.cmd_and_check("lsmod | grep trace_printk | cut -d\' \' -f1", "trace_printk")
147 # check result
148 self.cmd_and_check("cat /sys/kernel/debug/tracing/trace | grep trace_printk_irq_work | head -n1 | cut -d\':\' -f2", " trace_printk_irq_work")
149 # clean up trace
150 self.cmd_and_check("echo > /sys/kernel/debug/tracing/trace")
151 # rmmod
152 self.cmd_and_check("rmmod trace-printk")
153
154 # hw breakpoint
155 @OETestDepends(['ssh.SSHTest.test_ssh'])
156 def test_hw_breakpoint_example(self):
157 # check config
158 self.check_config("CONFIG_KALLSYMS_ALL")
159 # make sure if module exists
160 self.check_module_exist("hw_breakpoint/", "data_breakpoint.ko")
161 # modprobe
162 self.cmd_and_check("modprobe data_breakpoint")
163 # lsmod
164 self.cmd_and_check("lsmod | grep data_breakpoint | cut -d\' \' -f1", "data_breakpoint")
165 # check result
166 self.cmd_and_check("cat /var/log/messages | grep sample_hbp_handler", "sample_hbp_handler")
167 # rmmod
168 self.cmd_and_check("rmmod data_breakpoint")
169
170 @OETestDepends(['ssh.SSHTest.test_ssh'])
171 def test_configfs_sample(self):
172 # check config
173 status, ret = self.target.run('zcat /proc/config.gz | grep CONFIG_CONFIGFS_FS')
174 if not ["CONFIG_CONFIGFS_FS=m" in ret or "CONFIG_CONFIGFS_FS=y" in ret]:
175 self.skipTest("CONFIG error")
176 # make sure if module exists
177 self.check_module_exist("configfs/", "configfs_sample.ko")
178 # modprobe
179 self.cmd_and_check("modprobe configfs_sample")
180 # lsmod
181 self.cmd_and_check("lsmod | grep configfs_sample | cut -d\' \' -f1 | head -n1", "configfs_sample")
182
183 status = 1
184 count = 0
185 while status != 0:
186 time.sleep(1)
187 status, ret = self.target.run('cat /sys/kernel/config/01-childless/description')
188 count = count + 1
189 if count > 200:
190 self.skipTest("Time out for check dir")
191
192 # rmmod
193 self.cmd_and_check("rmmod configfs_sample")
194
195 @OETestDepends(['ssh.SSHTest.test_ssh'])
196 def test_cn_test(self):
197 # make sure if module exists
198 self.check_module_exist("connector/", "cn_test.ko")
199 # modprobe
200 self.cmd_and_check("modprobe cn_test")
201 # lsmod
202 self.cmd_and_check("lsmod | grep cn_test | cut -d\' \' -f1", "cn_test")
203 # check result
204 self.cmd_and_check("cat /proc/net/connector | grep cn_test | head -n1 | cut -d\' \' -f1", "cn_test")
205 # rmmod
206 self.cmd_and_check("rmmod cn_test")