diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/Makefile.am | 4 | ||||
| -rw-r--r-- | tests/reentrant.cpp | 53 | 
2 files changed, 56 insertions, 1 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am index fba6271..78bac57 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -18,7 +18,8 @@ noinst_PROGRAMS = pair_inproc \                    pair_ipc \                    reqrep_ipc \                    timeo \ -                  max_sockets +                  max_sockets \ +                  reentrant  pair_inproc_SOURCES = pair_inproc.cpp testutil.hpp  pair_tcp_SOURCES = pair_tcp.cpp testutil.hpp @@ -36,5 +37,6 @@ pair_ipc_SOURCES = pair_ipc.cpp testutil.hpp  reqrep_ipc_SOURCES = reqrep_ipc.cpp testutil.hpp  timeo_SOURCES = timeo.cpp  max_sockets_SOURCES = max_sockets.cpp +reentrant_SOURCES = reentrant.cpp testutil.hpp  TESTS = $(noinst_PROGRAMS) diff --git a/tests/reentrant.cpp b/tests/reentrant.cpp new file mode 100644 index 0000000..a4b2760 --- /dev/null +++ b/tests/reentrant.cpp @@ -0,0 +1,53 @@ +/* +    Copyright (c) 2012 250bpm s.r.o. +    Copyright (c) 2012 Other contributors as noted in the AUTHORS file + +    This file is part of Crossroads project. + +    Crossroads is free software; you can redistribute it and/or modify it under +    the terms of the GNU Lesser General Public License as published by +    the Free Software Foundation; either version 3 of the License, or +    (at your option) any later version. + +    Crossroads is distributed in the hope that it will be useful, +    but WITHOUT ANY WARRANTY; without even the implied warranty of +    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +    GNU Lesser General Public License for more details. + +    You should have received a copy of the GNU Lesser General Public License +    along with this program.  If not, see <http://www.gnu.org/licenses/>. +*/ + +#include "testutil.hpp" + +int XS_TEST_MAIN () +{ +    fprintf (stderr, "reentrant test running...\n"); + +    //  Initialise the context and set REENTRANT option. +    void *ctx = xs_init (1); +    assert (ctx); +    int val = 1; +    int rc = xs_setctxopt (ctx, XS_CTX_REENTRANT, &val, sizeof (val)); +    assert (rc == 0); + +    //  Do a set of operations to make sure that REENTRANT option doesn't +    //  break anything. +    void *sb = xs_socket (ctx, XS_REP); +    assert (sb); +    rc = xs_bind (sb, "inproc://a"); +    assert (rc == 0); +    void *sc = xs_socket (ctx, XS_REQ); +    assert (sc); +    rc = xs_connect (sc, "inproc://a"); +    assert (rc == 0); +    bounce (sb, sc); +    rc = xs_close (sc); +    assert (rc == 0); +    rc = xs_close (sb); +    assert (rc == 0); +    rc = xs_term (ctx); +    assert (rc == 0); + +    return 0 ; +}  | 
