Branch data Line data Source code
1 : : #include <stdio.h>
2 : : #include <stdlib.h>
3 : : #include <unistd.h>
4 : : #include <signal.h>
5 : : #include <socket.h>
6 : : #include <sys/types.h>
7 : :
8 : : #include "runtest.h"
9 : : #include "logger.h"
10 : : #include "class.h"
11 : : #include "server.h"
12 : : #include "utils/signalHandling.h"
13 : : #include "mock/mock_logger.h"
14 : : #include "mock/mock_worker.h"
15 : :
16 : :
17 : : #define TEST_PORT 11222
18 : : #define TEST_DATA "test"
19 : :
20 : :
21 : : char buffer[1025];
22 : :
23 : : const char testname[] = "serverTest";
24 : :
25 : : MockLogger logger = NULL;
26 : : MockWorker worker = NULL;
27 : : Server server = NULL;
28 : :
29 : : static
30 : : int
31 : 1 : __setUp()
32 : : {
33 : 1 : logger = new(MockLogger, LOGGER_DEBUG);
34 : 1 : worker = new(MockWorker);
35 : :
36 : 1 : server = new(Server, logger, worker, TEST_PORT, SOMAXCONN);
37 : :
38 : 1 : ASSERT_INSTANCE_OF(Server, server);
39 : 1 : ASSERT_INSTANCE_OF(MockLogger, server->logger);
40 : 1 : ASSERT_INSTANCE_OF(MockWorker, server->worker);
41 : 1 : ASSERT_INSTANCE_OF(Sock, server->sock);
42 : 1 : ASSERT_EQUAL(TEST_PORT, server->sock->port);
43 : :
44 : 1 : return TEST_OK;
45 : : }
46 : : int (* const setUp)() = __setUp;
47 : :
48 : : static
49 : : int
50 : 2 : __tearDown()
51 : : {
52 : 2 : if (NULL != server) {
53 : 2 : ASSERT_OBJECT(server);
54 : 2 : delete(server);
55 : : }
56 : :
57 : 2 : if (NULL != worker) {
58 : 2 : ASSERT_OBJECT(worker);
59 : 2 : delete(worker);
60 : : }
61 : :
62 : 2 : if (NULL != logger) {
63 : 2 : ASSERT_OBJECT(logger);
64 : 2 : delete(logger);
65 : : }
66 : :
67 : 2 : return TEST_OK;
68 : : }
69 : : int (* const tearDown)() = __tearDown;
70 : :
71 : : static
72 : : int
73 : 1 : testDummy()
74 : : {
75 : : Sock con;
76 : : pid_t pid, ppid;
77 : : char addr[16];
78 : :
79 : 1 : ppid = getpid();
80 : 1 : pid = fork();
81 : :
82 : 2 : switch(pid) {
83 : : case 0:
84 : 1 : con = new(Sock, logger, TEST_PORT);
85 : 1 : sleep(1);
86 : 1 : socketConnect(con, "127.0.0.1", &addr);
87 : 1 : if(-1 == write(con->handle, TEST_DATA, strlen(TEST_DATA)+1)) {
88 : 0 : exit(EXIT_FAILURE);
89 : : }
90 : 1 : sleep(1);
91 : 1 : delete(con);
92 : 1 : __tearDown();
93 : 1 : kill(ppid, SIGINT);
94 : 1 : exit(EXIT_SUCCESS);
95 : :
96 : : case -1:
97 : 0 : return TEST_FAILED;
98 : :
99 : : default:
100 : 1 : init_signals();
101 : 1 : serverRun(server);
102 : : }
103 : :
104 : 1 : ASSERT_STRING_EQUAL(TEST_DATA, worker->rbuf);
105 : :
106 : 1 : return TEST_OK;
107 : : }
108 : :
109 : : const testfunc tests[] = {
110 : : testDummy
111 : : };
112 : : const size_t count = FUNCS_COUNT(tests);
113 : :
114 : : // vim: set ts=4 sw=4:
|