162306a36Sopenharmony_ci#!/bin/sh
262306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
362306a36Sopenharmony_ci
462306a36Sopenharmony_ci# common_tests - Shell script commonly used by pstore test scripts
562306a36Sopenharmony_ci#
662306a36Sopenharmony_ci# Copyright (C) Hitachi Ltd., 2015
762306a36Sopenharmony_ci#  Written by Hiraku Toyooka <hiraku.toyooka.gu@hitachi.com>
862306a36Sopenharmony_ci#
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci# Utilities
1162306a36Sopenharmony_cierrexit() { # message
1262306a36Sopenharmony_ci    echo "Error: $1" 1>&2
1362306a36Sopenharmony_ci    exit 1
1462306a36Sopenharmony_ci}
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ciabsdir() { # file_path
1762306a36Sopenharmony_ci    (cd `dirname $1`; pwd)
1862306a36Sopenharmony_ci}
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_cishow_result() { # result_value
2162306a36Sopenharmony_ci    if [ $1 -eq 0 ]; then
2262306a36Sopenharmony_ci	prlog "ok"
2362306a36Sopenharmony_ci    else
2462306a36Sopenharmony_ci	prlog "FAIL"
2562306a36Sopenharmony_ci	rc=1
2662306a36Sopenharmony_ci    fi
2762306a36Sopenharmony_ci}
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_cicheck_files_exist() { # type of pstorefs file
3062306a36Sopenharmony_ci    if [ -e ${1}-${backend}-0 ]; then
3162306a36Sopenharmony_ci	prlog "ok"
3262306a36Sopenharmony_ci	for f in `ls ${1}-${backend}-*`; do
3362306a36Sopenharmony_ci            prlog -e "\t${f}"
3462306a36Sopenharmony_ci	done
3562306a36Sopenharmony_ci    else
3662306a36Sopenharmony_ci	prlog "FAIL"
3762306a36Sopenharmony_ci	rc=1
3862306a36Sopenharmony_ci    fi
3962306a36Sopenharmony_ci}
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_cioperate_files() { # tested value, files, operation
4262306a36Sopenharmony_ci    if [ $1 -eq 0 ]; then
4362306a36Sopenharmony_ci	prlog
4462306a36Sopenharmony_ci	for f in $2; do
4562306a36Sopenharmony_ci	    prlog -ne "\t${f} ... "
4662306a36Sopenharmony_ci	    # execute operation
4762306a36Sopenharmony_ci	    $3 $f
4862306a36Sopenharmony_ci	    show_result $?
4962306a36Sopenharmony_ci	done
5062306a36Sopenharmony_ci    else
5162306a36Sopenharmony_ci	prlog " ... FAIL"
5262306a36Sopenharmony_ci	rc=1
5362306a36Sopenharmony_ci    fi
5462306a36Sopenharmony_ci}
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ci# Parameters
5762306a36Sopenharmony_ciTEST_STRING_PATTERN="Testing pstore: uuid="
5862306a36Sopenharmony_ciUUID=`cat /proc/sys/kernel/random/uuid`
5962306a36Sopenharmony_ciTOP_DIR=`absdir $0`
6062306a36Sopenharmony_ciLOG_DIR=$TOP_DIR/logs/`date +%Y%m%d-%H%M%S`_${UUID}/
6162306a36Sopenharmony_ciREBOOT_FLAG=$TOP_DIR/reboot_flag
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci# Preparing logs
6462306a36Sopenharmony_ciLOG_FILE=$LOG_DIR/`basename $0`.log
6562306a36Sopenharmony_cimkdir -p $LOG_DIR || errexit "Failed to make a log directory: $LOG_DIR"
6662306a36Sopenharmony_cidate > $LOG_FILE
6762306a36Sopenharmony_ciprlog() { # messages
6862306a36Sopenharmony_ci    /bin/echo "$@" | tee -a $LOG_FILE
6962306a36Sopenharmony_ci}
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ci# Starting tests
7262306a36Sopenharmony_circ=0
7362306a36Sopenharmony_ciprlog "=== Pstore unit tests (`basename $0`) ==="
7462306a36Sopenharmony_ciprlog "UUID="$UUID
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ciprlog -n "Checking pstore backend is registered ... "
7762306a36Sopenharmony_cibackend=`cat /sys/module/pstore/parameters/backend`
7862306a36Sopenharmony_cishow_result $?
7962306a36Sopenharmony_ciprlog -e "\tbackend=${backend}"
8062306a36Sopenharmony_ciprlog -e "\tcmdline=`cat /proc/cmdline`"
8162306a36Sopenharmony_ciif [ $rc -ne 0 ]; then
8262306a36Sopenharmony_ci    exit 1
8362306a36Sopenharmony_cifi
84