Hi,

> >> +prlog -n "Checking pstore backend is registered ... "
> >> +be_msg=`dmesg | grep "pstore: Registered [a-zA-Z0-9]\+ as persistent 
> >> store backend$"`
> >> +if [ $? -eq 0 ]; then
> >> +    backend=`echo ${be_msg} | sed -e 's/^.*Registered\ 
> >> \([a-zA-z0-9-]\+\)\ as.*$/\1/g'`
> >> +    prlog "ok"
> >> +else
> >> +    prlog "FAIL"
> >> +    exit 1

It may be good if you can log  "/sys/module/pstore/parameters/backend/"
or /proc/cmdline in failure case.

It makes debug easy.

Seiji

> >> +fi 


> -----Original Message-----
> From: 豊岡拓 / Toyooka,Hiraku
> Sent: Tuesday, September 15, 2015 11:31 AM
> To: Kees Cook
> Cc: LKML; Tony Luck; Linux API; Anton Vorontsov; Shuah Khan; Mark Salyzyn; 
> Colin Cross; 阿口誠司 / AGUCHI,SEIJI
> Subject: Re: [PATCH 1/2] selftests/pstore: add pstore test script for 
> pre-reboot
> 
> Hello, Kees,
> 
> Thank you for your advise.
> 
>  >> +be_msg=`dmesg | grep "pstore: Registered [a-zA-Z0-9]\+ as
> persistent store backend$"`
> ...
>  > This seems unstable if the system hasn't booted recently or if stuff
>  > is spamming dmesg. What about examining /sys/module/pstore instead?
> 
> OK, I'll update in that way.
> 
> Best regards,
> Hiraku Toyooka
> 
> Kees Cook wrote:
> > On Tue, Sep 8, 2015 at 4:06 AM, Hiraku Toyooka
> > <hiraku.toyooka...@hitachi.com> wrote:
> >> The pstore_tests script includes test cases which check pstore's
> >> behavior before crash (and reboot).
> >>
> >> The test cases are currently following.
> >>
> >> - Check pstore backend is registered
> >> - Check pstore console is registered
> >> - Check /dev/pmsg0 exists
> >> - Write string to /dev/pmsg0
> >>
> >> Example usage is following.
> >>
> >> make: Entering directory '/home/root/selftests/pstore'
> >> === Pstore unit tests (pstore_tests)===
> >> Checking pstore backend is registered ... ok
> >> Checking pstore console is registered ... ok
> >> Checking /dev/pmsg0 exists ... ok
> >> Writing TEST_STRING to /dev/pmsg0 ... ok
> >> selftests: pstore_tests [PASS]
> >> === Pstore unit tests (pstore_post_reboot_tests)===
> >> Checking pstore backend is registered ... ok
> >> pstore_crash_test has not been executed yet. we skip further tests.
> >> selftests: pstore_post_reboot_tests [PASS]
> >> make: Leaving directory '/home/root/selftests/pstore'
> >>
> >> We can also see test logs later.
> >>
> >> Signed-off-by: Hiraku Toyooka <hiraku.toyooka...@hitachi.com>
> >> Cc: Shuah Khan <shua...@osg.samsung.com>
> >> Cc: Tony Luck <tony.l...@intel.com>
> >> Cc: Anton Vorontsov <an...@enomsg.org>
> >> Cc: Colin Cross <ccr...@android.com>
> >> Cc: Kees Cook <keesc...@chromium.org>
> >> Cc: Mark Salyzyn <saly...@android.com>
> >> Cc: Seiji Aguchi <seiji.agu...@hds.com>
> >> Cc: linux-ker...@vger.kernel.org
> >> Cc: linux-api@vger.kernel.org
> >> ---
> >>   tools/testing/selftests/Makefile            |    1 +
> >>   tools/testing/selftests/pstore/Makefile     |   12 +++++++
> >>   tools/testing/selftests/pstore/common_tests |   45 
> >> +++++++++++++++++++++++++++
> >>   tools/testing/selftests/pstore/pstore_tests |   42 
> >> +++++++++++++++++++++++++
> >>   4 files changed, 100 insertions(+)
> >>   create mode 100644 tools/testing/selftests/pstore/Makefile
> >>   create mode 100755 tools/testing/selftests/pstore/common_tests
> >>   create mode 100755 tools/testing/selftests/pstore/pstore_tests
> >>
> >> diff --git a/tools/testing/selftests/Makefile 
> >> b/tools/testing/selftests/Makefile
> >> index 24ae9e8..b58c72e 100644
> >> --- a/tools/testing/selftests/Makefile
> >> +++ b/tools/testing/selftests/Makefile
> >> @@ -12,6 +12,7 @@ TARGETS += mount
> >>   TARGETS += mqueue
> >>   TARGETS += net
> >>   TARGETS += powerpc
> >> +TARGETS += pstore
> >>   TARGETS += ptrace
> >>   TARGETS += seccomp
> >>   TARGETS += size
> >> diff --git a/tools/testing/selftests/pstore/Makefile 
> >> b/tools/testing/selftests/pstore/Makefile
> >> new file mode 100644
> >> index 0000000..40b887d
> >> --- /dev/null
> >> +++ b/tools/testing/selftests/pstore/Makefile
> >> @@ -0,0 +1,12 @@
> >> +# Makefile for pstore selftests.
> >> +# Expects pstore backend is registered.
> >> +
> >> +all:
> >> +
> >> +TEST_PROGS := pstore_tests
> >> +TEST_FILES := common_tests
> >> +
> >> +include ../lib.mk
> >> +
> >> +clean:
> >> +       rm -rf logs/*
> >> diff --git a/tools/testing/selftests/pstore/common_tests 
> >> b/tools/testing/selftests/pstore/common_tests
> >> new file mode 100755
> >> index 0000000..98611c5
> >> --- /dev/null
> >> +++ b/tools/testing/selftests/pstore/common_tests
> >> @@ -0,0 +1,45 @@
> >> +#!/bin/sh
> >> +
> >> +# common_tests - Shell script commonly used by pstore test scripts
> >> +#
> >> +# Copyright (C) Hitachi Ltd., 2015
> >> +#  Written by Hiraku Toyooka <hiraku.toyooka...@hitachi.com>
> >> +#
> >> +# Released under the terms of the GPL v2.
> >> +
> >> +# Utilities
> >> +errexit() { # message
> >> +  echo "Error: $1" 1>&2
> >> +  exit 1
> >> +}
> >> +
> >> +absdir() { # file_path
> >> +  (cd `dirname $1`; pwd)
> >> +}
> >> +
> >> +# Parameters
> >> +TOP_DIR=`absdir $0`
> >> +LOG_DIR=$TOP_DIR/logs/`date +%Y%m%d-%H%M%S`/
> >> +TEST_STRING="Testing pstore"
> >> +
> >> +# Preparing logs
> >> +LOG_FILE=$LOG_DIR/`basename $0`.log
> >> +mkdir -p $LOG_DIR || errexit "Failed to make a log directory: $LOG_DIR"
> >> +date > $LOG_FILE
> >> +prlog() { # messages
> >> +  /bin/echo "$@" | tee -a $LOG_FILE
> >> +}
> >> +prlog "=== Pstore unit tests (`basename $0`)==="
> >> +
> >> +# Starting tests
> >> +rc=0
> >> +
> >> +prlog -n "Checking pstore backend is registered ... "
> >> +be_msg=`dmesg | grep "pstore: Registered [a-zA-Z0-9]\+ as persistent 
> >> store backend$"`
> >> +if [ $? -eq 0 ]; then
> >> +    backend=`echo ${be_msg} | sed -e 's/^.*Registered\ 
> >> \([a-zA-z0-9-]\+\)\ as.*$/\1/g'`
> >> +    prlog "ok"
> >> +else
> >> +    prlog "FAIL"
> >> +    exit 1
> >> +fi
> >
> > This seems unstable if the system hasn't booted recently or if stuff
> > is spamming dmesg. What about examining /sys/module/pstore instead?
> >
> >> diff --git a/tools/testing/selftests/pstore/pstore_tests 
> >> b/tools/testing/selftests/pstore/pstore_tests
> >> new file mode 100755
> >> index 0000000..cbf613c
> >> --- /dev/null
> >> +++ b/tools/testing/selftests/pstore/pstore_tests
> >> @@ -0,0 +1,42 @@
> >> +#!/bin/sh
> >> +
> >> +# pstore_tests - Check pstore's behavior before crash/reboot
> >> +#
> >> +# Copyright (C) Hitachi Ltd., 2015
> >> +#  Written by Hiraku Toyooka <hiraku.toyooka...@hitachi.com>
> >> +#
> >> +# Released under the terms of the GPL v2.
> >> +
> >> +. ./common_tests
> >> +
> >> +prlog -n "Checking pstore console is registered ... "
> >> +dmesg | grep -q "console \[pstore"
> >> +if [ $? -eq 0 ]; then
> >> +    prlog "ok"
> >> +else
> >> +    prlog "FAIL"
> >> +fi
> >> +
> >> +prlog -n "Checking /dev/pmsg0 exists ... "
> >> +if [ -e "/dev/pmsg0" ]; then
> >> +    prlog "ok"
> >> +else
> >> +    prlog "FAIL"
> >> +    rc=1
> >> +fi
> >> +
> >> +prlog -n "Writing TEST_STRING to /dev/pmsg0 ... "
> >> +if [ -e "/dev/pmsg0" ]; then
> >> +    echo "${TEST_STRING}" > /dev/pmsg0
> >> +    if [ $? -eq 0 ]; then
> >> +       prlog "ok"
> >> +    else
> >> +       prlog "FAIL"
> >> +       rc=1
> >> +    fi
> >> +else
> >> +    prlog "FAIL"
> >> +    rc=1
> >> +fi
> >> +
> >> +exit $rc
> >>
> >
> > -Kees
> >
> 
> --
> Hiraku Toyooka
> Systems Productivity Research Dept. / Linux Technology Center
> Center for Technology Innovation - Systems Engineering, Hitachi Ltd.

Reply via email to