diff options
-rw-r--r-- | server/src/Makefile.am | 1 | ||||
-rw-r--r-- | server/src/server.cc | 30 |
2 files changed, 26 insertions, 5 deletions
diff --git a/server/src/Makefile.am b/server/src/Makefile.am index baecd73..c7a2cfc 100644 --- a/server/src/Makefile.am +++ b/server/src/Makefile.am @@ -233,7 +233,6 @@ TEST_SERVER_FILES = \ $(BASICFILES) test_server: $(TEST_SERVER_FILES) @../../tools/test $(TEST_SERVER_FILES) $(BASICFLAGS) $(LUA_LIBS) $(DBFLAGS) $(PARSERFLAGS) - @sleep 1s; killall -9 test_server TEST_PRACRODAOPGSQL_FILES = \ pracrodaopgsql.cc \ diff --git a/server/src/server.cc b/server/src/server.cc index 8e5e938..3ddb795 100644 --- a/server/src/server.cc +++ b/server/src/server.cc @@ -430,6 +430,9 @@ void server() #ifdef TEST_SERVER +#include <sys/types.h> +#include <signal.h> + bool pracro_is_running = true; char request[] = @@ -440,27 +443,46 @@ char request[] = int main() { - switch(fork()) { + Conf::xml_basedir = "../xml/"; + Conf::server_port = 32100; // Make sure wo don't interrupt an already running server. + pid_t pid = fork(); + + switch(pid) { case -1: // error + perror("fork() failed!\n"); return 1; case 0: // child - server(); + try { + server(); + } catch(Exception &e) { + printf(e.what()); + return 1; + } return 0; default: // parent - { + try { + // sleep(1); // Make sure the server is started. TCPSocket socket; socket.connect("localhost", Conf::server_port); socket.write(request); + + // sleep(1); // Make sure the server has handled the request. char buf[32]; memset(buf, 0, sizeof(buf)); - while(socket.read(buf, 31, 1000)) { + // while(socket.read(buf, 31, 1000)) { + while(socket.read(buf, 31, 1000000)) { printf(buf); fflush(stdout); memset(buf, 0, sizeof(buf)); } + } catch(Exception &e) { + printf(e.what()); + kill(pid, SIGKILL); // Kill the server again. + return 1; } + kill(pid, SIGKILL); // Kill the server again. return 0; } |