Skip to contentSkip to conversation

ktest: Updates for 3.19

PATCH New Steven Rostedt 1 participant 6 messages Nov 24, 2014

Subsystems (2)
lore
Share & tools
lore
author maintainer
#2 lore raw

PATCH 2/5 ktest: Fix make_min_config to handle new assign_configs call

In reply to Steven Rostedt

From: "Steven Rostedt (Red Hat)" <[email protected]>

Commit 6071c22e1755 "ktest: Rewrite the config-bisect to actually work" fixed the config-bisect to work nicely but in doing so it broke make_min_config by changing the way assign_configs works.

The assign_configs function now adds the config to the hash even if it is disabled, but changes the hash value to be that of the line "# CONFIG_FOO is not set". Unfortunately, the make_min_config test only checks to see if the config is removed. It now needs to check if the config is in the hash and not set to be disabled.

---
 tools/testing/ktest/ktest.pl | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
tools/testing/ktest/ktest.pl +3 -1
index 60fe020a6e80..89c2257bed98 100755
@@ -3571,7 +3571,9 @@ sub test_this_config {
     undef %configs;
     assign_configs \%configs, $output_config;
 
-    return $config if (!defined($configs{$config}));
+    if (!defined($configs{$config}) || $configs{$config} =~ /^#/) {
+	return $config;
+    }
 
     doprint "disabling config $config did not change .config\n";
 
Signature · 1 line
2.1.1
author maintainer
#1 lore raw

PATCH 1/5 ktest: Use make -s kernelrelease

In reply to Steven Rostedt

From: Michal Marek <[email protected]>

The previous tail -1 broke with commit 7ff525712acf ("kbuild: fake the "Entering directory ..." message more simply")

---
 tools/testing/ktest/ktest.pl | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
tools/testing/ktest/ktest.pl +1 -1
index bf1398180785..60fe020a6e80 100755
@@ -2005,7 +2005,7 @@ sub get_version {
     # get the release name
     return if ($have_version);
     doprint "$make kernelrelease ... ";
-    $version = `$make kernelrelease | tail -1`;
+    $version = `$make -s kernelrelease`;
     chomp($version);
     doprint "$version\n";
     $have_version = 1;
Signature · 1 line
2.1.1

Steven Rostedt

author maintainer
#0 lore raw

cover ktest: Updates for 3.19

git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-ktest.git
for-next

Head SHA1: 17150fef4ab1f48d838008657cdaa168453a9fa6

Michal Marek (1):
ktest: Use make -s kernelrelease

Steven Rostedt (Red Hat) (4):
ktest: Fix make_min_config to handle new assign_configs call
ktest: Allow tests to undefine default options
ktest: Add name to running title
ktest: Add back "tail -1" to kernelrelease make

----

 tools/testing/ktest/ktest.pl | 37 ++++++++++++++++++++++++++-----------
 1 file changed, 26 insertions(+), 11 deletions(-)
author maintainer
#5 lore raw

PATCH 5/5 ktest: Add back "tail -1" to kernelrelease make

From: "Steven Rostedt (Red Hat)" <[email protected]>

Commit 52d21580b362 "ktest: Use make -s kernelrelease" fixed commit 7ff525712acf "kbuild: fake the "Entering directory ..." message more simply" as that commit added output after the make kernelrelease. But there's still some build scripts that are used by ktest that has output before the make is executed, and requires that only the last line is printed.

---
 tools/testing/ktest/ktest.pl | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
tools/testing/ktest/ktest.pl +1 -1
index 35b118a38c2f..b9cd036f0442 100755
@@ -2002,7 +2002,7 @@ sub get_version {
     # get the release name
     return if ($have_version);
     doprint "$make kernelrelease ... ";
-    $version = `$make -s kernelrelease`;
+    $version = `$make -s kernelrelease | tail -1`;
     chomp($version);
     doprint "$version\n";
     $have_version = 1;
Signature · 1 line
2.1.1
author maintainer
#4 lore raw

PATCH 4/5 ktest: Add name to running title

In reply to Steven Rostedt

From: "Steven Rostedt (Red Hat)" <[email protected]>

Instead of just showing the test type of test in the start of the test, like this:

RUNNING TEST 1 of 26 with option build defconfig

Add the name (if it is defined) as well, like this:

RUNNING TEST 1 of 26 (arm64 aarch64-linux) with option build defconfig

---
 tools/testing/ktest/ktest.pl | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
tools/testing/ktest/ktest.pl +7 -1
index ea43dd2f2fd5..35b118a38c2f 100755
@@ -4086,8 +4086,14 @@ for (my $i = 1; $i <= $opt{"NUM_TESTS"}; $i++) {
     my $installme = "";
     $installme = " no_install" if ($no_install);
 
+    my $name = "";
+
+    if (defined($test_name)) {
+	$name = " ($test_name)";
+    }
+
     doprint "\n\n";
-    doprint "RUNNING TEST $i of $opt{NUM_TESTS} with option $test_type $run_type$installme\n\n";
+    doprint "RUNNING TEST $i of $opt{NUM_TESTS}$name with option $test_type $run_type$installme\n\n";
 
     if (defined($pre_test)) {
 	run_command $pre_test;
Signature · 1 line
2.1.1
author maintainer
#3 lore raw

PATCH 3/5 ktest: Allow tests to undefine default options

In reply to Steven Rostedt

From: "Steven Rostedt (Red Hat)" <[email protected]>

Tests can set options that override the default ones. But if a test tries to undefine a default option, it is simply ignored and the default option stays as is.

For example, if you want to have a test that defines no MIN_CONFIG then the test should be able to do that with:

TEST_START
MIN_CONFIG =

Which should make MIN_CONFIG not defined for that test. But the way the code currently works, undefined options in tests are dropped. This is because the NULL options are evaluated during the reading of the config file and since one can disable default options in the default section with this method, it is evaluated there (the option turns to a undef). But undef options in the test section mean to use the default option.

To fix this, keep the empty string in the option during the reading of the config file, and then evaluate it when running the test. This will allow tests to null out default options.

---
 tools/testing/ktest/ktest.pl | 23 +++++++++++++++--------
 1 file changed, 15 insertions(+), 8 deletions(-)
tools/testing/ktest/ktest.pl +15 -8
index 89c2257bed98..ea43dd2f2fd5 100755
@@ -684,11 +684,8 @@ sub set_value {
 	}
 	${$overrides}{$lvalue} = $prvalue;
     }
-    if ($rvalue =~ /^\s*$/) {
-	delete $opt{$lvalue};
-    } else {
-	$opt{$lvalue} = $prvalue;
-    }
+
+    $opt{$lvalue} = $prvalue;
 }
 
 sub set_eval {
@@ -3947,12 +3944,22 @@ for (my $i = 0, my $repeat = 1; $i <= $opt{"NUM_TESTS"}; $i += $repeat) {
     }
 }
 
+sub option_defined {
+    my ($option) = @_;
+
+    if (defined($opt{$option}) && $opt{$option} !~ /^\s*$/) {
+	return 1;
+    }
+
+    return 0;
+}
+
 sub __set_test_option {
     my ($name, $i) = @_;
 
     my $option = "$name\[$i\]";
 
-    if (defined($opt{$option})) {
+    if (option_defined($option)) {
 	return $opt{$option};
     }
 
@@ -3960,13 +3967,13 @@ sub __set_test_option {
 	if ($i >= $test &&
 	    $i < $test + $repeat_tests{$test}) {
 	    $option = "$name\[$test\]";
-	    if (defined($opt{$option})) {
+	    if (option_defined($option)) {
 		return $opt{$option};
 	    }
 	}
     }
 
-    if (defined($opt{$name})) {
+    if (option_defined($name)) {
 	return $opt{$name};
     }
 
Signature · 1 line
2.1.1