aboutsummaryrefslogtreecommitdiff
path: root/tests/compat_device.c
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2024-10-22 21:22:20 -0700
committerGarrett D'Amore <garrett@damore.org>2024-10-22 21:22:20 -0700
commit4de579a2617bfa1ee501a1669f3c351511135b2f (patch)
treec15c13b110b6c2fd1702ae6e0b2a23acefb9e15c /tests/compat_device.c
parentbeca672e36109bf8f49c260257882fc3e9cea034 (diff)
downloadnng-4de579a2617bfa1ee501a1669f3c351511135b2f.tar.gz
nng-4de579a2617bfa1ee501a1669f3c351511135b2f.tar.bz2
nng-4de579a2617bfa1ee501a1669f3c351511135b2f.zip
Remove the libnanomsg compatibility layer
Diffstat (limited to 'tests/compat_device.c')
-rw-r--r--tests/compat_device.c189
1 files changed, 0 insertions, 189 deletions
diff --git a/tests/compat_device.c b/tests/compat_device.c
deleted file mode 100644
index 3c96e5b9..00000000
--- a/tests/compat_device.c
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * Copyright (c) 2012 Martin Sustrik All rights reserved.
- * Copyright (c) 2013 GoPivotal, Inc. All rights reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom
- * the Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- */
-
-#include <nng/compat/nanomsg/nn.h>
-#include <nng/compat/nanomsg/bus.h>
-#include <nng/compat/nanomsg/pair.h>
-#include <nng/compat/nanomsg/pipeline.h>
-#include <nng/compat/nanomsg/inproc.h>
-#include "compat_testutil.h"
-
-#define SOCKET_ADDRESS_A "inproc://a"
-#define SOCKET_ADDRESS_B "inproc://b"
-#define SOCKET_ADDRESS_C "inproc://c"
-#define SOCKET_ADDRESS_D "inproc://d"
-#define SOCKET_ADDRESS_E "inproc://e"
-
-int deva = -1;
-int devb = -1;
-int devc = -1;
-int devd = -1;
-int deve = -1;
-
-void device1(NN_UNUSED void *arg)
-{
- int rc;
-
- /* Intialise the device sockets. */
- deva = test_socket(AF_SP_RAW, NN_PAIR);
- test_bind(deva, SOCKET_ADDRESS_A);
- devb = test_socket(AF_SP_RAW, NN_PAIR);
- test_bind(devb, SOCKET_ADDRESS_B);
-
- /* Run the device. */
- rc = nn_device(deva, devb);
- nn_assert(rc < 0 && (nn_errno() == EBADF));
-}
-
-
-void device2(NN_UNUSED void *arg)
-{
- int rc;
-
- /* Intialise the device sockets. */
- devc = test_socket(AF_SP_RAW, NN_PULL);
- test_bind(devc, SOCKET_ADDRESS_C);
- devd = test_socket(AF_SP_RAW, NN_PUSH);
- test_bind(devd, SOCKET_ADDRESS_D);
-
- /* Run the device. */
- rc = nn_device(devc, devd);
- nn_assert(rc < 0 && nn_errno() == EBADF);
-}
-
-
-void device3(NN_UNUSED void *arg)
-{
- int rc;
-
- /* Intialise the device socket. */
- deve = test_socket(AF_SP_RAW, NN_BUS);
- test_bind(deve, SOCKET_ADDRESS_E);
-
- /* Run the device. */
- rc = nn_device(deve, -1);
- nn_assert(rc < 0 && nn_errno() == EBADF);
-}
-
-
-int main()
-{
- int enda;
- int endb;
- int endc;
- int endd;
- int ende1;
- int ende2;
- struct nn_thread thread1;
- struct nn_thread thread2;
- struct nn_thread thread3;
- int timeo;
-
- /* Test the bi-directional device. */
-
- /* Start the device. */
- nn_thread_init(&thread1, device1, NULL);
-
- /* Create two sockets to connect to the device. */
- enda = test_socket(AF_SP, NN_PAIR);
- test_connect(enda, SOCKET_ADDRESS_A);
- endb = test_socket(AF_SP, NN_PAIR);
- test_connect(endb, SOCKET_ADDRESS_B);
-
- nn_sleep(100);
-
- /* Pass a pair of messages between endpoints. */
- test_send(enda, "ABC");
- test_recv(endb, "ABC");
- test_send(endb, "ABC");
- test_recv(enda, "ABC");
-
- /* Clean up. */
- test_close(endb);
- test_close(enda);
- test_close(deva);
- test_close(devb);
-
- /* Test the uni-directional device. */
-
- /* Start the device. */
- nn_thread_init(&thread2, device2, NULL);
-
- nn_sleep(100);
-
- /* Create two sockets to connect to the device. */
- endc = test_socket(AF_SP, NN_PUSH);
- test_connect(endc, SOCKET_ADDRESS_C);
- endd = test_socket(AF_SP, NN_PULL);
- test_connect(endd, SOCKET_ADDRESS_D);
-
-
- /* Pass a message between endpoints. */
- test_send(endc, "XYZ");
- test_recv(endd, "XYZ");
-
- /* Clean up. */
- test_close(endd);
- test_close(endc);
- test_close(devc);
- test_close(devd);
-
- /* Test the loopback device. */
-
- /* Start the device. */
- nn_thread_init(&thread3, device3, NULL);
- nn_sleep(100);
-
- /* Create two sockets to connect to the device. */
- ende1 = test_socket(AF_SP, NN_BUS);
- test_connect(ende1, SOCKET_ADDRESS_E);
- ende2 = test_socket(AF_SP, NN_BUS);
- test_connect(ende2, SOCKET_ADDRESS_E);
-
- /* BUS is unreliable so wait a bit for connections to be established. */
- nn_sleep(200);
-
- /* Pass a message to the bus. */
- test_send(ende1, "KLM");
- test_recv(ende2, "KLM");
-
- /* Make sure that the message doesn't arrive at the socket it was
- * originally sent to. */
- timeo = 100;
- test_setsockopt(ende1, NN_SOL_SOCKET, NN_RCVTIMEO,
- &timeo, sizeof (timeo));
- test_drop(ende1, ETIMEDOUT);
-
- /* Clean up. */
- test_close(ende2);
- test_close(ende1);
- test_close(deve);
-
- /* Shut down the devices. */
- nn_term();
- nn_thread_term(&thread1);
- nn_thread_term(&thread2);
- nn_thread_term(&thread3);
-
- return (0);
-}