From f49f27f1bc67d07440b0ac9a7d767a8ea1589bfe Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Tue, 15 Dec 2015 15:50:44 +0200
Subject: [PATCH 5/5] Modify vg_test wrapper to support PTEST formats

Change the valgrind regression test script vg_regtest to
support the yocto ptest stdout reporting format.  The commit adds
'--yocto-ptest' as an optional argument to vg_regtest, which alters
the output to use the ptest infrastructure reporting format:
    "[PASS|SKIP|FAIL]: testname"
instead of valgrind's internal test reporting format.  Without the added
option, --yocto-ptest, the valgrind regression test output is unchanged.

Enforce 30 seconds limit for the test.
This resume execution of the remaining tests when valgrind hangs.

Upstream-Status: Pending

Signed-off-by: Dave Lerner <dave.lerner@windriver.com>
Signed-off-by: Tudor Florea <tudor.florea@enea.com>
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>

Increase time limit to 90 s.
(double of the expected time of drd/tests/std_list on qemuarm64)

Signed-off-by: Yi Fan Yu <yifan.yu@windriver.com>
---
 tests/vg_regtest.in | 75 +++++++++++++++++++++++++++++++++++++++--------------
 1 file changed, 55 insertions(+), 20 deletions(-)

diff --git a/tests/vg_regtest.in b/tests/vg_regtest.in
index a441f42..cb05b52 100755
--- a/tests/vg_regtest.in
+++ b/tests/vg_regtest.in
@@ -47,6 +47,7 @@
 #   --loop-till-fail: loops on the test(s) till one fail, then exit
 #              This is useful to obtain detailed trace or --keep-unfiltered
 #              output of a non deterministic test failure
+#   --yocto-ptest: output in yocto ptest format
 #
 # The easiest way is to run all tests in valgrind/ with (assuming you installed
 # in $PREFIX):
@@ -139,7 +140,7 @@ my $usage="\n"
      . "Usage:\n"
      . "   vg_regtest [--all, --valgrind, --valgrind-lib, --keep-unfiltered\n"
      . "                 --outer-valgrind, --outer-tool, --outer-args\n"
-     . "                 --loop-till-fail]\n"
+     . "                 --loop-till-fail, --yocto-ptest]\n"
      . "   Use EXTRA_REGTEST_OPTS to supply extra args for all tests\n"
      . "\n";
 
@@ -186,6 +187,7 @@ my $outer_args;
 my $valgrind_lib = "$tests_dir/.in_place";
 my $keepunfiltered = 0;
 my $looptillfail = 0;
+my $yoctoptest = 0;
 
 # default filter is the one named "filter_stderr" in the test's directory
 my $default_stderr_filter = "filter_stderr";
@@ -244,6 +246,8 @@ sub process_command_line()
                 $keepunfiltered = 1;
             } elsif ($arg =~ /^--loop-till-fail$/) {
                 $looptillfail = 1;
+            } elsif ($arg =~ /^--yocto-ptest$/) {
+                $yoctoptest = 1;
             } else {
                 die $usage;
             }
@@ -365,13 +369,28 @@ sub read_vgtest_file($)
 #----------------------------------------------------------------------------
 # Since most of the program time is spent in system() calls, need this to
 # propagate a Ctrl-C enabling us to quit.
-sub mysystem($) 
+# Enforce 90 seconds limit for the test.
+# This resume execution of the remaining tests if valgrind hangs.
+sub mysystem($)
 {
-    my $exit_code = system($_[0]);
-    ($exit_code == 2) and exit 1;      # 2 is SIGINT
-    return $exit_code;
+    my $exit_code=0;
+    eval {
+        local $SIG{'ALRM'} = sub { die "timed out\n" };
+        alarm(90);
+        $exit_code = system($_[0]);
+        alarm (0);
+        ($exit_code == 2) and die "SIGINT\n";   # 2 is SIGINT
+    };
+    if ($@) {
+        if ($@ eq "timed out\n") {
+            print "timed out\n";
+            return 1;
+        }
+        if ($@ eq "SIGINT\n") {
+            exit 1;
+        }
+    }
 }
-
 # if $keepunfiltered, copies $1 to $1.unfiltered.out
 # renames $0 tp $1
 sub filtered_rename($$) 
@@ -419,23 +438,25 @@ sub do_diffs($$$$)
                 # A match;  remove .out and any previously created .diff files.
                 unlink("$name.$mid.out");
                 unlink(<$name.$mid.diff*>);
-                return;
+                return 0;
             }
         }
     }
     # If we reach here, none of the .exp files matched.
-    print "*** $name failed ($mid) ***\n";
+    print "*** $name failed ($mid) ***\n" if ($yoctoptest == 0) ;
     push(@failures, sprintf("%-40s ($mid)", "$fullname"));
     $num_failures{$mid}++;
     if ($looptillfail == 1) {
        print "Failure encountered, stopping to loop\n";
        exit 1
     }
