X-Git-Url: https://git.liburcu.org/?a=blobdiff_plain;f=tests%2Funit%2Ftest_unix_socket.cpp;h=2c23b669c2d800bf35e7b528b0e346f3bc0ef1a5;hb=28ab034a2c3582d07d3423d2d746731f87d3969f;hp=2ff65a679749838586fb47846306a740cc0b3f0f;hpb=52e345b9ac912d033c2a2c25a170a01cf209839d;p=lttng-tools.git diff --git a/tests/unit/test_unix_socket.cpp b/tests/unit/test_unix_socket.cpp index 2ff65a679..2c23b669c 100644 --- a/tests/unit/test_unix_socket.cpp +++ b/tests/unit/test_unix_socket.cpp @@ -5,28 +5,30 @@ * */ -#include #include -#include -#include +#include +#include #include +#include +#include #include #include -#include -#include -#include -#include + #include -#include + +#include #include -#include -#include +#include +#include #include +#include +#include +#include -#define HIGH_FD_COUNT LTTCOMM_MAX_SEND_FDS -#define MESSAGE_COUNT 4 -#define LARGE_PAYLOAD_SIZE 4 * 1024 -#define LARGE_PAYLOAD_RECV_SIZE 100 +#define HIGH_FD_COUNT LTTCOMM_MAX_SEND_FDS +#define MESSAGE_COUNT 4 +#define LARGE_PAYLOAD_SIZE 4 * 1024 +#define LARGE_PAYLOAD_RECV_SIZE 100 static const int TEST_COUNT = 37; @@ -40,7 +42,7 @@ int lttng_opt_mi; */ static void test_high_fd_count(unsigned int fd_count) { - int sockets[2] = {-1, -1}; + int sockets[2] = { -1, -1 }; int ret; unsigned int i; const unsigned int payload_content = 42; @@ -59,8 +61,8 @@ static void test_high_fd_count(unsigned int fd_count) } /* Add dummy content to payload. */ - ret = lttng_dynamic_buffer_append(&sent_payload.buffer, - &payload_content, sizeof(payload_content)); + ret = lttng_dynamic_buffer_append( + &sent_payload.buffer, &payload_content, sizeof(payload_content)); if (ret) { PERROR("Failed to initialize test payload"); goto error; @@ -94,29 +96,30 @@ static void test_high_fd_count(unsigned int fd_count) /* Send payload. */ { ssize_t sock_ret; - struct lttng_payload_view pv = lttng_payload_view_from_payload( - &sent_payload, 0, -1); + struct lttng_payload_view pv = + lttng_payload_view_from_payload(&sent_payload, 0, -1); /* Not expected to block considering the size of the payload. */ - sock_ret = lttcomm_send_unix_sock( - sockets[0], pv.buffer.data, pv.buffer.size); + sock_ret = lttcomm_send_unix_sock(sockets[0], pv.buffer.data, pv.buffer.size); ok(sock_ret == pv.buffer.size, "Sent complete test payload"); if (sock_ret != pv.buffer.size) { ERR("Failed to send test payload bytes: ret = %zd, expected = %zu", - sock_ret, pv.buffer.size); + sock_ret, + pv.buffer.size); goto error; } - sock_ret = lttcomm_send_payload_view_fds_unix_sock( - sockets[0], &pv); + sock_ret = lttcomm_send_payload_view_fds_unix_sock(sockets[0], &pv); ok(sock_ret == 1, "Sent test payload file descriptors"); if (sock_ret != 1) { if (sock_ret < 0) { PERROR("Failed to send test payload file descriptors: ret = %zd, expected = %d", - sock_ret, 1); + sock_ret, + 1); } else { diag("Failed to send test payload file descriptors: ret = %zd, expected = %d", - sock_ret, 1); + sock_ret, + 1); } goto error; @@ -128,45 +131,40 @@ static void test_high_fd_count(unsigned int fd_count) ssize_t sock_ret; ret = lttng_dynamic_buffer_set_size(&received_payload.buffer, - sent_payload.buffer.size); + sent_payload.buffer.size); if (ret) { PERROR("Failed to pre-allocate reception buffer"); goto error; } - sock_ret = lttcomm_recv_unix_sock(sockets[1], - received_payload.buffer.data, - received_payload.buffer.size); - ok(sock_ret == received_payload.buffer.size, - "Received payload bytes"); + sock_ret = lttcomm_recv_unix_sock( + sockets[1], received_payload.buffer.data, received_payload.buffer.size); + ok(sock_ret == received_payload.buffer.size, "Received payload bytes"); if (sock_ret != received_payload.buffer.size) { ERR("Failed to receive payload bytes: ret = %zd, expected = %zu", - sock_ret, received_payload.buffer.size); + sock_ret, + received_payload.buffer.size); goto error; } - sock_ret = lttcomm_recv_payload_fds_unix_sock( - sockets[1], fd_count, &received_payload); + sock_ret = + lttcomm_recv_payload_fds_unix_sock(sockets[1], fd_count, &received_payload); ok(sock_ret == (int) (sizeof(int) * fd_count), - "FD reception return value is number of fd * sizeof(int)"); + "FD reception return value is number of fd * sizeof(int)"); if (sock_ret != (int) (sizeof(int) * fd_count)) { ERR("Failed to receive test payload file descriptors: ret = %zd, expected = %d", - sock_ret, - (int) (fd_count * sizeof(int))); + sock_ret, + (int) (fd_count * sizeof(int))); goto error; } { const struct lttng_payload_view pv = - lttng_payload_view_from_payload( - &received_payload, 0, - -1); - const int fd_handle_count = - lttng_payload_view_get_fd_handle_count( - &pv); + lttng_payload_view_from_payload(&received_payload, 0, -1); + const int fd_handle_count = lttng_payload_view_get_fd_handle_count(&pv); ok(fd_handle_count == fd_count, - "Received all test payload file descriptors in one invocation"); + "Received all test payload file descriptors in one invocation"); } } @@ -193,14 +191,13 @@ error: static void test_one_fd_per_message(unsigned int message_count) { const unsigned int payload_content = 42; - int sockets[2] = {-1, -1}; + int sockets[2] = { -1, -1 }; int ret; unsigned int i; struct lttng_payload sent_payload; struct lttng_payload received_payload; - diag("Send and receive small messages with one FD each (%u messages)", - message_count); + diag("Send and receive small messages with one FD each (%u messages)", message_count); lttng_payload_init(&sent_payload); lttng_payload_init(&received_payload); @@ -217,8 +214,8 @@ static void test_one_fd_per_message(unsigned int message_count) int fd; /* Add dummy content to payload. */ - ret = lttng_dynamic_buffer_append(&sent_payload.buffer, - &payload_content, sizeof(payload_content)); + ret = lttng_dynamic_buffer_append( + &sent_payload.buffer, &payload_content, sizeof(payload_content)); if (ret) { PERROR("Failed to initialize test payload"); goto error; @@ -249,34 +246,31 @@ static void test_one_fd_per_message(unsigned int message_count) { ssize_t sock_ret; struct lttng_payload_view pv = - lttng_payload_view_from_payload( - &sent_payload, 0, -1); + lttng_payload_view_from_payload(&sent_payload, 0, -1); /* Not expected to block considering the size of the * payload. */ - sock_ret = lttcomm_send_unix_sock(sockets[0], - pv.buffer.data, pv.buffer.size); - ok(sock_ret == pv.buffer.size, - "Sent binary payload for message %u", - i); + sock_ret = + lttcomm_send_unix_sock(sockets[0], pv.buffer.data, pv.buffer.size); + ok(sock_ret == pv.buffer.size, "Sent binary payload for message %u", i); if (sock_ret != pv.buffer.size) { ERR("Failed to send test payload bytes: ret = %zd, expected = %zu", - sock_ret, pv.buffer.size); + sock_ret, + pv.buffer.size); goto error; } - sock_ret = lttcomm_send_payload_view_fds_unix_sock( - sockets[0], &pv); - ok(sock_ret == 1, - "Sent file descriptors payload for message %u", - i); + sock_ret = lttcomm_send_payload_view_fds_unix_sock(sockets[0], &pv); + ok(sock_ret == 1, "Sent file descriptors payload for message %u", i); if (sock_ret != 1) { if (sock_ret < 0) { PERROR("Failed to send test payload file descriptors: ret = %zd, expected = %d", - sock_ret, 1); + sock_ret, + 1); } else { diag("Failed to send test payload file descriptors: ret = %zd, expected = %d", - sock_ret, 1); + sock_ret, + 1); } goto error; @@ -291,45 +285,39 @@ static void test_one_fd_per_message(unsigned int message_count) ssize_t sock_ret; ret = lttng_dynamic_buffer_set_size(&received_payload.buffer, - sizeof(payload_content)); + sizeof(payload_content)); if (ret) { PERROR("Failed to pre-allocate reception buffer"); goto error; } - sock_ret = lttcomm_recv_unix_sock(sockets[1], - received_payload.buffer.data, - received_payload.buffer.size); + sock_ret = lttcomm_recv_unix_sock( + sockets[1], received_payload.buffer.data, received_payload.buffer.size); ok(sock_ret == received_payload.buffer.size, - "Received payload bytes for message %u", i); + "Received payload bytes for message %u", + i); if (sock_ret != received_payload.buffer.size) { ERR("Failed to receive payload bytes: ret = %zd, expected = %zu", - sock_ret, received_payload.buffer.size); + sock_ret, + received_payload.buffer.size); goto error; } - sock_ret = lttcomm_recv_payload_fds_unix_sock( - sockets[1], 1, &received_payload); - ok(sock_ret == (int) sizeof(int), "Received fd for message %u", - i); + sock_ret = lttcomm_recv_payload_fds_unix_sock(sockets[1], 1, &received_payload); + ok(sock_ret == (int) sizeof(int), "Received fd for message %u", i); if (sock_ret != (int) sizeof(int)) { ERR("Failed to receive test payload file descriptors: ret = %zd, expected = %u", - sock_ret, (int) sizeof(int)); + sock_ret, + (int) sizeof(int)); goto error; } { const struct lttng_payload_view pv = - lttng_payload_view_from_payload( - &received_payload, 0, - -1); - const int fd_handle_count = - lttng_payload_view_get_fd_handle_count( - &pv); + lttng_payload_view_from_payload(&received_payload, 0, -1); + const int fd_handle_count = lttng_payload_view_get_fd_handle_count(&pv); - ok(fd_handle_count == 1, - "Payload contains 1 fd for message %u", - i); + ok(fd_handle_count == 1, "Payload contains 1 fd for message %u", i); } lttng_payload_clear(&received_payload); @@ -353,10 +341,9 @@ error: /* * Validate that a large message can be received in multiple chunks. */ -static void test_receive_in_chunks( - unsigned int payload_size, unsigned int max_recv_size) +static void test_receive_in_chunks(unsigned int payload_size, unsigned int max_recv_size) { - int sockets[2] = {-1, -1}; + int sockets[2] = { -1, -1 }; int ret; unsigned int i; struct lttng_payload sent_payload; @@ -406,29 +393,30 @@ static void test_receive_in_chunks( /* Send payload. */ { - struct lttng_payload_view pv = lttng_payload_view_from_payload( - &sent_payload, 0, -1); + struct lttng_payload_view pv = + lttng_payload_view_from_payload(&sent_payload, 0, -1); /* Not expected to block considering the size of the payload. */ - sock_ret = lttcomm_send_unix_sock( - sockets[0], pv.buffer.data, pv.buffer.size); + sock_ret = lttcomm_send_unix_sock(sockets[0], pv.buffer.data, pv.buffer.size); ok(sock_ret == pv.buffer.size, "Sent complete test payload"); if (sock_ret != pv.buffer.size) { ERR("Failed to send test payload bytes: ret = %zd, expected = %zu", - sock_ret, pv.buffer.size); + sock_ret, + pv.buffer.size); goto error; } - sock_ret = lttcomm_send_payload_view_fds_unix_sock( - sockets[0], &pv); + sock_ret = lttcomm_send_payload_view_fds_unix_sock(sockets[0], &pv); ok(sock_ret == 1, "Sent test payload file descriptors"); if (sock_ret != 1) { if (sock_ret < 0) { PERROR("Failed to send test payload file descriptors: ret = %zd, expected = %d", - sock_ret, 1); + sock_ret, + 1); } else { diag("Failed to send test payload file descriptors: ret = %zd, expected = %d", - sock_ret, 1); + sock_ret, + 1); } goto error; @@ -436,8 +424,7 @@ static void test_receive_in_chunks( } /* Receive payload */ - ret = lttng_dynamic_buffer_set_size( - &received_payload.buffer, sent_payload.buffer.size); + ret = lttng_dynamic_buffer_set_size(&received_payload.buffer, sent_payload.buffer.size); if (ret) { PERROR("Failed to pre-allocate reception buffer"); goto error; @@ -445,15 +432,14 @@ static void test_receive_in_chunks( do { const ssize_t to_receive_this_pass = - std::min(max_recv_size, - sent_payload.buffer.size - received); + std::min(max_recv_size, sent_payload.buffer.size - received); - sock_ret = lttcomm_recv_unix_sock(sockets[1], - received_payload.buffer.data + received, - to_receive_this_pass); + sock_ret = lttcomm_recv_unix_sock( + sockets[1], received_payload.buffer.data + received, to_receive_this_pass); if (sock_ret != to_receive_this_pass) { ERR("Failed to receive payload bytes: ret = %zd, expected = %zu", - sock_ret, to_receive_this_pass); + sock_ret, + to_receive_this_pass); break; } @@ -461,31 +447,28 @@ static void test_receive_in_chunks( } while (received < sent_payload.buffer.size); ok(received == sent_payload.buffer.size, - "Received complete payload in chunks of %u bytes", - max_recv_size); + "Received complete payload in chunks of %u bytes", + max_recv_size); if (received != sent_payload.buffer.size) { goto error; } - sock_ret = lttcomm_recv_payload_fds_unix_sock( - sockets[1], 1, &received_payload); + sock_ret = lttcomm_recv_payload_fds_unix_sock(sockets[1], 1, &received_payload); ok(sock_ret == (int) sizeof(int), - "Received file descriptor after receiving payload in chunks"); + "Received file descriptor after receiving payload in chunks"); if (sock_ret != (int) sizeof(int)) { ERR("Failed to receive test payload file descriptors: ret = %zd, expected = %d", - sock_ret, (int) sizeof(int)); + sock_ret, + (int) sizeof(int)); goto error; } { const struct lttng_payload_view pv = - lttng_payload_view_from_payload( - &received_payload, 0, -1); - const int fd_handle_count = - lttng_payload_view_get_fd_handle_count(&pv); + lttng_payload_view_from_payload(&received_payload, 0, -1); + const int fd_handle_count = lttng_payload_view_get_fd_handle_count(&pv); - ok(fd_handle_count == 1, - "Payload contains 1 fd after receiving payload in chunks"); + ok(fd_handle_count == 1, "Payload contains 1 fd after receiving payload in chunks"); } error: @@ -503,8 +486,7 @@ error: lttng_payload_reset(&received_payload); } -static -void test_creds_passing(void) +static void test_creds_passing(void) { pid_t fork_ret = -1; int ret, parent_socket = -1, child_connection_socket = -1; @@ -524,10 +506,8 @@ void test_creds_passing(void) goto error; } - strncat(socket_path, socket_dir_path, - sizeof(socket_path) - strlen(socket_path) - 1); - strncat(socket_path, "/test_unix_socket", - sizeof(socket_path) - strlen(socket_path) - 1); + strncat(socket_path, socket_dir_path, sizeof(socket_path) - strlen(socket_path) - 1); + strncat(socket_path, "/test_unix_socket", sizeof(socket_path) - strlen(socket_path) - 1); parent_socket = lttcomm_create_unix_sock(socket_path); ok(parent_socket >= 0, "Created unix socket at path `%s`", socket_path); @@ -575,8 +555,8 @@ void test_creds_passing(void) PERROR("Failed to set SO_PASSCRED on child socket"); } - sock_ret = lttcomm_send_creds_unix_sock(child_socket, &expected_creds, - sizeof(expected_creds)); + sock_ret = lttcomm_send_creds_unix_sock( + child_socket, &expected_creds, sizeof(expected_creds)); if (sock_ret < 0) { PERROR("Failed to send expected credentials"); } @@ -591,23 +571,22 @@ void test_creds_passing(void) pid_t wait_pid_ret; lttng_sock_cred received_creds = {}; - child_connection_socket = - lttcomm_accept_unix_sock(parent_socket); + child_connection_socket = lttcomm_accept_unix_sock(parent_socket); if (child_connection_socket < 0) { PERROR(); goto error; } - ret = lttcomm_setsockopt_creds_unix_sock( - child_connection_socket); + ret = lttcomm_setsockopt_creds_unix_sock(child_connection_socket); if (ret) { PERROR("Failed to set SO_PASSCRED on child connection socket"); goto error; } sock_ret = lttcomm_recv_creds_unix_sock(child_connection_socket, - &expected_creds, sizeof(expected_creds), - &received_creds); + &expected_creds, + sizeof(expected_creds), + &received_creds); if (sock_ret < 0) { PERROR("Failed to receive credentials"); goto error; @@ -624,14 +603,17 @@ void test_creds_passing(void) } ok(expected_creds.euid == received_creds.uid, - "Received the expected effective uid (%d == %d)", - expected_creds.euid, received_creds.uid); + "Received the expected effective uid (%d == %d)", + expected_creds.euid, + received_creds.uid); ok(expected_creds.egid == received_creds.gid, - "Received the expected effective gid (%d == %d)", - expected_creds.egid, received_creds.gid); + "Received the expected effective gid (%d == %d)", + expected_creds.egid, + received_creds.gid); ok(expected_creds.pid == received_creds.pid, - "Received the expected pid (%d == %d)", - expected_creds.pid, received_creds.pid); + "Received the expected pid (%d == %d)", + expected_creds.pid, + received_creds.pid); } error: @@ -659,14 +641,12 @@ error: ret = unlink(socket_path); if (ret) { - PERROR("Failed to unlink socket at path `%s`", - socket_path); + PERROR("Failed to unlink socket at path `%s`", socket_path); } ret = rmdir(socket_dir_path); if (ret) { - PERROR("Failed to remove test directory at `%s`", - socket_dir_path); + PERROR("Failed to remove test directory at `%s`", socket_dir_path); } } }