Message ID | 1521741206-5138-2-git-send-email-kamensky@cisco.com |
---|---|
State | Superseded |
Headers | show |
Series | oeqa/runtime/stap.py: add runtime test for systemtap | expand |
On the autobuilder: | NOTE: FAIL [15.139s]: test_stap (stap.StapTest) | NOTE: ---------------------------------------------------------------------- | NOTE: Traceback (most recent call last): | File "/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-rpm-non-rpm/build/meta/lib/oeqa/core/decorator/__init__.py", line 32, in wrapped_f | return func(*args, **kwargs) | File "/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-rpm-non-rpm/build/meta/lib/oeqa/core/decorator/__init__.py", line 32, in wrapped_f | return func(*args, **kwargs) | File "/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-rpm-non-rpm/build/meta/lib/oeqa/core/decorator/__init__.py", line 32, in wrapped_f | return func(*args, **kwargs) | File "/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-rpm-non-rpm/build/meta/lib/oeqa/runtime/cases/stap.py", line 33, in test_stap | self.assertEqual(status, 0, msg='\n'.join([cmd, output])) | AssertionError: 1 != 0 : stap --disable-cache /tmp/hello.stp | ERROR: module version mismatch (#1 SMP PREEMPT Mon Mar 26 14:41:21 UTC 2018 vs #1 SMP PREEMPT Mon Mar 26 14:03:27 GMT 2018), release 4.14.24-yocto-standard | WARNING: /usr/bin/staprun exited with status: 1 | Pass 5: run failed. [man error::pass5] Is this systemtap-uprobes not being rebuilt when it should? Ross On 22 March 2018 at 17:53, Victor Kamensky <kamensky@cisco.com> wrote: > Add runtime test for stap to test basic SystemTap > operations: can compile very basic module and run on > target device. > > Signed-off-by: Victor Kamensky <kamensky@cisco.com> > --- > meta/lib/oeqa/runtime/cases/stap.py | 33 +++++++++++++++++++++++++++++++++ > meta/lib/oeqa/runtime/files/hello.stp | 1 + > 2 files changed, 34 insertions(+) > create mode 100644 meta/lib/oeqa/runtime/cases/stap.py > create mode 100644 meta/lib/oeqa/runtime/files/hello.stp > > diff --git a/meta/lib/oeqa/runtime/cases/stap.py b/meta/lib/oeqa/runtime/cases/stap.py > new file mode 100644 > index 0000000..005da71 > --- /dev/null > +++ b/meta/lib/oeqa/runtime/cases/stap.py > @@ -0,0 +1,33 @@ > +import os > + > +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 > + > +class StapTest(OERuntimeTestCase): > + > + @classmethod > + def setUpClass(cls): > + src = os.path.join(cls.tc.runtime_files_dir, 'hello.stp') > + dst = '/tmp/hello.stp' > + cls.tc.target.copyTo(src, dst) > + > + @classmethod > + def tearDownClass(cls): > + files = '/tmp/hello.stp' > + cls.tc.target.run('rm %s' % files) > + > + @OETestID(1652) > + @skipIfNotFeature('tools-profile', > + 'Test requires tools-profile to be in IMAGE_FEATURES') > + @OETestDepends(['kernelmodule.KernelModuleTest.test_kernel_module']) > + def test_stap(self): > + cmds = [ > + 'cd /usr/src/kernel && make scripts', > + 'cd /lib/modules/* && (if [ ! -L build ]; then ln -s /usr/src/kernel build; fi)', > + 'stap --disable-cache /tmp/hello.stp' > + ] > + for cmd in cmds: > + status, output = self.target.run(cmd, 900) > + self.assertEqual(status, 0, msg='\n'.join([cmd, output])) > diff --git a/meta/lib/oeqa/runtime/files/hello.stp b/meta/lib/oeqa/runtime/files/hello.stp > new file mode 100644 > index 0000000..3677147 > --- /dev/null > +++ b/meta/lib/oeqa/runtime/files/hello.stp > @@ -0,0 +1 @@ > +probe oneshot { println("hello world") } > -- > 2.7.4 > > -- > _______________________________________________ > Openembedded-core mailing list > Openembedded-core@lists.openembedded.org > http://lists.openembedded.org/mailman/listinfo/openembedded-core -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core
On Mon, 26 Mar 2018, Burton, Ross wrote: > On the autobuilder: > > | NOTE: FAIL [15.139s]: test_stap (stap.StapTest) > | NOTE: ---------------------------------------------------------------------- > | NOTE: Traceback (most recent call last): > | File "/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-rpm-non-rpm/build/meta/lib/oeqa/core/decorator/__init__.py", > line 32, in wrapped_f > | return func(*args, **kwargs) > | File "/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-rpm-non-rpm/build/meta/lib/oeqa/core/decorator/__init__.py", > line 32, in wrapped_f > | return func(*args, **kwargs) > | File "/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-rpm-non-rpm/build/meta/lib/oeqa/core/decorator/__init__.py", > line 32, in wrapped_f > | return func(*args, **kwargs) > | File "/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-rpm-non-rpm/build/meta/lib/oeqa/runtime/cases/stap.py", > line 33, in test_stap > | self.assertEqual(status, 0, msg='\n'.join([cmd, output])) > | AssertionError: 1 != 0 : stap --disable-cache /tmp/hello.stp > | ERROR: module version mismatch (#1 SMP PREEMPT Mon Mar 26 14:41:21 > UTC 2018 vs #1 SMP PREEMPT Mon Mar 26 14:03:27 GMT 2018), release > 4.14.24-yocto-standard > | WARNING: /usr/bin/staprun exited with status: 1 > | Pass 5: run failed. [man error::pass5] > > Is this systemtap-uprobes not being rebuilt when it should? systemtap-uprobes should not be used nowdays. Does anyone have pointer to what autobuilder is executing? Above message indicates that version of kernel that is running 'uname -v' does not match version string recorded in /usr/src/kernel/include/generated/compile.h (which is part of kernel-devsrc package). Usually such version check is performed by kernel CONFIG_MODVERSIONS, which is not enabled in OE build. SystemTap specifically adds its own kernel version check (the one firing above) and it could be disabled through command line parameter. It is easy to reproduce above error by building core-image-lsb-sdk, then running 'bitbake -c cleansstate linux-yocto' and rebuilding core-image-lsb-sdk image again. In resulting image 'uname -v' will not match UTS_VERSION from /usr/src/kernel/include/generated/compile.h. I.e now even kernel-devsrc is pulling information from virtual/kernel, kernel-devsrc is not rebuilt even if virtual/kernel is rebuilt. IMHO it should be rebuilt. But is it by design or something does not work, I cannot tell. In kernel-devsrc there are statements like 'do_install[depends] += "virtual/kernel:do_install"', but whether those just build ordering statement or whether they should trigger rebuild if "virtual/kernel:do_install" is newer is not clear. For now I'll modify stap test patch and call stap with kernel version check disabled assuming that running kernel and kernel-devsrc always would be close enough to run without problems. But it would be great if folks could clarify rebuild dependency rule between virtual/kernel and kernel-devsrc. Thanks, Victor > Ross > > On 22 March 2018 at 17:53, Victor Kamensky <kamensky@cisco.com> wrote: >> Add runtime test for stap to test basic SystemTap >> operations: can compile very basic module and run on >> target device. >> >> Signed-off-by: Victor Kamensky <kamensky@cisco.com> >> --- >> meta/lib/oeqa/runtime/cases/stap.py | 33 +++++++++++++++++++++++++++++++++ >> meta/lib/oeqa/runtime/files/hello.stp | 1 + >> 2 files changed, 34 insertions(+) >> create mode 100644 meta/lib/oeqa/runtime/cases/stap.py >> create mode 100644 meta/lib/oeqa/runtime/files/hello.stp >> >> diff --git a/meta/lib/oeqa/runtime/cases/stap.py b/meta/lib/oeqa/runtime/cases/stap.py >> new file mode 100644 >> index 0000000..005da71 >> --- /dev/null >> +++ b/meta/lib/oeqa/runtime/cases/stap.py >> @@ -0,0 +1,33 @@ >> +import os >> + >> +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 >> + >> +class StapTest(OERuntimeTestCase): >> + >> + @classmethod >> + def setUpClass(cls): >> + src = os.path.join(cls.tc.runtime_files_dir, 'hello.stp') >> + dst = '/tmp/hello.stp' >> + cls.tc.target.copyTo(src, dst) >> + >> + @classmethod >> + def tearDownClass(cls): >> + files = '/tmp/hello.stp' >> + cls.tc.target.run('rm %s' % files) >> + >> + @OETestID(1652) >> + @skipIfNotFeature('tools-profile', >> + 'Test requires tools-profile to be in IMAGE_FEATURES') >> + @OETestDepends(['kernelmodule.KernelModuleTest.test_kernel_module']) >> + def test_stap(self): >> + cmds = [ >> + 'cd /usr/src/kernel && make scripts', >> + 'cd /lib/modules/* && (if [ ! -L build ]; then ln -s /usr/src/kernel build; fi)', >> + 'stap --disable-cache /tmp/hello.stp' >> + ] >> + for cmd in cmds: >> + status, output = self.target.run(cmd, 900) >> + self.assertEqual(status, 0, msg='\n'.join([cmd, output])) >> diff --git a/meta/lib/oeqa/runtime/files/hello.stp b/meta/lib/oeqa/runtime/files/hello.stp >> new file mode 100644 >> index 0000000..3677147 >> --- /dev/null >> +++ b/meta/lib/oeqa/runtime/files/hello.stp >> @@ -0,0 +1 @@ >> +probe oneshot { println("hello world") } >> -- >> 2.7.4 >> >> -- >> _______________________________________________ >> Openembedded-core mailing list >> Openembedded-core@lists.openembedded.org >> http://lists.openembedded.org/mailman/listinfo/openembedded-core > -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core
diff --git a/meta/lib/oeqa/runtime/cases/stap.py b/meta/lib/oeqa/runtime/cases/stap.py new file mode 100644 index 0000000..005da71 --- /dev/null +++ b/meta/lib/oeqa/runtime/cases/stap.py @@ -0,0 +1,33 @@ +import os + +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 + +class StapTest(OERuntimeTestCase): + + @classmethod + def setUpClass(cls): + src = os.path.join(cls.tc.runtime_files_dir, 'hello.stp') + dst = '/tmp/hello.stp' + cls.tc.target.copyTo(src, dst) + + @classmethod + def tearDownClass(cls): + files = '/tmp/hello.stp' + cls.tc.target.run('rm %s' % files) + + @OETestID(1652) + @skipIfNotFeature('tools-profile', + 'Test requires tools-profile to be in IMAGE_FEATURES') + @OETestDepends(['kernelmodule.KernelModuleTest.test_kernel_module']) + def test_stap(self): + cmds = [ + 'cd /usr/src/kernel && make scripts', + 'cd /lib/modules/* && (if [ ! -L build ]; then ln -s /usr/src/kernel build; fi)', + 'stap --disable-cache /tmp/hello.stp' + ] + for cmd in cmds: + status, output = self.target.run(cmd, 900) + self.assertEqual(status, 0, msg='\n'.join([cmd, output])) diff --git a/meta/lib/oeqa/runtime/files/hello.stp b/meta/lib/oeqa/runtime/files/hello.stp new file mode 100644 index 0000000..3677147 --- /dev/null +++ b/meta/lib/oeqa/runtime/files/hello.stp @@ -0,0 +1 @@ +probe oneshot { println("hello world") }
Add runtime test for stap to test basic SystemTap operations: can compile very basic module and run on target device. Signed-off-by: Victor Kamensky <kamensky@cisco.com> --- meta/lib/oeqa/runtime/cases/stap.py | 33 +++++++++++++++++++++++++++++++++ meta/lib/oeqa/runtime/files/hello.stp | 1 + 2 files changed, 34 insertions(+) create mode 100644 meta/lib/oeqa/runtime/cases/stap.py create mode 100644 meta/lib/oeqa/runtime/files/hello.stp -- 2.7.4 -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core