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

Proposed by Kevin Becker
Status: Merged
Merge reported by: Po-Hsu Lin
Merged at revision: 576dc3e6c2f55a2b2d1a9cabb53f74cd68ebe721
Proposed branch: ~kevinbecker/+git/autotest-client-tests:kevinbecker/oslat
Merge into: ~canonical-kernel-team/+git/autotest-client-tests:master
Diff against target: 105 lines (+93/-0)
2 files modified
rt_tests_oslat/control (+19/-0)
rt_tests_oslat/rt_tests_oslat.py (+74/-0)
Reviewer Review Type Date Requested Status
Po-Hsu Lin Approve
Francis Ginther Approve
Review via email: mp+463150@code.launchpad.net

Commit message

UBUNTU: SAUCE: Added oslat test

For now this does not have a pass/fail and is only added for data gathering purposes.

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

To post a comment you must log in.
Revision history for this message
Francis Ginther (fginther) wrote :

Looks good to start running.

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

Applied and pushed, thanks.

Preview Diff

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

Subscribers

People subscribed via source and target branches