Message ID | 20220610104944.400217-1-po-hsu.lin@canonical.com |
---|---|
State | New |
Headers | show |
Series | [autotest-client-tests] UBUNTU: SAUCE: ubuntu_qrt_kernel_aslr_collisions: improve test granularity | expand |
Acked-by: Sean Feole <sean.feole@canonical.com> On 6/10/22 6:49 AM, Po-Hsu Lin wrote: > Improve the test granularity like how we do it for the > ubuntu_qrt_kernel_security test, run sub test cases one-by-one with: > python2 test-kernel-aslr-collisions.py -v TestClass.TestMethod > > Note that the KernelASLRCollisionsTest.test_stack_collision test will > take about 8 minutes to run, set timeout to 15 minutes to guarantee > it can finish in time. > > Patch tested with T-3.13 on bare-metal node "gonzo", and it works as > expected. > > Signed-off-by: Po-Hsu Lin <po-hsu.lin@canonical.com> > --- > ubuntu_qrt_kernel_aslr_collisions/control | 19 ++++++++++++++++++- > .../ubuntu_qrt_kernel_aslr_collisions.py | 2 +- > 2 files changed, 19 insertions(+), 2 deletions(-) > > diff --git a/ubuntu_qrt_kernel_aslr_collisions/control b/ubuntu_qrt_kernel_aslr_collisions/control > index 26074501..8970cee0 100644 > --- a/ubuntu_qrt_kernel_aslr_collisions/control > +++ b/ubuntu_qrt_kernel_aslr_collisions/control > @@ -12,6 +12,23 @@ result = job.run_test_detail(NAME, test_name='setup', tag='setup', timeout=60*60 > if result == 'ERROR': > print("ERROR: test setup has failed, skipping all the sub tests") > else: > - result = job.run_test_detail(NAME, test_name='test-kernel-aslr-collisions.py', tag='test-kernel-aslr-collisions.py', timeout=60*60*2) > + fn = os.path.join(job.bindir, 'tmp', NAME, 'src', 'qa-regression-testing', 'scripts', 'test-kernel-aslr-collisions.py') > + cmd = 'grep -e "class .*Test.*:" -e "def test_.*:" {} | sed "s/(.*)://"'.format(fn) > + output = utils.system_output(cmd, verbose=False).splitlines() > + all_tests = {} > + for line in output: > + item = line.strip() > + if item.startswith('class '): > + category = item.replace('class ', '') > + all_tests[category] = [] > + elif item.startswith('def '): > + sub_test = item.replace('def ', '') > + all_tests[category].append(sub_test) > + > + for category in all_tests: > + if all_tests[category]: > + for sub_test in all_tests[category]: > + test = '{}.{}'.format(category, sub_test) > + job.run_test_detail(NAME, test_name=test, tag=test, timeout=60*15) > > # vi:set ts=4 sw=4 expandtab syntax=python: > diff --git a/ubuntu_qrt_kernel_aslr_collisions/ubuntu_qrt_kernel_aslr_collisions.py b/ubuntu_qrt_kernel_aslr_collisions/ubuntu_qrt_kernel_aslr_collisions.py > index 51dab5ed..288371a5 100644 > --- a/ubuntu_qrt_kernel_aslr_collisions/ubuntu_qrt_kernel_aslr_collisions.py > +++ b/ubuntu_qrt_kernel_aslr_collisions/ubuntu_qrt_kernel_aslr_collisions.py > @@ -52,7 +52,7 @@ class ubuntu_qrt_kernel_aslr_collisions(test.test): > scripts = os.path.join(self.srcdir, 'qa-regression-testing', 'scripts') > os.chdir(scripts) > > - cmd = 'python2 ./%s -v' % test_name > + cmd = 'python2 ./test-kernel-aslr-collisions.py -v %s' % test_name > self.results = utils.system_output(cmd, retain_output=True) > >
Applied and pushed. Thanks Sam
diff --git a/ubuntu_qrt_kernel_aslr_collisions/control b/ubuntu_qrt_kernel_aslr_collisions/control index 26074501..8970cee0 100644 --- a/ubuntu_qrt_kernel_aslr_collisions/control +++ b/ubuntu_qrt_kernel_aslr_collisions/control @@ -12,6 +12,23 @@ result = job.run_test_detail(NAME, test_name='setup', tag='setup', timeout=60*60 if result == 'ERROR': print("ERROR: test setup has failed, skipping all the sub tests") else: - result = job.run_test_detail(NAME, test_name='test-kernel-aslr-collisions.py', tag='test-kernel-aslr-collisions.py', timeout=60*60*2) + fn = os.path.join(job.bindir, 'tmp', NAME, 'src', 'qa-regression-testing', 'scripts', 'test-kernel-aslr-collisions.py') + cmd = 'grep -e "class .*Test.*:" -e "def test_.*:" {} | sed "s/(.*)://"'.format(fn) + output = utils.system_output(cmd, verbose=False).splitlines() + all_tests = {} + for line in output: + item = line.strip() + if item.startswith('class '): + category = item.replace('class ', '') + all_tests[category] = [] + elif item.startswith('def '): + sub_test = item.replace('def ', '') + all_tests[category].append(sub_test) + + for category in all_tests: + if all_tests[category]: + for sub_test in all_tests[category]: + test = '{}.{}'.format(category, sub_test) + job.run_test_detail(NAME, test_name=test, tag=test, timeout=60*15) # vi:set ts=4 sw=4 expandtab syntax=python: diff --git a/ubuntu_qrt_kernel_aslr_collisions/ubuntu_qrt_kernel_aslr_collisions.py b/ubuntu_qrt_kernel_aslr_collisions/ubuntu_qrt_kernel_aslr_collisions.py index 51dab5ed..288371a5 100644 --- a/ubuntu_qrt_kernel_aslr_collisions/ubuntu_qrt_kernel_aslr_collisions.py +++ b/ubuntu_qrt_kernel_aslr_collisions/ubuntu_qrt_kernel_aslr_collisions.py @@ -52,7 +52,7 @@ class ubuntu_qrt_kernel_aslr_collisions(test.test): scripts = os.path.join(self.srcdir, 'qa-regression-testing', 'scripts') os.chdir(scripts) - cmd = 'python2 ./%s -v' % test_name + cmd = 'python2 ./test-kernel-aslr-collisions.py -v %s' % test_name self.results = utils.system_output(cmd, retain_output=True)
Improve the test granularity like how we do it for the ubuntu_qrt_kernel_security test, run sub test cases one-by-one with: python2 test-kernel-aslr-collisions.py -v TestClass.TestMethod Note that the KernelASLRCollisionsTest.test_stack_collision test will take about 8 minutes to run, set timeout to 15 minutes to guarantee it can finish in time. Patch tested with T-3.13 on bare-metal node "gonzo", and it works as expected. Signed-off-by: Po-Hsu Lin <po-hsu.lin@canonical.com> --- ubuntu_qrt_kernel_aslr_collisions/control | 19 ++++++++++++++++++- .../ubuntu_qrt_kernel_aslr_collisions.py | 2 +- 2 files changed, 19 insertions(+), 2 deletions(-)