summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/Makefile.am5
-rw-r--r--tests/minitcpsrvr.c61
-rwxr-xr-xtests/tcp_forwarding_tpl.sh30
-rw-r--r--tests/testsuites/tcp_forwarding_tpl.conf7
4 files changed, 102 insertions, 1 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 7ccefb01..5bcaea75 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -1,6 +1,6 @@
if ENABLE_TESTBENCH
# TODO: reenable TESTRUNS = rt_init rscript
-check_PROGRAMS = $(TESTRUNS) ourtail nettester tcpflood chkseq msleep randomgen diagtalker uxsockrcvr syslog_caller syslog_inject inputfilegen
+check_PROGRAMS = $(TESTRUNS) ourtail nettester tcpflood chkseq msleep randomgen diagtalker uxsockrcvr syslog_caller syslog_inject inputfilegen minitcpsrv
TESTS = $(TESTRUNS)
#TESTS = $(TESTRUNS) cfg.sh
@@ -519,6 +519,9 @@ if ENABLE_GNUTLS
tcpflood_LDADD += -lgcrypt
endif
+minitcpsrv_SOURCES = minitcpsrvr.c
+minitcpsrv_LDADD = $(SOL_LIBS)
+
syslog_caller_SOURCES = syslog_caller.c
syslog_caller_LDADD = $(SOL_LIBS)
diff --git a/tests/minitcpsrvr.c b/tests/minitcpsrvr.c
new file mode 100644
index 00000000..76dae0a5
--- /dev/null
+++ b/tests/minitcpsrvr.c
@@ -0,0 +1,61 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <arpa/inet.h>
+
+static void
+errout(char *reason)
+{
+ perror(reason);
+ exit(1);
+}
+
+int
+main(int argc, char *argv[])
+{
+ int fds;
+ int fdc;
+ int fdf;
+ struct sockaddr_in srvAddr;
+ struct sockaddr_in cliAddr;
+ unsigned int srvAddrLen;
+ unsigned int cliAddrLen;
+ char wrkBuf[4096];
+ ssize_t nRead;
+
+ if(argc != 4) {
+ fprintf(stderr, "usage: minitcpsrvr ip-addr port outfile\n");
+ exit(1);
+ }
+
+ if(!strcmp(argv[3], "-")) {
+ fdf = 1;
+ } else {
+ fdf = open(argv[3], O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR|S_IWUSR);
+ if(fdf == -1) errout(argv[3]);
+ }
+
+ fds = socket(AF_INET, SOCK_STREAM, 0);
+ srvAddr.sin_family = AF_INET;
+ srvAddr.sin_addr.s_addr = inet_addr(argv[1]);
+ srvAddr.sin_port = htons(atoi(argv[2]));
+ srvAddrLen = sizeof(srvAddr);
+ if(bind(fds, (struct sockaddr *)&srvAddr, srvAddrLen) != 0)
+ errout("bind");
+ if(listen(fds, 20) != 0) errout("listen");
+ cliAddrLen = sizeof(cliAddr);
+
+ fdc = accept(fds, (struct sockaddr *)&cliAddr, &cliAddrLen);
+ while(1) {
+ nRead = read(fdc, wrkBuf, sizeof(wrkBuf));
+ if(nRead == 0) break;
+ if(write(fdf, wrkBuf, nRead) != nRead)
+ errout("write");
+ }
+ /* let the OS do the cleanup */
+ return 0;
+}
diff --git a/tests/tcp_forwarding_tpl.sh b/tests/tcp_forwarding_tpl.sh
new file mode 100755
index 00000000..61114507
--- /dev/null
+++ b/tests/tcp_forwarding_tpl.sh
@@ -0,0 +1,30 @@
+# This test tests tcp forwarding with assigned template. To do so, a simple
+# tcp listener service is started.
+# added 2012-10-30 by Rgerhards. Released under GNU GPLv3+
+echo ===============================================================================
+echo \[tcp_forwarding_tpl.sh\]: test for tcp forwarding with assigned template
+
+# create the pipe and start a background process that copies data from
+# it to the "regular" work file
+source $srcdir/diag.sh init
+./minitcpsrvr 127.0.0.1 13514 rsyslog.out.log &
+BGPROCESS=$!
+echo background minitcpsrvr process id is $BGPROCESS
+
+# now do the usual run
+source $srcdir/diag.sh startup tcp_forwarding_tpl.conf
+# 10000 messages should be enough
+source $srcdir/diag.sh injectmsg 0 10000
+source $srcdir/diag.sh shutdown-when-empty # shut down rsyslogd when done processing messages
+source $srcdir/diag.sh wait-shutdown
+
+# note: minitcpsrvr shuts down automatically if the connection is closed!
+# (we still leave the code here in in case we need it later)
+#echo shutting down minitcpsrv...
+#kill $BGPROCESS
+#wait $BGPROCESS
+#echo background process has terminated, continue test...
+
+# and continue the usual checks
+source $srcdir/diag.sh seq-check 0 9999
+source $srcdir/diag.sh exit
diff --git a/tests/testsuites/tcp_forwarding_tpl.conf b/tests/testsuites/tcp_forwarding_tpl.conf
new file mode 100644
index 00000000..686c73ac
--- /dev/null
+++ b/tests/testsuites/tcp_forwarding_tpl.conf
@@ -0,0 +1,7 @@
+$IncludeConfig diag-common.conf
+$MainMsgQueueTimeoutShutdown 10000
+template(name="outfmt" type="string" string="%msg:F,58:2%\n")
+
+if $msg contains "msgnum:" then
+ action(type="omfwd" template="outfmt"
+ target="127.0.0.1" port="13514" protocol="tcp")