From 61845323cf3d996a64230aaba8443ccd7337d803 Mon Sep 17 00:00:00 2001 From: Jakub Sitnicki Date: Wed, 18 Apr 2018 18:01:13 +0200 Subject: tests: Extend Python IDL checks to also run with SSL 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 Signed-off-by: Ben Pfaff --- 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], -- cgit v1.2.1