diff --git a/test/server/CMakeLists.txt b/test/server/CMakeLists.txt index 3d54a7d..af302de 100644 --- a/test/server/CMakeLists.txt +++ b/test/server/CMakeLists.txt @@ -38,25 +38,4 @@ target_link_libraries(prepare_start target_link_options(prepare_start PRIVATE -Wl,--wrap=print_log,--wrap=chdir,--wrap=mkdir,--wrap=exit,--wrap=directory_exists) -add_test(NAME client_prepare_start_test_1 COMMAND prepare_start) - -# ---/ server_main_loop /-------------------------------------------- - -add_executable(server_main_loop - server_main_loop.c -) - -target_link_libraries(server_main_loop - cmocka - client - file_p - session - utils - main - server - test_utils -) - -target_link_options(server_main_loop PRIVATE -Wl,--wrap=print_log) - -add_test(NAME client_server_main_loop_test_1 COMMAND server_main_loop) \ No newline at end of file +add_test(NAME client_prepare_start_test_1 COMMAND prepare_start) \ No newline at end of file diff --git a/test/server/server_main_loop.c b/test/server/server_main_loop.c deleted file mode 100644 index 056a0e2..0000000 --- a/test/server/server_main_loop.c +++ /dev/null @@ -1,123 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define CLIENT_PORT PORT + 1 - -int sd = -1; -int lpid = -1; -int _addr; -volatile sig_atomic_t child_ready = 0; -#define WELCOME_MES "Hello everyworld!\n" - -int init_client(void); -bool connect_to_server(int sd, int addr, short int port); -void _server_loop(); -void usr1hdl(int n) { child_ready = true; } -int setup(void **state); -int tear_down(void **state); - -/* === TESTS === */ - -/* TODO: better solution than sleep() */ -void test__welcome(void **state) { - char str[] = WELCOME_MES "login> "; - char buf[256]; - int rlen = read(sd, buf, 128); - buf[rlen] = 0; - assert_string_equal(str, buf); -} - -/* === MAIN === */ -int main(int argc, char **argv) { - const struct CMUnitTest tests[] = {cmocka_unit_test(test__welcome)}; - return cmocka_run_group_tests(tests, setup, tear_down); -} - -/* === ADDITIONAL === */ -bool connect_to_server(int sd, int addr, short int port) { - struct sockaddr_in server; - server.sin_family = AF_INET; - server.sin_addr.s_addr = addr; - server.sin_port = port; - - if (-1 == connect(sd, (struct sockaddr *)&server, sizeof(server))) { - return false; - } - - return true; -} - -int init_client(void) { - int res; - int cs = socket(AF_INET, SOCK_STREAM, 0); - struct sockaddr_in client; - - client.sin_family = AF_INET; - client.sin_port = htons(CLIENT_PORT); - client.sin_addr.s_addr = htonl(INADDR_ANY); - - int opt = 1; - setsockopt(cs, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)); - - res = bind(cs, (struct sockaddr *)&client, sizeof(client)); - if (res == -1) { - exit(1); - } - return cs; -} - -void _server_loop() { - server_data_t s_d = {.ls = start_server(), - .welcome_message = WELCOME_MES}; - if (s_d.ls == -1) { - kill(getppid(), SIGTERM); - exit(1); - } - kill(getppid(), SIGUSR1); - server_main_loop(&s_d); - exit(0); -} - -int setup(void **state) { - sigset_t mask_usr1, mask_empty; - sigemptyset(&mask_usr1); - sigaddset(&mask_usr1, SIGUSR1); - sigemptyset(&mask_empty); - sigprocmask(SIG_SETMASK, &mask_usr1, NULL); - signal(SIGUSR1, usr1hdl); - - lpid = fork(); - - if (lpid == 0) { - _server_loop(); - } - - while (!child_ready) - sigsuspend(&mask_empty); - struct sockaddr_in addr; - inet_aton("127.0.0.1", &(addr.sin_addr)); - _addr = addr.sin_addr.s_addr; - - sd = init_client(); - int res = connect_to_server(sd, _addr, htons(PORT)); - if (!res) { - perror("connect failed"); - kill(lpid, SIGTERM); - exit(1); - } - return 0; -} - -int tear_down(void **state) { - kill(lpid, SIGTERM); - return 0; -}