2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2025-07-24 13:21:12 +00:00

Merge pull request #1521 from junxiawang/0712

add genesis test case
This commit is contained in:
Xiaopeng Wang
2016-07-14 13:50:38 +08:00
committed by GitHub
3 changed files with 356 additions and 0 deletions

View File

@@ -0,0 +1,48 @@
start:nodeset_shell
description: verify could log in genesis shell
cmd:nodeset $$CN shell
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
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/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/genesistest.pl -t -n $$CN
cmd:xdsh $$CN "cat /tmp/testresult"
check:rc==0
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
end

View File

@@ -0,0 +1,124 @@
#!/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)
{
&timesleep;
}
if($rungenesisimg)
{
&rungenesisimg;
}

View File

@@ -0,0 +1,184 @@
#!/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 $rungenesiscmd = 0;
my $rungenesisimg = 0;
my $shellmode = 0;
my $cmdtest = "/tmp/cmdtest";
my $timesleep = 0;
my $noderange ;
my $clearenv = 0;
my $arch ;
my $imgip ;
my $runimgtest = "/tmp/imgtest";
my $testresult = "/tmp/testresult";
my $genesisdir = "/opt/xcat/share/xcat/netboot/genesis";
my $genesisfiledir ;
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 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";
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)
{
&timesleep;
}
if($rungenesisimg)
{
&rungenesisimg;
}
if($clearenv)
{
&clearenv;
}