From 1a4b7ee28bf7413af6513fb45ad0d0736048f866 Mon Sep 17 00:00:00 2001 From: Brad Bishop Date: Sun, 16 Dec 2018 17:11:34 -0800 Subject: reset upstream subtrees to yocto 2.6 Reset the following subtrees on thud HEAD: poky: 87e3a9739d meta-openembedded: 6094ae18c8 meta-security: 31dc4e7532 meta-raspberrypi: a48743dc36 meta-xilinx: c42016e2e6 Also re-apply backports that didn't make it into thud: poky: 17726d0 systemd-systemctl-native: handle Install wildcards meta-openembedded: 4321a5d libtinyxml2: update to 7.0.1 042f0a3 libcereal: Add native and nativesdk classes e23284f libcereal: Allow empty package 030e8d4 rsyslog: curl-less build with fmhttp PACKAGECONFIG 179a1b9 gtest: update to 1.8.1 Squashed OpenBMC subtree compatibility updates: meta-aspeed: Brad Bishop (1): aspeed: add yocto 2.6 compatibility meta-ibm: Brad Bishop (1): ibm: prepare for yocto 2.6 meta-ingrasys: Brad Bishop (1): ingrasys: set layer compatibility to yocto 2.6 meta-openpower: Brad Bishop (1): openpower: set layer compatibility to yocto 2.6 meta-phosphor: Brad Bishop (3): phosphor: set layer compatibility to thud phosphor: libgpg-error: drop patches phosphor: react to fitimage artifact rename Ed Tanous (4): Dropbear: upgrade options for latest upgrade yocto2.6: update openssl options busybox: remove upstream watchdog patch systemd: Rebase CONFIG_CGROUP_BPF patch Change-Id: I7b1fe71cca880d0372a82d94b5fd785323e3a9e7 Signed-off-by: Brad Bishop --- poky/meta/lib/oeqa/runtime/cases/apt.py | 2 +- poky/meta/lib/oeqa/runtime/cases/dnf.py | 48 +++++- poky/meta/lib/oeqa/runtime/cases/ksample.py | 221 ++++++++++++++++++++++++++ poky/meta/lib/oeqa/runtime/cases/ldd.py | 15 +- poky/meta/lib/oeqa/runtime/cases/logrotate.py | 4 +- poky/meta/lib/oeqa/runtime/cases/oe_syslog.py | 12 +- poky/meta/lib/oeqa/runtime/cases/opkg.py | 7 +- poky/meta/lib/oeqa/runtime/cases/parselogs.py | 22 +-- poky/meta/lib/oeqa/runtime/cases/perl.py | 32 +--- poky/meta/lib/oeqa/runtime/cases/python.py | 38 +---- poky/meta/lib/oeqa/runtime/cases/rpm.py | 28 ++-- poky/meta/lib/oeqa/runtime/cases/scanelf.py | 26 --- poky/meta/lib/oeqa/runtime/cases/stap.py | 2 +- poky/meta/lib/oeqa/runtime/cases/systemd.py | 6 +- 14 files changed, 325 insertions(+), 138 deletions(-) create mode 100644 poky/meta/lib/oeqa/runtime/cases/ksample.py delete mode 100644 poky/meta/lib/oeqa/runtime/cases/scanelf.py (limited to 'poky/meta/lib/oeqa/runtime/cases') diff --git a/poky/meta/lib/oeqa/runtime/cases/apt.py b/poky/meta/lib/oeqa/runtime/cases/apt.py index 8d4dd35c5..793143f72 100644 --- a/poky/meta/lib/oeqa/runtime/cases/apt.py +++ b/poky/meta/lib/oeqa/runtime/cases/apt.py @@ -18,7 +18,7 @@ class AptRepoTest(AptTest): @classmethod def setUpClass(cls): service_repo = os.path.join(cls.tc.td['DEPLOY_DIR_DEB'], 'all') - cls.repo_server = HTTPService(service_repo, cls.tc.target.server_ip) + cls.repo_server = HTTPService(service_repo, cls.tc.target.server_ip, logger=cls.tc.logger) cls.repo_server.start() @classmethod diff --git a/poky/meta/lib/oeqa/runtime/cases/dnf.py b/poky/meta/lib/oeqa/runtime/cases/dnf.py index 2f87296b4..c1ed39d77 100644 --- a/poky/meta/lib/oeqa/runtime/cases/dnf.py +++ b/poky/meta/lib/oeqa/runtime/cases/dnf.py @@ -55,7 +55,7 @@ class DnfRepoTest(DnfTest): @classmethod def setUpClass(cls): cls.repo_server = HTTPService(os.path.join(cls.tc.td['WORKDIR'], 'oe-testimage-repo'), - cls.tc.target.server_ip) + cls.tc.target.server_ip, logger=cls.tc.logger) cls.repo_server.start() @classmethod @@ -67,7 +67,8 @@ class DnfRepoTest(DnfTest): deploy_url = 'http://%s:%s/' %(self.target.server_ip, self.repo_server.port) cmdlinerepoopts = ["--repofrompath=oe-testimage-repo-%s,%s%s" %(arch, deploy_url, arch) for arch in pkgarchs] - self.dnf(" ".join(cmdlinerepoopts) + " --nogpgcheck " + command) + output = self.dnf(" ".join(cmdlinerepoopts) + " --nogpgcheck " + command) + return output @OETestDepends(['dnf.DnfBasicTest.test_dnf_help']) @OETestID(1744) @@ -88,6 +89,9 @@ class DnfRepoTest(DnfTest): @OETestDepends(['dnf.DnfRepoTest.test_dnf_makecache']) @OETestID(1740) def test_dnf_install(self): + output = self.dnf_with_repo('list run-postinsts-dev') + if 'Installed Packages' in output: + self.dnf_with_repo('remove -y run-postinsts-dev') self.dnf_with_repo('install -y run-postinsts-dev') @OETestDepends(['dnf.DnfRepoTest.test_dnf_install']) @@ -120,4 +124,44 @@ class DnfRepoTest(DnfTest): def test_dnf_reinstall(self): self.dnf_with_repo('reinstall -y run-postinsts-dev') + @OETestDepends(['dnf.DnfRepoTest.test_dnf_makecache']) + @OETestID(1771) + def test_dnf_installroot(self): + rootpath = '/home/root/chroot/test' + #Copy necessary files to avoid errors with not yet installed tools on + #installroot directory. + self.target.run('mkdir -p %s/etc' % rootpath, 1500) + self.target.run('mkdir -p %s/bin %s/sbin %s/usr/bin %s/usr/sbin' % (rootpath, rootpath, rootpath, rootpath), 1500) + self.target.run('mkdir -p %s/dev' % rootpath, 1500) + #Handle different architectures lib dirs + self.target.run('mkdir -p %s/lib' % rootpath, 1500) + self.target.run('mkdir -p %s/libx32' % rootpath, 1500) + self.target.run('mkdir -p %s/lib64' % rootpath, 1500) + self.target.run('cp /lib/libtinfo.so.5 %s/lib' % rootpath, 1500) + self.target.run('cp /libx32/libtinfo.so.5 %s/libx32' % rootpath, 1500) + self.target.run('cp /lib64/libtinfo.so.5 %s/lib64' % rootpath, 1500) + self.target.run('cp -r /etc/rpm %s/etc' % rootpath, 1500) + self.target.run('cp -r /etc/dnf %s/etc' % rootpath, 1500) + self.target.run('cp /bin/sh %s/bin' % rootpath, 1500) + self.target.run('mount -o bind /dev %s/dev/' % rootpath, 1500) + self.dnf_with_repo('install --installroot=%s -v -y --rpmverbosity=debug busybox run-postinsts' % rootpath) + status, output = self.target.run('test -e %s/var/cache/dnf' % rootpath, 1500) + self.assertEqual(0, status, output) + status, output = self.target.run('test -e %s/bin/busybox' % rootpath, 1500) + self.assertEqual(0, status, output) + @OETestDepends(['dnf.DnfRepoTest.test_dnf_makecache']) + @OETestID(1772) + def test_dnf_exclude(self): + excludepkg = 'curl-dev' + self.dnf_with_repo('install -y curl*') + self.dnf('list %s' % excludepkg, 0) + #Avoid remove dependencies to skip some errors on different archs and images + self.dnf_with_repo('remove --setopt=clean_requirements_on_remove=0 -y curl*') + #check curl-dev is not installed adter removing all curl occurrences + status, output = self.target.run('dnf list --installed | grep %s'% excludepkg, 1500) + self.assertEqual(1, status, "%s was not removed, is listed as installed"%excludepkg) + self.dnf_with_repo('install -y --exclude=%s --exclude=curl-staticdev curl*' % excludepkg) + #check curl-dev is not installed after being excluded + status, output = self.target.run('dnf list --installed | grep %s'% excludepkg , 1500) + self.assertEqual(1, status, "%s was not excluded, is listed as installed"%excludepkg) diff --git a/poky/meta/lib/oeqa/runtime/cases/ksample.py b/poky/meta/lib/oeqa/runtime/cases/ksample.py new file mode 100644 index 000000000..354cc9767 --- /dev/null +++ b/poky/meta/lib/oeqa/runtime/cases/ksample.py @@ -0,0 +1,221 @@ +import os +import time + +from oeqa.runtime.case import OERuntimeTestCase +from oeqa.core.decorator.depends import OETestDepends +from oeqa.core.decorator.oeid import OETestID +from oeqa.core.decorator.data import skipIfNotFeature + +# need some kernel fragments +# echo "KERNEL_FEATURES_append += \" features\/kernel\-sample\/kernel\-sample.scc\"" >> local.conf +class KSample(OERuntimeTestCase): + def cmd_and_check(self, cmd='', match_string=''): + status, output = self.target.run(cmd) + if not match_string: + # send cmd + msg = '%s failed, %s' % (cmd, output) + self.assertEqual(status, 0, msg=msg) + else: + # check result + result = ("%s" % match_string) in output + msg = output + self.assertTrue(result, msg) + self.assertEqual(status, 0, cmd) + + def check_config(self, config_opt=''): + cmd = "zcat /proc/config.gz | grep %s" % config_opt + status, output = self.target.run(cmd) + result = ("%s=y" % config_opt) in output + if not result: + self.skipTest("%s is not set" % config_opt) + + def check_module_exist(self, path='', module_name=''): + status, output = self.target.run("uname -r") + cmd = "ls " + "/lib/modules/" + output + "/kernel/samples/" + path + module_name + status, output = self.target.run(cmd) + if status != 0: + error_info = module_name + " doesn't exist" + self.skipTest(error_info) + + def kfifo_func(self, name=''): + module_prename = name + "-example" + module_name = name + "-example.ko" + sysmbol_name = name + "_example" + + # make sure if module exists + self.check_module_exist("kfifo/", module_name) + # modprobe + self.cmd_and_check("modprobe %s" % module_prename) + # lsmod + self.cmd_and_check("lsmod | grep %s | cut -d\' \' -f1" % sysmbol_name, sysmbol_name) + # check result + self.cmd_and_check("dmesg | grep \"test passed\" ", "test passed") + # rmmod + self.cmd_and_check("rmmod %s" % module_prename) + + def kprobe_func(self, name=''): + # check config + self.check_config("CONFIG_KPROBES") + + module_prename = name + "_example" + module_name = name + "_example.ko" + sysmbol_name = module_prename + + # make sure if module exists + self.check_module_exist("kprobes/", module_name) + # modprobe + self.cmd_and_check("modprobe %s" % module_prename) + # lsmod + self.cmd_and_check("lsmod | grep %s | cut -d\' \' -f1" % sysmbol_name, sysmbol_name) + # check result + self.cmd_and_check("dmesg | grep Planted | head -n10", "Planted") + # rmmod + self.cmd_and_check("rmmod %s" % module_prename) + + def kobject_func(self, name=''): + module_prename = name + "_example" + module_name = name + "-example.ko" + sysmbol_name = module_prename + + # make sure if module exists + self.check_module_exist("kobject/", module_name) + # modprobe + self.cmd_and_check("modprobe %s" % module_prename) + # lsmod + self.cmd_and_check("lsmod | grep %s | cut -d\' \' -f1" % sysmbol_name, sysmbol_name) + # check result + self.cmd_and_check("ls /sys/kernel/%s/" % sysmbol_name, "bar") + # rmmod + self.cmd_and_check("rmmod %s" % module_prename) + +class KSampleTest(KSample): + # kfifo + @OETestDepends(['ssh.SSHTest.test_ssh']) + def test_kfifo_test(self): + index = ["dma", "bytestream", "inttype", "record"] + for i in index: + self.kfifo_func(i) + + # kprobe + @OETestDepends(['ssh.SSHTest.test_ssh']) + def test_kprobe_test(self): + index = ["kprobe", "kretprobe"] + for i in index: + self.kprobe_func(i) + + # kobject + @OETestDepends(['ssh.SSHTest.test_ssh']) + def test_kobject_test(self): + index = ["kobject", "kset"] + for i in index: + self.kobject_func(i) + + #trace + @OETestDepends(['ssh.SSHTest.test_ssh']) + def test_trace_events(self): + # check config + self.check_config("CONFIG_TRACING_SUPPORT") + # make sure if module exists + self.check_module_exist("trace_events/", "trace-events-sample.ko") + # modprobe + self.cmd_and_check("modprobe trace-events-sample") + # lsmod + self.cmd_and_check("lsmod | grep trace_events_sample | cut -d\' \' -f1", "trace_events_sample") + # check dir + self.cmd_and_check("ls /sys/kernel/debug/tracing/events/ | grep sample-trace", "sample-trace") + # enable trace + self.cmd_and_check("echo 1 > /sys/kernel/debug/tracing/events/sample-trace/enable") + self.cmd_and_check("cat /sys/kernel/debug/tracing/events/sample-trace/enable") + # check result + status = 1 + count = 0 + while status != 0: + time.sleep(1) + status, output = self.target.run('cat /sys/kernel/debug/tracing/trace | grep hello | head -n1 | cut -d\':\' -f2') + if " foo_bar" in output: + break + count = count + 1 + if count > 5: + self.assertTrue(False, "Time out when check result") + # disable trace + self.cmd_and_check("echo 0 > /sys/kernel/debug/tracing/events/sample-trace/enable") + # clean up trace + self.cmd_and_check("echo > /sys/kernel/debug/tracing/trace") + # rmmod + self.cmd_and_check("rmmod trace-events-sample") + + @OETestDepends(['ssh.SSHTest.test_ssh']) + def test_trace_printk(self): + # check config + self.check_config("CONFIG_TRACING_SUPPORT") + # make sure if module exists + self.check_module_exist("trace_printk/", "trace-printk.ko") + # modprobe + self.cmd_and_check("modprobe trace-printk") + # lsmod + self.cmd_and_check("lsmod | grep trace_printk | cut -d\' \' -f1", "trace_printk") + # check result + self.cmd_and_check("cat /sys/kernel/debug/tracing/trace | grep trace_printk_irq_work | head -n1 | cut -d\':\' -f2", " trace_printk_irq_work") + # clean up trace + self.cmd_and_check("echo > /sys/kernel/debug/tracing/trace") + # rmmod + self.cmd_and_check("rmmod trace-printk") + + # hw breakpoint + @OETestDepends(['ssh.SSHTest.test_ssh']) + def test_hw_breakpoint_example(self): + # check arch + status, output = self.target.run("uname -m") + result = ("x86" in output) or ("aarch64" in output) + if not result: + self.skipTest("the arch doesn't support hw breakpoint" % output) + # check config + self.check_config("CONFIG_KALLSYMS_ALL") + # make sure if module exists + self.check_module_exist("hw_breakpoint/", "data_breakpoint.ko") + # modprobe + self.cmd_and_check("modprobe data_breakpoint") + # lsmod + self.cmd_and_check("lsmod | grep data_breakpoint | cut -d\' \' -f1", "data_breakpoint") + # check result + self.cmd_and_check("cat /var/log/messages | grep sample_hbp_handler", "sample_hbp_handler") + # rmmod + self.cmd_and_check("rmmod data_breakpoint") + + @OETestDepends(['ssh.SSHTest.test_ssh']) + def test_configfs_sample(self): + # check config + status, ret = self.target.run('zcat /proc/config.gz | grep CONFIG_CONFIGFS_FS') + if not ["CONFIG_CONFIGFS_FS=m" in ret or "CONFIG_CONFIGFS_FS=y" in ret]: + self.skipTest("CONFIG error") + # make sure if module exists + self.check_module_exist("configfs/", "configfs_sample.ko") + # modprobe + self.cmd_and_check("modprobe configfs_sample") + # lsmod + self.cmd_and_check("lsmod | grep configfs_sample | cut -d\' \' -f1 | head -n1", "configfs_sample") + + status = 1 + count = 0 + while status != 0: + time.sleep(1) + status, ret = self.target.run('cat /sys/kernel/config/01-childless/description') + count = count + 1 + if count > 200: + self.skipTest("Time out for check dir") + + # rmmod + self.cmd_and_check("rmmod configfs_sample") + + @OETestDepends(['ssh.SSHTest.test_ssh']) + def test_cn_test(self): + # make sure if module exists + self.check_module_exist("connector/", "cn_test.ko") + # modprobe + self.cmd_and_check("modprobe cn_test") + # lsmod + self.cmd_and_check("lsmod | grep cn_test | cut -d\' \' -f1", "cn_test") + # check result + self.cmd_and_check("cat /proc/net/connector | grep cn_test | head -n1 | cut -d\' \' -f1", "cn_test") + # rmmod + self.cmd_and_check("rmmod cn_test") diff --git a/poky/meta/lib/oeqa/runtime/cases/ldd.py b/poky/meta/lib/oeqa/runtime/cases/ldd.py index c6d92fd5a..5bde1845d 100644 --- a/poky/meta/lib/oeqa/runtime/cases/ldd.py +++ b/poky/meta/lib/oeqa/runtime/cases/ldd.py @@ -2,24 +2,23 @@ from oeqa.runtime.case import OERuntimeTestCase from oeqa.core.decorator.depends import OETestDepends from oeqa.core.decorator.oeid import OETestID from oeqa.core.decorator.data import skipIfNotFeature +from oeqa.runtime.decorator.package import OEHasPackage class LddTest(OERuntimeTestCase): @OETestID(962) - @skipIfNotFeature('tools-sdk', - 'Test requires tools-sdk to be in IMAGE_FEATURES') + @OEHasPackage(["ldd"]) @OETestDepends(['ssh.SSHTest.test_ssh']) - def test_ldd_exists(self): + def test_ldd(self): status, output = self.target.run('which ldd') msg = 'ldd does not exist in PATH: which ldd: %s' % output self.assertEqual(status, 0, msg=msg) - @OETestID(239) - @OETestDepends(['ldd.LddTest.test_ldd_exists']) - def test_ldd_rtldlist_check(self): cmd = ('for i in $(which ldd | xargs cat | grep "^RTLDLIST"| ' 'cut -d\'=\' -f2|tr -d \'"\'); ' 'do test -f $i && echo $i && break; done') status, output = self.target.run(cmd) - msg = "ldd path not correct or RTLDLIST files don't exist." - self.assertEqual(status, 0, msg=msg) + self.assertEqual(status, 0, msg="ldd path not correct or RTLDLIST files don't exist.") + + status, output = self.target.run("ldd /bin/true") + self.assertEqual(status, 0, msg="ldd failed to execute: %s" % output) diff --git a/poky/meta/lib/oeqa/runtime/cases/logrotate.py b/poky/meta/lib/oeqa/runtime/cases/logrotate.py index 992fef298..db6e695ee 100644 --- a/poky/meta/lib/oeqa/runtime/cases/logrotate.py +++ b/poky/meta/lib/oeqa/runtime/cases/logrotate.py @@ -21,9 +21,9 @@ class LogrotateTest(OERuntimeTestCase): self.assertEqual(status, 0, msg = msg) cmd = ('sed -i "s#wtmp {#wtmp {\\n olddir $HOME/logrotate_dir#"' - ' /etc/logrotate.conf') + ' /etc/logrotate.d/wtmp') status, output = self.target.run(cmd) - msg = ('Could not write to logrotate.conf file. Status and output: ' + msg = ('Could not write to logrotate.d/wtmp file. Status and output: ' ' %s and %s' % (status, output)) self.assertEqual(status, 0, msg = msg) diff --git a/poky/meta/lib/oeqa/runtime/cases/oe_syslog.py b/poky/meta/lib/oeqa/runtime/cases/oe_syslog.py index 005b6978d..a92a1f2bc 100644 --- a/poky/meta/lib/oeqa/runtime/cases/oe_syslog.py +++ b/poky/meta/lib/oeqa/runtime/cases/oe_syslog.py @@ -8,12 +8,14 @@ class SyslogTest(OERuntimeTestCase): @OETestID(201) @OETestDepends(['ssh.SSHTest.test_ssh']) - @OEHasPackage(["busybox-syslog", "sysklogd"]) + @OEHasPackage(["busybox-syslog", "sysklogd", "rsyslog", "syslog-ng"]) def test_syslog_running(self): - cmd = '%s | grep -i [s]yslogd' % self.tc.target_cmds['ps'] - status, output = self.target.run(cmd) - msg = "No syslogd process; ps output: %s" % output + status, output = self.target.run(self.tc.target_cmds['ps']) + msg = "Failed to execute %s" % self.tc.target_cmds['ps'] self.assertEqual(status, 0, msg=msg) + msg = "No syslog daemon process; %s output:\n%s" % (self.tc.target_cmds['ps'], output) + hasdaemon = "syslogd" in output or "syslog-ng" in output + self.assertTrue(hasdaemon, msg=msg) class SyslogTestConfig(OERuntimeTestCase): @@ -45,7 +47,7 @@ class SyslogTestConfig(OERuntimeTestCase): @OETestID(202) @OETestDepends(['oe_syslog.SyslogTestConfig.test_syslog_logger']) - @OEHasPackage(["!sysklogd", "busybox"]) + @OEHasPackage(["busybox-syslog"]) @skipIfDataVar('VIRTUAL-RUNTIME_init_manager', 'systemd', 'Not appropiate for systemd image') def test_syslog_startup_config(self): diff --git a/poky/meta/lib/oeqa/runtime/cases/opkg.py b/poky/meta/lib/oeqa/runtime/cases/opkg.py index 671ee06c7..29e990269 100644 --- a/poky/meta/lib/oeqa/runtime/cases/opkg.py +++ b/poky/meta/lib/oeqa/runtime/cases/opkg.py @@ -17,8 +17,11 @@ class OpkgRepoTest(OpkgTest): @classmethod def setUpClass(cls): - service_repo = os.path.join(cls.tc.td['DEPLOY_DIR_IPK'], 'all') - cls.repo_server = HTTPService(service_repo, cls.tc.target.server_ip) + allarchfeed = 'all' + if cls.tc.td["MULTILIB_VARIANTS"]: + allarchfeed = cls.tc.td["TUNE_PKGARCH"] + service_repo = os.path.join(cls.tc.td['DEPLOY_DIR_IPK'], allarchfeed) + cls.repo_server = HTTPService(service_repo, cls.tc.target.server_ip, logger=cls.tc.logger) cls.repo_server.start() @classmethod diff --git a/poky/meta/lib/oeqa/runtime/cases/parselogs.py b/poky/meta/lib/oeqa/runtime/cases/parselogs.py index 1f36c6108..f6e9820cd 100644 --- a/poky/meta/lib/oeqa/runtime/cases/parselogs.py +++ b/poky/meta/lib/oeqa/runtime/cases/parselogs.py @@ -49,6 +49,10 @@ common_errors = [ "error: couldn\'t mount because of unsupported optional features", "GPT: Use GNU Parted to correct GPT errors", "Cannot set xattr user.Librepo.DownloadInProgress", + "Failed to read /var/lib/nfs/statd/state: Success", + "error retry time-out =", + "logind: cannot setup systemd-logind helper (-61), using legacy fallback", + "Error changing net interface name 'eth0' to " ] video_related = [ @@ -120,15 +124,6 @@ ignore_errors = { 'dmi: Firmware registration failed.', 'irq: type mismatch, failed to map hwirq-27 for /intc', ] + common_errors, - 'emenlow' : [ - '[Firmware Bug]: ACPI: No _BQC method, cannot determine initial brightness', - '(EE) Failed to load module "psb"', - '(EE) Failed to load module psb', - '(EE) Failed to load module "psbdrv"', - '(EE) Failed to load module psbdrv', - '(EE) open /dev/fb0: No such file or directory', - '(EE) AIGLX: reverting to software rendering', - ] + x86_common, 'intel-core2-32' : [ 'ACPI: No _BQC method, cannot determine initial brightness', '[Firmware Bug]: ACPI: No _BQC method, cannot determine initial brightness', @@ -156,7 +151,6 @@ ignore_errors = { 'Bluetooth: hci0: Failed to send firmware data (-38)', 'atkbd serio0: Failed to enable keyboard on isa0060/serio0', ] + x86_common, - 'crownbay' : x86_common, 'genericx86' : x86_common, 'genericx86-64' : [ 'Direct firmware load for i915', @@ -169,10 +163,6 @@ ignore_errors = { 'edgerouter' : [ 'Fatal server error:', ] + common_errors, - 'jasperforest' : [ - 'Activated service \'org.bluez\' failed:', - 'Unable to find NFC netlink family', - ] + common_errors, } log_locations = ["/var/log/","/var/log/dmesg", "/tmp/dmesg_output.log"] @@ -323,7 +313,7 @@ class ParseLogsTest(OERuntimeTestCase): pass if result is not None: - results[log.replace('target_logs/','')] = {} + results[log] = {} rez = result.splitlines() for xrez in rez: @@ -333,7 +323,7 @@ class ParseLogsTest(OERuntimeTestCase): grep_output = check_output(cmd).decode('utf-8') except: pass - results[log.replace('target_logs/','')][xrez]=grep_output + results[log][xrez]=grep_output return results diff --git a/poky/meta/lib/oeqa/runtime/cases/perl.py b/poky/meta/lib/oeqa/runtime/cases/perl.py index d0b7e8ed9..afeeb180e 100644 --- a/poky/meta/lib/oeqa/runtime/cases/perl.py +++ b/poky/meta/lib/oeqa/runtime/cases/perl.py @@ -1,37 +1,13 @@ import os from oeqa.runtime.case import OERuntimeTestCase -from oeqa.core.decorator.depends import OETestDepends from oeqa.core.decorator.oeid import OETestID from oeqa.runtime.decorator.package import OEHasPackage class PerlTest(OERuntimeTestCase): - - @classmethod - def setUpClass(cls): - src = os.path.join(cls.tc.files_dir, 'test.pl') - dst = '/tmp/test.pl' - cls.tc.target.copyTo(src, dst) - - @classmethod - def tearDownClass(cls): - dst = '/tmp/test.pl' - cls.tc.target.run('rm %s' % dst) - - @OETestID(1141) - @OETestDepends(['ssh.SSHTest.test_ssh']) - @OEHasPackage(['perl']) - def test_perl_exists(self): - status, output = self.target.run('which perl') - msg = 'Perl binary not in PATH or not on target.' - self.assertEqual(status, 0, msg=msg) - @OETestID(208) - @OETestDepends(['perl.PerlTest.test_perl_exists']) + @OEHasPackage(['perl']) def test_perl_works(self): - status, output = self.target.run('perl /tmp/test.pl') - msg = 'Exit status was not 0. Output: %s' % output - self.assertEqual(status, 0, msg=msg) - - msg = 'Incorrect output: %s' % output - self.assertEqual(output, "the value of a is 0.01", msg=msg) + status, output = self.target.run("perl -e '$_=\"Uryyb, jbeyq\"; tr/a-zA-Z/n-za-mN-ZA-M/;print'") + self.assertEqual(status, 0) + self.assertEqual(output, "Hello, world") diff --git a/poky/meta/lib/oeqa/runtime/cases/python.py b/poky/meta/lib/oeqa/runtime/cases/python.py index bf3e17916..4419a9f63 100644 --- a/poky/meta/lib/oeqa/runtime/cases/python.py +++ b/poky/meta/lib/oeqa/runtime/cases/python.py @@ -1,43 +1,21 @@ -import os - from oeqa.runtime.case import OERuntimeTestCase from oeqa.core.decorator.depends import OETestDepends from oeqa.core.decorator.oeid import OETestID -from oeqa.runtime.decorator.package import OEHasPackage class PythonTest(OERuntimeTestCase): - @classmethod def setUpClass(cls): - src = os.path.join(cls.tc.files_dir, 'test.py') - dst = '/tmp/test.py' - cls.tc.target.copyTo(src, dst) - - @classmethod - def tearDownClass(cls): - dst = '/tmp/test.py' - cls.tc.target.run('rm %s' % dst) - - @OETestID(1145) - @OETestDepends(['ssh.SSHTest.test_ssh']) - @OEHasPackage(['python-core']) - def test_python_exists(self): - status, output = self.target.run('which python') - msg = 'Python binary not in PATH or not on target.' - self.assertEqual(status, 0, msg=msg) + import unittest + if "python3-core" not in cls.tc.image_packages: + raise unittest.SkipTest("Python3 not on target") @OETestID(965) - @OETestDepends(['python.PythonTest.test_python_exists']) - def test_python_stdout(self): - status, output = self.target.run('python /tmp/test.py') + @OETestDepends(['ssh.SSHTest.test_ssh']) + def test_python3(self): + cmd = "python3 -c \"import codecs; print(codecs.encode('Uryyb, jbeyq', 'rot13'))\"" + status, output = self.target.run(cmd) msg = 'Exit status was not 0. Output: %s' % output self.assertEqual(status, 0, msg=msg) msg = 'Incorrect output: %s' % output - self.assertEqual(output, "the value of a is 0.01", msg=msg) - - @OETestID(1146) - @OETestDepends(['python.PythonTest.test_python_stdout']) - def test_python_testfile(self): - status, output = self.target.run('ls /tmp/testfile.python') - self.assertEqual(status, 0, msg='Python test file generate failed.') + self.assertEqual(output, "Hello, world", msg=msg) diff --git a/poky/meta/lib/oeqa/runtime/cases/rpm.py b/poky/meta/lib/oeqa/runtime/cases/rpm.py index 84c59a614..1e5e4631d 100644 --- a/poky/meta/lib/oeqa/runtime/cases/rpm.py +++ b/poky/meta/lib/oeqa/runtime/cases/rpm.py @@ -39,31 +39,31 @@ class RpmInstallRemoveTest(OERuntimeTestCase): pkgarch = cls.td['TUNE_PKGARCH'].replace('-', '_') rpmdir = os.path.join(cls.tc.td['DEPLOY_DIR'], 'rpm', pkgarch) - # Pick rpm-doc as a test file to get installed, because it's small + # Pick base-passwd-doc as a test file to get installed, because it's small # and it will always be built for standard targets - rpm_doc = 'rpm-doc-*.%s.rpm' % pkgarch + rpm_doc = 'base-passwd-doc-*.%s.rpm' % pkgarch for f in fnmatch.filter(os.listdir(rpmdir), rpm_doc): test_file = os.path.join(rpmdir, f) - dst = '/tmp/rpm-doc.rpm' + dst = '/tmp/base-passwd-doc.rpm' cls.tc.target.copyTo(test_file, dst) @classmethod def tearDownClass(cls): - dst = '/tmp/rpm-doc.rpm' + dst = '/tmp/base-passwd-doc.rpm' cls.tc.target.run('rm -f %s' % dst) @OETestID(192) @OETestDepends(['rpm.RpmBasicTest.test_rpm_help']) def test_rpm_install(self): - status, output = self.target.run('rpm -ivh /tmp/rpm-doc.rpm') - msg = 'Failed to install rpm-doc package: %s' % output + status, output = self.target.run('rpm -ivh /tmp/base-passwd-doc.rpm') + msg = 'Failed to install base-passwd-doc package: %s' % output self.assertEqual(status, 0, msg=msg) @OETestID(194) @OETestDepends(['rpm.RpmInstallRemoveTest.test_rpm_install']) def test_rpm_remove(self): - status,output = self.target.run('rpm -e rpm-doc') - msg = 'Failed to remove rpm-doc package: %s' % output + status,output = self.target.run('rpm -e base-passwd-doc') + msg = 'Failed to remove base-passwd-doc package: %s' % output self.assertEqual(status, 0, msg=msg) @OETestID(1096) @@ -107,7 +107,7 @@ class RpmInstallRemoveTest(OERuntimeTestCase): Expected: There should be some RPM prefixed entries in the above file. Product: BSPs Author: Alexandru Georgescu - Author: Alexander Kanavin + Author: Alexander Kanavin AutomatedBy: Daniel Istrate """ db_files_cmd = 'ls /var/lib/rpm/__db.*' @@ -119,16 +119,16 @@ class RpmInstallRemoveTest(OERuntimeTestCase): self.assertEqual(0, status, msg=msg) # Remove the package just in case - self.target.run('rpm -e rpm-doc') + self.target.run('rpm -e base-passwd-doc') # Install/Remove a package 10 times for i in range(10): - status, output = self.target.run('rpm -ivh /tmp/rpm-doc.rpm') - msg = 'Failed to install rpm-doc package. Reason: {}'.format(output) + status, output = self.target.run('rpm -ivh /tmp/base-passwd-doc.rpm') + msg = 'Failed to install base-passwd-doc package. Reason: {}'.format(output) self.assertEqual(0, status, msg=msg) - status, output = self.target.run('rpm -e rpm-doc') - msg = 'Failed to remove rpm-doc package. Reason: {}'.format(output) + status, output = self.target.run('rpm -e base-passwd-doc') + msg = 'Failed to remove base-passwd-doc package. Reason: {}'.format(output) self.assertEqual(0, status, msg=msg) # if using systemd this should ensure all entries are flushed to /var diff --git a/poky/meta/lib/oeqa/runtime/cases/scanelf.py b/poky/meta/lib/oeqa/runtime/cases/scanelf.py deleted file mode 100644 index 3ba1f78af..000000000 --- a/poky/meta/lib/oeqa/runtime/cases/scanelf.py +++ /dev/null @@ -1,26 +0,0 @@ -from oeqa.runtime.case import OERuntimeTestCase -from oeqa.core.decorator.depends import OETestDepends -from oeqa.core.decorator.oeid import OETestID -from oeqa.runtime.decorator.package import OEHasPackage - -class ScanelfTest(OERuntimeTestCase): - scancmd = 'scanelf --quiet --recursive --mount --ldpath --path' - - @OETestID(966) - @OETestDepends(['ssh.SSHTest.test_ssh']) - @OEHasPackage(['pax-utils']) - def test_scanelf_textrel(self): - # print TEXTREL information - cmd = '%s --textrel' % self.scancmd - status, output = self.target.run(cmd) - msg = '\n'.join([cmd, output]) - self.assertEqual(output.strip(), '', msg=msg) - - @OETestID(967) - @OETestDepends(['scanelf.ScanelfTest.test_scanelf_textrel']) - def test_scanelf_rpath(self): - # print RPATH information - cmd = '%s --textrel --rpath' % self.scancmd - status, output = self.target.run(cmd) - msg = '\n'.join([cmd, output]) - self.assertEqual(output.strip(), '', msg=msg) diff --git a/poky/meta/lib/oeqa/runtime/cases/stap.py b/poky/meta/lib/oeqa/runtime/cases/stap.py index fc728bfc5..96e197a2d 100644 --- a/poky/meta/lib/oeqa/runtime/cases/stap.py +++ b/poky/meta/lib/oeqa/runtime/cases/stap.py @@ -25,7 +25,7 @@ class StapTest(OERuntimeTestCase): def test_stap(self): cmds = [ 'cd /usr/src/kernel && make scripts prepare', - 'cd /lib/modules/`uname -r` && (if [ ! -L build ]; then ln -s /usr/src/kernel build; fi)', + 'cd /lib/modules/`uname -r` && (if [ ! -e build ]; then ln -s /usr/src/kernel build; fi)', 'stap --disable-cache -DSTP_NO_VERREL_CHECK /tmp/hello.stp' ] for cmd in cmds: diff --git a/poky/meta/lib/oeqa/runtime/cases/systemd.py b/poky/meta/lib/oeqa/runtime/cases/systemd.py index db69384c8..460b8fc3a 100644 --- a/poky/meta/lib/oeqa/runtime/cases/systemd.py +++ b/poky/meta/lib/oeqa/runtime/cases/systemd.py @@ -11,11 +11,11 @@ from oeqa.core.decorator.data import skipIfNotFeature class SystemdTest(OERuntimeTestCase): def systemctl(self, action='', target='', expected=0, verbose=False): - command = 'systemctl %s %s' % (action, target) + command = 'SYSTEMD_BUS_TIMEOUT=240s systemctl %s %s' % (action, target) status, output = self.target.run(command) message = '\n'.join([command, output]) if status != expected and verbose: - cmd = 'systemctl status --full %s' % target + cmd = 'SYSTEMD_BUS_TIMEOUT=240s systemctl status --full %s' % target message += self.target.run(cmd)[1] self.assertEqual(status, expected, message) return output @@ -63,7 +63,7 @@ class SystemdBasicTests(SystemdTest): """ endtime = time.time() + (60 * 2) while True: - status, output = self.target.run('systemctl --state=activating') + status, output = self.target.run('SYSTEMD_BUS_TIMEOUT=240s systemctl --state=activating') if "0 loaded units listed" in output: return (True, '') if time.time() >= endtime: -- cgit v1.2.3