[apparmor] [patch] Add tests for aa.py get_output() and get_reqs()
Kshitij Gupta
kgupta8592 at gmail.com
Sun Feb 21 19:49:37 UTC 2016
Hello,
On Tue, Feb 2, 2016 at 2:00 AM, Christian Boltz <apparmor at cboltz.de> wrote:
> Hello,
>
> Am Montag, 1. Februar 2016, 11:50:49 CET schrieb Seth Arnold:
> > On Mon, Feb 01, 2016 at 07:35:07PM +0100, Christian Boltz wrote:
> > > --- utils/test/test-aa.py 2016-01-26 22:22:14.660008000 +0100
> > > +++ utils/test/test-aa.py 2016-02-01 18:53:10.085684909 +0100
>
> > > +import apparmor.aa as aa # needed to set global vars in some tests
>
> > Most of this looked good but I'm a bit worried about the global
> > variables. Could they be referenced via apparmor.aa.<whatever>
> > instead? I think that'd lead to better comprehension two years from
> > now..
>
> Yes, that's possible ;-) - it makes the import a bit shorter ("as aa"
> gets removed) and the usage a bit longer ("apparmor.aa.cfg...")
>
> Here's v2 with this changed:
>
>
> [ 66-add-tests-for-get_output-and-get_reqs.diff ]
>
> --- utils/test/test-aa.py 2016-01-26 22:22:14.660008000 +0100
> +++ utils/test/test-aa.py 2016-02-01 18:53:10.085684909 +0100
> @@ -14,8 +14,9 @@
> from common_test import read_file, write_file
>
> import os
>
> -from apparmor.aa import (check_for_apparmor,
> get_interpreter_and_abstraction, create_new_profile,
> +import apparmor.aa # needed to set global vars in some tests
> +from apparmor.aa import (check_for_apparmor, get_output, get_reqs,
> get_interpreter_and_abstraction, create_new_profile,
> get_profile_flags, set_profile_flags, is_skippable_file,
> is_skippable_dir,
> parse_profile_start, parse_profile_data, separate_vars,
> store_list_var, write_header,
> var_transform, serialize_parse_profile_start)
> @@ -72,6 +73,26 @@
> mounts = write_file(self.tmpdir, 'mounts',
> self.MOUNTS_WITH_SECURITYFS % self.tmpdir)
> self.assertEqual('%s/security/apparmor' % self.tmpdir,
> check_for_apparmor(filesystems, mounts))
>
> +class AATest_get_output(AATest):
> + tests = [
> + (['./fake_ldd', '/AATest/lib64/libc-2.22.so'], (0, ['
> /AATest/lib64/ld-linux-x86-64.so.2 (0x0000556858473000)', '
> linux-vdso.so.1 (0x00007ffe98912000)'] )),
> + (['./fake_ldd', '/tmp/aa-test-foo'], (0, [' not
> a dynamic executable']
> )),
> + (['./fake_ldd', 'invalid'], (1, ['']
>
> )), # stderr is not part of output
> + ]
> + def _run_test(self, params, expected):
> + self.assertEqual(get_output(params), expected)
> +
> +class AATest_get_reqs(AATest):
> + tests = [
> + ('/AATest/bin/bash', ['/AATest/lib64/libreadline.so.6',
> '/AATest/lib64/libtinfo.so.6', '/AATest/lib64/libdl.so.2',
> '/AATest/lib64/libc.so.6', '/AATest/lib64/ld-linux-x86-64.so.2']),
> + ('/tmp/aa-test-foo', []),
> + ]
> +
> + def _run_test(self, params, expected):
> + apparmor.aa.cfg['settings']['ldd'] = './fake_ldd'
> +
> + self.assertEqual(get_reqs(params), expected)
> +
> class AaTest_create_new_profile(AATest):
> tests = [
> # file content expected interpreter expected
> abstraction (besides 'base')
> --- utils/test/fake_ldd 2016-02-01 19:22:59.738008345 +0100
> +++ utils/test/fake_ldd 2016-02-01 19:23:58.781645883 +0100
> @@ -0,0 +1,56 @@
> +#!/usr/bin/python3
> +
> +import sys
> +
> +if len(sys.argv) != 2:
> + raise Exception('wrong number of arguments in fake_ldd')
> +
> +if sys.argv[1] == '/AATest/bin/bash':
> + print(' linux-vdso.so.1 (0x00007ffcf97f4000)')
> + print(' libreadline.so.6 => /AATest/lib64/libreadline.so.6
> (0x00007f2c41324000)')
> + print(' libtinfo.so.6 => /AATest/lib64/libtinfo.so.6
> (0x00007f2c410f9000)')
> + print(' libdl.so.2 => /AATest/lib64/libdl.so.2
> (0x00007f2c40ef5000)')
> + print(' libc.so.6 => /AATest/lib64/libc.so.6
> (0x00007f2c40b50000)')
> + print(' /AATest/lib64/ld-linux-x86-64.so.2
> (0x000055782c473000)')
> +
> +elif sys.argv[1] == '/AATest/lib64/ld-2.22.so':
> + print(' linux-vdso.so.1 (0x00007ffcf97f4000)')
> +
> +elif sys.argv[1] == '/AATest/lib64/libc-2.22.so':
> + print(' /AATest/lib64/ld-linux-x86-64.so.2
> (0x0000556858473000)')
> + print(' linux-vdso.so.1 (0x00007ffe98912000)')
> +
> +elif sys.argv[1] == '/AATest/lib64/libdl.so.2':
> + print(' linux-vdso.so.1 (0x00007ffec2538000)')
> + print(' libc.so.6 => /AATest/lib64/libc.so.6
> (0x00007f8865346000)')
> + print(' /AATest/lib64/ld-linux-x86-64.so.2
> (0x0000560c3bcee000)')
> +
> +elif sys.argv[1] == '/AATest/lib64/libtinfo.so.6':
> + print(' linux-vdso.so.1 (0x00007fff30518000)')
> + print(' libc.so.6 => /AATest/lib64/libc.so.6
> (0x00007fb6f2ea3000)')
> + print(' /AATest/lib64/ld-linux-x86-64.so.2
> (0x00005631fe8d3000)')
> +
> +elif sys.argv[1] == '/AATest/lib64/libreadline.so.6':
> + print(' linux-vdso.so.1 (0x00007ffcb5b62000)')
> + print(' libtinfo.so.6 => /AATest/lib64/libtinfo.so.6
> (0x00007f2a4ed07000)')
> + print(' libc.so.6 => /AATest/lib64/libc.so.6
> (0x00007f2a4e961000)')
> + print(' /AATest/lib64/ld-linux-x86-64.so.2
> (0x000055f749c89000)')
> +
> +elif sys.argv[1] == '/AATest/lib64/ld-linux-x86-64.so.2':
> + print(' statically linked')
> +
> +elif sys.argv[1] == '/AATest/lib64/libc.so.6':
> + print(' /AATest/lib64/ld-linux-x86-64.so.2
> (0x000055b65f7a9000)')
> + print(' linux-vdso.so.1 (0x00007ffde132b000)')
> +
> +
> +elif sys.argv[1].startswith('/tmp/aa-test-'): # test file generated by
> test-aa.py
> + print(' not a dynamic executable')
> +
> +elif sys.argv[1] == 'TEMPLATE':
> + print('')
> + print('')
> + print('')
> +
> +else:
> + raise Exception('unknown parameter in fake_ldd: %s' % sys.argv[1])
>
>
> lgtm.
Can't think of a better way to write these tests atm.
Acked-by: Kshitij Gupta <kgupta8592 at gmail.com>
Regards,
>
> Christian Boltz
> --
> > (Windows XP welches auch installiert ist läuft aber ohne Probleme)
> Musst Du nicht erwähnen, eine Mail so zu versauen, geht in der Regel
> nur mit Outlook. [> Stephan Papst und Manfred Tremmel in suse-linux]
>
> --
> AppArmor mailing list
> AppArmor at lists.ubuntu.com
> Modify settings or unsubscribe at:
> https://lists.ubuntu.com/mailman/listinfo/apparmor
>
>
--
Regards,
Kshitij Gupta
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.ubuntu.com/archives/apparmor/attachments/20160222/0bdae8be/attachment.html>
More information about the AppArmor
mailing list