Skip to content

Commit

Permalink
boot-tests: add OpenBMC support
Browse files Browse the repository at this point in the history
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
  • Loading branch information
stewartsmith committed Jun 20, 2017
1 parent 3704e77 commit 1efd38d
Show file tree
Hide file tree
Showing 2 changed files with 125 additions and 2 deletions.
4 changes: 2 additions & 2 deletions external/boot-tests/boot_test.sh
Expand Up @@ -125,9 +125,9 @@ There are three usage modes.
1) boot_test.sh -h
Print this help
2) boot_test.sh [-vdp] -t target -B -b (fsp|bmc)
2) boot_test.sh [-vdp] -t target -B -b (fsp|bmc|smc|openbmc)
Boot test the target without flashing. Specify the type of machine
(FSP or BMC) with the -b option.
(FSP, BMC, SMC, OpenBMC) with the -b option.
3) boot_test.sh [-vdp] -b bmc -t target -P pnor [-N]
boot_test.sh [-vdp] -b bmc -t target [-1 PAYLOAD] [-2 BOOTKERNEL] [-N]
Expand Down
123 changes: 123 additions & 0 deletions external/boot-tests/openbmc_support.sh
@@ -0,0 +1,123 @@
#Number of times to sleep
BOOT_TIMEOUT="5";

#Username/password for ssh to BMC machines
SSHUSER=${SSHUSER:-root};
export SSHPASS=${SSHPASS:-0penBmc};

PFLASH_BINARY=/usr/sbin/pflash

# How do we SSH/SCP in?
SSHCMD="sshpass -e ssh -l $SSHUSER -o LogLevel=quiet -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $target";

IPMI_AUTH="-P ${IPMI_PASS:-0penBmc}"

# Strip control characters from IPMI before grepping?
STRIP_CONTROL=0

function sshcmd {
$SSHCMD $*;
}

# remotecp file target target_location
function remotecp {
sshpass -e scp -o User=$SSHUSER -o LogLevel=quiet -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $1 $2:$3
}

function is_off {
return $([ "$($SSHCMD /usr/sbin/obmcutil power|grep 'state')" = "state = 0" ]);
}

function poweroff {
$SSHCMD /usr/sbin/obmcutil poweroff
# give it some time
sleep 5
}

function force_primary_side {
true
}

function flash {
if [ ! -z "$PNOR" ]; then
remotecp $PNOR $target /tmp/image.pnor;
fi
if [ "${LID[0]}" != "" ]; then
remotecp ${LID[0]} $target /tmp/skiboot.lid;
fi
if [ "${LID[1]}" != "" ]; then
remotecp ${LID[1]} $target /tmp/bootkernel
fi
if [ "${arbitrary_lid[1]}" != "" ]; then
remotecp ${arbitrary_lid[1]} $target /tmp/$(basename ${arbitrary_lid[1]})
fi

if [ "$?" -ne "0" ] ; then
error "Couldn't copy firmware image";
fi

if [ ! -z "$PNOR" ]; then
msg "Flashing full PNOR"
$SSHCMD "$PFLASH_BINARY -E -f -p /tmp/image.pnor"
if [ "$?" -ne "0" ] ; then
error "An unexpected pflash error has occurred";
fi
msg "Removing /tmp/image.pnor"
$SSHCMD "rm /tmp/image.pnor"
fi

if [ ! -z "${LID[0]}" ] ; then
msg "Flashing PAYLOAD PNOR partition"
$SSHCMD "$PFLASH_BINARY -e -f -P PAYLOAD -p /tmp/skiboot.lid"
if [ "$?" -ne "0" ] ; then
error "An unexpected pflash error has occurred";
fi
msg "Removing /tmp/pskiboot.lid"
$SSHCMD "rm /tmp/skiboot.lid"
fi

if [ ! -z "${LID[1]}" ] ; then
msg "Flashing BOOTKERNEL PNOR partition"
$SSHCMD "$PFLASH_BINARY -e -f -P BOOTKERNEL -p /tmp/bootkernel"
if [ "$?" -ne "0" ] ; then
error "An unexpected pflash error has occurred";
fi
msg "Removing /tmp/bootkernel"
$SSHCMD "rm /tmp/bootkernel"
fi

if [ ! -z "${arbitrary_lid[0]}" -a ! -z "${arbitrary_lid[1]}" ] ; then
msg "Flashing ${arbitrary_lid[0]} PNOR partition"
$SSHCMD "$PFLASH_BINARY -e -f -P ${arbitrary_lid[0]} -p /tmp/$(basename ${arbitrary_lid[1]})"
if [ "$?" -ne "0" ] ; then
error "An unexpected pflash error has occurred";
fi
msg "Removing /tmp/$(basename ${arbitrary_lid[1]})"
$SSHCMD "rm /tmp/$(basename ${arbitrary_lid[1]})"
fi

}

function boot_firmware {
$SSHCMD /usr/sbin/obmcutil poweron
i=0;
while [ "$($SSHCMD /usr/sbin/obmcutil power|grep state)" = "state = 0" -a \( "$i" -lt "$BOOT_TIMEOUT" \) ] ; do
msg -n ".";
sleep $BOOT_SLEEP_PERIOD;
i=$(expr $i + 1);
done
if [ "$i" -eq "$BOOT_TIMEOUT" ] ; then
error "Couldn't power on $target";
fi
}

function machine_sanity_test {
sshcmd true;
if [ $? -ne 0 ]; then
echo "$target: Failed to SSH to $target..."
echo "$target: Command was: $SSHCMD true"
error "Try connecting manually to diagnose the issue."
fi
# No further sanity tests for BMC machines.
true
}

0 comments on commit 1efd38d

Please sign in to comment.