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");
+  }
+}
+
+