From c6745a3dd54cf4414cc5a391bb6059d68b9ed0be Mon Sep 17 00:00:00 2001 From: robin2008 Date: Wed, 20 Jun 2018 09:13:29 +0800 Subject: [PATCH] enhance xcattest for better debug new case and acquire attribute not only for node: - to support customize the testcase dir with environment variable XCATTEST_CASEDIR - to allow to print more debug info with environment variable XCATTEST_DEBUG - to add a new func to get general object attribute (__GETOBJECTATTR(...)__) --- xCAT-test/xcattest | 52 +++++++++++++++++++++++++++++++++++----------- 1 file changed, 40 insertions(+), 12 deletions(-) diff --git a/xCAT-test/xcattest b/xCAT-test/xcattest index cbbe21220..6ef98f6cd 100755 --- a/xCAT-test/xcattest +++ b/xCAT-test/xcattest @@ -21,6 +21,7 @@ my $program_name = basename($0); my $rootdir = "$prpgram_path/../share/xcat/tools/autotest"; my $casedir = "$rootdir/testcase/"; +$casedir = $ENV{'XCATTEST_CASEDIR'} if exists $ENV{'XCATTEST_CASEDIR'}; my $bundledir = "$rootdir/bundle/"; my $resultdir = "$rootdir/result/"; my $rst = 0; @@ -56,6 +57,8 @@ my $running_log_fd = undef my $running_log_name = undef; my $failed_log_name = undef; my $performance_log_name = undef; +my $xcatdebug = 0; +$xcatdebug = 1 if exists $ENV{'XCATTEST_DEBUG'}; #--------------command line attrbutes-------------- my $needhelp = 0; @@ -177,8 +180,11 @@ if ($rst) { to_exit(1); } -#print "----case to be run-----------------\n"; -#print Dumper \@cases_to_be_run; + +if ($xcatdebug) { + print "----case to be run-----------------\n"; + print Dumper \@cases_to_be_run; +} if ($list) { if ($list eq "caselist") { @@ -340,12 +346,14 @@ if ($rst && $rst < 2) { to_exit(1); } -#print "=====Dumper loaded cases=======\n"; -#print Dumper \@cases; -#print "=====Dumper case_name_index_map=======================\n"; -#print Dumper \%case_name_index_map; -#print "=====Dumper cases to be run=====\n"; -#print Dumper \@cases_to_be_run; +if ($xcatdebug) { + print "=====Dumper loaded cases=======\n"; + print Dumper \@cases; + print "=====Dumper case_name_index_map=======================\n"; + print Dumper \%case_name_index_map; + print "=====Dumper cases to be run=====\n"; + print Dumper \@cases_to_be_run; +} unless (@cases_to_be_run) { to_exit(1); @@ -1647,7 +1655,7 @@ sub runscript { #-------------------------------------------------------- # Fuction name: getnodeattr -# Description: get the value of node attribute form current environment +# Description: get the value of node attribute from current environment # Atrributes: # Retrun code: #-------------------------------------------------------- @@ -1655,11 +1663,26 @@ sub getnodeattr { my $node = shift; my $attr = shift; my $maxtry = 40; + return getobjectattr('node', $node, $attr, $maxtry); +} + +#-------------------------------------------------------- +# Fuction name: getobjectattr +# Description: get the value of object attribute from current DB +# Atrributes: +# Retrun code: +#-------------------------------------------------------- +sub getobjectattr { + my $objtype = shift; + my $objname = shift; + my $attr = shift; + my $maxtry = shift; + $maxtry = 1 unless defined($maxtry) and $maxtry > 0; foreach my $try (0 .. $maxtry) { - my @output = runcmd("lsdef -t node -o $node -i $attr"); + my @output = runcmd("lsdef -t $objtype -o $objname -i $attr"); if ($::RUNCMD_RC == 0) { foreach my $line (@output) { - if ($line =~ /$attr=(\w.+)/) { + if ($line =~ /$attr=(\S.+)/) { return $1; } } @@ -1813,7 +1836,7 @@ sub getfunc { my $str = shift; - while ($str =~ /__(\w+)\(([\s\,\w\$]*)\)__/) { + while ($str =~ /__(\w+)\(([\s\,\w\$\-\.]*)\)__/) { my $func = $1; my $parameter = $2; my $value = undef; @@ -1827,6 +1850,11 @@ sub getfunc if ($value eq "Unknown") { $value = ''; } + } elsif ($func eq "GETOBJECTATTR") { + $value = getobjectattr(@para); + if ($value eq "Unknown") { + $value = ''; + } } elsif ($func eq "INC") { $value = $para[0] + 1; } elsif ($func eq "GETTABLEVALUE") {