#include "test.h" #include #include #include #include #include #include #define TEST_SERVER_PATH "/tmp/test-utils-bus-server" #define NUM_CLIENTS 5 #define TEST_MSG "12345678901234567890" #define TEST_MSG_LEN 20 bus_server_t server; int bus_write_check(int *fd) { ssize_t ret; char buf[128]; int i, write_fd; write_fd = randint(NUM_CLIENTS - 1); ret = write(fd[write_fd], TEST_MSG, TEST_MSG_LEN); if (ret != TEST_MSG_LEN) { mod_printf("write %d failed!", write_fd); return -1; } for (i = 0; i < NUM_CLIENTS; i++) { if (i == write_fd) continue; ret = read(fd[i], buf, sizeof(buf)); if (ret != TEST_MSG_LEN) { mod_printf("read %d failed!", i); return -1; } if (strncmp(buf, TEST_MSG, TEST_MSG_LEN)) { mod_printf("msg check %d failed!", i); return -1; } } return 0; } int test_bus_server() { int i, rc = -1; int fd[NUM_CLIENTS]; for (i = 0; i < NUM_CLIENTS; i++) { fd[i] = sock_unix_connect(TEST_SERVER_PATH); if (fd[i] < 0) { mod_printf("connect %d failed!", i); return -1; } } for (i = 0; i < 10; i++) { if ((rc = bus_write_check(fd))) break; } for (i = 0; i < NUM_CLIENTS; i++) close(fd[i]); return rc; } TEST_DEF(bus_server) { int rc; TEST_MOD_INIT(); rc = bus_server_start(&server, NUM_CLIENTS, TEST_SERVER_PATH); if (rc < 0) { mod_printf("Failed to start bus server"); return; } mod_printf("bus server started"); TEST_MOD_EXEC( test_bus_server() ); bus_server_stop(&server); TEST_MOD_REPORT(); }