1cc04a46fSHiraku Toyooka#!/bin/sh 2cc04a46fSHiraku Toyooka 3cc04a46fSHiraku Toyooka# common_tests - Shell script commonly used by pstore test scripts 4cc04a46fSHiraku Toyooka# 5cc04a46fSHiraku Toyooka# Copyright (C) Hitachi Ltd., 2015 6cc04a46fSHiraku Toyooka# Written by Hiraku Toyooka <hiraku.toyooka.gu@hitachi.com> 7cc04a46fSHiraku Toyooka# 8cc04a46fSHiraku Toyooka# Released under the terms of the GPL v2. 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 29*f615e2bbSHiraku Toyookacheck_files_exist() { # type of pstorefs file 30*f615e2bbSHiraku Toyooka if [ -e ${1}-${backend}-0 ]; then 31*f615e2bbSHiraku Toyooka prlog "ok" 32*f615e2bbSHiraku Toyooka for f in `ls ${1}-${backend}-*`; do 33*f615e2bbSHiraku Toyooka prlog -e "\t${f}" 34*f615e2bbSHiraku Toyooka done 35*f615e2bbSHiraku Toyooka else 36*f615e2bbSHiraku Toyooka prlog "FAIL" 37*f615e2bbSHiraku Toyooka rc=1 38*f615e2bbSHiraku Toyooka fi 39*f615e2bbSHiraku Toyooka} 40*f615e2bbSHiraku Toyooka 41*f615e2bbSHiraku Toyookaoperate_files() { # tested value, files, operation 42*f615e2bbSHiraku Toyooka if [ $1 -eq 0 ]; then 43*f615e2bbSHiraku Toyooka prlog 44*f615e2bbSHiraku Toyooka for f in $2; do 45*f615e2bbSHiraku Toyooka prlog -ne "\t${f} ... " 46*f615e2bbSHiraku Toyooka # execute operation 47*f615e2bbSHiraku Toyooka $3 $f 48*f615e2bbSHiraku Toyooka show_result $? 49*f615e2bbSHiraku Toyooka done 50*f615e2bbSHiraku Toyooka else 51*f615e2bbSHiraku Toyooka prlog " ... FAIL" 52*f615e2bbSHiraku Toyooka rc=1 53*f615e2bbSHiraku Toyooka fi 54*f615e2bbSHiraku Toyooka} 55*f615e2bbSHiraku 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}/ 61*f615e2bbSHiraku 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