CESNET / ipfixcol

IPFIXcol is an implementation of an IPFIX (RFC 7011) collector
Other
64 stars 37 forks source link

Test 'ipfixsend - two inputs udp' fails #66

Closed ghost closed 9 years ago

ghost commented 9 years ago

The test ipfixsend - two inputs udp always fails. By looking at the test's output files, it can be concluded that a significant amount of data is missing (compared to the expected output).

ghost commented 9 years ago

The diff files (expected.log and output.log) are available in this Gist:

https://gist.github.com/SecDorks-Kirc/db527447d097870e03fb

thorgrin commented 9 years ago

I've tried this but all tests are OK. Can you try to following change?

diff --git a/base/tests/ipfixcol_test/test.sh b/base/tests/ipfixcol_test/test.sh
index ebd9cd6..2b7910a 100755
--- a/base/tests/ipfixcol_test/test.sh
+++ b/base/tests/ipfixcol_test/test.sh
@@ -116,7 +116,7 @@ for test in *; do
        fi

         if [[ "$test" == "ipfixsend "* ]]; then
-            $IPFIXCOL $PARAMS -i $INTERNAL > "$OUTPUT" 2>&1 &
+            $IPFIXCOL $PARAMS -v4 -i $INTERNAL > "$OUTPUT" 2>&1 &
             echo $! > tmp_pid
             sleep 1 # ipfixcol initialization

diff --git a/base/tests/ipfixcol_test/tests/ipfixsend two inputs udp/postproc.sh b/base/tests/ipfixcol_test/tests/ipfixsend two inputs udp/postproc.sh
index a35f0f8..4214b49 100755
--- a/base/tests/ipfixcol_test/tests/ipfixsend two inputs udp/postproc.sh       
+++ b/base/tests/ipfixcol_test/tests/ipfixsend two inputs udp/postproc.sh       
@@ -1,3 +1,4 @@
+cp output ipfixcol.log
 cat out0* >  output
 cat out4* >> output

Then send the output in "ipfixsend two inputs udp/ipfixcol.log"

ghost commented 9 years ago

There you go:

https://gist.github.com/SecDorks-Kirc/c8bb89e308d354f11e67

For your info: similar tests over TCP and SCTP run perfectly fine.

thorgrin commented 9 years ago

The problem seems to be with UDP loosing some data. Can you try to lower the sending speed?

diff --git a/base/tests/ipfixcol_test/tests/ipfixsend two inputs udp/ipfixsend.sh b/base/tests/ipfixcol_test/tests/ipfixsend two inputs udp/ipfixsend.sh
index a6feb8f..8fac7da 100755
--- a/base/tests/ipfixcol_test/tests/ipfixsend two inputs udp/ipfixsend.sh      
+++ b/base/tests/ipfixcol_test/tests/ipfixsend two inputs udp/ipfixsend.sh      
@@ -1,4 +1,4 @@
-$IPFIX_TEST_IPFIXSEND -i ../ipfix_data/01-odid0.ipfix -d 127.0.0.1 -p 4739 -t udp -n 1 -S 50 &
-$IPFIX_TEST_IPFIXSEND -i ../ipfix_data/01-odid4.ipfix -d 127.0.0.1 -p 4739 -t udp -n 1 -S 50
+$IPFIX_TEST_IPFIXSEND -i ../ipfix_data/01-odid0.ipfix -d 127.0.0.1 -p 4739 -t udp -n 1 -S 25 &
+$IPFIX_TEST_IPFIXSEND -i ../ipfix_data/01-odid4.ipfix -d 127.0.0.1 -p 4739 -t udp -n 1 -S 25

 wait $!
ghost commented 9 years ago

That works. It may be good to fix this, as the issue may occur on many other systems as well.

thorgrin commented 9 years ago

Ok, I've slowed down the sending of data over UDP.