xref: /OK3568_Linux_fs/kernel/tools/testing/selftests/pstore/common_tests (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#!/bin/sh
2*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0-only
3*4882a593Smuzhiyun
4*4882a593Smuzhiyun# common_tests - Shell script commonly used by pstore test scripts
5*4882a593Smuzhiyun#
6*4882a593Smuzhiyun# Copyright (C) Hitachi Ltd., 2015
7*4882a593Smuzhiyun#  Written by Hiraku Toyooka <hiraku.toyooka.gu@hitachi.com>
8*4882a593Smuzhiyun#
9*4882a593Smuzhiyun
10*4882a593Smuzhiyun# Utilities
11*4882a593Smuzhiyunerrexit() { # message
12*4882a593Smuzhiyun    echo "Error: $1" 1>&2
13*4882a593Smuzhiyun    exit 1
14*4882a593Smuzhiyun}
15*4882a593Smuzhiyun
16*4882a593Smuzhiyunabsdir() { # file_path
17*4882a593Smuzhiyun    (cd `dirname $1`; pwd)
18*4882a593Smuzhiyun}
19*4882a593Smuzhiyun
20*4882a593Smuzhiyunshow_result() { # result_value
21*4882a593Smuzhiyun    if [ $1 -eq 0 ]; then
22*4882a593Smuzhiyun	prlog "ok"
23*4882a593Smuzhiyun    else
24*4882a593Smuzhiyun	prlog "FAIL"
25*4882a593Smuzhiyun	rc=1
26*4882a593Smuzhiyun    fi
27*4882a593Smuzhiyun}
28*4882a593Smuzhiyun
29*4882a593Smuzhiyuncheck_files_exist() { # type of pstorefs file
30*4882a593Smuzhiyun    if [ -e ${1}-${backend}-0 ]; then
31*4882a593Smuzhiyun	prlog "ok"
32*4882a593Smuzhiyun	for f in `ls ${1}-${backend}-*`; do
33*4882a593Smuzhiyun            prlog -e "\t${f}"
34*4882a593Smuzhiyun	done
35*4882a593Smuzhiyun    else
36*4882a593Smuzhiyun	prlog "FAIL"
37*4882a593Smuzhiyun	rc=1
38*4882a593Smuzhiyun    fi
39*4882a593Smuzhiyun}
40*4882a593Smuzhiyun
41*4882a593Smuzhiyunoperate_files() { # tested value, files, operation
42*4882a593Smuzhiyun    if [ $1 -eq 0 ]; then
43*4882a593Smuzhiyun	prlog
44*4882a593Smuzhiyun	for f in $2; do
45*4882a593Smuzhiyun	    prlog -ne "\t${f} ... "
46*4882a593Smuzhiyun	    # execute operation
47*4882a593Smuzhiyun	    $3 $f
48*4882a593Smuzhiyun	    show_result $?
49*4882a593Smuzhiyun	done
50*4882a593Smuzhiyun    else
51*4882a593Smuzhiyun	prlog " ... FAIL"
52*4882a593Smuzhiyun	rc=1
53*4882a593Smuzhiyun    fi
54*4882a593Smuzhiyun}
55*4882a593Smuzhiyun
56*4882a593Smuzhiyun# Parameters
57*4882a593SmuzhiyunTEST_STRING_PATTERN="Testing pstore: uuid="
58*4882a593SmuzhiyunUUID=`cat /proc/sys/kernel/random/uuid`
59*4882a593SmuzhiyunTOP_DIR=`absdir $0`
60*4882a593SmuzhiyunLOG_DIR=$TOP_DIR/logs/`date +%Y%m%d-%H%M%S`_${UUID}/
61*4882a593SmuzhiyunREBOOT_FLAG=$TOP_DIR/reboot_flag
62*4882a593Smuzhiyun
63*4882a593Smuzhiyun# Preparing logs
64*4882a593SmuzhiyunLOG_FILE=$LOG_DIR/`basename $0`.log
65*4882a593Smuzhiyunmkdir -p $LOG_DIR || errexit "Failed to make a log directory: $LOG_DIR"
66*4882a593Smuzhiyundate > $LOG_FILE
67*4882a593Smuzhiyunprlog() { # messages
68*4882a593Smuzhiyun    /bin/echo "$@" | tee -a $LOG_FILE
69*4882a593Smuzhiyun}
70*4882a593Smuzhiyun
71*4882a593Smuzhiyun# Starting tests
72*4882a593Smuzhiyunrc=0
73*4882a593Smuzhiyunprlog "=== Pstore unit tests (`basename $0`) ==="
74*4882a593Smuzhiyunprlog "UUID="$UUID
75*4882a593Smuzhiyun
76*4882a593Smuzhiyunprlog -n "Checking pstore backend is registered ... "
77*4882a593Smuzhiyunbackend=`cat /sys/module/pstore/parameters/backend`
78*4882a593Smuzhiyunshow_result $?
79*4882a593Smuzhiyunprlog -e "\tbackend=${backend}"
80*4882a593Smuzhiyunprlog -e "\tcmdline=`cat /proc/cmdline`"
81*4882a593Smuzhiyunif [ $rc -ne 0 ]; then
82*4882a593Smuzhiyun    exit 1
83*4882a593Smuzhiyunfi
84