Skip to content

Commit

Permalink
t: test hpe cray supercomputing ex chassis device
Browse files Browse the repository at this point in the history
Problem: There is no testing for the new HPE Cray Supercomputing
EX Chassis device file.

Add new tests in new t0037-cray-ex.t test file.
  • Loading branch information
chu11 committed Apr 11, 2024
1 parent 8f19b0d commit de6f32b
Show file tree
Hide file tree
Showing 2 changed files with 302 additions and 1 deletion.
3 changes: 2 additions & 1 deletion t/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ TESTSCRIPTS = \
t0033-valgrind.t \
t0034-redfishpower.t \
t0035-power-result.t \
t0036-diagnostics.t
t0036-diagnostics.t \
t0037-cray-ex.t

# make check runs these TAP tests directly (both scripts and programs)
TESTS = \
Expand Down
300 changes: 300 additions & 0 deletions t/t0037-cray-ex.t
Original file line number Diff line number Diff line change
@@ -0,0 +1,300 @@
#!/bin/sh

test_description='Test Cray EX chassis with redfish'

. `dirname $0`/sharness.sh

powermand=$SHARNESS_BUILD_DIRECTORY/src/powerman/powermand
powerman=$SHARNESS_BUILD_DIRECTORY/src/powerman/powerman
redfishdir=$SHARNESS_BUILD_DIRECTORY/src/redfishpower
devicesdir=$SHARNESS_TEST_SRCDIR/../etc/devices

# Use port = 11000 + test number
# That way there won't be port conflicts with make -j
testaddr=localhost:11029


makeoutput() {
printf "on: %s\n" $1
printf "off: %s\n" $2
printf "unknown: %s\n" $3
}

#
# redfishpower hpe cray supercomputing ex chassis basic test
#

