From 7a7c187e3243d7517d8effffbcb8d9320169f6e2 Mon Sep 17 00:00:00 2001 From: junxiawang Date: Wed, 13 Jul 2016 10:33:27 -0400 Subject: [PATCH] modify genesis test case --- xCAT-test/autotest/testcase/genesis/cases0 | 46 +++-- .../autotest/testcase/genesis/genesistest.pl | 185 ++++++++++++++++++ 2 files changed, 211 insertions(+), 20 deletions(-) create mode 100755 xCAT-test/autotest/testcase/genesis/genesistest.pl diff --git a/xCAT-test/autotest/testcase/genesis/cases0 b/xCAT-test/autotest/testcase/genesis/cases0 index c324de5ff..a42c2101a 100644 --- a/xCAT-test/autotest/testcase/genesis/cases0 +++ b/xCAT-test/autotest/testcase/genesis/cases0 @@ -3,40 +3,46 @@ description: verify could log in genesis shell cmd:nodeset $$CN shell check:rc==0 cmd:rpower $$CN boot -cmd: perl /opt/xcat/share/xcat/tools/autotest/testcase/genesis/cmdtest.pl -t $$CN +check:rc==0 +cmd:perl /opt/xcat/share/xcat/tools/autotest/testcase/genesis/genesistest.pl -t -n $$CN cmd:xdsh $$CN cat /proc/cmdline check:rc==0 check:output=~BOOT_IMAGE=/xcat/genesis.kernel cmd:nodeset $$CN boot +cmd:rpower $$CN boot check:rc==0 end + start:nodeset_cmdline description:verify could run cmdline successfully -cmd:perl /opt/xcat/share/xcat/tools/autotest/testcase/genesis/cmdtest.pl -c __GETNODEATTR($$CN,arch)__ +cmd:perl /opt/xcat/share/xcat/tools/autotest/testcase/genesis/genesistest.pl -d -r __GETNODEATTR($$CN,arch)__ cmd:nodeset $$CN runcmd="cmdtest,shell" check:rc==0 cmd:rpower $$CN boot check:rc==0 -cmd: perl /opt/xcat/share/xcat/tools/autotest/testcase/genesis/cmdtest.pl -t $$CN -cmd:xdsh $$CN "cat /tmp/cmdtest" +cmd: perl /opt/xcat/share/xcat/tools/autotest/testcase/genesis/genesistest.pl -t -n $$CN +cmd:xdsh $$CN "cat /tmp/testresult" check:rc==0 -check:output=~test -cmd:nodeset $$CN boot -check:rc==0 -cmd:rm -rf /tmp/cmdtest -end -start:nodeset_runimg -description:verify runimg could work -cmd:perl /opt/xcat/share/xcat/tools/autotest/testcase/genesis/cmdtest.pl -i $$CN $$imgdirip +check:output=~testcmd +cmd:perl /opt/xcat/share/xcat/tools/autotest/testcase/genesis/genesistest.pl -c -n $$CN -r __GETNODEATTR($$CN,arch)__ +check:rc==0 +cmd:rpower $$CN boot +check:rc==0 +end + +start:nodeset_runimg +description:verify runimg could work +cmd:perl /opt/xcat/share/xcat/tools/autotest/testcase/genesis/genesistest.pl -g -n $$CN -i $$imgip +check:rc==0 +cmd:rpower $$CN boot +check:rc==0 +cmd:perl /opt/xcat/share/xcat/tools/autotest/testcase/genesis/genesistest.pl -t -n $$CN +check:rc==0 +cmd:xdsh $$CN "cat /tmp/testresult" +check:output=~testimg +check:rc==0 +cmd:perl /opt/xcat/share/xcat/tools/autotest/testcase/genesis/genesistest.pl -c -n $$CN -r __GETNODEATTR($$CN,arch)__ check:rc==0 cmd:rpower $$CN boot check:rc==0 -cmd: perl /opt/xcat/share/xcat/tools/autotest/testcase/genesis/cmdtest.pl -t $$CN -check:rc==0 -cmd:xdsh $$CN "cat /tmp/cmdtest" -check:output=~test -check:rc==0 -cmd:nodeset $$CN boot -cmd:rm -rf /install/my_image -cmd:rm -rf /tmp/runme.sh end diff --git a/xCAT-test/autotest/testcase/genesis/genesistest.pl b/xCAT-test/autotest/testcase/genesis/genesistest.pl new file mode 100755 index 000000000..187b04187 --- /dev/null +++ b/xCAT-test/autotest/testcase/genesis/genesistest.pl @@ -0,0 +1,185 @@ +#!/usr/bin/env perl +# IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html + +use strict; +use warnings; +use Getopt::Long; +use Data::Dumper; +use Term::ANSIColor; +use Time::Local; +use File::Basename; +use File::Path; +use File::Copy; +BEGIN +{ + $::XCATROOT = $ENV{'XCATROOT'} ? $ENV{'XCATROOT'} : -d '/opt/xcat' ? '/opt/xcat' : '/usr'; +} +use lib "$::XCATROOT/lib/perl"; +my $needhelp = 0; +my $rungenesiscmd = 0; +my $rungenesisimg = 0; +my $shellmode = 0; +my $cmdtest="/tmp/cmdtest"; +my $timesleep = 0; +my $noderange = 0; +my $clearenv = 0; +my $arch = 0; +my $imgip ; +my $runimgtest="/tmp/imgtest"; +my $testresult="/tmp/testresult"; +my $genesisdir="/opt/xcat/share/xcat/netboot/genesis"; +my $genesisfiledir="$genesisdir/$arch/fs/bin"; + +if ( + !GetOptions("h|?" => \$::HELP, + "d"=>\$rungenesiscmd, + "g"=>\$rungenesisimg, + "t"=>\$timesleep, + "c"=>\$clearenv, + "n=s"=>\$::NODE, + "i=s"=>\$::IMGIP, + "r=s"=>\$::ARCH) +) +{ + &usage; + exit 1; +} +sub usage +{ + print "Usage:run genesis cases.\n"; + print " genesistest.pl [-?|-h]\n"; + print " genesistest.pl [-d] [-n node] [-r arch] Test runcmd for genesis \n"; + print " genesistest.pl [-g] [-n ndoe] [-i imgip] Test runimg for genesis\n"; + print " genesistest.pl [-t] [-n node] Sleep for genesis test\n"; + print " genesistest.pl [-c] [-n node][-r arch] Clear environment for genesis test\n"; + print "\n"; + return; +} +sub runcmd +{ + my ($cmd) = @_; + my $rc = 0; + $::RUNCMD_RC = 0; + my $outref = []; + @$outref = `$cmd 2>&1`; + if ($?) + { + $rc = $? ; + $rc = $rc >> 8; + $::RUNCMD_RC = $rc; + } + chomp(@$outref); + return @$outref; + +} +sub rungenesiscmd +{ + open(TESTCMD, ">$cmdtest") + or die "Can't open testscripts for writing: $!"; + print TESTCMD join("\n", "#!/bin/bash"), "\n"; + print TESTCMD join("\n", "#This is test for genesis scripts"), "\n"; + print TESTCMD join("\n", "echo \"testcmd\" >> $testresult"), "\n"; + close(TESTCMD); + if ($arch =~ /ppc64/) + { + $arch = "ppc64"; + } + $genesisfiledir="$genesisdir/$arch/fs/bin"; + copy("$cmdtest" ,"$genesisfiledir"); + chmod 0755, "$genesisfiledir/cmdtest"; + `mknb $arch`; + print "mknb $arch\n"; +} +sub rungenesisimg +{ + mkdir("/install/my_image"); + open(TESTIMG, ">$runimgtest") + or die "Can't open testscripts for writing: $!"; + print TESTIMG join("\n", "#!/bin/bash"), "\n"; + print TESTIMG join("\n", "#This is test for genesis scripts"), "\n"; + print TESTIMG join("\n", "echo \"testimg\" >> $testresult"), "\n"; + close(TESTIMG); + copy("$runimgtest" ,"/install/my_image/runme.sh" ) or die "Copy failed: $!"; + chmod 0755,"/install/my_image/runme.sh"; + `cd /install/my_image ;tar -zcvf my_image.tgz .`; + `nodeset $noderange "runimage=http://$imgip/install/my_image/my_image.tgz",shell`; +} +sub timesleep +{ + my @output = runcmd("ping $noderange -c 10"); + my $value = 0; + print "output is $value ,@output\n"; + if ($::RUNCMD_RC){ + foreach $value (1 .. 60) { + @output = runcmd("ping $noderange -c 10"); + last if ($::RUNCMD_RC == 0); + } + } + my @output1 = runcmd("xdsh $noderange date"); + if ($::RUNCMD_RC){ + foreach $value (1 .. 60) { + @output1 = runcmd("xdsh $noderange -t 1 date"); + print "sleep $value\n"; + last if ($::RUNCMD_RC == 0); + } + } + if ($::RUNCMD_RC == 0){ + print "test ok\n"; + } +} +sub clearenv +{ + if (-f "/tmp/imgtest"){ + unlink("/install/my_image/runme.sh"); + unlink("/install/my_image/my_image.tgz"); + unlink("$runimgtest"); + rmdir("/install/my_image"); + print "img del ok\n"; + } + if (-f "/tmp/cmdtest"){ + if ($arch =~ /ppc64/) + { + $arch = "ppc64"; + } + + $genesisfiledir="$genesisdir/$arch/fs/bin"; + my $genesisfile = "$genesisfiledir/cmdtest"; + print "genesis file is $genesisfile\n"; + unlink("$genesisfile"); + unlink("$cmdtest"); + `mknb $arch`; + print "mknb $arch\n"; + } + `nodeset $noderange boot`; +} +if ($::NODE) +{ + $noderange = $::NODE; +} +if($::ARCH) +{ + $arch = $::ARCH; +} +if($::IMGIP) +{ + $imgip = $::IMGIP; +} +if ($::HELP) { +usage; +} +if ($rungenesiscmd) +{ + &rungenesiscmd; +} +if ($timesleep) +{ + ×leep; +} +if($rungenesisimg) + { + &rungenesisimg; + } +if($clearenv) +{ + &clearenv; +}