test_thread_safe.cpp
Go to the documentation of this file.
1 /* SPDX-License-Identifier: MPL-2.0 */
2 
3 #include "testutil.hpp"
4 #include "testutil_unity.hpp"
5 
7 
8 // Client threads loop on send/recv until told to exit
9 void client_thread (void *client_)
10 {
11  for (int count = 0; count < 15000; count++) {
12  send_string_expect_success (client_, "0", 0);
13  }
14  send_string_expect_success (client_, "1", 0);
15 }
16 
18 {
20 
23 
25 
27 
28  void *t1 = zmq_threadstart (client_thread, client);
29  void *t2 = zmq_threadstart (client_thread, client);
30 
31  char data;
32  int threads_completed = 0;
33  while (threads_completed < 2) {
35  if (data == '1')
36  threads_completed++; // Thread ended
37  }
38  zmq_threadclose (t1);
39  zmq_threadclose (t2);
40 
43 }
44 
45 void test_getsockopt_thread_safe (void *const socket_)
46 {
47  int thread_safe;
48  size_t size = sizeof (int);
50  zmq_getsockopt (socket_, ZMQ_THREAD_SAFE, &thread_safe, &size));
51  TEST_ASSERT_EQUAL_INT (1, thread_safe);
52 }
53 
55 {
59 }
60 
62 {
66 }
67 
68 int main (void)
69 {
71 
72  // TODO this file could be merged with test_client_server
73  UNITY_BEGIN ();
77 
78  return UNITY_END ();
79 }
ZMQ_SERVER
#define ZMQ_SERVER
Definition: zmq_draft.h:14
UNITY_END
return UNITY_END()
zmq_threadstart
ZMQ_EXPORT void * zmq_threadstart(zmq_thread_fn *func_, void *arg_)
Definition: zmq_utils.cpp:54
client_thread
SETUP_TEARDOWN_TESTCONTEXT void client_thread(void *client_)
Definition: test_thread_safe.cpp:9
ZMQ_CLIENT
#define ZMQ_CLIENT
Definition: zmq_draft.h:15
RUN_TEST
#define RUN_TEST(func)
Definition: unity_internals.h:615
SETUP_TEARDOWN_TESTCONTEXT
#define SETUP_TEARDOWN_TESTCONTEXT
Definition: testutil_unity.hpp:172
bind_loopback_ipv4
void bind_loopback_ipv4(void *socket_, char *my_endpoint_, size_t len_)
Definition: testutil_unity.cpp:246
client
void client(int num)
Definition: test_multithread.cpp:134
zmq_connect
ZMQ_EXPORT int zmq_connect(void *s_, const char *addr_)
Definition: zmq.cpp:307
testutil_unity.hpp
main
int main(void)
Definition: test_thread_safe.cpp:68
zmq_threadclose
ZMQ_EXPORT void zmq_threadclose(void *thread_)
Definition: zmq_utils.cpp:62
testutil.hpp
test_getsockopt_thread_safe
void test_getsockopt_thread_safe(void *const socket_)
Definition: test_thread_safe.cpp:45
test_thread_safe
void test_thread_safe()
Definition: test_thread_safe.cpp:17
my_endpoint
char my_endpoint[MAX_SOCKET_STRING]
Definition: test_security_curve.cpp:31
MAX_SOCKET_STRING
#define MAX_SOCKET_STRING
Definition: libzmq/tests/testutil.hpp:35
test_client_getsockopt_thread_safe
void test_client_getsockopt_thread_safe()
Definition: test_thread_safe.cpp:54
test_context_socket
void * test_context_socket(int type_)
Definition: testutil_unity.cpp:200
test_server_getsockopt_thread_safe
void test_server_getsockopt_thread_safe()
Definition: test_thread_safe.cpp:61
server
void * server
Definition: test_security_curve.cpp:29
TEST_ASSERT_EQUAL_INT
#define TEST_ASSERT_EQUAL_INT(expected, actual)
Definition: unity.h:128
send_string_expect_success
void send_string_expect_success(void *socket_, const char *str_, int flags_)
Definition: testutil_unity.cpp:94
zmq_recv
ZMQ_EXPORT int zmq_recv(void *s_, void *buf_, size_t len_, int flags_)
Definition: zmq.cpp:487
size
GLsizeiptr size
Definition: glcorearb.h:2943
setup_test_environment
void setup_test_environment(int timeout_seconds_)
Definition: testutil.cpp:201
UNITY_BEGIN
UNITY_BEGIN()
data
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: glcorearb.h:2879
test_context_socket_close
void * test_context_socket_close(void *socket_)
Definition: testutil_unity.cpp:208
count
GLint GLsizei count
Definition: glcorearb.h:2830
TEST_ASSERT_SUCCESS_ERRNO
#define TEST_ASSERT_SUCCESS_ERRNO(expr)
Definition: proxy_thr.cpp:47
zmq_getsockopt
ZMQ_EXPORT int zmq_getsockopt(void *s_, int option_, void *optval_, size_t *optvallen_)
Definition: zmq.cpp:261
ZMQ_THREAD_SAFE
#define ZMQ_THREAD_SAFE
Definition: zmq.h:342


libaditof
Author(s):
autogenerated on Wed May 21 2025 02:06:59