Re: [PATCH 3/3] ktest: allow success logs to be stored

From: Steven Rostedt
Date: Fri Nov 18 2011 - 10:40:37 EST


On Fri, 2011-11-18 at 17:05 +0530, Rabin Vincent wrote:
> Add a STORE_SUCCESSES option, to allow success logs to be stored, for
> example to double-check or otherwise post-process the test logs.

Looks good. I'll give it a test run and put it into the 3.3 queue.

Thanks!

-- Steve

>
> Signed-off-by: Rabin Vincent <rabin@xxxxxx>
> ---
> tools/testing/ktest/ktest.pl | 80 ++++++++++++++++++++++----------------
> tools/testing/ktest/sample.conf | 6 +++
> 2 files changed, 52 insertions(+), 34 deletions(-)
>
> diff --git a/tools/testing/ktest/ktest.pl b/tools/testing/ktest/ktest.pl
> index e93c21c..6ef104e 100755
> --- a/tools/testing/ktest/ktest.pl
> +++ b/tools/testing/ktest/ktest.pl
> @@ -113,6 +113,7 @@ my $bisect_sleep_time;
> my $patchcheck_sleep_time;
> my $ignore_warnings;
> my $store_failures;
> +my $store_successes;
> my $test_name;
> my $timeout;
> my $booted_timeout;
> @@ -976,6 +977,43 @@ sub wait_for_monitor {
> print "** Monitor flushed **\n";
> }
>
> +sub save_logs {
> + my ($result, $basedir) = @_;
> + my @t = localtime;
> + my $date = sprintf "%04d%02d%02d%02d%02d%02d",
> + 1900+$t[5],$t[4],$t[3],$t[2],$t[1],$t[0];
> +
> + my $type = $build_type;
> + if ($type =~ /useconfig/) {
> + $type = "useconfig";
> + }
> +
> + my $dir = "$machine-$test_type-$type-$result-$date";
> +
> + $dir = "$basedir/$dir";
> +
> + if (!-d $dir) {
> + mkpath($dir) or
> + die "can't create $dir";
> + }
> +
> + my %files = (
> + "config" => $output_config,
> + "buildlog" => $buildlog,
> + "dmesg" => $dmesg,
> + "testlog" => $testlog,
> + );
> +
> + while (my ($name, $source) = each(%files)) {
> + if (-f "$source") {
> + cp "$source", "$dir/$name" or
> + die "failed to copy $source";
> + }
> + }
> +
> + doprint "*** Saved info to $dir ***\n";
> +}
> +
> sub fail {
>
> if ($die_on_failure) {
> @@ -1004,40 +1042,9 @@ sub fail {
> doprint "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n";
> doprint "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n";
>
> - return 1 if (!defined($store_failures));
> -
> - my @t = localtime;
> - my $date = sprintf "%04d%02d%02d%02d%02d%02d",
> - 1900+$t[5],$t[4],$t[3],$t[2],$t[1],$t[0];
> -
> - my $type = $build_type;
> - if ($type =~ /useconfig/) {
> - $type = "useconfig";
> - }
> -
> - my $dir = "$machine-$test_type-$type-fail-$date";
> - my $faildir = "$store_failures/$dir";
> -
> - if (!-d $faildir) {
> - mkpath($faildir) or
> - die "can't create $faildir";
> - }
> -
> - my %files = (
> - "config" => $output_config,
> - "buildlog" => $buildlog,
> - "dmesg" => $dmesg,
> - "testlog" => $testlog,
> - );
> -
> - while (my ($name, $source) = each(%files)) {
> - if (-f "$source") {
> - cp "$source", "$faildir/$name" or
> - die "failed to copy $source";
> - }
> - }
> -
> - doprint "*** Saved info to $faildir ***\n";
> + if (defined($store_failures)) {
> + save_logs "fail", $store_failures;
> + }
>
> return 1;
> }
> @@ -1643,6 +1650,10 @@ sub success {
> doprint "*******************************************\n";
> doprint "*******************************************\n";
>
> + if (defined($store_successes)) {
> + save_logs "success", $store_successes;
> + }
> +
> if ($i != $opt{"NUM_TESTS"} && !do_not_reboot) {
> doprint "Reboot and wait $sleep_time seconds\n";
> reboot $sleep_time;
> @@ -3137,6 +3148,7 @@ for (my $i = 1; $i <= $opt{"NUM_TESTS"}; $i++) {
> $bisect_skip = set_test_option("BISECT_SKIP", $i);
> $config_bisect_good = set_test_option("CONFIG_BISECT_GOOD", $i);
> $store_failures = set_test_option("STORE_FAILURES", $i);
> + $store_successes = set_test_option("STORE_SUCCESSES", $i);
> $test_name = set_test_option("TEST_NAME", $i);
> $timeout = set_test_option("TIMEOUT", $i);
> $booted_timeout = set_test_option("BOOTED_TIMEOUT", $i);
> diff --git a/tools/testing/ktest/sample.conf b/tools/testing/ktest/sample.conf
> index dbedfa1..42e0eb9 100644
> --- a/tools/testing/ktest/sample.conf
> +++ b/tools/testing/ktest/sample.conf
> @@ -589,6 +589,12 @@
> # (default undefined)
> #STORE_FAILURES = /home/test/failures
>
> +# Directory to store success directories on success. If this is not
> +# set, the .config, dmesg and bootlog will not be saved if a
> +# test succeeds.
> +# (default undefined)
> +#STORE_SUCCESSES = /home/test/successes
> +
> # Build without doing a make mrproper, or removing .config
> # (default 0)
> #BUILD_NOCLEAN = 0


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/