#!/bin/rc# # Pretend to mimic the BG/P setup# echo '== Test gangfs across a simulated BlueGene/P node structure ==' # fake the IO node's IPIO=128.0.1IP=11.$IO ## Parameters#if(~ $#* 0 1) DEBUG=''if not DEBUG=$2 #if(~ $#* 1) {# DEBUG=''#}#if not {# DEBUG=$2#}echo 'DEBUG='$DEBUG if(~ $#O 0) O=8 #TESTDIR=.test/pbgTESTDIR=/tmp/testbed/pbg GANGLOG=$TESTDIR'/gangfs'-$IP'.log'EXECLOG=$TESTDIR'/exec2fs'-$IP'.log'MPIPELOG=$TESTDIR'/mpipefs'-$IP'.log'ERRORLOG=$TESTDIR'/error.log' #G_MNTPATH=/n/$IP/procG_MNTPATH=/n/io/proc #CMD='/bin/date'CMD='../8.poke -L '$TESTDIR # setup ##NUM=64 # succeds on 9vx with extended memory and procs#NUM=75 # succeds on 9vx with extended memory and procs#NUM=80 # fails # 16 should always workNUM=$1 TIMINGTST=$TESTDIR^'/time_'^$NUM^'.dat' I_MAX=1J_MAX=1K_MAX=4 fn enum_tests { TESTNUM=`{awk 'BEGIN { for (i = 1; i <= '$1'; i++) printf "%d ", i exit }'} #`# shut up the code coloring bug...} fn enum_srv { SRVNUM=`{awk 'BEGIN { for (i=0; i<'$I_MAX'; i++) for (j=0; j<'$J_MAX'; j++) for (k=1; k<='$K_MAX'; k++) printf "%d.%d.%d ", i, j, k exit }'} #`# shut up the code coloring bug...} ## Setup a testdirp#fn testdir { echo 'TESTDIR='$TESTDIR mkdir -p $TESTDIR} fn myexec { mypid=`{cat} #` echo -n 'RES: ' >> $TIMINGTST ../$O.poke -N >> $TIMINGTST echo res $NUM>>[2] $ERRORLOG echo -n 'EXEC: ' >> $TIMINGTST ../$O.poke -N >> $TIMINGTST echo exec $CMD>>[2] $ERRORLOG echo -n 'AGG: ' >> $TIMINGTST ../$O.poke -N >> $TIMINGTST cat $G_MNTPATH/g$mypid/stdout > $TESTDIR/test1 >>[2] $ERRORLOG echo -n 'TERM: ' >> $TIMINGTST ../$O.poke -N >> $TIMINGTST} fn basic { echo -n 'Basic Test for NUM='$NUM' procs....' # initialize files echo > $TESTDIR/test1 # execute test myexec <>$G_MNTPATH/gclone >[1=0] # verify results -- date returns time time in seconds, so # simply varify that the number of procs returned are the same # as those requested. LEN=`{wc -l $TESTDIR/test1 | sed 's% *[a-zA-Z0-9/.]*$%%'} #` echo -n ' (LEN='$LEN') ' if(! ~ $LEN $NUM) { echo FAILED! exit 'stdout: test failed' } echo Success! # cleanup #rm -rf $TESTDIR/*} # Setup#rfork #cleanuprm -f $TESTDIR'/error.log' rm -f $TESTDIR'/gangfs'* $MPIPELOG $TESTDIR'/mpipefs'* $TESTDIR'/execfs'* testdir enum_srv ######################################## echo -n 'BEGIN: ' > $TIMINGTST../$O.poke -N >> $TIMINGTST # fake the BG/P profile (1 I/O node and 4 CPU nodes)echo '############ starting next '$IP' ############' >>[2] $GANGLOGcpunode=0 treeip=$IO profile.pbg $DEBUG mount -cb /srv/io /n/io # generate tje fake CPU nodes and moutn themfor(i in $SRVNUM){ echo '############ starting next '11.$i' ############' >>[2] $GANGLOG cpunode=1 treeip=$i profile.pbg $DEBUG} ######################################## # Testsbasic echo -n 'DONE: ' >> $TIMINGTST../$O.poke -N >> $TIMINGTST SCALETST=pbg_scalemkdir -p $SCALETSTcp $TIMINGTST $SCALETST # Cleanup#rm -rf $TESTDIR#cleanup
#!/bin/rc
#
# Pretend to mimic the BG/P setup
#
echo '== Test gangfs across a simulated BlueGene/P node structure =='
# fake the IO node's IP
IO=128.0.1
IP=11.$IO
#
# Parameters
#
if(~ $#* 0 1) DEBUG=''
if not DEBUG=$2
#if(~ $#* 1) {
# DEBUG=''
#}
#if not {
# DEBUG=$2
#}
echo 'DEBUG='$DEBUG
if(~ $#O 0) O=8
#TESTDIR=.test/pbg
TESTDIR=/tmp/testbed/pbg
GANGLOG=$TESTDIR'/gangfs'-$IP'.log'
EXECLOG=$TESTDIR'/exec2fs'-$IP'.log'
MPIPELOG=$TESTDIR'/mpipefs'-$IP'.log'
ERRORLOG=$TESTDIR'/error.log'
#G_MNTPATH=/n/$IP/proc
G_MNTPATH=/n/io/proc
#CMD='/bin/date'
CMD='../8.poke -L '$TESTDIR
# setup
#
#NUM=64 # succeds on 9vx with extended memory and procs
#NUM=75 # succeds on 9vx with extended memory and procs
#NUM=80 # fails
# 16 should always work
NUM=$1
TIMINGTST=$TESTDIR^'/time_'^$NUM^'.dat'
I_MAX=1
J_MAX=1
K_MAX=4
fn enum_tests {
TESTNUM=`{awk 'BEGIN {
for (i = 1; i <= '$1'; i++) printf "%d ", i
exit }'}
#`# shut up the code coloring bug...
}
fn enum_srv {
SRVNUM=`{awk 'BEGIN {
for (i=0; i<'$I_MAX'; i++)
for (j=0; j<'$J_MAX'; j++)
for (k=1; k<='$K_MAX'; k++)
printf "%d.%d.%d ", i, j, k
exit }'}
#`# shut up the code coloring bug...
}
#
# Setup a testdirp
#
fn testdir {
echo 'TESTDIR='$TESTDIR
mkdir -p $TESTDIR
}
fn myexec {
mypid=`{cat} #`
echo -n 'RES: ' >> $TIMINGTST
../$O.poke -N >> $TIMINGTST
echo res $NUM>>[2] $ERRORLOG
echo -n 'EXEC: ' >> $TIMINGTST
../$O.poke -N >> $TIMINGTST
echo exec $CMD>>[2] $ERRORLOG
echo -n 'AGG: ' >> $TIMINGTST
../$O.poke -N >> $TIMINGTST
cat $G_MNTPATH/g$mypid/stdout > $TESTDIR/test1 >>[2] $ERRORLOG
echo -n 'TERM: ' >> $TIMINGTST
../$O.poke -N >> $TIMINGTST
}
fn basic {
echo -n 'Basic Test for NUM='$NUM' procs....'
# initialize files
echo > $TESTDIR/test1
# execute test
myexec <>$G_MNTPATH/gclone >[1=0]
# verify results -- date returns time time in seconds, so
# simply varify that the number of procs returned are the same
# as those requested.
LEN=`{wc -l $TESTDIR/test1 | sed 's% *[a-zA-Z0-9/.]*$%%'} #`
echo -n ' (LEN='$LEN') '
if(! ~ $LEN $NUM) {
echo FAILED!
exit 'stdout: test failed'
}
echo Success!
# cleanup
#rm -rf $TESTDIR/*
}
# Setup
#rfork
#cleanup
rm -f $TESTDIR'/error.log'
rm -f $TESTDIR'/gangfs'* $MPIPELOG $TESTDIR'/mpipefs'* $TESTDIR'/execfs'*
testdir
enum_srv
########################################
echo -n 'BEGIN: ' > $TIMINGTST
../$O.poke -N >> $TIMINGTST
# fake the BG/P profile (1 I/O node and 4 CPU nodes)
echo '############ starting next '$IP' ############' >>[2] $GANGLOG
cpunode=0 treeip=$IO profile.pbg $DEBUG
mount -cb /srv/io /n/io
# generate tje fake CPU nodes and moutn them
for(i in $SRVNUM){
echo '############ starting next '11.$i' ############' >>[2] $GANGLOG
cpunode=1 treeip=$i profile.pbg $DEBUG
}
########################################
# Tests
basic
echo -n 'DONE: ' >> $TIMINGTST
../$O.poke -N >> $TIMINGTST
SCALETST=pbg_scale
mkdir -p $SCALETST
cp $TIMINGTST $SCALETST
# Cleanup
#rm -rf $TESTDIR
#cleanup