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