Build remote-test-server copy to image and execute
remotely through background ssh.

Execute rust testing by exporting required paths. Capturing
test results in summary.txt at rust source folder.

Kill "remote-test-server" on the image through ssh,
once testing is completed.

Signed-off-by: Vinay Kumar <[email protected]>
---
 meta/lib/oeqa/selftest/cases/rust.py | 50 ++++++++++++++++++++++++++++
 1 file changed, 50 insertions(+)
 create mode 100644 meta/lib/oeqa/selftest/cases/rust.py

diff --git a/meta/lib/oeqa/selftest/cases/rust.py 
b/meta/lib/oeqa/selftest/cases/rust.py
new file mode 100644
index 0000000000..066a28c046
--- /dev/null
+++ b/meta/lib/oeqa/selftest/cases/rust.py
@@ -0,0 +1,50 @@
+# SPDX-License-Identifier: MIT
+import os
+from oeqa.core.decorator import OETestTag
+from oeqa.core.case import OEPTestResultTestCase
+from oeqa.selftest.case import OESelftestTestCase
+from oeqa.utils.commands import runCmd, bitbake, get_bb_var, get_bb_vars, 
runqemu, Command
+
+class RustSelfTestBase(OESelftestTestCase, OEPTestResultTestCase):
+
+       def run_check_emulated(self, *args, **kwargs):
+               # build remote-test-server before image build
+               recipe = "rust-testsuite"
+               bitbake("{} -c compile".format(recipe))
+               builddir = get_bb_var("B", "rust-testsuite")
+               # build core-image-minimal with required packages
+               default_installed_packages = ["libgcc", "libstdc++", 
"libatomic", "libgomp"]
+               features = []
+               features.append('IMAGE_FEATURES += "ssh-server-openssh"')
+               features.append('CORE_IMAGE_EXTRA_INSTALL += "{0}"'.format(" 
".join(default_installed_packages)))
+               self.write_config("\n".join(features))
+               bitbake("core-image-minimal")
+               # wrap the execution with a qemu instance
+               with runqemu("core-image-minimal", runqemuparams = "nographic") 
as qemu:
+                       #Copy remote-test-server through scp and execute 
through background ssh
+                       sshargs = '-o UserKnownHostsFile=/dev/null -o 
StrictHostKeyChecking=no -o LogLevel=ERROR'
+                       cmd = "scp %s 
%s/build/x86_64-unknown-linux-gnu/stage2-tools-bin/remote-test-server 
root@%s:~/ ;" % (sshargs, builddir, qemu.ip)
+                       testcommand = '~/remote-test-server -v remote'
+                       cmd = cmd + "ssh %s -f root@%s \"%s\";" % (sshargs, 
qemu.ip, testcommand)
+                       # Get the values of variables.
+                       targetsys = get_bb_var("TARGET_SYS", "rust-testsuite")
+                       rustlibpath = get_bb_var("STAGING_LIBDIR_NATIVE", 
"rust-testsuite")
+                       tmpdir = get_bb_var("TMPDIR", "rust-testsuite")
+                       testargs = "--no-fail-fast --bless"
+                       # Set path for target-poky-linux-gcc, RUST_TARGET_PATH 
and hosttools.                        
+                       cmd = cmd + " export PATH=%s/../bin:$PATH;" % 
rustlibpath
+                       cmd = cmd + " export 
PATH=%s/../bin/%s:%s/hosttools:$PATH;" % (rustlibpath, targetsys, tmpdir) 
+                       cmd = cmd + " export RUST_TARGET_PATH=%s/rustlib;" % 
rustlibpath
+                       # Trigger testing.                        
+                       cmd = cmd + " export TEST_DEVICE_ADDR=\"%s:12345\";" % 
qemu.ip
+                       cmd = cmd + " cd %s;  python3 
src/bootstrap/bootstrap.py test %s --target %s > summary.txt 2>&1;" % 
(builddir, testargs, targetsys)
+                       # To kill remote-test-server executing through 
background ssh
+                       killcommand = "kill -9 \$(ps | grep remote-test-server 
|  grep -v \"grep\" | awk '{print \$1}')"
+                       cmd = cmd + "ssh %s root@%s \"%s\";" % (sshargs, 
qemu.ip, killcommand)
+                       result = runCmd(cmd)
+                       self.assertEqual(0, result.status, 'oe-selftest 
returned a non 0 status:%s' % result.output)                        
+
+@OETestTag("toolchain-system")
+class RustSelfTestSystemEmulated(RustSelfTestBase):
+       def test_rust(self):
+               self.run_check_emulated("rust")
-- 
2.17.1

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#152306): 
https://lists.openembedded.org/g/openembedded-core/message/152306
Mute This Topic: https://lists.openembedded.org/mt/83120117/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to