2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2025-05-30 09:36:41 +00:00

enhance to better support the cases which have the same case name but with multiple implementation

This commit is contained in:
hu-weihua 2017-11-13 22:31:37 -05:00
parent de172212f1
commit b627f069f4

View File

@ -905,6 +905,9 @@ sub load_case {
foreach my $os (@newvalidoslist) {
if ($currentos =~ /$os/i) {
$valid = 1;
if(grep (/$case_ref->[$i]->{name}/,@{ $invalidcases{"noruncases"} })){
delete_item_from_array($case_ref->[$i]->{name}, $invalidcases{"noruncases"});
}
last;
}
}
@ -914,8 +917,10 @@ sub load_case {
$$case_name_index_map_ref{$case_ref->[$i]->{name}}=$case_name_index_map_bak{$case_ref->[$i]->{name}};
}else{
delete $$case_name_index_map_ref{$case_ref->[$i]->{name}};
if(! grep (/$case_ref->[$i]->{name}/,@{ $invalidcases{"noruncases"} })){
push @{ $invalidcases{"noruncases"} }, $case_ref->[$i]->{name};
}
}
push @{ $invalidcases{"noruncases"} }, $case_ref->[$i]->{name};
}
}
$newcmdstart = 0;
@ -935,7 +940,12 @@ sub load_case {
}
my $env_arch = "";
$env_arch = $config{var}{ARCH} if(exists($config{var}{ARCH}));
if(exists($config{var}{ARCH})){
$env_arch = $config{var}{ARCH};
}else{
$env_arch =`uname -m`;
chomp($env_arch);
}
if($env_arch =~ /ppc/i && $env_arch !~ /le|el/i){
$env_arch="ppc";
}elsif($env_arch =~ /ppc/i && $env_arch =~ /le|el/i){
@ -947,14 +957,19 @@ sub load_case {
my $valid = 0;
if ($case_arch eq $env_arch) {
$valid = 1;
if(grep (/$case_ref->[$i]->{name}/,@{ $invalidcases{"noruncases"} })){
delete_item_from_array($case_ref->[$i]->{name}, $invalidcases{"noruncases"});
}
}
unless ($valid) {
if(exists($case_name_index_map_bak{$case_ref->[$i]->{name}})){
$$case_name_index_map_ref{$case_ref->[$i]->{name}}=$case_name_index_map_bak{$case_ref->[$i]->{name}};
}else{
delete $$case_name_index_map_ref{$case_ref->[$i]->{name}};
if(! grep (/$case_ref->[$i]->{name}/,@{ $invalidcases{"noruncases"} })){
push @{ $invalidcases{"noruncases"} }, $case_ref->[$i]->{name};
}
}
push @{ $invalidcases{"noruncases"} }, $case_ref->[$i]->{name};
}
}
$newcmdstart = 0;
@ -966,14 +981,19 @@ sub load_case {
my $valid = 0;
if (exists ($config{var}{HCP}) && ($case_ref->[$i]->{hcp} =~ /$config{var}{HCP}/i)) {
$valid = 1;
if(grep (/$case_ref->[$i]->{name}/,@{ $invalidcases{"noruncases"} })){
delete_item_from_array($case_ref->[$i]->{name}, $invalidcases{"noruncases"});
}
}
unless ($valid) {
if(exists($case_name_index_map_bak{$case_ref->[$i]->{name}})){
$$case_name_index_map_ref{$case_ref->[$i]->{name}}=$case_name_index_map_bak{$case_ref->[$i]->{name}};
}else{
delete $$case_name_index_map_ref{$case_ref->[$i]->{name}};
if(! grep (/$case_ref->[$i]->{name}/,@{ $invalidcases{"noruncases"} })){
push @{ $invalidcases{"noruncases"} }, $case_ref->[$i]->{name};
}
}
push @{ $invalidcases{"noruncases"} }, $case_ref->[$i]->{name};
}
}
$newcmdstart = 0;
@ -1067,7 +1087,7 @@ sub load_case {
$caseerror = 2;
}
if ($invalidcases{"noruncases"}) {
if ($invalidcases{"noruncases"} && @{$invalidcases{"noruncases"}}) {
log_this($running_log_fd, "Unsuitable current environment:", @{ $invalidcases{"noruncases"} });
push @wrong_cases, @{ $invalidcases{"noruncases"} };
$caseerror = 2;
@ -1773,3 +1793,13 @@ sub update_miss_attr {
push @{$miss_attr_arr_ref}, "$case_name $org_str";
}
}
sub delete_item_from_array{
my $item = shift;
my $array_ref = shift;
my @tmp_arr=();
foreach (@$array_ref){
push @tmp_arr, $_ unless($_ eq $item);
}
@$array_ref = @tmp_arr;
}