From a376c91494c954491fd424f3b51ab4579b9846a2 Mon Sep 17 00:00:00 2001 From: Martin Sustrik Date: Thu, 16 Feb 2012 10:06:36 +0900 Subject: 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 --- tests/Makefile.am | 4 +++- tests/linger.cpp | 2 +- tests/max_sockets.cpp | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 tests/max_sockets.cpp (limited to 'tests') 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 . +*/ + +#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; +} + -- cgit v1.2.3