diff --git a/xCAT-test/autotest/testcase/install_xCAT/case0 b/xCAT-test/autotest/testcase/install_xCAT/case0 new file mode 100644 index 000000000..9979f45ea --- /dev/null +++ b/xCAT-test/autotest/testcase/install_xCAT/case0 @@ -0,0 +1,46 @@ +start:install_xCAT_on_rhels_sles +description:install xCAT with go-xcat tool in a fresh environment for rhels and sles +os:Linux +stop:yes +cmd:if grep "Red Hat" /etc/*release >/dev/null; then yum install -y yum-utils bzip2; fi +check:rc==0 +cmd:cp /core-*-snap.tar.bz2 /xcat-core.tar.bz2 +check:rc==0 +cmd:cp /xcat-dep*.tar.bz2 /xcat-dep.tar.bz2 +check:rc==0 +cmd:cd /; ./go-xcat --xcat-core=/xcat-core.tar.bz2 --xcat-dep=/xcat-dep.tar.bz2 -y install; +check:rc==0 +cmd:source "/etc/profile.d/xcat.sh" +check:rc==0 +cmd:lsxcatd -v +check:rc==0 +check:output=~Version +cmd:service xcatd status +check:rc==0 +check:output=~running +cmd:rm -rf /xcat-core.tar.bz2 /xcat-dep.tar.bz2 +end + +start:install_xCAT_on_ubuntu +description:install xCAT with go-xcat tool in a fresh environment for ubuntu +os:Linux +stop:yes +cmd:arc_all=`uname -a`; code=`lsb_release -sc`;if [[ $arc_all =~ "ppc64le" ]]; then arch="ppc64el";else arch="x86_64";fi; cp "/opt/xcat/share/xcat/tools/autotest/testcase/go-xcat/$code-$arch.sources.list" "/etc/apt/sources.list" +cmd:apt-get clean;apt-get update +check:rc==0 +cmd:cp /core-*-snap.tar.bz2 /xcat-core.tar.bz2 +check:rc==0 +cmd:cp /xcat-dep*.tar.bz2 /xcat-dep.tar.bz2 +check:rc==0 +cmd:./go-xcat --xcat-core=/xcat-core.tar.bz2 --xcat-dep=/xcat-dep.tar.bz2 -y install; +check:rc==0 +cmd:source "/etc/profile.d/xcat.sh" +check:rc==0 +cmd:lsxcatd -v +check:rc==0 +check:output=~Version +cmd:service xcatd status +check:rc==0 +check:output=~running +cmd:rm -rf /xcat-core.tar.bz2 /xcat-dep.tar.bz2 +end diff --git a/xCAT-test/xcattest b/xCAT-test/xcattest index e4ab5eb68..cf053eea5 100755 --- a/xCAT-test/xcattest +++ b/xCAT-test/xcattest @@ -12,23 +12,30 @@ BEGIN $::XCATROOT = $ENV{'XCATROOT'} ? $ENV{'XCATROOT'} : -d '/opt/xcat' ? '/opt/xcat' : '/usr'; } use lib "$::XCATROOT/lib/perl"; -my $rootdir = "$::XCATROOT/share/xcat/tools/autotest"; -my $needhelp = 0; -my $config_info = "$rootdir/default.conf"; -my $bundle_list = undef; -my $case_list = undef; -my $cmd_list = undef; -my $needshow = 0; -my $restore = 0; -my $ret = 0; -my $string1 = undef; +my $rootdir = "$::XCATROOT/share/xcat/tools/autotest"; +my $needhelp = 0; +my $configinfo = undef; +my $configfile = "$rootdir/default.conf";; +my $initallabel = 0; +my $bundledir = "$rootdir/bundle"; +my $bundlelist = undef; +my $caselist = undef; +my $cmdlist = undef; +my $needshow = 0; +my $showbundlefiles = 0; +my $restore = 0; +my $ret = 0; +my $string1 = undef; +my $loadsysteminfo = "System"; + if ( !GetOptions("h|?" => \$needhelp, - "f=s" => \$config_info, - "b=s" => \$bundle_list, - "t=s" => \$case_list, - "c=s" => \$cmd_list, + "f=s" => \$configinfo, + "b=s" => \$bundlelist, + "t=s" => \$caselist, + "c=s" => \$cmdlist, "l" => \$needshow, + "bl" => \$showbundlefiles, "restore" => \$restore) ) { @@ -36,48 +43,24 @@ if ( exit 1; } -unless(defined($bundle_list) || defined($case_list) || defined($cmd_list) || defined($needshow)){ - &usage; - exit 1; -} if ($needhelp) { &usage; exit 0; } -#check config file and system label -my $configfile = undef; -my $inital_info = undef; -if ($config_info){ - if ($config_info =~ /:/){ - my @config_info = split /:/, $config_info; - $configfile = $config_info[0]; - $inital_info = $config_info[1]; - if ($inital_info ne "system"){ - print "Failed: $inital_info in $config_info is not supported!\n"; - exit 1; - } - }else{ - $configfile = $config_info; - } -} -if (!open(FILE, "$configfile")) { - print "can't open config file: $configfile\n"; - exit 1; -} - -#check bundle files -if ($bundle_list){ - my @bundles = split /,/, $bundle_list; - foreach my $bundle (@bundles){ - if (!open(FILE, "<$rootdir/bundle/$bundle")) { - print "can't open bundle file: $rootdir/bundle/$bundle\n"; - exit 1; - } - } +if (&checkoptions) +{ + &usage; + exit 1; } +if ($showbundlefiles) +{ + &listbundlefiles; + exit 0; +} + #load case to $cases # key type #$cases[x](x>0): hash @@ -119,9 +102,11 @@ if ($ret != 0) { goto EXIT; } -$ret = &init; -if ($ret != 0) { - goto EXIT; +if ($initallabel){ + $ret = &init; + if ($ret != 0) { + goto EXIT; + } } my @filespath = (); @@ -132,7 +117,7 @@ if ($ret != 0) { } #run case -&reordercases if (defined($bundle_list) || defined($case_list)); +&reordercases if (defined($bundlelist) || defined($caselist)); &runcase; EXIT: @@ -203,10 +188,33 @@ sub getConfig my $value = undef; my $c = 0; my $cmd = undef; - my $mgt_name = undef; + + if (!open(FILE, "$configfile")) { + log_this("Error: can't open xCAT config file: $configfile"); + close(FILE); + return 1; + } + + #Only load System information + if (defined($initallabel) && ($initallabel eq $loadsysteminfo)) { + while (my $line = ) { + $line = &trim($line); + next if (length($line) == 0); - while (my $line = ) { + #Only read System variable + if ($line =~ /\[System\]/) { + $type = "Varible"; + } + if (defined($type) && ($type eq "Varible")) { + if ($line =~ /(\w+)\s*=\s*([\w\.\-\+\/:]+)/) { + $config{var}{$1} = $2; + } + } + } + }else{ + #Load all config files information + while (my $line = ) { $line = &trim($line); next if (length($line) == 0); @@ -262,6 +270,7 @@ sub getConfig } } } +} if (exists $config{object}) { foreach my $type (keys %{ $config{object} }) { @@ -385,7 +394,7 @@ sub init if (!exists $config{var}{ARCH}) { if (!exists $config{var}{CN}) { $config{var}{ARCH} = "Unknown"; - log_this("No compute node defined,can't get ARCH of compute node"); + log_this("Error: No compute node defined, can't get ARCH of compute node"); } else { $config{var}{ARCH} = getnodeattr($config{var}{CN}, "arch"); if ($config{var}{ARCH} =~ /ppc/) { @@ -399,7 +408,7 @@ sub init if (!exists $config{var}{HCP}) { if (!exists $config{var}{CN}) { $config{var}{HCP} = "Unknown"; - log_this("No compute node defined,can't get HCP TYPE of compute node"); + log_this("Error: No compute node defined, can't get HCP TYPE of compute node"); } else { $config{var}{HCP} = getnodeattr($config{var}{CN}, "mgt"); log_this("Detecting: HCP = $config{var}{HCP}"); @@ -446,7 +455,7 @@ sub uninit log_this($cmd); runcmd($cmd); if ($::RUNCMD_RC != 0) { - log_this("Fail to run $cmd"); + log_this("Error: Fail to run $cmd"); return 1; } } @@ -494,8 +503,8 @@ sub loadcase my $casedir = "/opt/xcat/share/xcat/tools/autotest/testcase"; my @files = (); - #if($cmd_list){ - # my @cmds = split /,/,$cmd_list; + #if($caselist){ + # my @cmds = split /,/,$caselist; # for my $cmd (@cmds){ # push (@files, glob("$casedir/$cmd/*")); # } @@ -505,8 +514,8 @@ sub loadcase Get_Files_Recursive("$casedir"); for (my $countfile = 0 ; $countfile < @filespath ; $countfile++) { - if ($cmd_list) { - my @cmds = split /,/, $cmd_list; + if ($caselist) { + my @cmds = split /,/, $caselist; for (my $countcmd = 0 ; $countcmd < @cmds ; $countcmd++) { if ($filespath[$countfile] =~ m/\/$cmds[$countcmd]\/case/) { push(@files, glob("$filespath[$countfile]")); @@ -528,9 +537,14 @@ sub loadcase my @caserange = (); my @rightcase = (); my @notrightcase = (); - if ($bundle_list) { - my @bundles = split /,/, $bundle_list; + if ($bundlelist) { + my @bundles = split /,/, $bundlelist; foreach my $bundle (@bundles) { + if (!open(FILE, "<$bundledir/$bundle")){ + log_this("Error: Can't open bundle file: $bundle"); + close(FILE); + return 1; + } while ($line = ) { $line = trim($line); next if (length($line) == 0); @@ -539,12 +553,12 @@ sub loadcase close(FILE); } } - if ($case_list) { - @caserange = split /,/, $case_list; + if ($caselist) { + @caserange = split /,/, $caselist; } foreach $file (@files) { if (!open(FILE, "<$file")) { - log_this("can't open $file"); + log_this("Error: Can't open $file"); return 1; } while ($line = ) { @@ -682,7 +696,7 @@ sub getnodeattr # return "Unknown"; foreach $t (1 .. 40) { - log_this("could not get node attr $attr "); + log_this("Error: could not get node attr $attr "); @output = runcmd("lsdef -t node -o $node -i $attr"); last if ($::RUNCMD_RC == 0); } @@ -728,7 +742,7 @@ sub getvar if (exists($config{var}{$varname})) { $str =~ s/\$\$$varname/$config{var}{$varname}/g; } else { - log_this("Error:can't get varible $varname"); + log_this("Error: can't get varible $varname"); return ''; } } @@ -945,13 +959,25 @@ sub usage { print "Usage:xcattest - Run xcat test cases.\n"; print " xcattest [-?|-h]\n"; - print " xcattest [-f configure file] [-b case bundle list] [--restore]\n"; - print " xcattest [-f configure file] [-t case list] [--restore]\n"; - print " xcattest [-f configure file] [-c cmd list] [-l] [--restore]\n"; + print " xcattest [-f configure file] [-b case bundle list]\n"; + print " xcattest [-f configure file] [-t case list]\n"; + print " xcattest [-f configure file] [-c cmd list]\n"; + print " xcattest [-f configure file:System] [-t case] \n"; + print " xcattest [-f configure file] [-b case bundle list] [-l]\n"; + print " xcattest [-f configure file] [-t case list] [-l]\n"; + print " xcattest [-f configure file] [-c cmd list] [-l]\n"; + print " xcattest [-bl]"; print "\n"; return; } +sub listbundlefiles +{ + print "Bundle files listed in $bundledir/:\n"; + system("ls $bundledir "); + return 0; +} + sub getreport { open(INDOC, ">$_[1]") || die("open STDOUT failed"); @@ -976,11 +1002,11 @@ sub getreport sub reordercases { my @caserange = (); my $line; - if ($bundle_list) { - my @bundles = split /,/, $bundle_list; + if ($bundlelist) { + my @bundles = split /,/, $bundlelist; foreach my $bundle (@bundles) { - if (!open(FILE, "<$rootdir/bundle/$bundle")) { - log_this("can't open $rootdir/bundle/$bundle"); + if (!open(FILE, "<$bundledir/$bundle")){ + log_this("Error: Can't open bundle file: $bundle"); return 1; } while ($line = ) { @@ -991,8 +1017,8 @@ sub reordercases { close(FILE); } } - if ($case_list) { - @caserange = split /,/, $case_list; + if ($caselist) { + @caserange = split /,/, $caselist; } my @tmpcases = (); @@ -1012,3 +1038,50 @@ sub reordercases { @cases = @tmpcases; } +sub checkoptions{ + #bundle, cases lists and command lists, one of them must be defined + if (!defined($bundlelist) && !defined($caselist) && !defined($caselist) && !defined($showbundlefiles)){ + &usage; + exit 1; + } + + #get and check config file and System label + #this System label means only the [System] variable will be loaded + if ($configinfo){ + if ($configinfo =~ /(\w+):(\w+)/){ + $configfile =$1; + $initallabel = $2; + if ($initallabel ne $loadsysteminfo){ + print "Error: $initallabel is not supported!\n"; + log_this("Error: $initallabel is not supported!"); + return 1; + } + }else{ + $configfile = $configinfo; + } + } + if (!(-e $configfile)) { + print "Error: Can't open config file: $configfile\n"; + log_this("Error: Can't open config file: $configfile"); + return 1; + } + + #check bundle files + if ($bundlelist){ + my @bundles = split /,/, $bundlelist; + foreach my $bundle (@bundles){ + if (!(-e "$bundledir/$bundle")) { + print "Error: Can't open bundle file: $bundledir/$bundle\n"; + log_this("Error: Can't open bundle file: $bundledir/$bundle"); + return 1; + } + } + } + + return 0; +} + + + + +