1#!/bin/sh
2
3# pstore_post_reboot_tests - Check pstore's behavior after crash/reboot
4#
5# Copyright (C) Hitachi Ltd., 2015
6#  Written by Hiraku Toyooka <hiraku.toyooka.gu@hitachi.com>
7#
8# Released under the terms of the GPL v2.
9
10. ./common_tests
11
12if [ -e $REBOOT_FLAG  ]; then
13    rm $REBOOT_FLAG
14else
15    prlog "pstore_crash_test has not been executed yet. we skip further tests."
16    exit 0
17fi
18
19prlog -n "Mounting pstore filesystem ... "
20mount_info=`grep pstore /proc/mounts`
21if [ $? -eq 0 ]; then
22    mount_point=`echo ${mount_info} | cut -d' ' -f2 | head -n1`
23    prlog "ok"
24else
25    mount none /sys/fs/pstore -t pstore
26    if [ $? -eq 0 ]; then
27	mount_point=`grep pstore /proc/mounts | cut -d' ' -f2 | head -n1`
28	prlog "ok"
29    else
30	prlog "FAIL"
31	exit 1
32    fi
33fi
34
35cd ${mount_point}
36
37prlog -n "Checking dmesg files exist in pstore filesystem ... "
38check_files_exist dmesg
39
40prlog -n "Checking console files exist in pstore filesystem ... "
41check_files_exist console
42
43prlog -n "Checking pmsg files exist in pstore filesystem ... "
44check_files_exist pmsg
45
46prlog -n "Checking dmesg files contain oops end marker"
47grep_end_trace() {
48    grep -q "\---\[ end trace" $1
49}
50files=`ls dmesg-${backend}-*`
51operate_files $? "$files" grep_end_trace
52
53prlog -n "Checking console file contains oops end marker ... "
54grep -q "\---\[ end trace" console-${backend}-0
55show_result $?
56
57prlog -n "Checking pmsg file properly keeps the content written before crash ... "
58prev_uuid=`cat $TOP_DIR/prev_uuid`
59if [ $? -eq 0 ]; then
60    nr_matched=`grep -c "$TEST_STRING_PATTERN" pmsg-${backend}-0`
61    if [ $nr_matched -eq 1 ]; then
62	grep -q "$TEST_STRING_PATTERN"$prev_uuid pmsg-${backend}-0
63	show_result $?
64    else
65	prlog "FAIL"
66	rc=1
67    fi
68else
69    prlog "FAIL"
70    rc=1
71fi
72
73prlog -n "Removing all files in pstore filesystem "
74files=`ls *-${backend}-*`
75operate_files $? "$files" rm
76
77exit $rc
78