Resguardo inicial

This commit is contained in:
lastdragon
2026-09-06 12:53:21 -06:00
parent 662efe3c2a
commit ad2088d178
94853 changed files with 43200404 additions and 0 deletions
@@ -0,0 +1,3 @@
# SPDX-License-Identifier: GPL-2.0-only
logs
*uuid
@@ -0,0 +1,14 @@
# SPDX-License-Identifier: GPL-2.0
# Makefile for pstore selftests.
# Expects pstore backend is registered.
all:
TEST_PROGS := pstore_tests pstore_post_reboot_tests
TEST_FILES := common_tests pstore_crash_test
EXTRA_CLEAN := logs/* *uuid
include ../lib.mk
run_crash:
@sh pstore_crash_test || { echo "pstore_crash_test: [FAIL]"; exit 1; }
+83
View File
@@ -0,0 +1,83 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0-only
# common_tests - Shell script commonly used by pstore test scripts
#
# Copyright (C) Hitachi Ltd., 2015
# Written by Hiraku Toyooka <hiraku.toyooka.gu@hitachi.com>
#
# Utilities
errexit() { # message
echo "Error: $1" 1>&2
exit 1
}
absdir() { # file_path
(cd `dirname $1`; pwd)
}
show_result() { # result_value
if [ $1 -eq 0 ]; then
prlog "ok"
else
prlog "FAIL"
rc=1
fi
}
check_files_exist() { # type of pstorefs file
if [ -e ${1}-${backend}-0 ]; then
prlog "ok"
for f in `ls ${1}-${backend}-*`; do
prlog -e "\t${f}"
done
else
prlog "FAIL"
rc=1
fi
}
operate_files() { # tested value, files, operation
if [ $1 -eq 0 ]; then
prlog
for f in $2; do
prlog -ne "\t${f} ... "
# execute operation
$3 $f
show_result $?
done
else
prlog " ... FAIL"
rc=1
fi
}
# Parameters
TEST_STRING_PATTERN="Testing pstore: uuid="
UUID=`cat /proc/sys/kernel/random/uuid`
TOP_DIR=`absdir $0`
LOG_DIR=$TOP_DIR/logs/`date +%Y%m%d-%H%M%S`_${UUID}/
REBOOT_FLAG=$TOP_DIR/reboot_flag
# Preparing logs
LOG_FILE=$LOG_DIR/`basename $0`.log
mkdir -p $LOG_DIR || errexit "Failed to make a log directory: $LOG_DIR"
date > $LOG_FILE
prlog() { # messages
/bin/echo "$@" | tee -a $LOG_FILE
}
# Starting tests
rc=0
prlog "=== Pstore unit tests (`basename $0`) ==="
prlog "UUID="$UUID
prlog -n "Checking pstore backend is registered ... "
backend=`cat /sys/module/pstore/parameters/backend`
show_result $?
prlog -e "\tbackend=${backend}"
prlog -e "\tcmdline=`cat /proc/cmdline`"
if [ $rc -ne 0 ]; then
exit 1
fi
@@ -0,0 +1,5 @@
CONFIG_MISC_FILESYSTEMS=y
CONFIG_PSTORE=y
CONFIG_PSTORE_PMSG=y
CONFIG_PSTORE_CONSOLE=y
CONFIG_PSTORE_RAM=m
@@ -0,0 +1,30 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0-only
# pstore_crash_test - Pstore test shell script which causes crash and reboot
#
# Copyright (C) Hitachi Ltd., 2015
# Written by Hiraku Toyooka <hiraku.toyooka.gu@hitachi.com>
#
# exit if pstore backend is not registered
. ./common_tests
prlog "Causing kernel crash ..."
# enable all functions triggered by sysrq
echo 1 > /proc/sys/kernel/sysrq
# setting to reboot in 3 seconds after panic
echo 3 > /proc/sys/kernel/panic
# save uuid file by different name because next test execution will replace it.
mv $TOP_DIR/uuid $TOP_DIR/prev_uuid
# create a file as reboot flag
touch $REBOOT_FLAG
sync
# cause crash
# Note: If you use kdump and want to see kmesg-* files after reboot, you should
# specify 'crash_kexec_post_notifiers' in 1st kernel's cmdline.
echo c > /proc/sysrq-trigger
@@ -0,0 +1,80 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0-only
# pstore_post_reboot_tests - Check pstore's behavior after crash/reboot
#
# Copyright (C) Hitachi Ltd., 2015
# Written by Hiraku Toyooka <hiraku.toyooka.gu@hitachi.com>
#
# Kselftest framework requirement - SKIP code is 4.
ksft_skip=4
. ./common_tests
if [ -e $REBOOT_FLAG ]; then
rm $REBOOT_FLAG
else
prlog "pstore_crash_test has not been executed yet. we skip further tests."
exit $ksft_skip
fi
prlog -n "Mounting pstore filesystem ... "
mount_info=`grep pstore /proc/mounts`
if [ $? -eq 0 ]; then
mount_point=`echo ${mount_info} | cut -d' ' -f2 | head -n1`
prlog "ok"
else
mount none /sys/fs/pstore -t pstore
if [ $? -eq 0 ]; then
mount_point=`grep pstore /proc/mounts | cut -d' ' -f2 | head -n1`
prlog "ok"
else
prlog "FAIL"
exit 1
fi
fi
cd ${mount_point}
prlog -n "Checking dmesg files exist in pstore filesystem ... "
check_files_exist dmesg
prlog -n "Checking console files exist in pstore filesystem ... "
check_files_exist console
prlog -n "Checking pmsg files exist in pstore filesystem ... "
check_files_exist pmsg
prlog -n "Checking dmesg files contain oops end marker"
grep_end_trace() {
grep -q "\---\[ end trace" $1
}
files=`ls dmesg-${backend}-*`
operate_files $? "$files" grep_end_trace
prlog -n "Checking console file contains oops end marker ... "
grep -q "\---\[ end trace" console-${backend}-0
show_result $?
prlog -n "Checking pmsg file properly keeps the content written before crash ... "
prev_uuid=`cat $TOP_DIR/prev_uuid`
if [ $? -eq 0 ]; then
nr_matched=`grep -c "$TEST_STRING_PATTERN" pmsg-${backend}-0`
if [ $nr_matched -eq 1 ]; then
grep -q "$TEST_STRING_PATTERN"$prev_uuid pmsg-${backend}-0
show_result $?
else
prlog "FAIL"
rc=1
fi
else
prlog "FAIL"
rc=1
fi
prlog -n "Removing all files in pstore filesystem "
files=`ls *-${backend}-*`
operate_files $? "$files" rm
exit $rc
+30
View File
@@ -0,0 +1,30 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0-only
# pstore_tests - Check pstore's behavior before crash/reboot
#
# Copyright (C) Hitachi Ltd., 2015
# Written by Hiraku Toyooka <hiraku.toyooka.gu@hitachi.com>
#
. ./common_tests
prlog -n "Checking pstore console is registered ... "
dmesg | grep -Eq "console \[(pstore|${backend})"
show_result $?
prlog -n "Checking /dev/pmsg0 exists ... "
test -e /dev/pmsg0
show_result $?
prlog -n "Writing unique string to /dev/pmsg0 ... "
if [ -e "/dev/pmsg0" ]; then
echo "${TEST_STRING_PATTERN}""$UUID" > /dev/pmsg0
show_result $?
echo "$UUID" > $TOP_DIR/uuid
else
prlog "FAIL"
rc=1
fi
exit $rc