[ACT][PATCH] UBUNTU: SAUCE: ubuntu_ltp: split those passed tests to ubuntu_ltp_stable

Po-Hsu Lin po-hsu.lin at canonical.com
Tue Mar 9 14:53:30 UTC 2021


Even with syscalls test split into the ubuntu_ltp_syscalls suite,
the ubuntu_ltp suite is still a huge chunk.

Those test that always pass will now be put into the
ubuntu_ltp_stable suite.

On the other hand, those subsets that keeps failing will be tested in
ubuntu_ltp, subsets as follows:
 * fs
 * mm
 * controllers
 * commands
 * cpuhotplug
 * net.ipv6_lib
 * cve
 * crypto
 * kernel_misc

In this way the ubuntu_ltp will be eaiser to review, and reduce the
chance to timeout on some instances.

Signed-off-by: Po-Hsu Lin <po-hsu.lin at canonical.com>
---
 ubuntu_ltp/control                     |   8 +-
 ubuntu_ltp_stable/blacklist.precise    |   1 +
 ubuntu_ltp_stable/blacklist.trusty     |   1 +
 ubuntu_ltp_stable/blacklist.xenial     |   1 +
 ubuntu_ltp_stable/control              |  27 +++++
 ubuntu_ltp_stable/skip                 |   6 +
 ubuntu_ltp_stable/ubuntu_ltp_stable.py | 149 +++++++++++++++++++++++++
 7 files changed, 187 insertions(+), 6 deletions(-)
 create mode 100644 ubuntu_ltp_stable/blacklist.precise
 create mode 100644 ubuntu_ltp_stable/blacklist.trusty
 create mode 100644 ubuntu_ltp_stable/blacklist.xenial
 create mode 100644 ubuntu_ltp_stable/control
 create mode 100644 ubuntu_ltp_stable/skip
 create mode 100644 ubuntu_ltp_stable/ubuntu_ltp_stable.py

diff --git a/ubuntu_ltp/control b/ubuntu_ltp/control
index 0343d8d1..27ec8602 100644
--- a/ubuntu_ltp/control
+++ b/ubuntu_ltp/control
@@ -15,12 +15,8 @@ name = 'ubuntu_ltp'
 results = job.run_test_detail('ubuntu_ltp', test_name='setup', tag='setup', timeout=30*60)
 
 tests = [
-    'fs',         'fs_perms_simple', 'fsx',            'dio',         'io',
-    'mm',         'ipc',             'sched',          'math',        'nptl',
-    'pty',        'containers',      'fs_bind',        'controllers', 'filecaps',
-    'cap_bounds', 'fcntl-locktests', 'connectors',     'power_management_tests',
-    'hugetlb',    'commands',        'hyperthreading', 'can',
-    'cpuhotplug', 'net.ipv6_lib',    'input',          'cve',         'crypto',
+    'fs',         'mm',           'controllers', 'commands',
+    'cpuhotplug', 'net.ipv6_lib', 'cve',         'crypto',
     'kernel_misc'
 ]
 for test in tests:
