diff options
author | Martin Sustrik <sustrik@250bpm.com> | 2012-02-16 10:06:36 +0900 |
---|---|---|
committer | Martin Sustrik <sustrik@250bpm.com> | 2012-02-16 10:06:36 +0900 |
commit | a376c91494c954491fd424f3b51ab4579b9846a2 (patch) | |
tree | e306cef422138378720daa843703fc94331ad08e /tests | |
parent | fb1209c72bbfd431b61fa4588785586d24ef67c9 (diff) |
XS_CTX_MAX_SOCKETS option implemented
To implement context options properly, initialisation of context
is postponed till creation of the first socket. In the meantime
it is possible to set socket options.
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/Makefile.am | 4 | ||||
-rw-r--r-- | tests/linger.cpp | 2 | ||||
-rw-r--r-- | tests/max_sockets.cpp | 51 |
3 files changed, 55 insertions, 2 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am index 85c7527..fba6271 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -17,7 +17,8 @@ noinst_PROGRAMS = pair_inproc \ shutdown_stress \ pair_ipc \ reqrep_ipc \ - timeo + timeo \ + max_sockets pair_inproc_SOURCES = pair_inproc.cpp testutil.hpp pair_tcp_SOURCES = pair_tcp.cpp testutil.hpp @@ -34,5 +35,6 @@ shutdown_stress_SOURCES = shutdown_stress.cpp 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 TESTS = $(noinst_PROGRAMS) diff --git a/tests/linger.cpp b/tests/linger.cpp index 5c0480c..35de303 100644 --- a/tests/linger.cpp +++ b/tests/linger.cpp @@ -24,7 +24,7 @@ int XS_TEST_MAIN () { fprintf (stderr, "linger test running...\n"); - // Create REQ/XREP wiring. + // Create socket. void *ctx = xs_init (1); assert (ctx); void *s = xs_socket (ctx, XS_PUSH); diff --git a/tests/max_sockets.cpp b/tests/max_sockets.cpp new file mode 100644 index 0000000..4ce6cb9 --- /dev/null +++ b/tests/max_sockets.cpp @@ -0,0 +1,51 @@ +/* + 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, "max_sockets test running...\n"); + + // Create context and set MAX_SOCKETS to 1. + void *ctx = xs_init (1); + assert (ctx); + int max_sockets = 1; + int rc = xs_setctxopt (ctx, XS_CTX_MAX_SOCKETS, &max_sockets, + sizeof (max_sockets)); + assert (rc == 0); + + // First socket should be created OK. + void *s1 = xs_socket (ctx, XS_PUSH); + assert (s1); + + // Creation of second socket should fail. + void *s2 = xs_socket (ctx, XS_PUSH); + assert (!s2 && errno == EMFILE); + + // Clean up. + rc = xs_close (s1); + assert (rc == 0); + rc = xs_term (ctx); + assert (rc == 0); + + return 0; +} + |