From 4eb1e6ea435c53accf13ef83febdba3a2d8e611d Mon Sep 17 00:00:00 2001 From: Vijay Dandiga Date: Wed, 11 Jun 2014 14:44:50 +0530 Subject: Start git repo for kexec-test --- kexec-test.sh | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100755 kexec-test.sh diff --git a/kexec-test.sh b/kexec-test.sh new file mode 100755 index 0000000..8a5e787 --- /dev/null +++ b/kexec-test.sh @@ -0,0 +1,78 @@ +#!/bin/bash +# Test script to validate kexec reboots + +kexec_tools_instance=$((RANDOM%99999+10000)) +metadata="/home/root/.kexec-test-data" +kernel="/boot/vmlinux.strip" +cmdline="$( cat /proc/cmdline) kexec_tools_instance=$kexec_tools_instance" +dtb="/boot/fdt.dtb" + +usage(){ + echo "Usage:" + echo "kexec-test [--metadata ] [--kernel --append --dtb ] [--validate] [--reset] [--help]" + echo + echo "--[m]etadata default - /home/root/.kexec-test-data" + echo "--[k]ernel default - /boot/vmlinux.strip" + echo "--[a]ppend defalut - current /proc/cmdline + KERNEL ID" + echo "--[d]tb default - /boot/fdt.dtb" + echo "--[v]alidate Checks whether recent kexec boot Success or Fail" + echo "--[r]eset Deletes metadata" + echo "--[h]elp Shows this menu" + echo +} + +reset(){ + rm $metadata +} + +validate(){ + recent_id=`cat $metadata | grep "BOOTING KERNEL" | tail -1 | cut -d ' ' -f 4` + kexec_success=`cat /proc/cmdline | grep $recent_id | wc -l` + if [ $kexec_success -eq 0 ] + then + echo "kexec-test: KERNEL ID $recent_id REBOOT FAIL" + exit 1 + else + echo "kexec-test: KERNEL ID $recent_id REBOOT SUCCESS" + exit 0 + fi +} + +while [ "$1" ] +do + case $1 in + -m | --metadata ) shift + metadata=$1 + ;; + -k | --kernel ) shift + kernel=$1 + ;; + -a | --append ) shift + cmdline="$1 kexec_tools_instance=$kexec_tools_instance" + ;; + -d | --dtb ) shift + dtb=$1 + ;; + -v | --validate ) validate + exit 1 + ;; + -r | --reset ) reset + exit + ;; + -h | --help ) usage + exit + ;; + * ) usage + exit 1 + esac + shift +done + +echo "kexec-test: LOADING KERNEL $kexec_tools_instance" | tee -a $metadata +echo "kexec -d --load $kernel "--append=$cmdline" --dtb=$dtb" | tee -a $metadata +sleep 3 +kexec -d --load $kernel "--append=$cmdline" --dtb=$dtb +echo "kexec-test: BOOTING KERNEL $kexec_tools_instance" | tee -a $metadata +sleep 3 +kexec -d -e + -- cgit v1.2.3