mirror of
https://github.com/zeromq/libzmq.git
synced 2025-01-14 09:47:56 +08:00
test case for zmq_getsockopt/ZMQ_IDENTITY_FD
This commit is contained in:
parent
3d05df9aa5
commit
6f5e7714cf
1
.gitignore
vendored
1
.gitignore
vendored
@ -93,6 +93,7 @@ tests/test_stream_disconnect
|
||||
tests/test_proxy_chain
|
||||
tests/test_bind_src_address
|
||||
tests/test_metadata
|
||||
tests/test_id2fd
|
||||
tests/test*.log
|
||||
tests/test*.trs
|
||||
src/platform.hpp*
|
||||
|
@ -50,7 +50,8 @@ noinst_PROGRAMS = test_system \
|
||||
test_diffserv \
|
||||
test_connect_rid \
|
||||
test_bind_src_address \
|
||||
test_metadata
|
||||
test_metadata\
|
||||
test_id2fd
|
||||
|
||||
if !ON_MINGW
|
||||
noinst_PROGRAMS += test_shutdown_stress \
|
||||
@ -122,6 +123,7 @@ test_diffserv_SOURCES = test_diffserv.cpp
|
||||
test_connect_rid_SOURCES = test_connect_rid.cpp
|
||||
test_bind_src_address_SOURCES = test_bind_src_address.cpp
|
||||
test_metadata_SOURCES = test_metadata.cpp
|
||||
test_id2fd_SOURCES = test_id2fd.cpp
|
||||
if !ON_MINGW
|
||||
test_shutdown_stress_SOURCES = test_shutdown_stress.cpp
|
||||
test_pair_ipc_SOURCES = test_pair_ipc.cpp testutil.hpp
|
||||
|
87
tests/test_id2fd.cpp
Normal file
87
tests/test_id2fd.cpp
Normal file
@ -0,0 +1,87 @@
|
||||
/*
|
||||
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file
|
||||
|
||||
This file is part of 0MQ.
|
||||
|
||||
0MQ 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.
|
||||
|
||||
0MQ 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 main (void)
|
||||
{
|
||||
setup_test_environment();
|
||||
|
||||
void *ctx = zmq_ctx_new ();
|
||||
assert (ctx);
|
||||
|
||||
void *client = zmq_socket (ctx, ZMQ_REQ);
|
||||
assert (client);
|
||||
|
||||
void *server = zmq_socket (ctx, ZMQ_ROUTER);
|
||||
assert (server);
|
||||
|
||||
// Now do a basic ping test
|
||||
int rc = zmq_bind (server, "tcp://127.0.0.1:9998");
|
||||
assert (rc == 0);
|
||||
rc = zmq_connect (client, "tcp://127.0.0.1:9998");
|
||||
assert (rc == 0);
|
||||
|
||||
rc=zmq_send(client,"1234567890",10,0);
|
||||
assert (rc != -1);
|
||||
|
||||
|
||||
int partnumber=1;
|
||||
int recvfd=-1;
|
||||
zmq_msg_t part;
|
||||
do {
|
||||
/* if not first free prev message part */
|
||||
if (partnumber!=1) zmq_msg_close (&part);
|
||||
|
||||
/* Create an empty ØMQ message to hold the message part */
|
||||
int rc = zmq_msg_init (&part);
|
||||
assert (rc == 0);
|
||||
|
||||
/* Block until a message is available to be received from socket */
|
||||
rc = zmq_msg_recv (&part,server, 0);
|
||||
assert (rc != -1);
|
||||
if (partnumber==1) {// this is the identity of the receiving pipe
|
||||
|
||||
//buffer for zmq_getsockopt / ZMQ_IDENTITY_FD
|
||||
char idbuf[255];
|
||||
size_t idbufsz=zmq_msg_size (&part);
|
||||
|
||||
assert (idbufsz<=255);
|
||||
memcpy(idbuf,zmq_msg_data(&part),idbufsz);
|
||||
|
||||
rc = zmq_getsockopt (server, ZMQ_IDENTITY_FD, idbuf, &idbufsz);
|
||||
assert (rc == 0);
|
||||
|
||||
memcpy(&recvfd,idbuf,sizeof(recvfd));
|
||||
|
||||
//depending on your system this should be around 14
|
||||
assert (recvfd > 0);
|
||||
}
|
||||
partnumber++;
|
||||
} while (zmq_msg_more(&part));
|
||||
zmq_msg_close (&part);
|
||||
|
||||
close_zero_linger (client);
|
||||
close_zero_linger (server);
|
||||
|
||||
zmq_ctx_term (ctx);
|
||||
|
||||
return 0 ;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user