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