diff mbox series

[autotest-client-tests] UBUNTU: SAUCE: ubuntu_qrt_kernel_aslr_collisions: improve test granularity

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

Commit Message

Po-Hsu Lin June 10, 2022, 10:49 a.m. UTC
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(-)

Comments

Sean Feole June 15, 2022, 3:37 p.m. UTC | #1
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)
>   
>
Po-Hsu Lin June 16, 2022, 1:21 a.m. UTC | #2
Applied and pushed.

Thanks
Sam
diff mbox series

Patch

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)