1cc04a46fSHiraku Toyooka#!/bin/sh
263307d01SThomas 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