kunit: add kunit.enable to enable/disable KUnit test
This patch adds the kunit.enable module parameter that will need to be set to true in addition to KUNIT being enabled for KUnit tests to run. The default value is true giving backwards compatibility. However, for the production+testing use case the new config option KUNIT_DEFAULT_ENABLED can be set to N requiring the tester to opt-in by passing kunit.enable=1 to the kernel. Signed-off-by: Joe Fradley <joefradley@google.com> Reviewed-by: David Gow <davidgow@google.com> Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
This commit is contained in:
parent
a15cfa39e8
commit
d20a6ba5e3
|
@ -2436,6 +2436,12 @@
|
|||
0: force disabled
|
||||
1: force enabled
|
||||
|
||||
kunit.enable= [KUNIT] Enable executing KUnit tests. Requires
|
||||
CONFIG_KUNIT to be set to be fully enabled. The
|
||||
default value can be overridden via
|
||||
KUNIT_DEFAULT_ENABLED.
|
||||
Default is 1 (enabled)
|
||||
|
||||
kvm.ignore_msrs=[KVM] Ignore guest accesses to unhandled MSRs.
|
||||
Default is 0 (don't ignore, but inject #GP)
|
||||
|
||||
|
|
|
@ -228,6 +228,8 @@ static inline void kunit_set_failure(struct kunit *test)
|
|||
WRITE_ONCE(test->status, KUNIT_FAILURE);
|
||||
}
|
||||
|
||||
bool kunit_enabled(void);
|
||||
|
||||
void kunit_init_test(struct kunit *test, const char *name, char *log);
|
||||
|
||||
int kunit_run_tests(struct kunit_suite *suite);
|
||||
|
|
|
@ -59,4 +59,15 @@ config KUNIT_ALL_TESTS
|
|||
|
||||
If unsure, say N.
|
||||
|
||||
config KUNIT_DEFAULT_ENABLED
|
||||
bool "Default value of kunit.enable"
|
||||
default y
|
||||
help
|
||||
Sets the default value of kunit.enable. If set to N then KUnit
|
||||
tests will not execute unless kunit.enable=1 is passed to the
|
||||
kernel command line.
|
||||
|
||||
In most cases this should be left as Y. Only if additional opt-in
|
||||
behavior is needed should this be set to N.
|
||||
|
||||
endif # KUNIT
|
||||
|
|
|
@ -190,6 +190,10 @@ int kunit_run_all_tests(void)
|
|||
{
|
||||
struct suite_set suite_set = {__kunit_suites_start, __kunit_suites_end};
|
||||
int err = 0;
|
||||
if (!kunit_enabled()) {
|
||||
pr_info("kunit: disabled\n");
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (filter_glob_param) {
|
||||
suite_set = kunit_filter_suites(&suite_set, filter_glob_param, &err);
|
||||
|
|
|
@ -54,6 +54,17 @@ void __kunit_fail_current_test(const char *file, int line, const char *fmt, ...)
|
|||
EXPORT_SYMBOL_GPL(__kunit_fail_current_test);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Enable KUnit tests to run.
|
||||
*/
|
||||
#ifdef CONFIG_KUNIT_DEFAULT_ENABLED
|
||||
static bool enable_param = true;
|
||||
#else
|
||||
static bool enable_param;
|
||||
#endif
|
||||
module_param_named(enable, enable_param, bool, 0);
|
||||
MODULE_PARM_DESC(enable, "Enable KUnit tests");
|
||||
|
||||
/*
|
||||
* KUnit statistic mode:
|
||||
* 0 - disabled
|
||||
|
@ -586,10 +597,20 @@ static void kunit_init_suite(struct kunit_suite *suite)
|
|||
suite->suite_init_err = 0;
|
||||
}
|
||||
|
||||
bool kunit_enabled(void)
|
||||
{
|
||||
return enable_param;
|
||||
}
|
||||
|
||||
int __kunit_test_suites_init(struct kunit_suite * const * const suites, int num_suites)
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
if (!kunit_enabled() && num_suites > 0) {
|
||||
pr_info("kunit: disabled\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
for (i = 0; i < num_suites; i++) {
|
||||
kunit_init_suite(suites[i]);
|
||||
kunit_run_tests(suites[i]);
|
||||
|
@ -607,6 +628,9 @@ void __kunit_test_suites_exit(struct kunit_suite **suites, int num_suites)
|
|||
{
|
||||
unsigned int i;
|
||||
|
||||
if (!kunit_enabled())
|
||||
return;
|
||||
|
||||
for (i = 0; i < num_suites; i++)
|
||||
kunit_exit_suite(suites[i]);
|
||||
|
||||
|
|
|
@ -359,6 +359,7 @@ class LinuxSourceTree:
|
|||
args = []
|
||||
if filter_glob:
|
||||
args.append('kunit.filter_glob='+filter_glob)
|
||||
args.append('kunit.enable=1')
|
||||
|
||||
process = self._ops.start(args, build_dir)
|
||||
assert process.stdout is not None # tell mypy it's set
|
||||
|
|
Loading…
Reference in New Issue