Mercurial
diff mrjunejune/test/test.h @ 129:f7860f491a8c
--amend
| author | June Park <parkjune1995@gmail.com> |
|---|---|
| date | Thu, 08 Jan 2026 19:21:22 -0800 |
| parents | |
| children | c1eab8c0b0f9 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mrjunejune/test/test.h Thu Jan 08 19:21:22 2026 -0800 @@ -0,0 +1,74 @@ +#include "seobeo/seobeo.h" +#include "seobeo/snapshot_creator.h" +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <sys/wait.h> +#include <signal.h> + +#define TEST_PORT "6969" +#define TEST_HOST "127.0.0.1" +#define TEST_URL "http://127.0.0.1:6969" +#define MAX_RESPONSE_SIZE (1024 * 1024) +#ifndef SNAPSHOT_DIR + #define SNAPSHOT_DIR "mrjunejune/test/snapshots" +#endif + +pid_t start_test_server(const char *server_binary); +void stop_test_server(pid_t server_pid); + + +pid_t start_test_server(const char *server_binary) +{ + pid_t server_pid = fork(); + + if (server_pid < 0) + { + perror("fork"); + return -1; + } + + if (server_pid == 0) + { + printf("Starting server on port %s...\n", TEST_PORT); + execl(server_binary, server_binary, NULL); + perror("execl failed"); + exit(1); + } + + printf("Server started (PID: %d)\n", server_pid); + + usleep(100000); + int status; + pid_t result = waitpid(server_pid, &status, WNOHANG); + if (result != 0) + { + if (WIFEXITED(status)) + { + fprintf(stderr, "Server exited immediately with code: %d\n", WEXITSTATUS(status)); + } + else if (WIFSIGNALED(status)) + { + fprintf(stderr, "Server was killed by signal: %d\n", WTERMSIG(status)); + } + return -1; + } + + sleep(2); + printf("Server ready\n\n"); + + return server_pid; +} + +void stop_test_server(pid_t server_pid) +{ + if (server_pid > 0) + { + printf("\nStopping server (PID: %d)...\n", server_pid); + kill(server_pid, SIGTERM); + waitpid(server_pid, NULL, 0); + printf("Server stopped\n"); + } +} + +