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...@windriver.com> wrote: > > Signed-off-by: Dengke Du <dengke...@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" -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core