] selftests: kvm: return Kselftest Skip code for skipped tests
Shuah Khan (Samsung OSG)
maintainerPATCH v2 14/24 ] selftests: kvm: return Kselftest Skip code for skipped tests
When kvm test is skipped because of unmet dependencies and/or unsupported configuration, it exits with error which is treated as a fail by the Kselftest framework. This leads to false negative result even when the test could not be run.
Change it to return kselftest skip code when a test gets skipped to clearly report that the test could not be run.
Change it to use ksft_exit_skip() when the test is skipped. In addition, refine test_assert() message to include strerror() string and add explicit check for EACCES to cleary identify when test doesn't run when access is denied to resources required e.g: open /dev/kvm failed, rc: -1 errno: 13
---
Changes since v1:
- Don't do root check at the top of assert.
- Instead do check for EACCES.
tools/testing/selftests/kvm/lib/assert.c | 9 +++++++-- tools/testing/selftests/kvm/vmx_tsc_adjust_test.c | 4 +++- 2 files changed, 10 insertions(+), 3 deletions(-)
tools/testing/selftests/kvm/lib/assert.c +7 -2
@@ -13,6 +13,8 @@#include <execinfo.h> #include <sys/syscall.h> +#include "../../kselftest.h" +/* Dumps the current stack trace to stderr. */ static void __attribute__((noinline))test_dump_stack (void );static void test_dump_stack (void )
@@ -70,8 +72,9 @@ test_assert(bool exp, const char *exp_str,fprintf (stderr,"==== Test Assertion Failure ====\n" " %s:%u: %s\n" -" pid=%d tid=%d\n" , - file, line, exp_str,getpid (),gettid ()); +" pid=%d tid=%d - %s\n" , + file, line, exp_str,getpid (),gettid (), +strerror (errno));test_dump_stack ();if (fmt) {fputs (" " , stderr);
@@ -80,6 +83,8 @@ test_assert(bool exp, const char *exp_str, }va_end (ap); +if (errno ==EACCES ) +ksft_exit_skip ("Access denied - Exiting.\n" );exit (254 ); }
tools/testing/selftests/kvm/vmx_tsc_adjust_test.c +3 -1
@@ -28,6 +28,8 @@#include <string.h> #include <sys/ioctl.h> +#include "../kselftest.h" +#ifndef MSR_IA32_TSC_ADJUST #define MSR_IA32_TSC_ADJUST 0x3b#endif
@@ -190,7 +192,7 @@ int main(int argc, char *argv[])if (!(entry->ecx &CPUID_VMX )) {printf ("nested VMX not enabled, skipping test" ); -return 0 ; +return KSFT_SKIP ; } vm =vm_create_default_vmx (VCPU_ID , (void *) l1_guest_code);
Signature · 6 lines
2.14.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kselftest" in the body of a message to majordomo at vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 73 lines · Shuah Khan (Samsung OSG)
When kvm test is skipped because of unmet dependencies and/or unsupported configuration, it exits with error which is treated as a fail by the Kselftest framework. This leads to false negative result even when the test could not be run.
Change it to return kselftest skip code when a test gets skipped to clearly report that the test could not be run.
Change it to use
ksft_exit_skip()when the test is skipped. In addition, refinetest_assert()message to includestrerror()string and add explicit check for EACCES to cleary identify when test doesn't run when access is denied to resources required e.g: open/dev/kvmfailed, rc: -1 errno: 13Signed-off-by Shuah Khan (Samsung OSG) <shuah at kernel.org>---
Changes since v1:
- Don't do root check at the top of assert.
- Instead do check for EACCES.tools/testing/selftests/kvm/lib/assert.c | 9 +++++++-- tools/testing/selftests/kvm/vmx_tsc_adjust_test.c | 4 +++- 2 files changed, 10 insertions(+), 3 deletions(-)tools/testing/selftests/kvm/lib/assert.c +7
-2@@ -13,6 +13,8 @@#include <execinfo.h> #include <sys/syscall.h> +#include "../../kselftest.h" +/* Dumps the current stack trace to stderr. */ static void __attribute__((noinline))test_dump_stack (void );static void test_dump_stack (void )@@ -70,8 +72,9 @@ test_assert(bool exp, const char *exp_str,fprintf (stderr,"==== Test Assertion Failure ====\n" " %s:%u: %s\n" -" pid=%d tid=%d\n" , - file, line, exp_str,getpid (),gettid ()); +" pid=%d tid=%d - %s\n" , + file, line, exp_str,getpid (),gettid (), +strerror (errno));test_dump_stack ();if (fmt) {fputs (" " , stderr);@@ -80,6 +83,8 @@ test_assert(bool exp, const char *exp_str, }va_end (ap); +if (errno ==EACCES ) +ksft_exit_skip ("Access denied - Exiting.\n" );exit (254 ); }tools/testing/selftests/kvm/vmx_tsc_adjust_test.c +2
-0@@ -28,6 +28,8 @@#include <string.h> #include <sys/ioctl.h> +#include "../kselftest.h" +#ifndef MSR_IA32_TSC_ADJUST #define MSR_IA32_TSC_ADJUST 0x3b#endif
tools/testing/selftests/kvm/vmx_tsc_adjust_test.c int main(int argc, char *argv[]) · line 198
Quoted 8 lines
tools/testing/selftests/kvm/vmx_tsc_adjust_test.c +1
-1@@ -190,7 +192,7 @@ int main(int argc, char *argv[])if (!(entry->ecx &CPUID_VMX )) {printf ("nested VMX not enabled, skipping test" ); -return 0 ; +return KSFT_SKIP ; } vm =vm_create_default_vmx (VCPU_ID , (void *) l1_guest_code);
Acked-by: Paolo Bonzini <pbonzini at redhat.com>
--
To unsubscribe from this list: send the line "unsubscribe linux-kselftest" in the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html