Re: [PATCH v4 1/4] ftracetest: Initial commit for ftracetest

From: Shuah Khan
Date: Fri Sep 19 2014 - 10:05:33 EST


On 09/18/2014 07:03 PM, Masami Hiramatsu wrote:
> (2014/09/18 22:07), Shuah Khan wrote:
>> On 09/18/2014 06:04 AM, Masami Hiramatsu wrote:
>>> ftracetest is a collection of testcase shell-scripts for ftrace.
>>> To avoid regressions of ftrace, these testcases check correct
>>> ftrace behaviors. If someone would like to add any features on
>>> ftrace, the patch series should have at least one testcase for
>>> checking the new behavior.
>>>
>>> Changes in v4:
>>> - Move this under selftests. :)
>>> - Add a copyright and note of GPLv2.
>>> - Fix documents acconding to Steven's comments.
>>> - Fix a small bug pointed by Namhyng.
>>>
>>> Changes in v3:
>>> - Use "." instead of "source".
>>> - Don't use -e option for echo since dash doesn't support it.
>>>
>>> Changes in v2:
>>> - Remove unneeded 'function' keyword.
>>> - Add abspath and find_testcases.
>>> - Make OPT_TEST_CASES a local var.
>>> - Ensure given testcase ended with .tc.
>>> - Accept a directory option which has multiple testcases.
>>> - Change [PASSED]/[FAILED] to [PASS]/[FAIL]
>>> - Change the basic shell to sh (dash).
>>>
>>> Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@xxxxxxxxxxx>
>>> ---
>>> MAINTAINERS | 1
>>> tools/testing/selftests/Makefile | 1
>>> tools/testing/selftests/ftrace/Makefile | 7 +
>>> tools/testing/selftests/ftrace/README | 46 +++++++
>>> tools/testing/selftests/ftrace/ftracetest | 157 ++++++++++++++++++++++++
>>> tools/testing/selftests/ftrace/test.d/template | 4 +
>>> 6 files changed, 216 insertions(+)
>>> create mode 100644 tools/testing/selftests/ftrace/Makefile
>>> create mode 100644 tools/testing/selftests/ftrace/README
>>> create mode 100755 tools/testing/selftests/ftrace/ftracetest
>>> create mode 100644 tools/testing/selftests/ftrace/test.d/template
>>>
>>> diff --git a/MAINTAINERS b/MAINTAINERS
>>> index 5e7866a..29e22db 100644
>>> --- a/MAINTAINERS
>>> +++ b/MAINTAINERS
>>> @@ -9295,6 +9295,7 @@ F: include/*/ftrace.h
>>> F: include/linux/trace*.h
>>> F: include/trace/
>>> F: kernel/trace/
>>> +F: tools/testing/selftests/ftrace
>>>
>>> TRIVIAL PATCHES
>>> M: Jiri Kosina <trivial@xxxxxxxxxx>
>>> diff --git a/tools/testing/selftests/Makefile b/tools/testing/selftests/Makefile
>>> index 36ff2e4..45f145c 100644
>>> --- a/tools/testing/selftests/Makefile
>>> +++ b/tools/testing/selftests/Makefile
>>> @@ -14,6 +14,7 @@ TARGETS += powerpc
>>> TARGETS += user
>>> TARGETS += sysctl
>>> TARGETS += firmware
>>> +TARGETS += ftrace
>>>
>>> TARGETS_HOTPLUG = cpu-hotplug
>>> TARGETS_HOTPLUG += memory-hotplug
>>> diff --git a/tools/testing/selftests/ftrace/Makefile b/tools/testing/selftests/ftrace/Makefile
>>> new file mode 100644
>>> index 0000000..76cc9f1
>>> --- /dev/null
>>> +++ b/tools/testing/selftests/ftrace/Makefile
>>> @@ -0,0 +1,7 @@
>>> +all:
>>> +
>>> +run_tests:
>>> + @/bin/sh ./ftracetest || echo "ftrace selftests: [FAIL]"
>>> +
>>> +clean:
>>> + rm -rf logs/*
>>> diff --git a/tools/testing/selftests/ftrace/README b/tools/testing/selftests/ftrace/README
>>> new file mode 100644
>>> index 0000000..ee2cef7
>>> --- /dev/null
>>> +++ b/tools/testing/selftests/ftrace/README
>>> @@ -0,0 +1,46 @@
>>> +Linux Ftrace Testcases
>>> +
>>> +This is a collection of testcases for ftrace tracing feature in the Linux
>>> +kernel. Since ftrace exports interfaces via the debugfs, we just need
>>> +shell scripts for testing. Feel free to add new test cases.
>>> +
>>> +Running the ftrace testcases
>>> +============================
>>> +
>>> +At first, you need to be the root user to run this script.
>>> +To run all testcases:
>>> +
>>> + $ sudo ./ftracetest
>>> +
>>> +To run specific testcases:
>>> +
>>> + # ./ftracetest test.d/basic3.tc
>>> +
>>> +Or you can also run testcases under given directory:
>>> +
>>> + # ./ftracetest test.d/kprobe/
>>> +
>>> +Contributing new testcases
>>> +==========================
>>> +
>>> +Copy test.d/template to your testcase (whose filename must have *.tc
>>> +extension) and rewrite the test description line.
>>> +
>>> + * The working directory of the script is <debugfs>/tracing/.
>>> +
>>> + * Take care with side effects as the tests are run with root privilege.
>>> +
>>> + * The tests should not run for a long period of time (more than 1 min.)
>>> + These are to be unit tests.
>>> +
>>> + * You can add a directory for your testcases under test.d/ if needed.
>>> +
>>> + * The test cases should run on dash (busybox shell) for testing on
>>> + minimal cross-build environments.
>>> +
>>> +TODO
>>> +====
>>> +
>>> + * Fancy colored output :)
>>> +
>>> + * Integrate with selftest?
>>
>> The second TODO can be removed since it is moved under selftests??
>
> Ah, I missed to remove that in this commit. It's already integrated.
>
> - * Integrate with selftest?
>
> Oops, and I removed it in 4/4 ...

If you could fix this README, that would be great.

>
>> If you haven't already done this, could you please make sure it
>> runs without hangs when run from the "make kselftest" target.
>
> OK, here is the last lines of the test result.
>
> == Testing sysctl behavior against /proc/sys/vm/swappiness ==
> Writing test file ... ok
> Checking sysctl is not set to test value ... ok
> Writing sysctl from shell ... ok
> Resetting sysctl to original value ... ok
> Writing entire sysctl in single write ... ok
> Writing middle of sysctl after synchronized seek ... Writing beyond end of sysctl ... Writing sysctl with multiple long writes ... ok
> fw_filesystem: [FAIL]
> [1] Basic trace file check [PASS]
> [2] Basic test for tracers [PASS]
> [3] Basic trace clock test [PASS]
> [4] Kprobe dynamic event - adding and removing [PASS]
> [5] Kprobe dynamic event - busy event check [PASS]
>
> # of passed: 5
> # of failed: 0
> # of unresolved: 0
> # of untested: 0
> # of unsupported: 0
> # of xfailed: 0
> # of undefined(test bug): 0
>
> Hmm, I think it should have a separation line before running ftracetest.
>

I am not concerned about the spacing.

Thanks for doing running the make kselftest target and sharing
the results. selftests don't get built or run in integ test
rings. I am working on addressing this at the moment.

Steven!

Could you please take this through your tree. You have my

Acked-by: Shuah Khan <shuahkh@xxxxxxxxxxxxxxx>

for the selftests Makefile

-- Shuah

--
Shuah Khan
Sr. Linux Kernel Developer
Samsung Research America (Silicon Valley)
shuahkh@xxxxxxxxxxxxxxx | (970) 217-8978
--
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/