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