]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
testing: Add support for counting matching lines in tests
authorTobias Brunner <tobias@strongswan.org>
Wed, 12 Jul 2017 14:53:13 +0000 (16:53 +0200)
committerTobias Brunner <tobias@strongswan.org>
Mon, 7 Aug 2017 08:44:05 +0000 (10:44 +0200)
Specifying an integer instead of YES in evaltest.dat causes the number to get
compared against the actual number of lines matching the pattern.

This may be used to count matching packets or log lines.

testing/do-tests

index 230403b9f7477c6939b106771c8bc8cd19c92b2f..2ebc96ee918adee549d8bd9637533c14c2d99b45 100755 (executable)
@@ -416,29 +416,38 @@ do
        STATUS="passed"
 
        eval `awk -F "::" '{
-           host=$1
-           command=$2
-           pattern=$3
-           hit=$4
-           if (host !~ /^#.*/ && command != "")
-           {
+               host=$1
+               command=$2
+               pattern=$3
+               hit=$4
+               if (host ~ /^#.*/ || command == "")
+               {
+                       next
+               }
                if (command == "tcpdump")
                {
-                   printf("if [ \044TDUP_%s == \"true\" ]; then stop_tcpdump %s; fi; \n", host, host)
-                   printf("echo \"%s# cat /tmp/tcpdump.log | grep \047%s\047  [%s]\"; ", host, pattern, hit)
-                   printf("ssh \044SSHCONF root@\044ipv4_%s cat /tmp/tcpdump.log | grep \"%s\"; ", host, pattern)
+                       printf("if [ \044TDUP_%s == \"true\" ]; then stop_tcpdump %s; fi; \n", host, host)
+                       printf("echo \"%s# cat /tmp/tcpdump.log | grep \047%s\047  [%s]\"; ", host, pattern, hit)
+                       printf("cmd_out=\044(ssh \044SSHCONF root@\044ipv4_%s cat /tmp/tcpdump.log | grep \"%s\"); ", host, pattern)
                }
                else
                {
-                   printf("echo \"%s# %s | grep \047%s\047  [%s]\"; ", host, command, pattern, hit)
-                   printf("ssh \044SSHCONF root@\044ipv4_%s %s | grep \"%s\"; ",  host, command, pattern)
+                       printf("echo \"%s# %s | grep \047%s\047  [%s]\"; ", host, command, pattern, hit)
+                       printf("cmd_out=\044(ssh \044SSHCONF root@\044ipv4_%s %s | grep \"%s\"); ",  host, command, pattern)
                }
                printf("cmd_exit=\044?; ")
+               printf("echo \"\044cmd_out\"; ")
                printf("echo; ")
-               printf("if [ \044cmd_exit -eq 0 -a \"%s\" = \"NO\"  ] ", hit)
-               printf("|| [ \044cmd_exit -ne 0 -a \"%s\" = \"YES\" ] ", hit)
+               if (hit ~ /^[0-9]+$/)
+               {
+                       printf("if [ \044(echo \"\044cmd_out\" | wc -l) -ne %d ] ", hit)
+               }
+               else
+               {
+                       printf("if [ \044cmd_exit -eq 0 -a \"%s\" = \"NO\"  ] ", hit)
+                       printf("|| [ \044cmd_exit -ne 0 -a \"%s\" = \"YES\" ] ", hit)
+               }
                printf("; then STATUS=\"failed\"; fi; \n")
-           }
        }' $TESTDIR/evaltest.dat` >> $CONSOLE_LOG 2>&1