+    return 1;
 }
 
 sub do_one_test($$) 
 {
     my ($dir, $vgtest) = @_;
+    my $diffStatus = 0;
     $vgtest =~ /^(.*)\.vgtest/;
     my $name = $1;
     my $fullname = "$dir/$name"; 
@@ -454,7 +475,11 @@ sub do_one_test($$)
         } elsif (256 == $prereq_res) {
             # Nb: weird Perl-ism -- exit code of '1' is seen by Perl as 256...
             # Prereq failed, skip.
-            printf("%-16s (skipping, prereq failed: $prereq)\n", "$name:");
+            if ($yoctoptest == 0) {
+                printf("%-16s (skipping, prereq failed: $prereq)\n", "$name:");
+            } else {
+                printf("SKIP: $fullname\n");
+            }
             return;
         } else {
             # Bad prereq; abort.
@@ -472,7 +497,7 @@ sub do_one_test($$)
         }
         # If there is a progB, let's start it in background:
         printf("%-16s valgrind $extraopts $vgopts $prog $args (progB: $progB $argsB)\n",
-               "$name:");
+               "$name:") if ($yoctoptest == 0);
         # progB.done used to detect child has finished. See below.
         # Note: redirection of stdout and stderr is before $progB to allow argsB
         # to e.g. redirect stdoutB to stderrB
@@ -488,7 +513,8 @@ sub do_one_test($$)
                      . "touch progB.done)  &");
         }
     } else {
-        printf("%-16s valgrind $extraopts $vgopts $prog $args\n", "$name:");
+        printf("%-16s valgrind $extraopts $vgopts $prog $args\n", "$name:")
+            if ($yoctoptest == 0);
     }
 
     # Collect environment variables, if any.
@@ -529,7 +555,7 @@ sub do_one_test($$)
     # Find all the .stdout.exp files.  If none, use /dev/null.
     my @stdout_exps = <$name.stdout.exp*>;
     @stdout_exps = ( "/dev/null" ) if (0 == scalar @stdout_exps);
-    do_diffs($fullname, $name, "stdout", \@stdout_exps); 
+    $diffStatus |= do_diffs($fullname, $name, "stdout", \@stdout_exps);
 
     # Filter stderr
     $stderr_filter_args = $name if (! defined $stderr_filter_args);
@@ -538,7 +564,7 @@ sub do_one_test($$)
     # Find all the .stderr.exp files.  At least one must exist.
     my @stderr_exps = <$name.stderr.exp*>;
     (0 != scalar @stderr_exps) or die "Could not find `$name.stderr.exp*'\n";
-    do_diffs($fullname, $name, "stderr", \@stderr_exps); 
+    $diffStatus |= do_diffs($fullname, $name, "stderr", \@stderr_exps);
 
     if (defined $progB) {
         # wait for the child to be finished
@@ -562,7 +588,7 @@ sub do_one_test($$)
         # Find all the .stdoutB.exp files.  If none, use /dev/null.
         my @stdoutB_exps = <$name.stdoutB.exp*>;
         @stdoutB_exps = ( "/dev/null" ) if (0 == scalar @stdoutB_exps);
-        do_diffs($fullname, $name, "stdoutB", \@stdoutB_exps); 
+        $diffStatus |= do_diffs($fullname, $name, "stdoutB", \@stdoutB_exps);
         
         # Filter stderr
         $stderrB_filter_args = $name if (! defined $stderrB_filter_args);
@@ -571,7 +597,7 @@ sub do_one_test($$)
         # Find all the .stderrB.exp files.  At least one must exist.
         my @stderrB_exps = <$name.stderrB.exp*>;
         (0 != scalar @stderrB_exps) or die "Could not find `$name.stderrB.exp*'\n";
-        do_diffs($fullname, $name, "stderrB", \@stderrB_exps); 
+        $diffStatus |= do_diffs($fullname, $name, "stderrB", \@stderrB_exps);
     }
 
     # Maybe do post-test check
@@ -583,7 +609,7 @@ sub do_one_test($$)
 	    # Find all the .post.exp files.  If none, use /dev/null.
 	    my @post_exps = <$name.post.exp*>;
 	    @post_exps = ( "/dev/null" ) if (0 == scalar @post_exps);
-	    do_diffs($fullname, $name, "post", \@post_exps);
+	    $diffStatus |= do_diffs($fullname, $name, "post", \@post_exps);
 	}
     }
  
@@ -592,6 +618,13 @@ sub do_one_test($$)
             print("(cleanup operation failed: $cleanup)\n");
     }
 
+    if ($yoctoptest == 1) {
+        if ($diffStatus == 0) {
+            print("PASS: $fullname\n");
+        } else {
+            print("FAIL: $fullname\n");
+        }
+    }
     $num_tests_done++;
 }
 
@@ -631,7 +664,7 @@ sub test_one_dir($$)
     my $found_tests = (0 != (grep { $_ =~ /\.vgtest$/ } @fs));
 
     if ($found_tests) {
-        print "-- Running  tests in $full_dir $dashes\n";
+        print "-- Running  tests in $full_dir $dashes\n" if ($yoctoptest == 0);
     }
     foreach my $f (@fs) {
         if (-d $f) {
@@ -641,7 +674,7 @@ sub test_one_dir($$)
         }
     }
     if ($found_tests) {
-        print "-- Finished tests in $full_dir $dashes\n";
+        print "-- Finished tests in $full_dir $dashes\n" if ($yoctoptest == 0);
     }
 
     chdir("..");
@@ -667,10 +700,12 @@ sub summarise_results
            $num_failures{"stdout"},   plural($num_failures{"stdout"}),
            $num_failures{"stderrB"},  plural($num_failures{"stderrB"}),
            $num_failures{"stdoutB"},  plural($num_failures{"stdoutB"}),
-           $num_failures{"post"},     plural($num_failures{"post"}));
+           $num_failures{"post"},     plural($num_failures{"post"}))
+               if ($yoctoptest == 0);
 
     foreach my $failure (@failures) {
-        print "$failure\n";
+        print "$failure\n"
+           if ($yoctoptest == 0);
     }
     print "\n";
 }
-- 
2.6.2

