#!/bin/bash # BEGIN_ICS_COPYRIGHT8 **************************************** # # Copyright (c) 2015, Intel Corporation # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of Intel Corporation nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # END_ICS_COPYRIGHT8 **************************************** #[ICS VERSION STRING: unknown] check_act() { if [ x"$2" = xa ] then out=`opacmdall -C -H "$chassis" "fwVersion $slota"` elif [ x"$2" = xb ] then out=`opacmdall -C -H "$chassis" "fwVersion $slotb"` else out=`opacmdall -C -H "$chassis" "fwVersion $slot"` fi fw=`echo "$out"|grep 'Firmware Version:'|sed -e 's/.*Firmware Version:[ ]*\([a-zA-Z0-9_.-]*\).*/\1/'` if [ "$fw" != "$1" ] then echo "FAILED: unexpected running fw version: $fw, expected: $1, out=$out" >> test.log else echo "OK: act fw version: $fw, expected: $1" >> test.log fi } check_pri() { if [ x"$2" = xa ] then out=`opacmdall -C -H "$chassis" "bootQuery $slota"` elif [ x"$2" = xb ] then out=`opacmdall -C -H "$chassis" "bootQuery $slotb"` else out=`opacmdall -C -H "$chassis" "bootQuery $slot"` fi fw=`echo "$out"|grep 'version:'|sed -e 's/.*version:[ ]*\([a-zA-Z0-9_.-]*\).*/\1/'` if [ "$fw" != "$1" ] then echo "FAILED: unexpected pri fw version: $fw, expected: $1, out=$out" >> test.log else echo "OK: pri fw version: $fw, expected: $1" >> test.log fi } check_alt() { if [ x"$2" = xa ] then out=`opacmdall -C -H "$chassis" "bootQuery $slota -alternate"` elif [ x"$2" = xb ] then out=`opacmdall -C -H "$chassis" "bootQuery $slotb -alternate"` else out=`opacmdall -C -H "$chassis" "bootQuery $slot -alternate"` fi fw=`echo "$out"|grep 'version:'|sed -e 's/.*version:[ ]*\([a-zA-Z0-9_.-]*\).*/\1/'` if [ "$fw" != "$1" ] then echo "FAILED: unexpected alt fw version: $fw, expected: $1, out=$out" >> test.log else echo "OK: alt fw version: $fw, expected: $1" >> test.log fi } set_fw_ver() { #cat > /sbin/opafirmware < /dev/null } set_fw_ver1() { set_fw_ver $fw1_ver "$card_type" > /dev/null } set_fw_ver2() { set_fw_ver $fw2_ver "$card_type" > /dev/null } set_fw_ver3() { set_fw_ver $fw3_ver "$card_type" > /dev/null } set_fw_verbad() { set_fw_ver 3.1.0.0.29 "VEx" > /dev/null } set -x rm -f test.log test.res rm -rf test_tmp* rm -rf save_tmp test1() { echo "/////////////////////////////////////////" >> test.log echo "pre-test setup - run $fw1" >> test.log set_fw_ver1 opachassisadmin -H "$chassis" -P $fw1 -a run upgrade echo "/////////////////////////////////////////" >> test.log echo "pre-test setup - push $fw2 to alt" >> test.log set_fw_ver2 opachassisadmin -H "$chassis" -P $fw2 -a push upgrade echo "/////////////////////////////////////////" >> test.log echo "firmware already on card and primary/active" >> test.log echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "already on chassis, don't select, no push ">> test.log echo "now running $fw1 pri, $fw2 alt" >> test.log check_act $fw1_ver check_pri $fw1_ver check_alt $fw2_ver set_fw_ver1 opachassisadmin -H "$chassis" -P $fw1 upgrade echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "already on chassis, don't select, no push ">> test.log echo "now running $fw1 pri, $fw2 alt" >> test.log check_act $fw1_ver check_pri $fw1_ver check_alt $fw2_ver set_fw_ver1 opachassisadmin -H "$chassis" -P $fw1 -a push upgrade echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "already on chassis, no need to select" >> test.log echo "now running $fw1 pri, $fw2 alt" >> test.log check_act $fw1_ver check_pri $fw1_ver check_alt $fw2_ver set_fw_ver1 opachassisadmin -H "$chassis" -P $fw1 -a select upgrade echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "already on chassis, no need to reboot" >> test.log echo "now running $fw1 pri, $fw2 alt" >> test.log set_fw_ver1 check_act $fw1_ver check_pri $fw1_ver check_alt $fw2_ver opachassisadmin -H "$chassis" -P $fw1 -a run upgrade check_act $fw1_ver check_pri $fw1_ver check_alt $fw2_ver } test2() { echo "/////////////////////////////////////////" >> test.log echo "pre-test setup - run $fw2" >> test.log set_fw_ver2 opachassisadmin -H "$chassis" -P $fw2 -a run upgrade echo "/////////////////////////////////////////" >> test.log echo "pre-test setup - push $fw1 to alt" >> test.log set_fw_ver1 opachassisadmin -H "$chassis" -P $fw1 -a push upgrade echo "/////////////////////////////////////////" >> test.log echo "firmware already on card and alternate/ not active" >> test.log echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "already on chassis, no need to push" >> test.log echo "now running $fw2 pri, $fw1 alt" >> test.log check_act $fw2_ver check_pri $fw2_ver check_alt $fw1_ver set_fw_ver1 opachassisadmin -H "$chassis" -P $fw1 upgrade echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "already on chassis, no need to push" >> test.log echo "now running $fw2 pri, $fw1 alt" >> test.log check_act $fw2_ver check_pri $fw2_ver check_alt $fw1_ver set_fw_ver1 opachassisadmin -H "$chassis" -P $fw1 -a push upgrade echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "already on chassis, but need to select and reboot" >> test.log echo "now running $fw2 pri, $fw1 alt" >> test.log check_act $fw2_ver check_pri $fw2_ver check_alt $fw1_ver set_fw_ver1 opachassisadmin -H "$chassis" -P $fw1 -a run upgrade echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "already on chassis, but need to select" >> test.log echo "now running $fw1 pri, $fw2 alt" >> test.log check_act $fw1_ver check_pri $fw1_ver check_alt $fw2_ver set_fw_ver2 opachassisadmin -H "$chassis" -P $fw2 -a select upgrade check_act $fw1_ver check_pri $fw2_ver check_alt $fw1_ver } test3() { echo "/////////////////////////////////////////" >> test.log echo "pre-test setup - run $fw1" >> test.log set_fw_ver1 opachassisadmin -H "$chassis" -P $fw1 -a run upgrade echo "/////////////////////////////////////////" >> test.log echo "pre-test setup - push $fw2 and select" >> test.log set_fw_ver2 opachassisadmin -H "$chassis" -P $fw2 -a select upgrade echo "/////////////////////////////////////////" >> test.log echo "firmware already on card and alternate but active" >> test.log echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "already on chassis, no need to push" >> test.log echo "now running $fw1 alt, $fw2 pri" >> test.log check_act $fw1_ver check_pri $fw2_ver check_alt $fw1_ver set_fw_ver1 opachassisadmin -H "$chassis" -P $fw1 -a push upgrade echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "already on chassis, no need to push" >> test.log echo "now running $fw1 alt, $fw2 pri" >> test.log check_act $fw1_ver check_pri $fw2_ver check_alt $fw1_ver set_fw_ver1 opachassisadmin -H "$chassis" -P $fw1 upgrade echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "already on chassis, but need to select" >> test.log echo "now running $fw1 alt, $fw2 pri" >> test.log check_act $fw1_ver check_pri $fw2_ver check_alt $fw1_ver set_fw_ver1 opachassisadmin -H "$chassis" -P $fw1 -a select upgrade echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "already on chassis, but need to select" >> test.log echo "now running $fw1 pri, $fw2 alt" >> test.log check_act $fw1_ver check_pri $fw1_ver check_alt $fw2_ver set_fw_ver2 opachassisadmin -H "$chassis" -P $fw2 -a select upgrade echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "already on chassis, but need to select and reboot" >> test.log echo "now running $fw1 alt, $fw2 pri" >> test.log check_act $fw1_ver check_pri $fw2_ver check_alt $fw1_ver set_fw_ver2 opachassisadmin -H "$chassis" -P $fw2 -a run upgrade echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "already on chassis, but need to select and reboot" >> test.log echo "now running $fw1 alt, $fw2 pri" >> test.log check_act $fw2_ver check_pri $fw2_ver check_alt $fw1_ver set_fw_ver1 opachassisadmin -H "$chassis" -P $fw1 -a run upgrade check_act $fw1_ver check_pri $fw1_ver check_alt $fw2_ver } test4() { echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "Wrong card type" >> test.log echo "now running $fw1 pri, $fw2 alt" >> test.log check_act $fw1_ver check_pri $fw1_ver check_alt $fw2_ver set_fw_verbad opachassisadmin -H "$chassis" -P $badfw -a run upgrade check_act $fw1_ver check_pri $fw1_ver check_alt $fw2_ver } test5() { echo "/////////////////////////////////////////" >> test.log echo "pre-test setup - run $fw1" >> test.log set_fw_ver1 opachassisadmin -H "$chassis" -P $fw1 -a run upgrade echo "/////////////////////////////////////////" >> test.log echo "pre-test setup - push $fw2" >> test.log set_fw_ver2 opachassisadmin -H "$chassis" -P $fw2 -a push upgrade echo "/////////////////////////////////////////" >> test.log echo "firmware not on card" >> test.log echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "need to push" >> test.log echo "now running $fw1 pri, $fw2 alt" >> test.log check_act $fw1_ver check_pri $fw1_ver check_alt $fw2_ver set_fw_ver3 opachassisadmin -H "$chassis" -P $fw3 -a push upgrade echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "need to push" >> test.log echo "now running $fw1 pri, $fw3 alt" >> test.log check_act $fw1_ver check_pri $fw1_ver check_alt $fw3_ver set_fw_ver2 opachassisadmin -H "$chassis" -P $fw2 upgrade echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "need to push and select" >> test.log echo "now running $fw1 pri, $fw2 alt" >> test.log check_act $fw1_ver check_pri $fw1_ver check_alt $fw2_ver set_fw_ver3 opachassisadmin -H "$chassis" -P $fw3 -a select upgrade echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "need to push and select" >> test.log echo "now running $fw1 alt, $fw3 pri" >> test.log check_act $fw1_ver check_pri $fw3_ver check_alt $fw1_ver set_fw_ver2 opachassisadmin -H "$chassis" -P $fw2 -a select upgrade echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "need to push" >> test.log echo "now running $fw1 alt, $fw2 pri" >> test.log check_act $fw1_ver check_pri $fw2_ver check_alt $fw1_ver set_fw_ver3 opachassisadmin -H "$chassis" -P $fw3 -a push upgrade echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "need to push and activate" >> test.log echo "now running $fw1 pri, $fw3 alt" >> test.log # TBD what to expect check_act $fw1_ver check_pri $fw3_ver check_alt $fw1_ver set_fw_ver2 opachassisadmin -H "$chassis" -P $fw2 -a run upgrade check_act $fw2_ver check_pri $fw2_ver check_alt $fw1_ver } test1m() { echo "/////////////////////////////////////////" >> test.log echo "pre-test setup - run $fw1 in $slota" >> test.log set_fw_ver1 opachassisadmin -H "$chassis:$slota" -P $fw1 -a run upgrade echo "pre-test setup - run $fw2 in $slotb" >> test.log set_fw_ver2 opachassisadmin -H "$chassis:$slotb" -P $fw2 -a run upgrade echo "/////////////////////////////////////////" >> test.log echo "pre-test setup - push $fw2 to alt in $slota" >> test.log set_fw_ver2 opachassisadmin -H "$chassis:$slota" -P $fw2 -a push upgrade echo "pre-test setup - push $fw1 to alt in $slotb" >> test.log set_fw_ver1 opachassisadmin -H "$chassis:$slotb" -P $fw1 -a push upgrade echo "/////////////////////////////////////////" >> test.log echo "firmware already on card and primary/active" >> test.log echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "already on chassis, don't select, no push ">> test.log echo "now $slota running $fw1 pri, $fw2 alt" >> test.log check_act $fw1_ver a check_pri $fw1_ver a check_alt $fw2_ver a echo "now $slotb running $fw2 pri, $fw1 alt" >> test.log check_act $fw2_ver b check_pri $fw2_ver b check_alt $fw1_ver b set_fw_ver1 opachassisadmin -H "$chassis" -P $fw1 upgrade echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "already on chassis, don't select, no push ">> test.log echo "now $slota running $fw1 pri, $fw2 alt" >> test.log check_act $fw1_ver a check_pri $fw1_ver a check_alt $fw2_ver a echo "now $slotb running $fw2 pri, $fw1 alt" >> test.log check_act $fw2_ver b check_pri $fw2_ver b check_alt $fw1_ver b set_fw_ver1 opachassisadmin -H "$chassis" -P $fw1 -a push upgrade echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "already on chassis, no need to select (on $slota, select $slotb)" >> test.log echo "now $slota running $fw1 pri, $fw2 alt" >> test.log check_act $fw1_ver a check_pri $fw1_ver a check_alt $fw2_ver a echo "now $slotb running $fw2 pri, $fw1 alt" >> test.log check_act $fw2_ver b check_pri $fw2_ver b check_alt $fw1_ver b set_fw_ver1 opachassisadmin -H "$chassis" -P $fw1 -a select upgrade echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "already on chassis, no need to reboot $slota, reboot $slotb" >> test.log echo "now $slota running $fw1 pri, $fw2 alt" >> test.log check_act $fw1_ver a check_pri $fw1_ver a check_alt $fw2_ver a echo "now $slotb running $fw2 alt, $fw1 pri" >> test.log check_act $fw2_ver b check_pri $fw1_ver b check_alt $fw2_ver b set_fw_ver1 opachassisadmin -H "$chassis" -P $fw1 -a run upgrade check_act $fw1_ver a check_pri $fw1_ver a check_alt $fw2_ver a check_act $fw1_ver b check_pri $fw1_ver b check_alt $fw2_ver b } test2m() { echo "/////////////////////////////////////////" >> test.log echo "pre-test setup - run $fw2 in $slota" >> test.log set_fw_ver2 opachassisadmin -H "$chassis:$slota" -P $fw2 -a run upgrade echo "pre-test setup - run $fw1 in $slotb" >> test.log set_fw_ver1 opachassisadmin -H "$chassis:$slotb" -P $fw1 -a run upgrade echo "/////////////////////////////////////////" >> test.log echo "pre-test setup - push $fw1 to alt in $slota" >> test.log set_fw_ver1 opachassisadmin -H "$chassis:$slota" -P $fw1 -a push upgrade echo "pre-test setup - push $fw2 to alt in $slotb" >> test.log set_fw_ver2 opachassisadmin -H "$chassis:$slotb" -P $fw2 -a push upgrade echo "/////////////////////////////////////////" >> test.log echo "firmware already on card and alternate/ not active" >> test.log echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "already on chassis, no need to push" >> test.log echo "now $slota running $fw2 pri, $fw1 alt" >> test.log check_act $fw2_ver a check_pri $fw2_ver a check_alt $fw1_ver a echo "now $slotb running $fw1 pri, $fw2 alt" >> test.log check_act $fw1_ver b check_pri $fw1_ver b check_alt $fw2_ver b set_fw_ver1 opachassisadmin -H "$chassis" -P $fw1 upgrade echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "already on chassis, no need to push" >> test.log echo "now $slota running $fw2 pri, $fw1 alt" >> test.log check_act $fw2_ver a check_pri $fw2_ver a check_alt $fw1_ver a echo "now $slotb running $fw1 pri, $fw2 alt" >> test.log check_act $fw1_ver b check_pri $fw1_ver b check_alt $fw2_ver b set_fw_ver1 opachassisadmin -H "$chassis" -P $fw1 -a push upgrade echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "already on chassis, but need to select and reboot ($slota only)" >> test.log echo "now $slota running $fw2 pri, $fw1 alt" >> test.log check_act $fw2_ver a check_pri $fw2_ver a check_alt $fw1_ver a echo "now $slotb running $fw1 pri, $fw2 alt" >> test.log check_act $fw1_ver b check_pri $fw1_ver b check_alt $fw2_ver b set_fw_ver1 opachassisadmin -H "$chassis" -P $fw1 -a run upgrade echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "already on chassis, but need to select" >> test.log echo "now $slota/$slotb running $fw1 pri, $fw2 alt" >> test.log check_act $fw1_ver a check_pri $fw1_ver a check_alt $fw2_ver a check_act $fw1_ver b check_pri $fw1_ver b check_alt $fw2_ver b set_fw_ver2 opachassisadmin -H "$chassis" -P $fw2 -a select upgrade check_act $fw1_ver a check_pri $fw2_ver a check_alt $fw1_ver a check_act $fw1_ver b check_pri $fw2_ver b check_alt $fw1_ver b } test3m() { echo "/////////////////////////////////////////" >> test.log echo "pre-test setup - run $fw1 in $slota" >> test.log set_fw_ver1 opachassisadmin -H "$chassis:$slota" -P $fw1 -a run upgrade echo "pre-test setup - run $fw2 in $slotb" >> test.log set_fw_ver2 opachassisadmin -H "$chassis:$slotb" -P $fw2 -a run upgrade echo "/////////////////////////////////////////" >> test.log echo "pre-test setup - push $fw2 in $slota and select" >> test.log set_fw_ver2 opachassisadmin -H "$chassis:$slota" -P $fw2 -a select upgrade echo "pre-test setup - push $fw1 in $slota and select" >> test.log set_fw_ver1 opachassisadmin -H "$chassis:$slotb" -P $fw1 -a select upgrade echo "/////////////////////////////////////////" >> test.log echo "firmware already on card and alternate but active" >> test.log echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "already on chassis, no need to push" >> test.log echo "now $slota running $fw1 alt, $fw2 pri" >> test.log check_act $fw1_ver a check_pri $fw2_ver a check_alt $fw1_ver a echo "now $slotb running $fw2 alt, $fw1 pri" >> test.log check_act $fw2_ver b check_pri $fw1_ver b check_alt $fw2_ver b set_fw_ver1 opachassisadmin -H "$chassis" -P $fw1 -a push upgrade echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "already on chassis, no need to push" >> test.log echo "now $slota running $fw1 alt, $fw2 pri" >> test.log check_act $fw1_ver a check_pri $fw2_ver a check_alt $fw1_ver a echo "now $slotb running $fw2 alt, $fw1 pri" >> test.log check_act $fw2_ver b check_pri $fw1_ver b check_alt $fw2_ver b set_fw_ver1 opachassisadmin -H "$chassis" -P $fw1 upgrade echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "already on chassis, but need to select" >> test.log echo "now $slota running $fw1 alt, $fw2 pri" >> test.log check_act $fw1_ver a check_pri $fw2_ver a check_alt $fw1_ver a echo "now $slotb running $fw2 alt, $fw1 pri" >> test.log check_act $fw2_ver b check_pri $fw1_ver b check_alt $fw2_ver b set_fw_ver1 opachassisadmin -H "$chassis" -P $fw1 -a select upgrade echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "already on chassis, but need to select" >> test.log echo "now $slota running $fw1 pri, $fw2 alt" >> test.log check_act $fw1_ver a check_pri $fw1_ver a check_alt $fw2_ver a echo "now $slotb running $fw2 alt, $fw2 pri" >> test.log check_act $fw2_ver b check_pri $fw1_ver b check_alt $fw2_ver b set_fw_ver2 opachassisadmin -H "$chassis" -P $fw2 -a select upgrade echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "already on chassis, but need to select and reboot" >> test.log echo "now $slota running $fw1 alt, $fw2 pri" >> test.log check_act $fw1_ver a check_pri $fw2_ver a check_alt $fw1_ver a echo "now $slotb running $fw2 pri, $fw2 alt" >> test.log check_act $fw2_ver b check_pri $fw2_ver b check_alt $fw1_ver b set_fw_ver2 opachassisadmin -H "$chassis" -P $fw2 -a run upgrade echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "already on chassis, but need to select and reboot" >> test.log echo "now $slota/$slotb running $fw1 alt, $fw2 pri" >> test.log check_act $fw2_ver a check_pri $fw2_ver a check_alt $fw1_ver a check_act $fw2_ver b check_pri $fw2_ver b check_alt $fw1_ver b set_fw_ver1 opachassisadmin -H "$chassis" -P $fw1 -a run upgrade check_act $fw1_ver a check_pri $fw1_ver a check_alt $fw2_ver a check_act $fw1_ver b check_pri $fw1_ver b check_alt $fw2_ver b } test4m() { echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "Wrong card type" >> test.log echo "now running $fw1 pri, $fw2 alt" >> test.log check_act $fw1_ver a check_pri $fw1_ver a check_alt $fw2_ver a check_act $fw1_ver b check_pri $fw1_ver b check_alt $fw2_ver b set_fw_verbad opachassisadmin -H "$chassis" -P $badfw -a run upgrade check_act $fw1_ver a check_pri $fw1_ver a check_alt $fw2_ver a check_act $fw1_ver b check_pri $fw1_ver b check_alt $fw2_ver b } test5m() { echo "/////////////////////////////////////////" >> test.log echo "pre-test setup - run $fw1 on $slota" >> test.log set_fw_ver1 opachassisadmin -H "$chassis:$slota" -P $fw1 -a run upgrade echo "pre-test setup - run $fw2 on $slotb" >> test.log set_fw_ver2 opachassisadmin -H "$chassis:$slotb" -P $fw2 -a run upgrade echo "/////////////////////////////////////////" >> test.log echo "pre-test setup - push $fw2 on $slota" >> test.log set_fw_ver2 opachassisadmin -H "$chassis:$slota" -P $fw2 -a push upgrade echo "pre-test setup - push $fw1 on $slotb" >> test.log set_fw_ver1 opachassisadmin -H "$chassis:$slotb" -P $fw1 -a push upgrade echo "/////////////////////////////////////////" >> test.log echo "firmware not on card" >> test.log echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "need to push" >> test.log echo "now $slota running $fw1 pri, $fw2 alt" >> test.log check_act $fw1_ver a check_pri $fw1_ver a check_alt $fw2_ver a echo "now $slotb running $fw2 pri, $fw1 alt" >> test.log check_act $fw2_ver b check_pri $fw2_ver b check_alt $fw1_ver b set_fw_ver3 opachassisadmin -H "$chassis" -P $fw3 -a push upgrade echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "need to push" >> test.log echo "now $slota running $fw1 pri, $fw3 alt" >> test.log check_act $fw1_ver a check_pri $fw1_ver a check_alt $fw3_ver a echo "now $slotb running $fw2 pri, $fw3 alt" >> test.log check_act $fw2_ver b check_pri $fw2_ver b check_alt $fw3_ver b set_fw_ver2 opachassisadmin -H "$chassis" -P $fw2 upgrade echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "need to push and select" >> test.log echo "now $slota running $fw1 pri, $fw2 alt" >> test.log check_act $fw1_ver a check_pri $fw1_ver a check_alt $fw2_ver a echo "now $slota running $fw2 pri, $fw1 alt" >> test.log check_act $fw2_ver b check_pri $fw2_ver b check_alt $fw3_ver b set_fw_ver3 opachassisadmin -H "$chassis" -P $fw3 -a select upgrade echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "need to push and select" >> test.log echo "now $slota running $fw1 alt, $fw3 pri" >> test.log check_act $fw1_ver a check_pri $fw3_ver a check_alt $fw1_ver a echo "now $slotb running $fw2 alt, $fw3 pri" >> test.log check_act $fw2_ver b check_pri $fw3_ver b check_alt $fw2_ver b set_fw_ver2 opachassisadmin -H "$chassis" -P $fw2 -a select upgrade echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "need to push" >> test.log echo "now $slota running $fw1 alt, $fw2 pri" >> test.log check_act $fw1_ver a check_pri $fw2_ver a check_alt $fw1_ver a echo "now $slotb running $fw2 pri, $fw1 alt" >> test.log check_act $fw2_ver b check_pri $fw2_ver b check_alt $fw3_ver b set_fw_ver3 opachassisadmin -H "$chassis" -P $fw3 -a push upgrade echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> test.log echo "need to push and activate" >> test.log echo "now $slota running $fw1 pri, $fw3 alt" >> test.log # TBD what to expect check_act $fw1_ver a check_pri $fw3_ver a check_alt $fw1_ver a echo "now $slotb running $fw2 pri, $fw3 alt" >> test.log # TBD what to expect check_act $fw2_ver b check_pri $fw2_ver b check_alt $fw3_ver b set_fw_ver2 opachassisadmin -H "$chassis" -P $fw2 -a run upgrade check_act $fw2_ver a check_pri $fw2_ver a check_alt $fw1_ver a check_act $fw2_ver b check_pri $fw2_ver b check_alt $fw3_ver b } # this makes log a little easier to read, we only do 1 chassis per test anyway export FF_MAX_PARALLEL=0 # these tests can be used for single slot chassis (9024, I2K, I3K) # or to test 1 card type in a multi-slot chassis # Single slot chassis tests #======================================================== #firmware files to push, 3 similar versions with different numbers fw1=embfw/3_1_1_0_10S1/InfinIO9000.t3.pkg fw2=embfw/3_1_1_0_10S2/InfinIO9000.t3.pkg fw3=embfw/3_1_1_0_10S3/InfinIO9000.t3.pkg fw1_ver=3.1.1.0.10S1 fw2_ver=3.1.1.0.10S2 fw3_ver=3.1.1.0.10S3 badfw=embfw/3_1_0_0_29/VEx.pcix.pkg # simple switch chassis=i9k112 card_type="InfinIO9000.t3" slot=0 test1 test2 test3 test4 test5 # simple switch, specific slot chassis="i9k112:101" card_type="InfinIO9000.t3" slot=0 test1 test2 test3 test4 test5 # simple switch, management slot chassis="i9k112:0" card_type="InfinIO9000.t3" slot=0 test1 test2 test3 test4 test5 # multi-slot chassis tests #======================================================== #firmware files to push, 3 similar versions with different numbers fw1=embfw/3_1_1_0_10S1/VEx.pcix.pkg fw2=embfw/3_1_1_0_10S2/VEx.pcix.pkg fw3=embfw/3_1_1_0_10S3/VEx.pcix.pkg fw1_ver=3.1.1.0.10S1 fw2_ver=3.1.1.0.10S2 fw3_ver=3.1.1.0.10S3 badfw=embfw/3_1_0_0_29/InfinIO2000.mc1125.pkg # pick 2 slots which have the same card type # VEx cards in hobbiton chassis=hobbiton slota=1 slotb=3 card_type="VEx.pcix" # these tests are strictly for multi-slot chassis and test mixed # firmware versions prior to operation test1m test2m test3m test4m test5m