From a2b241d6d3dc8d91ff67f609139ef26c2f167814 Mon Sep 17 00:00:00 2001 From: yinle Date: Tue, 15 Apr 2014 07:38:28 -0700 Subject: [PATCH] Adjust formate, add fork progress, move code into sub-routines --- xCAT-server/share/xcat/tools/xCATreg | 735 +++++++++++++++------------ 1 file changed, 404 insertions(+), 331 deletions(-) mode change 100755 => 100644 xCAT-server/share/xcat/tools/xCATreg diff --git a/xCAT-server/share/xcat/tools/xCATreg b/xCAT-server/share/xcat/tools/xCATreg old mode 100755 new mode 100644 index 14cfe2151..a9f19badd --- a/xCAT-server/share/xcat/tools/xCATreg +++ b/xCAT-server/share/xcat/tools/xCATreg @@ -35,6 +35,7 @@ BEGIN $::XCATROOT = $ENV{'XCATROOT'} ? $ENV{'XCATROOT'} : -d '/opt/xcat' ? '/opt/xcat' : '/usr'; } use lib "$::XCATROOT/lib/perl"; +my %confhash; my $rootdir = "$::XCATROOT/share/xcat/tools/autotest"; my $needhelp = 0; my $branch = 0; @@ -66,7 +67,7 @@ my $dsklscnsninst=0; my $fullcnsninst=0; my $statelitecnsninst=0; my %confkeys; -my $confile; +my %results; ####################################### # usage for arguments @@ -95,13 +96,13 @@ sub config_rhppc64 { send_msg("******************************"); send_msg("Reading Configure"); send_msg("******************************"); -#if(!(-e $configfile)){ - # send_msg("Warning: The xCAT test Configure file doesn't exist!"); - # send_msg("Warning: The xCAT test Configure file doesn't exist!"); - # return 0; - # } - my $type = undef; - my $sub_type = undef; # The string after $type_ + #if(!(-e $configfile)){ + #send_msg("Warning: The xCAT test Configure file doesn't exist!"); + #send_msg("Warning: The xCAT test Configure file doesn't exist!"); + #return 0; + #} + my $type = undef; + my $sub_type = undef; # The string after $type_ # Script--> # Script_Prev # Script_Post @@ -143,7 +144,7 @@ sub config_rhppc64 { $name = $value; $rhppc64config{table}{$sub_type}{$name}{__KEY__}=$attr; } - } + } }elsif ($type eq "rhppc64Object") { ##OBJECT BLOCK## if($line =~ /(\w+)\s*=\s*([\w\.\-]+)/) { @@ -178,8 +179,8 @@ sub config_rhppc64 { print "var $1,$2\n"; } } -} - if(exists $rhppc64config{object}){ + } + if(exists $rhppc64config{object}){ foreach my $type (keys %{$rhppc64config{object}}){ foreach my $name (keys %{$rhppc64config{object}{$type}}){ send_msg("OBJECT:$name,TYPE:$type"); @@ -188,26 +189,26 @@ sub config_rhppc64 { #print "$name,TYPE:$type \n"; foreach my $attr (keys %{$rhppc64config{object}{$type}{$name}}){ send_msg(" $attr = $rhppc64config{object}{$type}{$name}{$attr};"); - &runcmd( " echo $attr=$rhppc64config{object}{$type}{$name}{$attr}>>default.conf"); + &runcmd( " echo $attr=$rhppc64config{object}{$type}{$name}{$attr}>>default.conf"); } } } } - if(exists $rhppc64config{table}){ - foreach my $type (keys %{$rhppc64config{table}}){ + if(exists $rhppc64config{table}){ + foreach my $type (keys %{$rhppc64config{table}}){ send_msg("TABLE:$type"); &runcmd( " echo [Table_$type]>>default.conf"); - # &runcmd( " echo key=$type>>default.conf"); - #&runcmd( " echo [Table_site]>>default.conf"); - # &runcmd( " echo key=$type>>default.conf"); + #&runcmd( " echo key=$type>>default.conf"); + #&runcmd( " echo [Table_site]>>default.conf"); + #&runcmd( " echo key=$type>>default.conf"); foreach my $name (keys %{$rhppc64config{table}{$type}}){ - send_msg(" $rhppc64config{table}{$type}{$name}{__KEY__} = $name"); + send_msg(" $rhppc64config{table}{$type}{$name}{__KEY__} = $name"); &runcmd( " echo $rhppc64config{table}{$type}{$name}{__KEY__}=$name>>default.conf"); - foreach my $attr (keys %{$rhppc64config{table}{$type}{$name}}){ - if($attr ne '__KEY__'){ - send_msg(" $attr = $rhppc64config{table}{$type}{$name}{$attr}"); - &runcmd( " echo $attr=$rhppc64config{table}{$type}{$name}{$attr}>>default.conf"); - } + foreach my $attr (keys %{$rhppc64config{table}{$type}{$name}}){ + if($attr ne '__KEY__'){ + send_msg(" $attr = $rhppc64config{table}{$type}{$name}{$attr}"); + &runcmd( " echo $attr=$rhppc64config{table}{$type}{$name}{$attr}>>default.conf"); + } } send_msg("\n"); } @@ -220,31 +221,141 @@ sub config_rhppc64 { } } - if(exists $rhppc64config{script_post}){ - send_msg("Script_Post:"); + if(exists $rhppc64config{script_post}){ + send_msg("Script_Post:"); foreach $cmd (@{$rhppc64config{script_post}}){ send_msg(" $cmd"); } } -if (exists $rhppc64config{var}){ -#my $MN=$rhppc64config{var}{MN}; -#my $MNIP=$rhppc64config{var}{MNIP}; -#&runcmd( "echo $MN $MN.$DOMAIN $MNIP>>/etc/hosts"); -#print "MN is $MN\n";} - send_msg("Varible:"); - &runcmd( " echo [System]>>default.conf"); - foreach my $varname (keys %{$rhppc64config{var}}){ - send_msg(" $varname = $rhppc64config{var}{$varname}"); - &runcmd( " echo $varname=$rhppc64config{var}{$varname}>>default.conf"); -#print "var is $rhppc64config{var}\n"; + if (exists $rhppc64config{var}){ + #my $MN=$rhppc64config{var}{MN}; + #my $MNIP=$rhppc64config{var}{MNIP}; + #&runcmd( "echo $MN $MN.$DOMAIN $MNIP>>/etc/hosts"); + #print "MN is $MN\n";} + send_msg("Varible:"); + &runcmd( " echo [System]>>default.conf"); + foreach my $varname (keys %{$rhppc64config{var}}){ + send_msg(" $varname = $rhppc64config{var}{$varname}"); + &runcmd( " echo $varname=$rhppc64config{var}{$varname}>>default.conf"); + #print "var is $rhppc64config{var}\n"; } -} + } -close FILE; + close FILE; return 0; } +####################################### +# git update +####################################### +sub git_update { + send_msg("begin to do git update"); + + my $gitup; + $gitup="/tmp/gitup"; + + #Do checkout in git repo + #$res = system("cd $confkeys{srcdir}"); + #if ($res !=0) { + # send_msg("no source code directory,exit"); + # + # exit; + #} + + $res = system("git checkout $branch"); + if ($res != 0){ + send_msg("git checkout failed"); + exit 1; + } + + $res = system("git pull >$gitup"); + if ($res != 0){ + send_msg("git pull failed"); + exit 1; + } + + $res = system("grep 'Already up-to-date' $gitup"); + if (($res == 0)&&( $updates_regression == 1)) { + send_msg("code is already at latest version. exit regresson\n"); + exit 1; + } + return 0; +} +####################################### +# copy code +####################################### +sub copy_code { + my $codedir = $confhash{srcdir}; + send_msg("src code directory is $confhash{srcdir}"); + + ##will modify to $rhppc64config{var}{MNIP} + my $mn = $management_node; + send_msg("mn is $mn"); + + #install dep for buildlocal + send_msg("begin to install build required packages on mn"); + $res = system("xdsh $mn yum install -y rpm-build perl-Time-HiRes perl-DBI createrepo"); + + + #need to copy /etc/hosts to mn + send_msg("copy /etc/hosts to mn"); + system("scp /etc/hosts $mn:/etc"); + + send_msg("begin to copy code"); + $res = system("scp -r $codedir root\@$mn:/"); + if ($res != 0){ + send_msg("code copy failed"); + exit 1; + } + return 0; +} + + + +####################### +# build xcat +####################### +sub build_xcat { + my $mn = shift; + #for temp usage + send_msg("========= began build xcat on mn ========"); + #will changed /code/xcat-core to $confkeys{srcdir} + $res = system("xdsh $mn /xcat-core/buildlocal.sh CURDIR=/xcat-core"); + if ($res != 0){ + send_msg("build failed on mn"); + exit 1; + } + + send_msg("====================build done============================"); + sleep 20; + return 0; +} + +####################################### +# config mn +####################################### +sub config_mn { + my $mn = shift; + send_msg("begin read configuration file for mn"); + mkdir $resultdir unless -d $resultdir; + $timestamp = `date +"%Y%m%d%H%M%S"`; + my @osname = &runcmd("uname -a"); + #if ( $osname [0] =~ /^Linux\s*/ && -f "/etc/redhat-release" && $osname [0] =~ /ppc64/){ + #print "ppc64 redhat env\n"; + #$os="rhels6.4"; + #$arch="ppc64"; + #print "os is $os,arch is $arch\n"; + $res = &config_rhppc64(); + if ($res) { + send_msg("CONFIGURE MN returns error, exit"); + exit 1; + } + #} + + send_msg("step 6 : reading mn configuration done====="); + return 0; +} ####################################### # install xcat and init rhppc64 env ####################################### @@ -281,10 +392,10 @@ sub init print "[OK]\n"; print "--get the latest XCAT tarball.......\n"; system("xdsh $MN rm -rf /etc/yum.repos.d/*"); - $res = system("scp -r $nodedir/xcat-dep $MN:/"); + $res = system("scp -r $nodedir/xcat-dep $MN:/"); system("scp -r /etc/yum.repos.d/rhel6.4.repo $MN:/etc/yum.repos.d/rhel6.4.repo"); ######## redhat 6.4 -# system("scp -r default.conf $MN:$rhppc64configfile"); -# system("xdsh $MN perl $nodedir/xcatbuild/xcat-core/mklocalrepo.sh"); + #system("scp -r default.conf $MN:$rhppc64configfile"); + #system("xdsh $MN perl $nodedir/xcatbuild/xcat-core/mklocalrepo.sh"); system("xdsh $MN perl /xcat-dep/rh6/ppc64/mklocalrepo.sh"); print "--install XCAT .......\n"; @@ -298,143 +409,152 @@ sub init system("xdsh $MN yum -y install xCAT-test"); print "--install createrepo .......\n"; -# system("xdsh $MN yum -y install createrepo"); + #system("xdsh $MN yum -y install createrepo"); system("xdsh $MN yum -y install screen"); system("xdsh $MN yum -y install mysql-server mysql mysql-bench mysql-devel mysql-connector-odbc"); system("xdsh $MN mkdir -p /autotest/result"); - # system("xdsh $MN sysctl -n net.ipv4.ip_forward=1"); - $res = system("xdsh $MN source /etc/profile.d/xcat.sh"); - # if ($res != 0){ - # send_msg("install xCAT failed on rhpmn"); - # exit 1; - #} + #system("xdsh $MN sysctl -n net.ipv4.ip_forward=1"); + $res = system("xdsh $MN source /etc/profile.d/xcat.sh"); + #if ($res != 0){ + #send_msg("install xCAT failed on rhpmn"); + #exit 1; + #} send_msg( " rhppc64 env is ready\n"); -} + } return 0; } +####################################### +# do test +####################################### +sub do_test { + # step 7.1 Install xcat and init mn + send_msg("began to install xCAT and initialize mn"); + $res = &init; + if ($res != 0){ + exit 1; + } + + send_msg("Begin to do test"); + $res = &do_test1; + if ($res) { + send_msg("DO TEST returns error, exit"); + exit 1; + } + return 0; +} ####################################### # run all test ####################################### -sub do_test +sub do_test1 { -my $MN=$rhppc64config{var}{MN}; -my $nodedir=$rhppc64config{var}{nodedir}; -print "copy config file "; -system("scp -r default.conf $MN:$rhppc64configfile"); - -print "Start to run diskless installation ...\n"; - send_msg("******************************"); - send_msg("start diskless test"); - send_msg("******************************"); -#if($dsklsinst){ - system("xdsh $MN perl /opt/xcat/bin/xcattest -f /opt/xcat/share/xcat/tools/autotest/default.conf -t /opt/xcat/share/xcat/tools/autotest/testcase/installation/linux_diskless_installation"); - system("xdsh $MN mv /opt/xcat/share/xcat/tools/autotest/result/* /autotest/result/"); -exit 1; - -#} -#if($bundlerun){ - print "Start to run the automation test bucket ....\n"; - # system("xdsh $MN mkdir -p /autotest/result"); - system("xdsh $MN /opt/xcat/bin/xcattest -b /opt/xcat/share/xcat/tools/autotest/bundle/bat.bundle"); - system("xdsh $MN mv /opt/xcat/share/xcat/tools/autotest/result/* /autotest/result/"); - # system("xdsh $MN cp /autotest/result/xcattest.log.$timestamp /autotest/result/log/xcattest.log.$timestamp.current"); -# $output = ("xdsh $MN tail /autotest/result/xcattest.log.$timestamp"); -#if($output =~ /Total: (\d+) , Failed: (\d+)/){ - # send_msg{command}{total} = $1; - # send_msg{command}{fail} = $2; - # send_msg{command}{timestamp} = $timestamp; - # if(send_msg{command}{fail} != 0){ - # send_msg{command}{failcase} = "| | | Failed cases:"."\n"; - # $output = (xdsh $MN cat /autotest/result/failedcases.$timestamp | grep END); - # while($output =~ /END::(\w+)/g){ - # send_msg{command}{failcase} = $send_msg{command}{failcase}."| | | ".$1."\n"; -# print "$msg{command}{failcase}"; - - # } - # print "$send_msg{command}{failcase}"; - #} -#} -#} -#if($stateliteinst){ - system("xdsh $MN /opt/xcat/bin/xcattest -f /opt/xcat/share/xcat/tools/autotest/default.conf -t Linux_statelite_installation_flat_ppc64"); - system("xdsh $MN mv /opt/xcat/share/xcat/tools/autotest/result/* /autotest/result/"); - # system("xdsh $MN cp /autotest/result/xcattest.log.$timestamp /autotest/result/log/xcattest.log.$timestamp.current"); - #$output = system(" xdsh $MN tail /autotest/result/xcattest.log.$timestamp"); - #if($output =~ /Failed: (\d+)/){ - # if($1 != 0){ - # send_msg{linux_statelite_installation_flat}{pass} = 0; - # send_msg{linux_statelite_installation_flat}{timestamp} = $timestamp; - # } else { - # send_msg{linux_statelite_installation_flat}{pass} = 1; - #} + my $MN=$rhppc64config{var}{MN}; + my $nodedir=$rhppc64config{var}{nodedir}; + print "copy config file "; + system("scp -r default.conf $MN:$rhppc64configfile"); + + print "Start to run diskless installation ...\n"; + send_msg("******************************"); + send_msg("start diskless test"); + send_msg("******************************"); + #if($dsklsinst){ + system("xdsh $MN perl /opt/xcat/bin/xcattest -f /opt/xcat/share/xcat/tools/autotest/default.conf -t /opt/xcat/share/xcat/tools/autotest/testcase/installation/linux_diskless_installation"); + system("xdsh $MN mv /opt/xcat/share/xcat/tools/autotest/result/* /autotest/result/"); + # exit 1; #} - -#} -#if($fullinst){ - system("xdsh $MN /opt/xcat/bin/xcattest -f /opt/xcat/share/xcat/tools/autotest/default.conf -t Linux_full_installation_flat_ppc64"); - - system("xdsh $MN mv /opt/xcat/share/xcat/tools/autotest/result/* /autotest/result/"); - # system("xdsh $MN cp /autotest/result/xcattest.log.$timestamp /autotest/result/log/xcattest.log.$timestamp.current"); - #$output = xdsh $MN tail /autotest/result/xcattest.log.$timestamp; - # if($output =~ /Failed: (\d+)/){ - # if($1 != 0){ - # send_msg{linux_full_installation_flat}{pass} = 0; - # send_msg{linux_full_installation_flat}{timestamp} = $timestamp; - # } else { - # send_msg{linux_full_installation_flat}{pass} = 1; - #} + #if($bundlerun){ + print "Start to run the automation test bucket ....\n"; + # system("xdsh $MN mkdir -p /autotest/result"); + system("xdsh $MN /opt/xcat/bin/xcattest -b /opt/xcat/share/xcat/tools/autotest/bundle/bat.bundle"); + system("xdsh $MN mv /opt/xcat/share/xcat/tools/autotest/result/* /autotest/result/"); + # system("xdsh $MN cp /autotest/result/xcattest.log.$timestamp /autotest/result/log/xcattest.log.$timestamp.current"); + # $output = ("xdsh $MN tail /autotest/result/xcattest.log.$timestamp"); + # if($output =~ /Total: (\d+) , Failed: (\d+)/){ + # send_msg{command}{total} = $1; + # send_msg{command}{fail} = $2; + # send_msg{command}{timestamp} = $timestamp; + # if(send_msg{command}{fail} != 0){ + # send_msg{command}{failcase} = "| | | Failed cases:"."\n"; + # $output = (xdsh $MN cat /autotest/result/failedcases.$timestamp | grep END); + # while($output =~ /END::(\w+)/g){ + # send_msg{command}{failcase} = $send_msg{command}{failcase}."| | | ".$1."\n"; + # print "$msg{command}{failcase}"; + # } + # print "$send_msg{command}{failcase}"; + # } + # } + # } + #if($stateliteinst){ + system("xdsh $MN /opt/xcat/bin/xcattest -f /opt/xcat/share/xcat/tools/autotest/default.conf -t Linux_statelite_installation_flat_ppc64"); + system("xdsh $MN mv /opt/xcat/share/xcat/tools/autotest/result/* /autotest/result/"); + # system("xdsh $MN cp /autotest/result/xcattest.log.$timestamp /autotest/result/log/xcattest.log.$timestamp.current"); + # $output = system(" xdsh $MN tail /autotest/result/xcattest.log.$timestamp"); + # if($output =~ /Failed: (\d+)/){ + # if($1 != 0){ + # send_msg{linux_statelite_installation_flat}{pass} = 0; + # send_msg{linux_statelite_installation_flat}{timestamp} = $timestamp; + # } else { + # send_msg{linux_statelite_installation_flat}{pass} = 1; + # } + # } #} - -#} -#if($snfullinst){ - system("xdsh $MN /opt/xcat/bin/xcattest -f /opt/xcat/share/xcat/tools/autotest/default.conf -t Linux_sn_installation_flat_x86_vm"); - system("xdsh $MN mv /opt/xcat/share/xcat/tools/autotest/result/* /autotest/result/"); - #system("xdsh $MN cp /autotest/result/xcattest.log.$timestamp /autotest/result/log/xcattest.log.$timestamp.current"); - # $output = xdsh $MN tail /autotest/result/xcattest.log.$timestamp; - # if($output =~ /Failed: (\d+)/){ - # if($1 != 0){ - # send_msg{linux_sn_installation_flat}{pass} = 0; - # send_msg{linux_sn_installation_flat}{timestamp} = $timestamp; - # } else { - # send_msg{linux_sn_installation_flat}{pass} = 1; - #} + #if($fullinst){ + system("xdsh $MN /opt/xcat/bin/xcattest -f /opt/xcat/share/xcat/tools/autotest/default.conf -t Linux_full_installation_flat_ppc64"); + system("xdsh $MN mv /opt/xcat/share/xcat/tools/autotest/result/* /autotest/result/"); + # system("xdsh $MN cp /autotest/result/xcattest.log.$timestamp /autotest/result/log/xcattest.log.$timestamp.current"); + # $output = xdsh $MN tail /autotest/result/xcattest.log.$timestamp; + # if($output =~ /Failed: (\d+)/){ + # if($1 != 0){ + # send_msg{linux_full_installation_flat}{pass} = 0; + # send_msg{linux_full_installation_flat}{timestamp} = $timestamp; + # } else { + # send_msg{linux_full_installation_flat}{pass} = 1; + # } + # } #} - -#} -#if($dsklscnsninst){ - system("xdsh $MN /opt/xcat/bin/xcattest -f /opt/xcat/share/xcat/tools/autotest/default.conf -t Linux_cn_with_sn_diskless_installation_flat_x86_vm"); - system("xdsh $MN mv /opt/xcat/share/xcat/tools/autotest/result/* /autotest/result/"); - # system("xdsh $MN cp /autotest/result/xcattest.log.$timestamp /autotest/result/log/xcattest.log.$timestamp.current"); - # if($output =~ /Failed: (\d+)/){ - # if($1 != 0){ - # send_msg{linux_cn_with_sn_diskless_installation_flat}{pass} = 0; - # send_msg{linux_cn_with_sn_diskless_installation_flat}{timestamp} = $timestamp; - # } else { - # send_msg{linux_cn_with_sn_diskless_installation_flat}{pass} = 1; - #} + #if($snfullinst){ + system("xdsh $MN /opt/xcat/bin/xcattest -f /opt/xcat/share/xcat/tools/autotest/default.conf -t Linux_sn_installation_flat_x86_vm"); + system("xdsh $MN mv /opt/xcat/share/xcat/tools/autotest/result/* /autotest/result/"); + # system("xdsh $MN cp /autotest/result/xcattest.log.$timestamp /autotest/result/log/xcattest.log.$timestamp.current"); + # $output = xdsh $MN tail /autotest/result/xcattest.log.$timestamp; + # if($output =~ /Failed: (\d+)/){ + # if($1 != 0){ + # send_msg{linux_sn_installation_flat}{pass} = 0; + # send_msg{linux_sn_installation_flat}{timestamp} = $timestamp; + # } else { + # send_msg{linux_sn_installation_flat}{pass} = 1; + # } + # } #} - -#} -#if($statelitecnsninst){ - system("xdsh $MN /opt/xcat/bin/xcattest -f /opt/xcat/share/xcat/tools/autotest/default.conf -t Linux_cn_with_sn_statelite_installation_flat_x86_vm"); - system(" xdsh $MN mv /opt/xcat/share/xcat/tools/autotest/result/* /autotest/result/"); - #system("xdsh $MN cp /autotest/result/xcattest.log.$timestamp /autotest/result/log/xcattest.log.$timestamp.current"); -#} -#if($fullcnsninst){ - system("xdsh $MN /opt/xcat/bin/xcattest -f /opt/xcat/share/xcat/tools/autotest/default.conf -t Linux_cn_with_sn_full_installation_flat_x86_vm"); - system("xdsh $MN mv /opt/xcat/share/xcat/tools/autotest/result/* /autotest/result/"); - # system("xdsh $MN cp /autotest/result/xcattest.log.$timestamp /autotest/result/log/xcattest.log.$timestamp.current"); - -#} -#system("mkdir -p $nodedir/result"); -system("scp -r $MN:/autotest/result /regression/rhppc64"); - - + #if($dsklscnsninst){ + system("xdsh $MN /opt/xcat/bin/xcattest -f /opt/xcat/share/xcat/tools/autotest/default.conf -t Linux_cn_with_sn_diskless_installation_flat_x86_vm"); + system("xdsh $MN mv /opt/xcat/share/xcat/tools/autotest/result/* /autotest/result/"); + # system("xdsh $MN cp /autotest/result/xcattest.log.$timestamp /autotest/result/log/xcattest.log.$timestamp.current"); + # if($output =~ /Failed: (\d+)/){ + # if($1 != 0){ + # send_msg{linux_cn_with_sn_diskless_installation_flat}{pass} = 0; + # send_msg{linux_cn_with_sn_diskless_installation_flat}{timestamp} = $timestamp; + # } else { + # send_msg{linux_cn_with_sn_diskless_installation_flat}{pass} = 1; + # } + # } + #} + #if($statelitecnsninst){ + system("xdsh $MN /opt/xcat/bin/xcattest -f /opt/xcat/share/xcat/tools/autotest/default.conf -t Linux_cn_with_sn_statelite_installation_flat_x86_vm"); + system(" xdsh $MN mv /opt/xcat/share/xcat/tools/autotest/result/* /autotest/result/"); + # system("xdsh $MN cp /autotest/result/xcattest.log.$timestamp /autotest/result/log/xcattest.log.$timestamp.current"); + #} + #if($fullcnsninst){ + system("xdsh $MN /opt/xcat/bin/xcattest -f /opt/xcat/share/xcat/tools/autotest/default.conf -t Linux_cn_with_sn_full_installation_flat_x86_vm"); + system("xdsh $MN mv /opt/xcat/share/xcat/tools/autotest/result/* /autotest/result/"); + # system("xdsh $MN cp /autotest/result/xcattest.log.$timestamp /autotest/result/log/xcattest.log.$timestamp.current"); + #} + #system("mkdir -p $nodedir/result"); + system("scp -r $MN:/autotest/result /regression/rhppc64"); } ####################################### @@ -468,7 +588,6 @@ sub mn_install { # runcmd ####################################### sub runcmd { - my ($cmd) = @_; my $rc = 0; $::RUNCMD_RC = 0; @@ -481,7 +600,6 @@ sub runcmd { } chomp(@$outref); return @$outref; - } ####################################### @@ -491,9 +609,9 @@ sub trim { my $str = shift @_; if($str){ -# $str =~ s/\#/__wellnumber__/g; + #$str =~ s/\#/__wellnumber__/g; $str =~ s/^\s+|#.+|\s+$//g; - # $str =~ s/__wellnumber__/#/g; + #$str =~ s/__wellnumber__/#/g; } return $str; } @@ -503,58 +621,60 @@ sub trim { ####################################### sub send_msg { my $msg = shift; - print "xcatreg message: $msg.\n"; + print "xcatreg message: $msg.\n"; } ####################################### # read_conf ####################################### sub read_conf{ - my $keys; - if (!open($keys, "<$confile")) { - send_msg("Open configuration file error"); - } - my $line; - while ($line = <$keys>) { - if ($line =~ /end/) { - last; - } - if ($line =~ /^\s*log\s*=\s*(\S*)\s*/) { - $confkeys{log} = $1; - } - if ($line =~ /^\s*mailgroup\s*=\s*(\S*)\s*/) { - $confkeys{mailgroup} = $1; - } - if ($line =~ /^\s*srcdir\s*=\s*(\S*)\s*/) { - $confkeys{srcdir} = $1; - } - if ($line =~ /^\s*rhpdir\s*=\s*(\S*)\s*/) { - $confkeys{rhpdir} = $1; - } - if ($line =~ /^\s*slespdir\s*=\s*(\S*)\s*/) { - $confkeys{slespdir} = $1; - } - if ($line =~ /^\s*aixdir\s*=\s*(\S*)\s*/) { - $confkeys{aixdir} = $1; - } - if ($line =~ /^\s*rhxdir\s*=\s*(\S*)\s*/) { - $confkeys{rhxdir} = $1; - } - if ($line =~ /^\s*slesxdir\s*=\s*(\S*)\s*/) { - $confkeys{slesxdir} = $1; - } - if ($line =~ /^\s*ubuntudir\s*=\s*(\S*)\s*/) { - $confkeys{ubuntudir} = $1; - } - if ($line =~ /^\s*xcattestconf\s*=\s*(\S*)\s*/) { - $confkeys{xcattestconf} = $1; - } - + my $keys; + if (!open($keys, "<$configfile")) { + send_msg("Open configuration file error"); } + my $line; + while ($line = <$keys>) { + if ($line =~ /end/) { + last; + } + if ($line =~ /^\s*log\s*=\s*(\S*)\s*/) { + $confkeys{log} = $1; + } + if ($line =~ /^\s*mailgroup\s*=\s*(\S*)\s*/) { + $confkeys{mailgroup} = $1; + } + if ($line =~ /^\s*srcdir\s*=\s*(\S*)\s*/) { + $confkeys{srcdir} = $1; + } + if ($line =~ /^\s*rhpdir\s*=\s*(\S*)\s*/) { + $confkeys{rhpdir} = $1; + } + if ($line =~ /^\s*slespdir\s*=\s*(\S*)\s*/) { + $confkeys{slespdir} = $1; + } + if ($line =~ /^\s*aixdir\s*=\s*(\S*)\s*/) { + $confkeys{aixdir} = $1; + } + if ($line =~ /^\s*rhxdir\s*=\s*(\S*)\s*/) { + $confkeys{rhxdir} = $1; + } + if ($line =~ /^\s*slesxdir\s*=\s*(\S*)\s*/) { + $confkeys{slesxdir} = $1; + } + if ($line =~ /^\s*ubuntudir\s*=\s*(\S*)\s*/) { + $confkeys{ubuntudir} = $1; + } + if ($line =~ /^\s*xcattestconf\s*=\s*(\S*)\s*/) { + $confkeys{xcattestconf} = $1; + } + } + send_msg("finish reading global vars"); return %confkeys; } -################################################################Main function###################################################################################### +############################################################### +# Mainfunction +############################################################### ####################################### @@ -583,150 +703,103 @@ if ($needhelp) ####################################### # step 1. Read configuration files ####################################### -$confile = $configfile; -my %confhash = read_conf(); +%confhash = read_conf(); unless (%confhash) { - send_msg(" returns error, exit"); - exit; + send_msg("READ CONF returns error, exit"); + exit 1; } -send_msg("finish reading global variable"); + ####################################### # step 2. git update ####################################### -send_msg("begin to do git update"); - -my $gitup; -$gitup="/tmp/gitup"; - -#Do checkout in git repo -#$res = system("cd $confkeys{srcdir}"); -#if ($res !=0) { -# send_msg("no source code directory,exit"); -# -# exit; -#} - -$res = system("git checkout $branch"); -if ($res != 0){ - send_msg("git checkout failed"); - exit 1; -} - -$res = system("git pull >$gitup"); -if ($res != 0){ - send_msg("git pull failed"); - exit 1; -} - -$res = system("grep 'Already up-to-date' $gitup"); -if (($res == 0)&&( $updates_regression == 1)) { - send_msg("code is already at latest version. exit regresson\n"); - exit 1; -} - - -####################################### -# step 3. Install MNs -####################################### -#$res = mn_install(); -#if ($res) { -# send_msg("INSTALL MNS returns error, exit"); -# exit; -#} - -####################################### -# step 4. Copy code to MNs -####################################### -my $codedir = $confhash{srcdir}; -send_msg("src code directory is $confhash{srcdir}"); - -##will modify to $rhppc64config{var}{MNIP} -my $mn = $management_node; -send_msg("mn is $mn"); - -#install dep for buildlocal -send_msg("begin to install build required packages on mn"); -$res = system("xdsh $mn yum install -y rpm-build perl-Time-HiRes perl-DBI createrepo"); - - -#need to copy /etc/hosts to mn -send_msg("copy /etc/hosts to mn"); -system("scp /etc/hosts $mn:/etc"); - -send_msg("begin to copy code"); -$res = system("scp -r $codedir root\@$mn:/"); -if ($res != 0){ - send_msg("code copy failed"); - exit 1; -} - - -####################################### -# step 5. Build xcat code in MNs -####################################### -#for temp usage -send_msg("========= began build xcat on mn ========"); -#will changed /code/xcat-core to $confkeys{srcdir} -$res = system("xdsh $mn /xcat-core/buildlocal.sh CURDIR=/xcat-core"); -if ($res != 0){ - send_msg("build failed on mn"); - exit 1; - } - -send_msg("====================build done============================"); - -sleep 20; - - -####################################### -# step 6. Read xCAT MN's configuration -####################################### -send_msg("begin read configuration file for mn"); -mkdir $resultdir unless -d $resultdir; -$timestamp = `date +"%Y%m%d%H%M%S"`; -my @osname = &runcmd("uname -a"); -#if ( $osname [0] =~ /^Linux\s*/ && -f "/etc/redhat-release" && $osname [0] =~ /ppc64/){ - # print "ppc64 redhat env\n"; - # $os="rhels6.4"; - # $arch="ppc64"; - #print "os is $os,arch is $arch\n"; - $res = &config_rhppc64(); +$res = git_update(); if ($res) { - send_msg("CONFIGURE MN returns error, exit"); - exit; + send_msg("GIT UPDATE returns error, exit"); + exit 1; } -#} - -send_msg("step 6 : reading mn configuration done====="); - ####################################### -# step 7. Genrate local configuration file for xcattest -# Do test -# Write log +# begin child process, until return log ####################################### -# step 7.1 Install xcat and init mn -send_msg("began to install xCAT and initialize mn"); -$res = &init; -if ($res != 0){ - exit; -} - - -$res = &do_test; -if ($res) { - send_msg("DO TEST returns error, exit"); - exit; -} +my @mns; +pipe CREAD,PWRITE; +foreach my $mn (@mns) { + my $pid = fork(); + if ( !defined($pid) ) { + send_msg("Fork error: $!"); + exit 1; + } elsif ( $pid == 0 ) { # child process + close CREAD; + ####################################### + # step 3. Install MNs, + ####################################### + #$res = mn_install(); + #if ($res) { + # send_msg("INSTALL MNS returns error, exit"); + # exit 1; + #} + ####################################### + # step 4. Copy code to MNs + ####################################### + $res = copy_code(); + if ($res) { + send_msg("COPY CODE returns error, exit"); + exit 1; + } + ####################################### + # step 5. Build xcat code in MNs + ####################################### + $res = build_xcat($mn); + if ($res) { + send_msg("BUILD XCAT returns error, exit"); + exit 1; + } + ####################################### + # step 6. Read xCAT MN's configuration + ####################################### + $res = config_mn($mn); + if ($res) { + send_msg("CONFIGURE MN returns error, exit"); + exit 1; + } + ####################################### + # step 7. Genrate local configuration file for xcattest + # Do test + # Write log + ####################################### + $res = do_test(); + if ($res) { + send_msg("DO TEST returns error, exit"); + exit 1; + } + syswrite PWRITE,"$mn succeed\n"; + exit 0; + } # end of child process +} #end of foreach mn, begin parent process +close PWRITE; +my $time = time(); +while (1) { + while(){ + chomp; + my $result = $_; + if ($result =~ /(\w*) succeed/){ + $results{$1} = 1; + } + } + last if((keys %results) == @mns); + last if(time() - $time > 28800); #wait 8 hours at most +} ####################################### # step 8. process result ####################################### $res = pro_result(); if ($res) { send_msg("PROCESS RESULT returns error, exit"); - exit; + exit 1; } +exit 0; +