Merge ~kevinbecker/+git/autotest-client-tests:kevinbecker/pmqtest into ~canonical-kernel-team/+git/autotest-client-tests:master

Proposed by Kevin Becker
Status: Merged
Approved by: Po-Hsu Lin
Approved revision: 1ee1ed78a017ee8f00d9ee8d794936b15083a7f2
Merge reported by: Po-Hsu Lin
Merged at revision: 1ee1ed78a017ee8f00d9ee8d794936b15083a7f2
Proposed branch: ~kevinbecker/+git/autotest-client-tests:kevinbecker/pmqtest
Merge into: ~canonical-kernel-team/+git/autotest-client-tests:master
Diff against target: 117 lines (+105/-0)
2 files modified
rt_tests_pmqtest/control (+20/-0)
rt_tests_pmqtest/rt_tests_pmqtest.py (+85/-0)
Reviewer Review Type Date Requested Status
Po-Hsu Lin Approve
Sean Feole Pending
Francis Ginther Pending
Canonical Kernel Team Pending
Review via email: mp+463310@code.launchpad.net

Commit message

UBUNTU: SAUCE: Added pmqtest from upstream

Signed-off-by: Kevin Becker <email address hidden>

To post a comment you must log in.
Revision history for this message
Po-Hsu Lin (cypressyew) wrote :

Looking good.

One small nit is that we can check Max > 100 when parsing test output:

  for line in lines:
      if 'Max' in line:
          # Check if any max value is over 100
          if int(line.split()[-1]) > 100
              raise error.TestError('FAIL: Max latency over 100us.')

But this is rather trivial.

review: Approve
Revision history for this message
Po-Hsu Lin (cypressyew) wrote :

Applied and pushed.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/rt_tests_pmqtest/control b/rt_tests_pmqtest/control
0new file mode 1006440new file mode 100644
index 0000000..9248a47
--- /dev/null
+++ b/rt_tests_pmqtest/control
@@ -0,0 +1,20 @@
1AUTHOR = '''
2Authors:
3Carsten Emde <C.Emde@osadl.org>
4 '''
5NAME = "pmqtest"
6DOC = '''
7description rt test utils
8URL https://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git
9'''
10SUITE = "None"
11TIME = "MEDIUM"
12TEST_CLASS = 'kernel'
13TEST_CATEGORY = 'Functional'
14TEST_TYPE = 'client'
15
16result = job.run_test_detail('rt_tests_pmqtest', test_name='setup', tag='setup', timeout=60*5)
17if result == 'GOOD':
18 job.run_test('rt_tests_pmqtest', test_name='rt_tests_pmqtest', tag='rt_tests_pmqtest')
19else:
20 print("ERROR: test failed to build")
diff --git a/rt_tests_pmqtest/rt_tests_pmqtest.py b/rt_tests_pmqtest/rt_tests_pmqtest.py
0new file mode 10064421new file mode 100644
index 0000000..d9e3fda
--- /dev/null
+++ b/rt_tests_pmqtest/rt_tests_pmqtest.py
@@ -0,0 +1,85 @@
1import multiprocessing
2import os
3import platform
4import re
5import shutil
6from autotest.client import canonical, test, utils
7from autotest.client.shared import error
8
9class rt_tests_pmqtest(test.test):
10 version = 1
11
12 def initialize(self):
13 self.flavour = re.split('-\d*-', platform.uname()[2])[-1]
14 self.arch = platform.processor()
15
16 def install_required_pkgs(self):
17 try:
18 series = platform.dist()[2]
19 except AttributeError:
20 import distro
21 series = distro.codename()
22
23 pkgs = [
24 'build-essential',
25 'git',
26 'libnuma-dev',
27 ]
28 gcc = 'gcc' if self.arch in ['ppc64le', 'aarch64', 's390x', 'riscv64'] else 'gcc-multilib'
29 pkgs.append(gcc)
30
31 cmd = 'yes "" | DEBIAN_FRONTEND=noninteractive apt-get install --yes --force-yes ' + ' '.join(pkgs)
32 self.results = utils.system_output(cmd, retain_output=True)
33
34 # setup
35 #
36 # Automatically run when there is no autotest/client/tmp/<test-suite> directory
37 #
38 def setup(self):
39 self.install_required_pkgs()
40 self.job.require_gcc()
41 os.chdir(self.srcdir)
42 shutil.rmtree('rt-tests', ignore_errors=True)
43 canonical.setup_proxy()
44 branch = 'main'
45 cmd = 'git clone -b {} https://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git'.format(branch)
46 utils.system_output(cmd, retain_output=True)
47
48 # Print test suite HEAD SHA1 commit id for future reference
49 os.chdir(os.path.join(self.srcdir, 'rt-tests'))
50 title_local = utils.system_output("git log --oneline -1 | sed 's/(.*)//'", retain_output=False, verbose=False)
51 title_upstream = utils.system_output("git log --oneline | grep -v SAUCE | head -1", retain_output=False, verbose=False)
52 print("Latest commit in '{}' branch: {}".format(branch, title_local))
53 print("Latest upstream commit: {}".format(title_upstream))
54
55 try:
56 nprocs = '-j' + str(multiprocessing.cpu_count())
57 except:
58 nprocs = ''
59 utils.make(nprocs)
60
61
62 # run_once
63 #
64 # Driven by the control file for each individual test.
65 #
66 # Runs pmqtest for 60 seconds. This will fail if the max latency is over 100us.
67 #
68 def run_once(self, test_name, args='-Sp80 -i100 -d0 -b100 -q -D60', exit_on_error=True):
69 if test_name == 'setup':
70 return
71
72 self.results = utils.system_output(self.srcdir + '/rt-tests/pmqtest ' + args, retain_output=True)
73
74 lines = self.results.split('\n')
75
76 max_latencies = []
77 for line in lines:
78 if 'Max' in line:
79 max_latencies.append(int(line.split()[-1]))
80
81 # Check if any max value is over 100
82 if any(value > 100 for value in max_latencies):
83 raise error.TestError('FAIL: Max latency over 100us.')
84
85 return

Subscribers

People subscribed via source and target branches