Add support for socket wrappers if available
authorSimo Sorce <simo@redhat.com>
Mon, 2 Jun 2014 18:05:57 +0000 (14:05 -0400)
committerSimo Sorce <simo@redhat.com>
Wed, 4 Jun 2014 14:26:34 +0000 (10:26 -0400)
Signed-off-by: Simo Sorce <simo@redhat.com>
tests/httpd.conf
tests/tests.py

index 6b2a4cb..f0c4300 100644 (file)
@@ -1,4 +1,5 @@
 ServerRoot "${HTTPROOT}"
+ServerName localhost
 Listen ${HTTPADDR}:${HTTPPORT}
 
 LoadModule access_compat_module modules/mod_access_compat.so
index cfd63c6..811d31d 100755 (executable)
@@ -39,6 +39,9 @@ def parse_args():
                         help="Directory in which tests are run")
     parser.add_argument('--test', default='test1',
                         help="The test to run")
+    parser.add_argument('--wrappers', default='auto',
+                        choices=['yes', 'no', 'auto'],
+                        help="Run the tests with socket wrappers")
 
     return vars(parser.parse_args())
 
@@ -167,6 +170,28 @@ Alias /sp ${HTTPDIR}/sp
     with open(httpdir + '/sp/index.html', 'w') as f:
         f.write(index)
 
+
+def try_wrappers(base, wrappers):
+    if wrappers == 'no':
+        return {}
+
+    pkgcfg = subprocess.Popen(['pkg-config', '--exists', 'socket_wrapper'])
+    pkgcfg.wait()
+    if pkgcfg.returncode != 0:
+        if wrappers == 'auto':
+            return {}
+        else:
+            raise ValueError('Socket Wrappers not available')
+
+    wrapdir = os.path.join(base, 'wrapdir')
+    os.mkdir(wrapdir)
+
+    wenv = {'LD_PRELOAD': 'libsocket_wrapper.so',
+            'SOCKET_WRAPPER_DIR': wrapdir,
+            'SOCKET_WRAPPER_DEFAULT_IFACE': '9'}
+
+    return wenv
+
 if __name__ == '__main__':
 
     args = parse_args()
@@ -178,7 +203,9 @@ if __name__ == '__main__':
     options = setup_test(args['path'], args['test'])
     basedir = options['basedir']
 
-    env={'PYTHONPATH':'./'}
+    env = try_wrappers(basedir, args['wrappers'])
+    env['PYTHONPATH'] = './'
+
     srvs = []
     try:
         for h in options['servers'].split(','):