[OE-core] [PATCH V2 1/1] linux-yocto: add ptest support
Bruce Ashfield
bruce.ashfield at gmail.com
Thu Jun 21 12:57:29 UTC 2018
My general comment still stands from v1, That I don't see a lot of
value in creating a
whole set of custom tests and wrappers just for ptest use.
i.e. ltp already has a lot of these covered. kprobes, as do the
built-in self tests.
I want to be sure that we aren't creating custom wrappers that will
need to be maintained
for a long time.
Comments/documentation in the script don't exist, so it is difficult
to look at this and
understand what it is actually trying to test. A header block and
comments before each
test are required.
On Wed, Jun 13, 2018 at 10:49 PM, Dengke Du <dengke.du at windriver.com> wrote:
>
> Signed-off-by: Dengke Du <dengke.du at windriver.com>
> ---
> meta/recipes-kernel/linux/linux-yocto/run-ptest | 138 ++++++++++++++++++++++++
> meta/recipes-kernel/linux/linux-yocto_4.14.bb | 9 ++
> 2 files changed, 147 insertions(+)
> create mode 100644 meta/recipes-kernel/linux/linux-yocto/run-ptest
>
> diff --git a/meta/recipes-kernel/linux/linux-yocto/run-ptest b/meta/recipes-kernel/linux/linux-yocto/run-ptest
> new file mode 100644
> index 0000000..6db4d93
> --- /dev/null
> +++ b/meta/recipes-kernel/linux/linux-yocto/run-ptest
> @@ -0,0 +1,138 @@
> +#!/bin/bash
> +depmod
> +touch kernel.log
> +
> +#dma-example bytestream-example inttype-example record-example
> +list1=("dma-example" "bytestream-example" "inttype-example" "record-example")
> +for i in "${list1[@]}"
> +do
> + dmesg -c
> + modprobe "$i"
All of the modprobes really should be checking for failure, I realize you are
doing some lsmod calls and checking those, but that isn't always the case
in this script.
Cheers,
Bruce
> + result=""
> + IFS="-" read -ra array <<< "$i"
> + len=${#array[@]}
> + if [ $len -eq 2 ];then
> + result="${array[0]}_${array[1]}"
> + elif [ $len -eq 3 ];then
> + result="${array[0]}_${array[1]}_${array[2]}"
> + fi
> + lsmod | grep -q "$result"
> + if [ $? -eq 0 ];then
> + dmesg | grep "test passed"
> + if [ $? -eq 0 ];then
> + echo "$i: PASS" >> kernel.log
> + fi
> + else
> + echo "$i: FAILED" >> kernel.log
> + fi
> + rmmod "$i"
> +done
> +
> +#kobject-example kset-example
> +list2=("kobject-example" "kset-example")
> +for i in "${list2[@]}"
> +do
> + dmesg -c
> + modprobe "$i"
> + result=""
> + IFS="-" read -ra array <<< "$i"
> + len=${#array[@]}
> + if [ $len -eq 2 ];then
> + result="${array[0]}_${array[1]}"
> + elif [ $len -eq 3 ];then
> + result="${array[0]}_${array[1]}_${array[2]}"
> + fi
> + basedir="/sys/kernel/${result}"
> + echo "$basedir"
> + if [ -e ${basedir}/bar -a -e ${basedir}/baz -a -e ${basedir}/foo ];then
> + echo "$i: PASS" >> kernel.log
> + else
> + echo "$i: FAILED" >> kernel.log
> + fi
> + rmmod "$i"
> +done
> +
> +#trace-events-sample
> +list3="trace-events-sample"
> +result=""
> +IFS="-" read -ra array <<< "$list3"
> +len=${#array[@]}
> +if [ $len -eq 2 ];then
> + result="${array[0]}_${array[1]}"
> +elif [ $len -eq 3 ];then
> + result="${array[0]}_${array[1]}_${array[2]}"
> +fi
> +modprobe "$list3"
> +lsmod | grep "$result"
> +if [ $? -eq 0 ];then
> + if [ -e "/sys/kernel/debug/tracing/events/sample-trace" ];then
> + echo 1 > /sys/kernel/debug/tracing/events/sample-trace/enable
> + sleep 5
> + ret=`cat /sys/kernel/debug/tracing/trace | grep hello | head -n1 | cut -d':' -f2`
> + if [ "$ret" = " foo_bar" ];then
> + echo "$list3: PASS" >> kernel.log
> + else
> + echo "$list3: FAILED-" >> kernel.log
> + fi
> + else
> + echo "$list3: FAILED--" >> kernel.log
> + fi
> +else
> + echo "$list3: FAILED---" >> kernel.log
> +fi
> +rmmod "$list3"
> +
> +#trace-printk
> +list4="trace-printk"
> +modprobe "$list4"
> +lsmod | grep "trace_printk"
> +if [ $? -eq 0 ];then
> + ret=`cat /sys/kernel/debug/tracing/trace | grep trace_printk | head -n1 | cut -d':' -f2`
> + if [ "$ret" = " trace_printk_irq_work" ];then
> + echo "$list4: PASS" >> kernel.log
> + rmmod "$list4"
> + else
> + echo "$list4: FAILED" >> kernel.log
> + fi
> +else
> + echo "$list4: FAILED" >> kernel.log
> +fi
> +rmmod "$list4"
> +
> +#kprobe_example
> +list5="kprobe_example"
> +dmesg -c
> +modprobe "$list5"
> +lsmod | grep "$list5"
> +if [ $? -eq 0 ];then
> + dmesg | grep "_do_fork"
> + if [ $? -eq 0 ];then
> + echo "$list5: PASS" >> kernel.log
> + else
> + echo "$list5: FAILED" >> kernel.log
> + fi
> +else
> + echo "$list5: FAILED" >> kernel.log
> +fi
> +rmmod "$list5"
> +
> +#kretprobe_example
> +list6="kretprobe_example"
> +dmesg -c
> +modprobe "$list6"
> +lsmod | grep "$list6"
> +if [ $? -eq 0 ];then
> + dmesg | grep "_do_fork returned"
> + if [ $? -eq 0 ];then
> + echo "$list6: PASS" >> kernel.log
> + else
> + echo "$list6: FAILED" >> kernel.log
> + fi
> +else
> + echo "$list6: FAILED" >> kernel.log
> +fi
> +rmmod "$list6"
> +
> +echo "#####result#####"
> +cat kernel.log
> +rm kernel.log
> diff --git a/meta/recipes-kernel/linux/linux-yocto_4.14.bb b/meta/recipes-kernel/linux/linux-yocto_4.14.bb
> index 0449213..9650ee2 100644
> --- a/meta/recipes-kernel/linux/linux-yocto_4.14.bb
> +++ b/meta/recipes-kernel/linux/linux-yocto_4.14.bb
> @@ -45,3 +45,12 @@ KERNEL_FEATURES_append_qemuall=" cfg/virtio.scc"
> KERNEL_FEATURES_append_qemux86=" cfg/sound.scc cfg/paravirt_kvm.scc"
> KERNEL_FEATURES_append_qemux86-64=" cfg/sound.scc cfg/paravirt_kvm.scc"
> KERNEL_FEATURES_append = " ${@bb.utils.contains("TUNE_FEATURES", "mx32", " cfg/x32.scc", "" ,d)}"
> +
> +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
> +inherit ptest
> +SRC_URI_append = " file://run-ptest \
> +"
> +do_install_ptest_append() {
> + install -D ${WORKDIR}/run-ptest ${D}${PTEST_PATH}/run-ptest
> +}
> +KERNEL_FEATURES_append = " ${@bb.utils.contains("DISTRO_FEATURES", "ptest", "features/kernel-sample/kernel-sample.scc", "", d)}"
> --
> 2.7.4
>
--
"Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end"
More information about the Openembedded-core
mailing list