提交 921ed4c7 编写于 作者: S Steven Rostedt 提交者: Steven Rostedt

ktest: Add PRE/POST_KTEST and TEST options

In order to let the user add commands before and after ktest runs, the
PRE_KTEST and POST_KTEST options are defined. They hold shell commands
that will execute befor ktest runs its first test, as well as when it
completed its last test.

The PRE_TEST and POST_TEST will be run befor and after (respectively)
for a given test. They can either be global (done for all tests) or
defined by a single test.
Signed-off-by: NSteven Rostedt <rostedt@goodmis.org>
上级 958d8435
...@@ -77,6 +77,11 @@ my $output_config; ...@@ -77,6 +77,11 @@ my $output_config;
my $test_type; my $test_type;
my $build_type; my $build_type;
my $build_options; my $build_options;
my $final_post_ktest;
my $pre_ktest;
my $post_ktest;
my $pre_test;
my $post_test;
my $pre_build; my $pre_build;
my $post_build; my $post_build;
my $pre_build_die; my $pre_build_die;
...@@ -197,6 +202,10 @@ my %option_map = ( ...@@ -197,6 +202,10 @@ my %option_map = (
"OUTPUT_DIR" => \$outputdir, "OUTPUT_DIR" => \$outputdir,
"BUILD_DIR" => \$builddir, "BUILD_DIR" => \$builddir,
"TEST_TYPE" => \$test_type, "TEST_TYPE" => \$test_type,
"PRE_KTEST" => \$pre_ktest,
"POST_KTEST" => \$post_ktest,
"PRE_TEST" => \$pre_test,
"POST_TEST" => \$post_test,
"BUILD_TYPE" => \$build_type, "BUILD_TYPE" => \$build_type,
"BUILD_OPTIONS" => \$build_options, "BUILD_OPTIONS" => \$build_options,
"PRE_BUILD" => \$pre_build, "PRE_BUILD" => \$pre_build,
...@@ -1273,6 +1282,10 @@ sub save_logs { ...@@ -1273,6 +1282,10 @@ sub save_logs {
sub fail { sub fail {
if (defined($post_test)) {
run_command $post_test;
}
if ($die_on_failure) { if ($die_on_failure) {
dodie @_; dodie @_;
} }
...@@ -1937,6 +1950,10 @@ sub halt { ...@@ -1937,6 +1950,10 @@ sub halt {
sub success { sub success {
my ($i) = @_; my ($i) = @_;
if (defined($post_test)) {
run_command $post_test;
}
$successes++; $successes++;
my $name = ""; my $name = "";
...@@ -3518,6 +3535,18 @@ for (my $i = 1; $i <= $opt{"NUM_TESTS"}; $i++) { ...@@ -3518,6 +3535,18 @@ for (my $i = 1; $i <= $opt{"NUM_TESTS"}; $i++) {
$start_minconfig_defined = 1; $start_minconfig_defined = 1;
# The first test may override the PRE_KTEST option
if (defined($pre_ktest) && $i == 1) {
doprint "\n";
run_command $pre_ktest;
}
# Any test can override the POST_KTEST option
# The last test takes precedence.
if (defined($post_ktest)) {
$final_post_ktest = $post_ktest;
}
if (!defined($start_minconfig)) { if (!defined($start_minconfig)) {
$start_minconfig_defined = 0; $start_minconfig_defined = 0;
$start_minconfig = $minconfig; $start_minconfig = $minconfig;
...@@ -3572,6 +3601,10 @@ for (my $i = 1; $i <= $opt{"NUM_TESTS"}; $i++) { ...@@ -3572,6 +3601,10 @@ for (my $i = 1; $i <= $opt{"NUM_TESTS"}; $i++) {
doprint "\n\n"; 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} with option $test_type $run_type$installme\n\n";
if (defined($pre_test)) {
run_command $pre_test;
}
unlink $dmesg; unlink $dmesg;
unlink $buildlog; unlink $buildlog;
unlink $testlog; unlink $testlog;
...@@ -3637,6 +3670,10 @@ for (my $i = 1; $i <= $opt{"NUM_TESTS"}; $i++) { ...@@ -3637,6 +3670,10 @@ for (my $i = 1; $i <= $opt{"NUM_TESTS"}; $i++) {
success $i; success $i;
} }
if (defined($final_post_ktest)) {
run_command $final_post_ktest;
}
if ($opt{"POWEROFF_ON_SUCCESS"}) { if ($opt{"POWEROFF_ON_SUCCESS"}) {
halt; halt;
} elsif ($opt{"REBOOT_ON_SUCCESS"} && !do_not_reboot && $reboot_success) { } elsif ($opt{"REBOOT_ON_SUCCESS"} && !do_not_reboot && $reboot_success) {
......
...@@ -376,6 +376,24 @@ ...@@ -376,6 +376,24 @@
# DEFAULTS # DEFAULTS
# DEFAULTS SKIP # DEFAULTS SKIP
# If you want to execute some command before the first test runs
# you can set this option. Note, it can be set as a default option
# or an option in the first test case. All other test cases will
# ignore it. If both the default and first test have this option
# set, then the first test will take precedence.
#
# default (undefined)
#PRE_KTEST = ${SSH} ~/set_up_test
# If you want to execute some command after all the tests have
# completed, you can set this option. Note, it can be set as a
# default or any test case can override it. If multiple test cases
# set this option, then the last test case that set it will take
# precedence
#
# default (undefined)
#POST_KTEST = ${SSH} ~/dismantle_test
# The default test type (default test) # The default test type (default test)
# The test types may be: # The test types may be:
# build - only build the kernel, do nothing else # build - only build the kernel, do nothing else
...@@ -426,6 +444,18 @@ ...@@ -426,6 +444,18 @@
# (default 0) # (default 0)
#NO_INSTALL = 1 #NO_INSTALL = 1
# If there is a command that you want to run before the individual test
# case executes, then you can set this option
#
# default (undefined)
#PRE_TEST = ${SSH} reboot_to_special_kernel
# If there is a command you want to run after the individual test case
# completes, then you can set this option.
#
# default (undefined)
#POST_TEST = cd ${BUILD_DIR}; git reset --hard
# If there is a script that you require to run before the build is done # If there is a script that you require to run before the build is done
# you can specify it with PRE_BUILD. # you can specify it with PRE_BUILD.
# #
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册