Browse Source

add testserver and did some fixes not shown by my incomplete tests

master
Georg Hopp 14 years ago
parent
commit
f366c0b865
  1. 60
      ChangeLog
  2. 2
      Makefile.am
  3. 2
      configure.ac
  4. 10
      include/server.h
  5. 10
      src/Makefile.am
  6. 7
      src/server/close_conn.c
  7. 0
      src/server/run.c
  8. 0
      src/socket/accept.c
  9. 0
      src/socket/connect.c
  10. 0
      src/socket/listen.c
  11. 30
      src/testserver.c
  12. 8
      tests/Makefile.am
  13. 5
      tests/serverTest.c
  14. 2
      tests/socketTest.c

60
ChangeLog

@ -0,0 +1,60 @@
2012-01-18 07:52:07 +0100 Georg Hopp
* add testserver and did some fixes not shown by my incomplete tests (HEAD, master)
2012-01-17 15:40:07 +0100 Georg Hopp
* more notes
2012-01-17 15:04:33 +0100 Georg Hopp
* add some thought
2012-01-17 14:49:49 +0100 Georg Hopp
* changed from select(UNIX) to poll(POSIX)
2012-01-16 18:39:01 +0100 Georg Hopp
* work on server_run
2012-01-16 17:05:57 +0100 Georg Hopp
* move test under docs dir
2012-01-16 17:05:08 +0100 Georg Hopp
* simply copy signal handling code from gameserver project
2012-01-16 16:04:11 +0100 Georg Hopp
* more work on socket handling stuff... @TODO think about renaming it to connection as it only handles TCP sockets
2012-01-16 13:48:05 +0100 Georg Hopp
* add info text about file handle passing and ported more stuff from my old server structure
2012-01-16 08:05:15 +0100 Georg Hopp
* reflect changes in configure.ac
2012-01-13 22:46:45 +0100 Georg Hopp
* add daemonize code from other project. (Might be integrated in a future class but i am not sure right now
2012-01-13 22:16:17 +0100 Georg Hopp
* logger now works and has some basic testing
2012-01-13 22:15:03 +0100 Georg Hopp
* change cclass so that the internal structure is no longer visible by the rest of the code
2012-01-13 16:06:02 +0100 Georg Hopp
* some fixes on first logger tests
2012-01-13 15:54:22 +0100 Georg Hopp
* initial checkin

2
Makefile.am

@ -7,4 +7,4 @@ ACLOCAL_AMFLAGS = -I m4
# #
#EXTRA_DIST = base64.h #EXTRA_DIST = base64.h
SUBDIRS = tests
SUBDIRS = src tests

2
configure.ac

@ -35,5 +35,5 @@ AC_TYPE_SIZE_T
#AC_FUNC_MALLOC #AC_FUNC_MALLOC
AC_CHECK_FUNCS([memset]) AC_CHECK_FUNCS([memset])
AC_CONFIG_FILES([Makefile tests/Makefile])
AC_CONFIG_FILES([Makefile src/Makefile tests/Makefile])
AC_OUTPUT AC_OUTPUT

10
include/server.h

@ -10,7 +10,15 @@
#define POLL_FD_NSIZE 1024 #define POLL_FD_NSIZE 1024
#define POLL_FD_SIZE (sizeof(struct pollfd) * POLL_FD_NSIZE) #define POLL_FD_SIZE (sizeof(struct pollfd) * POLL_FD_NSIZE)
#define POLL_FD_MOVE(idx) (sizeof(struct pollfd) * (POLL_FD_NSIZE-(idx)+1))
#define MOVE_SIZE(size,idx) ((size) * (POLL_FD_NSIZE-((idx)+1)))
#define CLEAR_CONN(server,idx) \
memmove(&(((server)->fds)[(idx)]), \
&(((server)->fds)[(idx)+1]), \
MOVE_SIZE(sizeof(((server)->fds)[0]),(idx))); \
memmove(&(((server)->conns)[(idx)]), \
&(((server)->conns)[(idx)+1]), \
MOVE_SIZE(sizeof(((server)->conns)[0]),(idx)))
typedef void (*server_read_hook)(const char *); typedef void (*server_read_hook)(const char *);

10
src/Makefile.am

@ -0,0 +1,10 @@
ACLOCAL_AMFLAGS = -I m4
CCLASS = cclass.c
SOCKET = socket.c socket/accept.c socket/connect.c socket/listen.c
SERVER = server.c server/run.c server/close_conn.c
bin_PROGRAMS = testserver
testserver_SOURCES = testserver.c $(CCLASS) $(SOCKET) $(SERVER) signalHandling.c logger.c
testserver_CFLAGS = -Wall -I ../include

7
src/server_close_conn.c → src/server/close_conn.c

@ -1,12 +1,13 @@
#include "server.h"
#include <string.h>
#include "server.h"
void void
server_close_conn(SERVER this, unsigned int i) server_close_conn(SERVER this, unsigned int i)
{ {
memmove(&((this->fds)[i]), &((this->fds)[i+1]), POLL_FD_MOVE(i+1));
this->nfds--;
delete(&((this->conns)[i].sock)); delete(&((this->conns)[i].sock));
CLEAR_CONN(this, i);
this->nfds--;
} }
// vim: set ts=4 sw=4: // vim: set ts=4 sw=4:

0
src/server_run.c → src/server/run.c

0
src/socket_accept.c → src/socket/accept.c

0
src/socket_connect.c → src/socket/connect.c

0
src/socket_listen.c → src/socket/listen.c

30
src/testserver.c

@ -0,0 +1,30 @@
#include <stdio.h>
#include <socket.h>
#include "server.h"
#include "signalHandling.h"
static void
read_hook(const char * _buffer)
{
printf("%s\n", _buffer);
}
int
main()
{
LOGGER logger = new(LOGGER, NULL);
SERVER server = new(SERVER, logger, 11212, SOMAXCONN);
server->read_hook = read_hook;
init_signals();
server_run(server);
delete(&server);
delete(&logger);
return 0;
}
// vim: set ts=4 sw=4:

8
tests/Makefile.am

@ -7,10 +7,10 @@ check_PROGRAMS = cclassTest loggerTest socketTest serverTest
COMMON = runtest.c ../src/cclass.c COMMON = runtest.c ../src/cclass.c
CCLASS = $(COMMON) mock/class.c CCLASS = $(COMMON) mock/class.c
LOGGER = $(COMMON) ../src/logger.c LOGGER = $(COMMON) ../src/logger.c
SOCKET = $(LOGGER) ../src/socket.c ../src/socket_listen.c \
../src/socket_accept.c ../src/socket_connect.c
SERVER = $(SOCKET) ../src/server.c ../src/server_run.c \
../src/server_close_conn.c ../src/signalHandling.c
SOCKET = $(LOGGER) ../src/socket.c ../src/socket/listen.c \
../src/socket/accept.c ../src/socket/connect.c
SERVER = $(SOCKET) ../src/server.c ../src/server/run.c \
../src/server/close_conn.c ../src/signalHandling.c
cclassTest_SOURCES = $(CCLASS) cclassTest.c cclassTest_SOURCES = $(CCLASS) cclassTest.c
cclassTest_CFLAGS = -Wall -ggdb -O0 -finline-functions -I ../include -I .. -I . cclassTest_CFLAGS = -Wall -ggdb -O0 -finline-functions -I ../include -I .. -I .

5
tests/serverTest.c

@ -2,6 +2,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <unistd.h> #include <unistd.h>
#include <signal.h> #include <signal.h>
#include <socket.h>
#include "runtest.h" #include "runtest.h"
#include "logger.h" #include "logger.h"
@ -10,7 +11,7 @@
#include "signalHandling.h" #include "signalHandling.h"
#define TEST_PORT 11218
#define TEST_PORT 11212
#define TEST_DATA "test" #define TEST_DATA "test"
@ -46,7 +47,7 @@ __setUp()
logger = new(LOGGER, NULL); logger = new(LOGGER, NULL);
logger_add(logger, logfnct_mock); logger_add(logger, logfnct_mock);
server = new(SERVER, logger, TEST_PORT);
server = new(SERVER, logger, TEST_PORT, SOMAXCONN);
ASSERT_INSTANCE_OF(SERVER, server); ASSERT_INSTANCE_OF(SERVER, server);
ASSERT_INSTANCE_OF(LOGGER, server->logger); ASSERT_INSTANCE_OF(LOGGER, server->logger);

2
tests/socketTest.c

@ -8,7 +8,7 @@
#include "socket.h" #include "socket.h"
#define TEST_PORT 11213
#define TEST_PORT 11212
int level = -1; int level = -1;

Loading…
Cancel
Save