From 78e9094258f225683cbaedea836981355fdef10d Mon Sep 17 00:00:00 2001 From: junxiawang Date: Tue, 12 Jul 2016 05:28:58 -0400 Subject: [PATCH 1/4] add genesis test case --- xCAT-test/autotest/testcase/genesis/cases0 | 42 ++++++ .../autotest/testcase/genesis/cmdtest.pl | 128 ++++++++++++++++++ 2 files changed, 170 insertions(+) create mode 100644 xCAT-test/autotest/testcase/genesis/cases0 create mode 100755 xCAT-test/autotest/testcase/genesis/cmdtest.pl diff --git a/xCAT-test/autotest/testcase/genesis/cases0 b/xCAT-test/autotest/testcase/genesis/cases0 new file mode 100644 index 000000000..c324de5ff --- /dev/null +++ b/xCAT-test/autotest/testcase/genesis/cases0 @@ -0,0 +1,42 @@ +start:nodeset_shell +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 +cmd:xdsh $$CN cat /proc/cmdline +check:rc==0 +check:output=~BOOT_IMAGE=/xcat/genesis.kernel +cmd:nodeset $$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: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" +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: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/cmdtest.pl b/xCAT-test/autotest/testcase/genesis/cmdtest.pl new file mode 100755 index 000000000..e0be25c5e --- /dev/null +++ b/xCAT-test/autotest/testcase/genesis/cmdtest.pl @@ -0,0 +1,128 @@ +#!/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; +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 $genesisdir="/opt/xcat/share/xcat/netboot/genesis/"; +my $timesleep = 0; +my $runimgtest="/tmp/runme.sh"; +if ( + !GetOptions("h|?" => \$needhelp, + "c"=>\$rungenesiscmd, + "i"=>\$rungenesisimg, + "t"=>\$timesleep, + "s"=>\$shellmode) +) +{ + &usage; + exit 1; +} +sub usage +{ + print "Usage:run genesis cases.\n"; + print " genesistest.pl [-?|-h]\n"; + print " genesistest.pl [-s] set up genesis in shell mode \n"; + print " genesistest.pl [-i] runimg in genesis\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 +{ + `echo "#!/bin/bash">>$cmdtest`; + `echo "#This is test for genesis scripts">>$cmdtest`; + `echo "echo \"test\" >> $cmdtest">>$cmdtest`; + `chmod 777 $cmdtest`; + if ($ARGV[0] =~ /ppc64/){ + `cp -rf $cmdtest "$genesisdir""ppc64"/fs/bin`; + `mknb ppc64`; + print "mknb ppc64\n"; + }else{ + `cp -rf $cmdtest "$genesisdir""$ARGV[0]"/fs/bin`; + `mknb $ARGV[0]`; + print "mkmn $ARGV[0]\n"; + } +} +sub rungenesisimg +{ + my $rc=0; + runcmd("mkdir -p /install/my_image"); + `echo "#!/bin/bash">>$runimgtest`; + `echo "#This is test for genesis scripts">>$runimgtest`; + `echo "echo "test" >> /tmp/cmdtest" >>$runimgtest`; + `chmod +x $runimgtest`; + `cp $runimgtest /install/my_image`; + `cd /install/my_image ;tar -zcvf my_image.tgz .`; + ` nodeset $ARGV[0] "runimage=http://$ARGV[1]/install/my_image/my_image.tgz",shell`; +} +sub timesleep +{ + my @output = runcmd("ping $ARGV[0] -c 10"); + my $value = 0; + print "output is $value ,@output\n"; + if ($::RUNCMD_RC){ + foreach $value (1 .. 60) { + @output = runcmd("ping $ARGV[0] -c 10"); + last if ($::RUNCMD_RC == 0); + } + } + my @output1 = runcmd("xdsh $ARGV[0] date"); + if ($::RUNCMD_RC){ + foreach $value (1 .. 60) { + @output1 = runcmd("xdsh $ARGV[0] date"); + last if ($::RUNCMD_RC == 0); + } + } + if ($::RUNCMD_RC == 0){ + print "test ok\n"; + } +} +if ($rungenesiscmd) + { + &rungenesiscmd; + } +if ($timesleep) + { + ×leep; + } +if($rungenesisimg) + { + &rungenesisimg; + } +if ($?) + { + return 0; + } + + From 81c5bd84563d68ec898c7e692bd02925532fcd5a Mon Sep 17 00:00:00 2001 From: junxiawang Date: Tue, 12 Jul 2016 05:32:19 -0400 Subject: [PATCH 2/4] modify genesis test scripts --- xCAT-test/autotest/testcase/genesis/cmdtest.pl | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/xCAT-test/autotest/testcase/genesis/cmdtest.pl b/xCAT-test/autotest/testcase/genesis/cmdtest.pl index e0be25c5e..7422961d7 100755 --- a/xCAT-test/autotest/testcase/genesis/cmdtest.pl +++ b/xCAT-test/autotest/testcase/genesis/cmdtest.pl @@ -109,9 +109,9 @@ sub timesleep } } if ($rungenesiscmd) - { - &rungenesiscmd; - } + { + &rungenesiscmd; + } if ($timesleep) { ×leep; @@ -120,9 +120,5 @@ if($rungenesisimg) { &rungenesisimg; } -if ($?) - { - return 0; - } From 7a7c187e3243d7517d8effffbcb8d9320169f6e2 Mon Sep 17 00:00:00 2001 From: junxiawang Date: Wed, 13 Jul 2016 10:33:27 -0400 Subject: [PATCH 3/4] 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; +} From ff60c99248802a0a17bb19e2b20381f3fa3691bd Mon Sep 17 00:00:00 2001 From: junxiawang Date: Thu, 14 Jul 2016 01:01:27 -0400 Subject: [PATCH 4/4] modify genesis test case --- .../autotest/testcase/genesis/genesistest.pl | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/xCAT-test/autotest/testcase/genesis/genesistest.pl b/xCAT-test/autotest/testcase/genesis/genesistest.pl index 187b04187..570374923 100755 --- a/xCAT-test/autotest/testcase/genesis/genesistest.pl +++ b/xCAT-test/autotest/testcase/genesis/genesistest.pl @@ -15,20 +15,19 @@ 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 $cmdtest = "/tmp/cmdtest"; my $timesleep = 0; -my $noderange = 0; +my $noderange ; my $clearenv = 0; -my $arch = 0; +my $arch ; my $imgip ; -my $runimgtest="/tmp/imgtest"; -my $testresult="/tmp/testresult"; -my $genesisdir="/opt/xcat/share/xcat/netboot/genesis"; -my $genesisfiledir="$genesisdir/$arch/fs/bin"; +my $runimgtest = "/tmp/imgtest"; +my $testresult = "/tmp/testresult"; +my $genesisdir = "/opt/xcat/share/xcat/netboot/genesis"; +my $genesisfiledir ; if ( !GetOptions("h|?" => \$::HELP, @@ -46,7 +45,7 @@ if ( } sub usage { - print "Usage:run genesis cases.\n"; + print "Usage:run for 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";