diff options
-rw-r--r-- | meta/lib/oeqa/selftest/devtool.py | 72 |
1 files changed, 34 insertions, 38 deletions
diff --git a/meta/lib/oeqa/selftest/devtool.py b/meta/lib/oeqa/selftest/devtool.py index 21cd7f5291..c833e5439c 100644 --- a/meta/lib/oeqa/selftest/devtool.py +++ b/meta/lib/oeqa/selftest/devtool.py | |||
@@ -8,7 +8,7 @@ import glob | |||
8 | 8 | ||
9 | import oeqa.utils.ftools as ftools | 9 | import oeqa.utils.ftools as ftools |
10 | from oeqa.selftest.base import oeSelfTest | 10 | from oeqa.selftest.base import oeSelfTest |
11 | from oeqa.utils.commands import runCmd, bitbake, get_bb_var, create_temp_layer | 11 | from oeqa.utils.commands import runCmd, bitbake, get_bb_var, create_temp_layer, runqemu |
12 | from oeqa.utils.decorators import testcase | 12 | from oeqa.utils.decorators import testcase |
13 | 13 | ||
14 | class DevtoolBase(oeSelfTest): | 14 | class DevtoolBase(oeSelfTest): |
@@ -799,12 +799,10 @@ class DevtoolTests(DevtoolBase): | |||
799 | self.skipTest('No tap devices found - you must set up tap devices with scripts/runqemu-gen-tapdevs before running this test') | 799 | self.skipTest('No tap devices found - you must set up tap devices with scripts/runqemu-gen-tapdevs before running this test') |
800 | workspacedir = os.path.join(self.builddir, 'workspace') | 800 | workspacedir = os.path.join(self.builddir, 'workspace') |
801 | self.assertTrue(not os.path.exists(workspacedir), 'This test cannot be run with a workspace directory under the build directory') | 801 | self.assertTrue(not os.path.exists(workspacedir), 'This test cannot be run with a workspace directory under the build directory') |
802 | import pexpect | ||
803 | # Definitions | 802 | # Definitions |
804 | testrecipe = 'mdadm' | 803 | testrecipe = 'mdadm' |
805 | testfile = '/sbin/mdadm' | 804 | testfile = '/sbin/mdadm' |
806 | testimage = 'oe-selftest-image' | 805 | testimage = 'oe-selftest-image' |
807 | testhost = '192.168.7.2' | ||
808 | testcommand = '/sbin/mdadm --help' | 806 | testcommand = '/sbin/mdadm --help' |
809 | # Build an image to run | 807 | # Build an image to run |
810 | bitbake("%s qemu-native qemu-helper-native" % testimage) | 808 | bitbake("%s qemu-native qemu-helper-native" % testimage) |
@@ -821,44 +819,42 @@ class DevtoolTests(DevtoolBase): | |||
821 | self.add_command_to_tearDown('bitbake -c clean %s' % testrecipe) | 819 | self.add_command_to_tearDown('bitbake -c clean %s' % testrecipe) |
822 | result = runCmd('devtool modify %s -x %s' % (testrecipe, tempdir)) | 820 | result = runCmd('devtool modify %s -x %s' % (testrecipe, tempdir)) |
823 | # Test that deploy-target at this point fails (properly) | 821 | # Test that deploy-target at this point fails (properly) |
824 | result = runCmd('devtool deploy-target -n %s root@%s' % (testrecipe, testhost), ignore_status=True) | 822 | result = runCmd('devtool deploy-target -n %s root@localhost' % testrecipe, ignore_status=True) |
825 | self.assertNotEqual(result.output, 0, 'devtool deploy-target should have failed, output: %s' % result.output) | 823 | self.assertNotEqual(result.output, 0, 'devtool deploy-target should have failed, output: %s' % result.output) |
826 | self.assertNotIn(result.output, 'Traceback', 'devtool deploy-target should have failed with a proper error not a traceback, output: %s' % result.output) | 824 | self.assertNotIn(result.output, 'Traceback', 'devtool deploy-target should have failed with a proper error not a traceback, output: %s' % result.output) |
827 | result = runCmd('devtool build %s' % testrecipe) | 825 | result = runCmd('devtool build %s' % testrecipe) |
828 | # First try a dry-run of deploy-target | 826 | # First try a dry-run of deploy-target |
829 | result = runCmd('devtool deploy-target -n %s root@%s' % (testrecipe, testhost)) | 827 | result = runCmd('devtool deploy-target -n %s root@localhost' % testrecipe) |
830 | self.assertIn(' %s' % testfile, result.output) | 828 | self.assertIn(' %s' % testfile, result.output) |
831 | # Boot the image | 829 | # Boot the image |
832 | console = pexpect.spawn('runqemu %s %s qemuparams="-snapshot" nographic' % (machine, testimage)) | 830 | with runqemu(testimage, self) as qemu: |
833 | console.expect("login:", timeout=120) | 831 | # Now really test deploy-target |
834 | # Now really test deploy-target | 832 | result = runCmd('devtool deploy-target -c %s root@%s' % (testrecipe, qemu.ip)) |
835 | result = runCmd('devtool deploy-target -c %s root@%s' % (testrecipe, testhost)) | 833 | # Run a test command to see if it was installed properly |
836 | # Run a test command to see if it was installed properly | 834 | sshargs = '-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' |
837 | sshargs = '-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' | 835 | result = runCmd('ssh %s root@%s %s' % (sshargs, qemu.ip, testcommand)) |
838 | result = runCmd('ssh %s root@%s %s' % (sshargs, testhost, testcommand)) | 836 | # Check if it deployed all of the files with the right ownership/perms |
839 | # Check if it deployed all of the files with the right ownership/perms | 837 | # First look on the host - need to do this under pseudo to get the correct ownership/perms |
840 | # First look on the host - need to do this under pseudo to get the correct ownership/perms | 838 | installdir = get_bb_var('D', testrecipe) |
841 | installdir = get_bb_var('D', testrecipe) | 839 | fakerootenv = get_bb_var('FAKEROOTENV', testrecipe) |
842 | fakerootenv = get_bb_var('FAKEROOTENV', testrecipe) | 840 | fakerootcmd = get_bb_var('FAKEROOTCMD', testrecipe) |
843 | fakerootcmd = get_bb_var('FAKEROOTCMD', testrecipe) | 841 | result = runCmd('%s %s find . -type f -exec ls -l {} \;' % (fakerootenv, fakerootcmd), cwd=installdir) |
844 | result = runCmd('%s %s find . -type f -exec ls -l {} \;' % (fakerootenv, fakerootcmd), cwd=installdir) | 842 | filelist1 = self._process_ls_output(result.output) |
845 | filelist1 = self._process_ls_output(result.output) | 843 | |
846 | 844 | # Now look on the target | |
847 | # Now look on the target | 845 | tempdir2 = tempfile.mkdtemp(prefix='devtoolqa') |
848 | tempdir2 = tempfile.mkdtemp(prefix='devtoolqa') | 846 | self.track_for_cleanup(tempdir2) |
849 | self.track_for_cleanup(tempdir2) | 847 | tmpfilelist = os.path.join(tempdir2, 'files.txt') |
850 | tmpfilelist = os.path.join(tempdir2, 'files.txt') | 848 | with open(tmpfilelist, 'w') as f: |
851 | with open(tmpfilelist, 'w') as f: | 849 | for line in filelist1: |
852 | for line in filelist1: | 850 | splitline = line.split() |
853 | splitline = line.split() | 851 | f.write(splitline[-1] + '\n') |
854 | f.write(splitline[-1] + '\n') | 852 | result = runCmd('cat %s | ssh -q %s root@%s \'xargs ls -l\'' % (tmpfilelist, sshargs, qemu.ip)) |
855 | result = runCmd('cat %s | ssh -q %s root@%s \'xargs ls -l\'' % (tmpfilelist, sshargs, testhost)) | 853 | filelist2 = self._process_ls_output(result.output) |
856 | filelist2 = self._process_ls_output(result.output) | 854 | filelist1.sort(key=lambda item: item.split()[-1]) |
857 | filelist1.sort(key=lambda item: item.split()[-1]) | 855 | filelist2.sort(key=lambda item: item.split()[-1]) |
858 | filelist2.sort(key=lambda item: item.split()[-1]) | 856 | self.assertEqual(filelist1, filelist2) |
859 | self.assertEqual(filelist1, filelist2) | 857 | # Test undeploy-target |
860 | # Test undeploy-target | 858 | result = runCmd('devtool undeploy-target -c %s root@%s' % (testrecipe, qemu.ip)) |
861 | result = runCmd('devtool undeploy-target -c %s root@%s' % (testrecipe, testhost)) | 859 | result = runCmd('ssh %s root@%s %s' % (sshargs, qemu.ip, testcommand), ignore_status=True) |
862 | result = runCmd('ssh %s root@%s %s' % (sshargs, testhost, testcommand), ignore_status=True) | 860 | self.assertNotEqual(result, 0, 'undeploy-target did not remove command as it should have') |
863 | self.assertNotEqual(result, 0, 'undeploy-target did not remove command as it should have') | ||
864 | console.close() | ||