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