diff --git a/ubuntu_ltp_stable/blacklist.precise b/ubuntu_ltp_stable/blacklist.precise
new file mode 100644
index 00000000..27ba77dd
--- /dev/null
+++ b/ubuntu_ltp_stable/blacklist.precise
@@ -0,0 +1 @@
+true
diff --git a/ubuntu_ltp_stable/blacklist.trusty b/ubuntu_ltp_stable/blacklist.trusty
new file mode 100644
index 00000000..27ba77dd
--- /dev/null
+++ b/ubuntu_ltp_stable/blacklist.trusty
@@ -0,0 +1 @@
+true
diff --git a/ubuntu_ltp_stable/blacklist.xenial b/ubuntu_ltp_stable/blacklist.xenial
new file mode 100644
index 00000000..27ba77dd
--- /dev/null
+++ b/ubuntu_ltp_stable/blacklist.xenial
@@ -0,0 +1 @@
+true
diff --git a/ubuntu_ltp_stable/control b/ubuntu_ltp_stable/control
new file mode 100644
index 00000000..fec4a8c1
--- /dev/null
+++ b/ubuntu_ltp_stable/control
@@ -0,0 +1,27 @@
+AUTHOR = "Ubuntu"
+NAME = "ltp"
+CRITERIA = """
+Use the upstream LTP repository
+"""
+SUITE = "None"
+TIME = "SHORT"
+TEST_CLASS = 'kernel'
+TEST_CATEGORY = 'Functional'
+TEST_TYPE = "client"
+DOC = ""
+
+name = 'ubuntu_ltp_stable'
+
+results = job.run_test_detail('ubuntu_ltp_stable', test_name='setup', tag='setup', timeout=30*60)
+
+tests = [
+    'fs_perms_simple', 'fsx',             'dio',        'io',
+    'ipc',             'sched',           'math',       'nptl',
+    'pty',             'containers',      'fs_bind',    'filecaps',
+    'cap_bounds',      'fcntl-locktests', 'connectors', 'power_management_tests',
+    'hugetlb',         'hyperthreading',  'can',        'input'
+]
+for test in tests:
+    results = job.run_test_detail('ubuntu_ltp_stable', test_name=test, tag=test, timeout=60*60*2)
+
+# vi:set ts=4 sw=4 expandtab syntax=python:
diff --git a/ubuntu_ltp_stable/skip b/ubuntu_ltp_stable/skip
new file mode 100644
index 00000000..0624078e
--- /dev/null
+++ b/ubuntu_ltp_stable/skip
@@ -0,0 +1,6 @@
+oom01
+oom02
+oom03
+oom04
+oom05
+mkswap01_sh mkswap01.sh
diff --git a/ubuntu_ltp_stable/ubuntu_ltp_stable.py b/ubuntu_ltp_stable/ubuntu_ltp_stable.py
new file mode 100644
index 00000000..1d86ae5d
--- /dev/null
+++ b/ubuntu_ltp_stable/ubuntu_ltp_stable.py
@@ -0,0 +1,149 @@
+#
+#
+import multiprocessing
+import os
+import platform
+import re
+import time
+from autotest.client                        import test, utils
+from autotest.client.shared     import error
+
+class ubuntu_ltp_stable(test.test):
+    version = 1
+
+    def install_required_pkgs(self):
+        try:
+            series = platform.dist()[2]
+        except AttributeError:
+            import distro
+            series = distro.codename()
+
+        pkgs = [
+            'automake',
+            'bison',
+            'build-essential',
+            'byacc',
+            'flex',
+            'git',
+            'keyutils',
+            'libacl1-dev',
+            'libaio-dev',
+            'libcap-dev',
+            'libmm-dev',
+            'libnuma-dev',
+            'libsctp-dev',
+            'libselinux1-dev',
+            'libssl-dev',
+            'libtirpc-dev',
+            'pkg-config',
+            'quota',
+            'virt-what',
+            'xfslibs-dev',
+            'xfsprogs',
+        ]
+        gcc = 'gcc' if self.arch in ['ppc64le', 'aarch64', 's390x', 'riscv64'] else 'gcc-multilib'
+        pkgs.append(gcc)
+
+        if self.flavour in ['aws', 'azure', 'azure-fips', 'gcp', 'gke', 'gkeop']:
+             pkgs.append('linux-modules-extra-' + self.flavour + '*')
+
+        cmd = 'yes "" | DEBIAN_FRONTEND=noninteractive apt-get install --yes --force-yes ' + ' '.join(pkgs)
+        self.results = utils.system_output(cmd, retain_output=True)
+
+    def initialize(self):
+        self.flavour = re.split('-\d*-', platform.uname()[2])[-1]
+        self.arch = platform.processor()
+        pass
+
+    # setup
+    #
+    #    Automatically run when there is no autotest/client/tmp/<test-suite> directory
+    #
+    def setup(self):
+        self.install_required_pkgs()
+        self.job.require_gcc()
+        os.chdir(self.srcdir)
+        cmd = 'git clone --depth=1 https://github.com/linux-test-project/ltp.git'
+        self.results = utils.system_output(cmd, retain_output=True)
+
+        # Print test suite HEAD SHA1 commit id for future reference
+        os.chdir(os.path.join(self.srcdir, 'ltp'))
+        sha1 = utils.system_output('git rev-parse --short HEAD', retain_output=False, verbose=False)
+        print("Test suite HEAD SHA1: {}".format(sha1))
+
+        # Disable NTFS as we disable RW support
+        cmd = 'sed -i /ntfs/d lib/tst_supported_fs_types.c'
+        utils.system_output(cmd)
+
+        utils.make('autotools')
+        utils.configure()
+        try:
+            nprocs = '-j' + str(multiprocessing.cpu_count())
+        except:
+            nprocs = ''
+        utils.make(nprocs)
+        utils.make('install')
+
+        cmd = 'cat %s > /tmp/skip' % os.path.join(self.bindir, 'skip')
+        utils.system_output(cmd)
+
+    # run_once
+    #
+    #    Driven by the control file for each individual test.
+    #
+    def run_once(self, test_name):
+        if test_name == 'setup':
+            return
+        fn = '/tmp/syscalls-' + time.strftime("%h%d-%H%M%S")
+        log_failed = fn + '.failed'
+        log_output = fn + '.output'
+
+        fn = '/opt/ltp/runtest/%s' % (test_name)
+
+        print("Setting LTP_TIMEOUT_MUL exceptions...")
+        timeout_cases = { 'zram01': '5'}
+        if utils.system_output('virt-what', verbose=False):
+            print("Running in VM, set timeout multiplier LTP_TIMEOUT_MUL=3 for memcg_test_3 (lp:1836694)")
+            timeout_cases['memcg_test_3'] = '3'
+        if self.flavour in ['azure', 'oracle']:
+            print("Running on Azure / Oracle, set timeout multiplier LTP_TIMEOUT_MUL=3 for cve-2018-1000204 / ioctl_sg01 (lp:1899413)")
+            timeout_cases['ioctl_sg01'] = '3'
+        if self.arch in ['ppc64le']:
+            print("Running on PowerPC, set timeout multiplier LTP_TIMEOUT_MUL=3 for fs_fill (lp:1878763)")
+            timeout_cases['fs_fill'] = '3'
+
+        os.environ["LTP_TIMEOUT_MUL"] = '1'
+        with open(fn , 'r') as f:
+            for line in f:
+                if line.strip() and not line.startswith('#'):
+                    with open ('/tmp/target' , 'w') as t:
+                        t.write(line)
+
+                    for _case in timeout_cases:
+                        if _case in line:
+                            os.environ["LTP_TIMEOUT_MUL"] = timeout_cases[_case]
+                            break
+
+                    cmd = '/opt/ltp/runltp -f /tmp/target -S /tmp/skip -C %s -q -l %s -o %s -T /dev/null' % (log_failed, log_output, log_output)
+                    utils.run(cmd, ignore_status=True, verbose=False)
+                    # /dev/loop# creation will be taken care by the runltp
+
+                    # Restore the timeout multiplier
+                    os.environ["LTP_TIMEOUT_MUL"] = '1'
+
+        num_failed = sum(1 for line in open(log_failed))
+        print("== Test Suite Summary ==")
+        print("{} test cases failed".format(num_failed))
+
+        if num_failed > 0:
+            cmd = "awk '{print$1}' " + log_failed + " | sort | uniq | tr '\n' ' '"
+            failed_list = utils.system_output(cmd, retain_output=False, verbose=False)
+            print("Failed test cases : %s" % failed_list)
+
+        cmd = 'cat ' + log_output
+        utils.system_output(cmd, retain_output=True, verbose=False)
+
+        if num_failed > 0:
+            raise error.TestError('Test failed for ' + test_name)
+
+# vi:set ts=4 sw=4 expandtab syntax=python:
-- 
2.17.1




More information about the kernel-team mailing list