test_expect_success 'create powerman.conf for chassis w/ 16 redfish nodes (crayex)' '
cat >powerman_cray_ex.conf <<-EOT
listen "$testaddr"
include "$devicesdir/redfishpower-cray-ex.dev"
device "d0" "cray-ex" "$redfishdir/redfishpower -h cmm0,t[0-15] --test-mode |&"
node "cmm0,perif[0-7],blade[0-7],t[0-15]" "d0"
EOT
'
test_expect_success 'start powerman daemon and wait for it to start (crayex)' '
$powermand -Y -c powerman_cray_ex.conf &
echo $! >powermand.pid &&
$powerman --retry-connect=100 --server-host=$testaddr -d
'
test_expect_success 'powerman -q shows all off' '
$powerman -h $testaddr -q >test_crayex_query1.out &&
makeoutput "" "blade[0-7],cmm0,perif[0-7],t[0-15]" "" >test_crayex_query1.exp &&
test_cmp test_crayex_query1.exp test_crayex_query1.out
'
# powering on descendants with cmm off, nothing turns on
test_expect_success 'powerman -1 blade[0-7] doesnt work' '
test_must_fail $powerman -h $testaddr -1 blade[0-7] >test_crayex_on1.out 2>test_crayex_on1.err &&
echo Command completed with errors >>test_crayex_on1.exp &&
test_cmp test_crayex_on1.exp test_crayex_on1.out &&
count=`grep ^blade test_crayex_on1.err | wc -l` &&
test $count -eq 8 &&
count=`grep "cannot perform on, dependency off" test_crayex_on1.err | wc -l` &&
test $count -eq 8
'
test_expect_success 'powerman -1 perif[0-7] doesnt work' '
test_must_fail $powerman -h $testaddr -1 perif[0-7] >test_crayex_on2.out 2>test_crayex_on2.err &&
echo Command completed with errors >>test_crayex_on2.exp &&
test_cmp test_crayex_on2.exp test_crayex_on2.out &&
count=`grep ^perif test_crayex_on2.err | wc -l` &&
test $count -eq 8 &&
count=`grep "cannot perform on, dependency off" test_crayex_on2.err | wc -l` &&
test $count -eq 8
'
test_expect_success 'powerman -1 t[0-15] doesnt work' '
test_must_fail $powerman -h $testaddr -1 t[0-15] >test_crayex_on3.out 2>test_crayex_on3.err &&
echo Command completed with errors >>test_crayex_on3.exp &&
test_cmp test_crayex_on3.exp test_crayex_on3.out &&
count=`grep ^t test_crayex_on3.err | wc -l` &&
test $count -eq 16 &&
count=`grep "cannot perform on, dependency off" test_crayex_on3.err | wc -l` &&
test $count -eq 16
'
test_expect_success 'powerman -q shows all off' '
$powerman -h $testaddr -q >test_crayex_query2.out &&
makeoutput "" "blade[0-7],cmm0,perif[0-7],t[0-15]" "" >test_crayex_query2.exp &&
test_cmp test_crayex_query2.exp test_crayex_query2.out
'
# turn on cmm works
test_expect_success 'powerman -1 cmm0 completes' '
$powerman -h $testaddr -1 cmm0 >test_crayex_on4.out &&
echo Command completed successfully >test_crayex_on4.exp &&
test_cmp test_crayex_on4.exp test_crayex_on4.out
'
test_expect_success 'powerman -q shows cmm0 on' '
$powerman -h $testaddr -q >test_crayex_query3.out &&
makeoutput "cmm0" "blade[0-7],perif[0-7],t[0-15]" "" >test_crayex_query3.exp &&
test_cmp test_crayex_query3.exp test_crayex_query3.out
'
# turn on children of blades does not work
test_expect_success 'powerman -1 t[0-15] doesnt work' '
test_must_fail $powerman -h $testaddr -1 t[0-15] >test_crayex_on5.out 2>test_crayex_on5.err &&
echo Command completed with errors >>test_crayex_on5.exp &&
test_cmp test_crayex_on5.exp test_crayex_on5.out &&
count=`grep ^t test_crayex_on5.err | wc -l` &&
test $count -eq 16 &&
count=`grep "cannot perform on, dependency off" test_crayex_on5.err | wc -l` &&
test $count -eq 16
'
test_expect_success 'powerman -q shows cmm0 on' '
$powerman -h $testaddr -q >test_crayex_query4.out &&
makeoutput "cmm0" "blade[0-7],perif[0-7],t[0-15]" "" >test_crayex_query4.exp &&
test_cmp test_crayex_query4.exp test_crayex_query4.out
'
# turn on some blades, allows some nodes to be turned on
test_expect_success 'powerman -1 blade[4-7] completes' '
$powerman -h $testaddr -1 blade[4-7] >test_crayex_on6.out &&
echo Command completed successfully >test_crayex_on6.exp &&
test_cmp test_crayex_on6.exp test_crayex_on6.out
'
test_expect_success 'powerman -1 t[0-15] doesnt work, some succeed' '
test_must_fail $powerman -h $testaddr -1 t[0-15] >test_crayex_on7.out 2>test_crayex_on7.err &&
echo Command completed with errors >>test_crayex_on7.exp &&
test_cmp test_crayex_on7.exp test_crayex_on7.out &&
count=`grep ^t test_crayex_on7.err | wc -l` &&
test $count -eq 8 &&
count=`grep "cannot perform on, dependency off" test_crayex_on7.err | wc -l` &&
test $count -eq 8
'
test_expect_success 'powerman -q shows blade[4-7],cmm0,t[8-15] on' '
$powerman -h $testaddr -q >test_crayex_query5.out &&
makeoutput "blade[4-7],cmm0,t[8-15]" "blade[0-3],perif[0-7],t[0-7]" "" >test_crayex_query5.exp &&
test_cmp test_crayex_query5.exp test_crayex_query5.out
'
# turn on blades and perif and then nodes
test_expect_success 'powerman -1 blade[0-3],perif[0-7] completes' '
$powerman -h $testaddr -1 blade[0-3],perif[0-7] >test_crayex_on8.out &&
echo Command completed successfully >test_crayex_on8.exp &&
test_cmp test_crayex_on8.exp test_crayex_on8.out
'
test_expect_success 'powerman -q shows blade[0-7],cmm0,perif[0-7] on' '
$powerman -h $testaddr -q >test_crayex_query6.out &&
makeoutput "blade[0-7],cmm0,perif[0-7],t[8-15]" "t[0-7]" "" >test_crayex_query6.exp &&
test_cmp test_crayex_query6.exp test_crayex_query6.out
'
test_expect_success 'powerman -1 t[0-15] completes' '
$powerman -h $testaddr -1 t[0-15] >test_crayex_on6.out &&
echo Command completed successfully >test_crayex_on6.exp &&
test_cmp test_crayex_on6.exp test_crayex_on6.out
'
test_expect_success 'powerman -q shows blade[0-7],cmm0,t[0-15] on' '
$powerman -h $testaddr -q >test_crayex_query7.out &&
makeoutput "blade[0-7],cmm0,perif[0-7],t[0-15]" "" "" >test_crayex_query7.exp &&
test_cmp test_crayex_query7.exp test_crayex_query7.out
'
# turn off leaves works
test_expect_success 'powerman -0 t[8-15] completes' '
$powerman -h $testaddr -0 t[8-15] >test_crayex_off1.out &&
echo Command completed successfully >test_crayex_off1.exp &&
test_cmp test_crayex_off1.exp test_crayex_off1.out
'
test_expect_success 'powerman -q shows blade[0-7],cmm0,t[0-7] on' '
$powerman -h $testaddr -q >test_crayex_query8.out &&
makeoutput "blade[0-7],cmm0,perif[0-7],t[0-7]" "t[8-15]" "" >test_crayex_query8.exp &&
test_cmp test_crayex_query8.exp test_crayex_query8.out
'
# turn off level 2 perif & blades, remaining leaves are now off
test_expect_success 'powerman -0 blade[0-7],perif[0-7] completes' '
$powerman -h $testaddr -0 blade[0-7],perif[0-7] >test_crayex_off2.out &&
echo Command completed successfully >test_crayex_off2.exp &&
test_cmp test_crayex_off2.exp test_crayex_off2.out
'
test_expect_success 'powerman -q shows cmm0 on' '
$powerman -h $testaddr -q >test_crayex_query9.out &&
makeoutput "cmm0" "blade[0-7],perif[0-7],t[0-15]" "" >test_crayex_query9.exp &&
test_cmp test_crayex_query9.exp test_crayex_query9.out
'
# turn off cmm works
test_expect_success 'powerman -0 cmm0 completes' '
$powerman -h $testaddr -0 cmm0 >test_crayex_off3.out &&
echo Command completed successfully >test_crayex_off3.exp &&
test_cmp test_crayex_off3.exp test_crayex_off3.out
'
test_expect_success 'powerman -q shows all off' '
$powerman -h $testaddr -q >test_crayex_query10.out &&
makeoutput "" "blade[0-7],cmm0,perif[0-7],t[0-15]" "" >test_crayex_query10.exp &&
test_cmp test_crayex_query10.exp test_crayex_query10.out
'
# turn on everything doesn't work
# echo blade[0-7],cmm0,perif[0-7],t[0-15]: >test_crayex_on9.exp &&
test_expect_success 'powerman -1 blade[0-7],cmm0,perif[0-7],t[0-15] doesnt work' '
test_must_fail $powerman -h $testaddr -1 blade[0-7],cmm0,perif[0-7],t[0-15] >test_crayex_on9.out 2>test_crayex_on9.err &&
echo Command completed with errors >>test_crayex_on9.exp &&
test_cmp test_crayex_on9.exp test_crayex_on9.out &&
echo cmm0: cannot turn on parent and child >>test_crayex_on9.err_exp
count=`grep ^cmm0 test_crayex_on9.err | wc -l` &&
test $count -eq 1 &&
count=`grep ^blade test_crayex_on9.err | wc -l` &&
test $count -eq 8 &&
count=`grep ^t test_crayex_on9.err | wc -l` &&
test $count -eq 16 &&
count=`grep ^perif test_crayex_on9.err | wc -l` &&
test $count -eq 8 &&
count=`grep "cannot turn on parent and child" test_crayex_on9.err | wc -l` &&
test $count -eq 33
'
test_expect_success 'powerman -q shows all off' '
$powerman -h $testaddr -q >test_crayex_query11.out &&
makeoutput "" "blade[0-7],cmm0,perif[0-7],t[0-15]" "" >test_crayex_query11.exp &&
test_cmp test_crayex_query11.exp test_crayex_query11.out
'
# turn everything on
test_expect_success 'powerman turn on everything' '
$powerman -h $testaddr -1 cmm0 >test_crayex_on9A.out &&
echo Command completed successfully >test_crayex_on9A.exp &&
test_cmp test_crayex_on9A.exp test_crayex_on9A.out &&
$powerman -h $testaddr -1 blade[0-7],perif[0-7] >test_crayex_on9B.out &&
echo Command completed successfully >test_crayex_on9B.exp &&
test_cmp test_crayex_on9B.exp test_crayex_on9B.out &&
$powerman -h $testaddr -1 t[0-15] >test_crayex_on9C.out &&
echo Command completed successfully >test_crayex_on9C.exp &&
test_cmp test_crayex_on9C.exp test_crayex_on9C.out
'
test_expect_success 'powerman -q shows all on' '
$powerman -h $testaddr -q >test_crayex_query12.out &&
makeoutput "blade[0-7],cmm0,perif[0-7],t[0-15]" "" "" >test_crayex_query12.exp &&
test_cmp test_crayex_query12.exp test_crayex_query12.out
'
# turn off everything works
test_expect_success 'powerman -0 blade[0-3],cmm0,perif[0-7],t[0-15] completes' '
$powerman -h $testaddr -0 blade[0-3],cmm0,perif[0-7],t[0-15] >test_crayex_off4.out &&
echo Command completed successfully >test_crayex_off4.exp &&
test_cmp test_crayex_off4.exp test_crayex_off4.out
'
test_expect_success 'powerman -q shows all off' '
$powerman -h $testaddr -q >test_crayex_query13.out &&
makeoutput "" "blade[0-7],cmm0,perif[0-7],t[0-15]" "" >test_crayex_query13.exp &&
test_cmp test_crayex_query13.exp test_crayex_query13.out
'
test_expect_success 'stop powerman daemon (crayex)' '
kill -15 $(cat powermand.pid) &&
wait
'

