2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2025-05-30 01:26:38 +00:00

204 lines
4.7 KiB
Perl
Executable File

#!/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 $osver;
my $log="/tmp/pkg.log";
my $needhelp = 0;
my $setupenv = 0;
my $clearenv = 0;
my $setupenvinclude = 0;
my $removerpm = 0;
my $ospkg = 0;
my $osimg;
my $attr;
my $int;
if (
!GetOptions("h|?" => \$needhelp,
"s" => \$setupenv,
"c"=>\$clearenv,
"i"=>\$setupenvinclude,
"r"=>\$removerpm,
"o"=>\$ospkg,
"g=s"=>\$::OSIMG,
"t=s"=>\$::ATTR,
"v=s"=>\$::OSVERSION)
)
{
&usage;
exit 1;
}
sub usage
{
print "Usage:pkgtest.pl - Run xcat pkg test cases.\n";
print " pkgtest.pl [-?|-h]\n";
print " pkgtest.pl [-s] [-g osimage] [-t attribute] [-v os] set up package test environment \n";
print " pkgtest.pl [-i] [-g osimage] [-t attribute] [-v os] set up package test environment using include package list\n";
print " pkgtest.pl [-r] [-g osimage] [-t attribute] [-v os] remove package \n";
print " pkgtest.pl [-c] [-g osimage] [-t attribute] [-v os] clear package test environment \n";
print " pkgtest.pl [-o] [-g osimage] [-t attribute] [-v os] other package test \n";
print "\n";
return;
}
sub getimgattr
{
my @output = `lsdef -t osimage -o $osimg -i $attr`;
my $pkglistvalue;
print " output is @output \n";
if($?){
print "unkonw";
return "Unknown";
}
if($? == 0){
foreach my $output1 (@output){
if($output1 =~ /$attr=(.*)/){
print "output1 is $output1 ,attrs is value is $1 \n";
$pkglistvalue = $1 ;
}
} }
return $pkglistvalue;
}
sub setupenv
{
my $int = shift;
if ($ospkg){
`mkdir -p $int`;
`cp -rf /xcat-core/* $int`;
}else{
`cat "$int" >> /tmp/pkgtest.bak`;
}
if (($osver =~ /ubuntu/)&&($ospkg ==0)){
`echo "rpm" >>/tmp/pkgtest.bak `;
}else{
`echo "xCAT-test" >>/tmp/pkgtest.bak `;
}
}
sub clearenv
{
my $int = shift;
if ($ospkg ==0){
`rm -rf /tmp/pkgtest.* `;
`rm -rf /install/pkgtest`;
}else{
`rm -rf /tmp/pkgtest.* `;
`rm -rf $int`;
}
}
sub setupenvinclude
{
my $int = shift;
if ($ospkg){
`mkdir -p $int`;
`cp -rf /xcat-core/* $int`;
}else{
` cat $int >> /tmp/pkgtest.bak`;
}
if (($osver =~ /ubuntu/)&&($ospkg ==0)){
`echo "rpm" >>/tmp/pkgtest.bak `;
}else{
`echo "xCAT-test" >> /tmp/pkgtest.includelist `;
}
`echo "#INCLUDE:/tmp/pkgtest.includelist#">>/tmp/pkgtest.bak `;
}
sub removerpm
{
my $int = shift;
if ($ospkg){
`mkdir -p $int`;
`cp -rf /xcat-core/* $int`;
}else{
`cat "$int" >> /tmp/pkgtest.bak`;
}
if (($osver =~ /ubuntu/)&&($ospkg ==0)){
`echo "-rpm" >>/tmp/pkgtest.bak `;
}elsif(($osver =~ /ubuntu/)&&($ospkg !=0)){
`echo "-xcat-test">>/tmp/pkgtest.bak`;
}else{
`echo "-xCAT-test" >>/tmp/pkgtest.bak`;
}
}
if ($needhelp)
{
&usage;
exit 0;
}
if($::OSIMG)
{
$osimg = $::OSIMG;
}
if($::ATTR)
{
$attr = $::ATTR;
}
if($::OSVERSION)
{
$osver = $::OSVERSION;
}
$int = getimgattr;
if ( ($setupenv) || ($setupenvinclude) ||($removerpm))
{
if (! -f "/tmp/int"){
`echo $int >> /tmp/int`;
}else{
print "please clear the pkg test environment first \n";
exit 1;
}
}
if ($setupenv)
{
&setupenv($int);
}
if ($setupenvinclude)
{
&setupenvinclude($int);
}
if ($removerpm)
{
&removerpm($int);
}
if ($clearenv)
{
if (-f "/tmp/int"){
my $int=`cat /tmp/int`;
&clearenv($int);
`rm -rf /tmp/int`;
exit 0;
}else{
print "please set the pkg test environment first \n";
exit 1;
}
}
if (($setupenv) || ($setupenvinclude) ||($removerpm))
{
`mkdir -p /install/pkgtest`;
`cp -rf /xcat-core/* /install/pkgtest`;
if (($osver !~ /ubuntu/)&&($ospkg ==0)){
`chdef -t osimage -o $osimg pkgdir=/install/pkgtest pkglist=/tmp/pkgtest.bak `;
}elsif (($osver !~ /ubuntu/)&&($ospkg !=0)){
`chdef -t osimage -o $osimg otherpkglist=/tmp/pkgtest.bak`;
}elsif(($osver =~ /ubuntu/)&&($ospkg !=0)){
`chdef -t osimage -o $osimg otherpkglist="/tmp/pkgtest.bak" otherpkgdir="http://xcat.org/files/xcat/repos/apt/2.12/xcat-core trusty main"`;
}elsif(($osver =~ /ubuntu/)&&($ospkg ==0)){
`chdef -t osimage -o $osimg pkglist=/tmp/pkgtest.bak`;
}
}
if ($?)
{
return 0;
}