xref: /linux/tools/testing/selftests/pstore/common_tests (revision f615e2bb1331c5b9dc7f56f39f679738674a1e1f)
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