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

Execute rust testing by exporting required paths.
And capture the output in result.output

Print the results in case of failure of runCmd().

Signed-off-by: Vinay Kumar <[email protected]>
---
 meta/lib/oeqa/selftest/cases/rust.py | 52 ++++++++++++++++++++++++++++
 1 file changed, 52 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..19206e7b07
--- /dev/null
+++ b/meta/lib/oeqa/selftest/cases/rust.py
@@ -0,0 +1,52 @@
+# SPDX-License-Identifier: MIT
+import os
+import subprocess
+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
+from oeqa.utils.sshcontrol import SSHControl
+
+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 to image through scp
+                       ssh = SSHControl(ip=qemu.ip, logfile=qemu.sshlog, 
user="root")
+                       ssh.copy_to(builddir + "/" + 
"build/x86_64-unknown-linux-gnu/stage2-tools-bin/remote-test-server","~/")
+                       # Execute remote-test-server on image through 
background ssh
+                       command = '~/remote-test-server -v remote'
+                       sshrun=subprocess.Popen(("ssh", '-o',  
'UserKnownHostsFile=/dev/null', '-o',  'StrictHostKeyChecking=no', '-f', 
"root@%s" % qemu.ip, command),
+                                shell=False,
+                                stdout=subprocess.PIPE,
+                                stderr=subprocess.PIPE)
+                       # 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 = " 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 codegen %s --target %s ;" % (builddir, 
testargs, targetsys)
+                       result = runCmd(cmd)
+
+@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 (#152386): 
https://lists.openembedded.org/g/openembedded-core/message/152386
Mute This Topic: https://lists.openembedded.org/mt/83152027/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to