[ovs-dev] [PATCH 4/6] tests: Extend Python IDL checks to also run with SSL

Jakub Sitnicki jkbs at redhat.com
Wed Apr 18 16:01:13 UTC 2018


Extend the macro for running a Python IDL test against an OVSDB server
that uses SSL so that it can be used for regular IDL tests and for the
notify tests.

This makes it easy to generate additional Python IDL tests that run
using SSL, so do it.

As it turns out, newly added SSL tests unearth a pre-existing issue with
unicode encoding when SSL is used, which will be fixed in the following
patch.

Signed-off-by: Jakub Sitnicki <jkbs at redhat.com>
---
 tests/ovsdb-idl.at | 71 +++++++++++++++++++++++++++++++++---------------------
 1 file changed, 44 insertions(+), 27 deletions(-)

diff --git a/tests/ovsdb-idl.at b/tests/ovsdb-idl.at
index 9a93bbb0e..9caa02aad 100644
--- a/tests/ovsdb-idl.at
+++ b/tests/ovsdb-idl.at
@@ -132,12 +132,54 @@ m4_define([OVSDB_CHECK_IDL_TCP6_PY],
     OVSDB_CHECK_IDL_TCP6_PYN([$1 - Python3], [$2], [$3], [$4], [$5], [$6],
                         [$HAVE_PYTHON3], [$PYTHON3])])
 
+# same as OVSDB_CHECK_IDL but uses the Python IDL implementation with SSL
+m4_define([OVSDB_CHECK_IDL_SSL_PYN],
+  [AT_SETUP([$1 - SSL])
+   AT_SKIP_IF([test "$HAVE_OPENSSL" = no])
+   AT_SKIP_IF([test $7 = no])
+   $8 -c "import OpenSSL.SSL"
+   SSL_PRESENT=$?
+   AT_SKIP_IF([test $SSL_PRESENT != 0])
+   AT_KEYWORDS([ovsdb server idl positive Python with ssl socket $5])
+   AT_CHECK([ovsdb-tool create db $abs_srcdir/idltest.ovsschema],
+             [0], [stdout], [ignore])
+   PKIDIR=$abs_top_builddir/tests
+   AT_CHECK([ovsdb-server -vconsole:warn --log-file --detach --no-chdir \
+             --pidfile \
+             --private-key=$PKIDIR/testpki-privkey2.pem \
+             --certificate=$PKIDIR/testpki-cert2.pem \
+             --ca-cert=$PKIDIR/testpki-cacert.pem \
+             --remote=pssl:0:127.0.0.1 db])
+   on_exit 'kill `cat ovsdb-server.pid`'
+   PARSE_LISTENING_PORT([ovsdb-server.log], [TCP_PORT])
+   m4_if([$2], [], [],
+     [AT_CHECK([ovsdb-client \
+                --private-key=$PKIDIR/testpki-privkey2.pem \
+                --certificate=$PKIDIR/testpki-cert2.pem \
+                --ca-cert=$PKIDIR/testpki-cacert.pem \
+                transact "ssl:127.0.0.1:$TCP_PORT" $2], [0], [ignore], [ignore])])
+   AT_CHECK([$8 $srcdir/test-ovsdb.py  -t10 idl $srcdir/idltest.ovsschema \
+             ssl:127.0.0.1:$TCP_PORT $PKIDIR/testpki-privkey.pem \
+             $PKIDIR/testpki-cert.pem $PKIDIR/testpki-cacert.pem $3],
+            [0], [stdout], [ignore])
+   AT_CHECK([sort stdout | uuidfilt]m4_if([$6],,, [[| $6]]),
+            [0], [$4])
+   OVSDB_SERVER_SHUTDOWN
+   AT_CLEANUP])
+
+m4_define([OVSDB_CHECK_IDL_SSL_PY],
+   [OVSDB_CHECK_IDL_SSL_PYN([$1 - Python2], [$2], [$3], [$4], [$5], [$6],
+                        [$HAVE_PYTHON], [$PYTHON])
+    OVSDB_CHECK_IDL_SSL_PYN([$1 - Python3], [$2], [$3], [$4], [$5], [$6],
+                        [$HAVE_PYTHON3], [$PYTHON3])])
+
 m4_define([OVSDB_CHECK_IDL],
   [OVSDB_CHECK_IDL_C($@)
    OVSDB_CHECK_IDL_PY($@)
    OVSDB_CHECK_IDL_REGISTER_COLUMNS_PY($@)
    OVSDB_CHECK_IDL_TCP_PY($@)
-   OVSDB_CHECK_IDL_TCP6_PY($@)])
+   OVSDB_CHECK_IDL_TCP6_PY($@)
+   OVSDB_CHECK_IDL_SSL_PY($@)])
 
 # This test uses the Python IDL implementation with passive tcp
 m4_define([OVSDB_CHECK_IDL_PASSIVE_TCP_PYN],
@@ -1243,32 +1285,7 @@ m4_define([OVSDB_CHECK_IDL_NOTIFY_PY],
 
 # This test uses the Python IDL implementation with ssl
 m4_define([OVSDB_CHECK_IDL_NOTIFY_SSL_PYN],
-  [AT_SETUP([$1 - SSL])
-   AT_SKIP_IF([test "$HAVE_OPENSSL" = no])
-   AT_SKIP_IF([test $6 = no])
-   $7 -c "import OpenSSL.SSL"
-   SSL_PRESENT=$?
-   AT_SKIP_IF([test $SSL_PRESENT != 0])
-   AT_KEYWORDS([ovsdb server idl Python notify - ssl socket])
-   AT_CHECK([ovsdb-tool create db $abs_srcdir/idltest.ovsschema],
-             [0], [stdout], [ignore])
-   PKIDIR=$abs_top_builddir/tests
-   AT_CHECK([ovsdb-server -vconsole:warn --log-file --detach --no-chdir \
-             --pidfile \
-             --private-key=$PKIDIR/testpki-privkey2.pem \
-             --certificate=$PKIDIR/testpki-cert2.pem \
-             --ca-cert=$PKIDIR/testpki-cacert.pem \
-             --remote=pssl:0:127.0.0.1 db])
-   on_exit 'kill `cat ovsdb-server.pid`'
-   PARSE_LISTENING_PORT([ovsdb-server.log], [TCP_PORT])
-   AT_CHECK([$7 $srcdir/test-ovsdb.py  -t10 idl $srcdir/idltest.ovsschema \
-             ssl:127.0.0.1:$TCP_PORT $PKIDIR/testpki-privkey.pem \
-             $PKIDIR/testpki-cert.pem $PKIDIR/testpki-cacert.pem $2],
-            [0], [stdout], [ignore])
-   AT_CHECK([sort stdout | uuidfilt]m4_if([$5],,, [[| $5]]),
-            [0], [$3])
-   OVSDB_SERVER_SHUTDOWN
-   AT_CLEANUP])
+  [OVSDB_CHECK_IDL_SSL_PYN([$1], [], [$2], [$3], [notify $4], [$5], [$6], [$7])])
 
 m4_define([OVSDB_CHECK_IDL_NOTIFY_SSL_PY],
     [OVSDB_CHECK_IDL_NOTIFY_SSL_PYN([$1 - Python2], [$2], [$3], [$4], [$5],
-- 
2.14.3



More information about the dev mailing list