#
# redfishpower hpe cray supercomputing ex chassis test - some unpopulated
#
# assume perif[4-7] and blade[4-7] do not exist
# as a result t[8-15] do not exist
#

test_expect_success 'create powerman.conf for chassis w/ 16 redfish nodes (crayexU)' '
cat >powerman_cray_ex_U.conf <<-EOT
listen "$testaddr"
include "$devicesdir/redfishpower-cray-ex.dev"
device "d0" "cray-ex" "$redfishdir/redfishpower -h cmm0,t[0-7],unused[0-7] --test-mode |&"
node "cmm0,perif[0-3],blade[0-3],t[0-7]" "d0" "Enclosure,Perif[0-3],Blade[0-3],Node[0-7]"
EOT
'
test_expect_success 'start powerman daemon and wait for it to start (crayexU)' '
$powermand -Y -c powerman_cray_ex_U.conf &
echo $! >powermand.pid &&
$powerman --retry-connect=100 --server-host=$testaddr -d
'
test_expect_success 'powerman -q shows all off' '
$powerman -h $testaddr -q >test_crayexU_query1.out &&
makeoutput "" "blade[0-3],cmm0,perif[0-3],t[0-7]" "" >test_crayexU_query1.exp &&
test_cmp test_crayexU_query1.exp test_crayexU_query1.out
'
# turn on undefined stuff leads to errors
test_expect_success 'powerman fails on unpopulated targets' '
test_must_fail $powerman -h $testaddr -1 blade4 &&
test_must_fail $powerman -h $testaddr -1 perif5 &&
test_must_fail $powerman -h $testaddr -1 t8
'
# turn on everything works
test_expect_success 'powerman turn on everything' '
$powerman -h $testaddr -1 cmm0 >test_crayexU_on9A.out &&
echo Command completed successfully >test_crayexU_on9A.exp &&
test_cmp test_crayexU_on9A.exp test_crayexU_on9A.out &&
$powerman -h $testaddr -1 blade[0-3],perif[0-3] >test_crayexU_on9B.out &&
echo Command completed successfully >test_crayexU_on9B.exp &&
test_cmp test_crayexU_on9B.exp test_crayexU_on9B.out &&
$powerman -h $testaddr -1 t[0-7] >test_crayexU_on9C.out &&
echo Command completed successfully >test_crayexU_on9C.exp &&
test_cmp test_crayexU_on9C.exp test_crayexU_on9C.out
'
test_expect_success 'powerman -q shows all on' '
$powerman -h $testaddr -q >test_crayexU_query2.out &&
makeoutput "blade[0-3],cmm0,perif[0-3],t[0-7]" "" "" >test_crayexU_query2.exp &&
test_cmp test_crayexU_query2.exp test_crayexU_query2.out
'
# turn off everything works
test_expect_success 'powerman -0 blade[0-3],cmm0,perif[0-3],t[0-7] completes' '
$powerman -h $testaddr -0 blade[0-3],cmm0,perif[0-3],t[0-7] >test_crayexU_off1.out &&
echo Command completed successfully >test_crayexU_off1.exp &&
test_cmp test_crayexU_off1.exp test_crayexU_off1.out
'
test_expect_success 'powerman -q shows all off' '
$powerman -h $testaddr -q >test_crayexU_query3.out &&
makeoutput "" "blade[0-3],cmm0,perif[0-3],t[0-7]" "" >test_crayexU_query3.exp &&
test_cmp test_crayexU_query3.exp test_crayexU_query3.out
'
test_expect_success 'stop powerman daemon (crayexU)' '
kill -15 $(cat powermand.pid) &&
wait
'

test_done

# vi: set ft=sh

0 comments on commit de6f32b

Please sign in to comment.