From e421982a5982a8635fc71cdb9e508a4b03b658c2 Mon Sep 17 00:00:00 2001 From: hu-weihua Date: Mon, 14 Aug 2017 01:07:09 -0400 Subject: [PATCH] Modify depending on comments --- .../testcase/discovery/discovery_test | 108 ++++++++++-------- 1 file changed, 62 insertions(+), 46 deletions(-) diff --git a/xCAT-test/autotest/testcase/discovery/discovery_test b/xCAT-test/autotest/testcase/discovery/discovery_test index 26f9cf42e..217133953 100755 --- a/xCAT-test/autotest/testcase/discovery/discovery_test +++ b/xCAT-test/autotest/testcase/discovery/discovery_test @@ -15,7 +15,6 @@ my $discovery_mode = undef; my $discovery_target_node = undef; my $bmc_dynamic_ip_range = undef; -#my $node_dynamic_ip_range = undef; my $bmc_target_mac = undef; my $osimage = undef; my $bmc_discovery_only = 0; @@ -44,11 +43,19 @@ my $be_discovered_bmc_node; my $discovery_prodefine_node_name_in_automation = "discovery_prodefine_node_name_in_automation"; my @expected_attrs_for_bmc_discovery = ("mtm", "serial", "bmcusername", "bmcpassword", "bmc"); +my $expected_attrs_for_bmc_discovery_str = join(",", @expected_attrs_for_bmc_discovery); + my @expected_attrs_for_mtms_based_node_discovery = ("ip", "bmc", "mtm", "serial", "mgt", "cons", "netboot", "mac", "bmcusername", "bmcpassword"); +my $expected_attrs_for_mtms_based_node_discovery_str = join(",",@expected_attrs_for_mtms_based_node_discovery); + my @expected_attrs_for_switch_based_node_discovery = ("ip", "bmc", "mtm", "serial", "mgt", "cons", "netboot", "mac", "bmcusername", "bmcpassword", "switch", "switchport"); +my $expected_attrs_for_switch_based_node_discovery_str = join(",", @expected_attrs_for_switch_based_node_discovery); #----------------------usage-------------------- $::USAGE = "Usage: + + To test bmc discovery process, switch_based node discovery process or mtms_based node discovery process. + To get help: $program_name -h @@ -62,12 +69,18 @@ To test the whole process of switch_based node discovery $program_name --discovery_mode switch --discovery_target_node --bmc_dynamic_ip_range --osimage Options: - discovery_target_node: Required. The node planned to be discovered which must be definied in xcat DB ahead. + discovery_target_node: Required. The reference node planned to be discovered which must be definied in xcat DB ahead. bmc_dynamic_ip_range: Required. A valid dymanic ip range which has been configured in DHCP server and can offer service before invoking $program_name. The format of ip range is x.y1-y2.n1-n2.m1-m2 - discovery_mode: The mode of discovery. Valid mode are mtms, switch. - osimage: The image used to deploy on target node. - bmc_discovery_only: Just test bmc discovery process, not test node discovery process. + discovery_mode: The mode of discovery. Valid mode are mtms or switch. Used with option 'osimage'. Can not be used with 'bmc_discovery_only' at the same time. + osimage: The image used to deploy on target node. Used with option 'discovery_mode'. Can not be used with option 'bmc_discovery_only' at the same time. + bmc_discovery_only: Just test bmc discovery process, not test node discovery process. Can not be used with option 'osimage' or 'discovery_mode' at the same time. +Notes: + Up to now, only support one reference test node. + When preparing reference test node, below atrributes are required for each test scenario. + For only bmc discovery: $expected_attrs_for_bmc_discovery_str + For mtm_based node discovery: $expected_attrs_for_mtms_based_node_discovery_str + For switch_based node discovery: $expected_attrs_for_switch_based_node_discovery_str "; @@ -83,7 +96,7 @@ if ( "bmc_discovery_only" => \$bmc_discovery_only) ) { - print "[ERROR] Invalid usage.\n$::USAGE"; + print "[ERROR] Invalid usage.\n\n$::USAGE"; to_exit(1); } @@ -94,19 +107,25 @@ if ($needhelp) } unless(defined $discovery_target_node and defined $bmc_dynamic_ip_range){ - print "[ERROR] Missing option.\n$::USAGE"; + print "[ERROR] options 'discovery_target_node' and 'bmc_dynamic_ip_range' are required.\n\n$::USAGE"; to_exit(1); } -if (defined $discovery_mode) -{ - unless ($discovery_mode eq "mtms" || $discovery_mode eq "switch") { - print "[ERROR] Invalid value of option 'discovery_mode'\n$::USAGE"; +if($bmc_discovery_only){ + if($discovery_mode or $osimage){ + print "[ERROR] option 'bmc_discovery_only' can not be used with 'discovery_mode' or 'osimage' at the sametime\n\n$::USAGE"; to_exit(1); } - - unless($osimage){ - print "[ERROR] Missing option osimage.\n$::USAGE"; +}else{ + unless($discovery_mode and $osimage){ + print "[ERROR] options 'discovery_mode' and 'osimage' are necessary for testing node discovery process. Or use option 'bmc_discovery_only' to test bmc discovery\n\n$::USAGE"; + to_exit(1); + } +} + +if (defined $discovery_mode){ + unless ($discovery_mode eq "mtms" || $discovery_mode eq "switch") { + print "[ERROR] Invalid value of option 'discovery_mode'\n$::USAGE"; to_exit(1); } } @@ -116,26 +135,26 @@ $SIG{TERM} = $SIG{INT} = sub { }; print "----------------Check the configuration of test case itself----------------\n"; -$rst = check_test_case_self_conf($discovery_mode, $discovery_target_node, \@error); +$rst = check_test_case_self_conf(\@error); if ($rst) { print "To Check the configration of test case itself......[Failed]\n"; - dump_error(\@error); + dump_info(\@error); to_exit(1); } else { print "To Check the configration of test case itself......[pass]\n"; print "The discovery mode is $discovery_mode\n" if ($discovery_mode); print "The reference node is $discovery_target_node\n"; my @output = runcmd("lsdef $discovery_target_node"); - print "$_\n" foreach (@output); + dump_info(\@output); print "The reference bmc mac is $bmc_target_mac\n" if ($bmc_target_mac); print "The bmc dynamic ip range is $bmc_dynamic_ip_range\n" if ($bmc_dynamic_ip_range); } print "----------------To set up test environment for bmc discovery----------------\n"; -$rst = set_up_test_env_for_bmc_discovery(\@error); +$rst = reset_bmc_to_factory(\@error); if ($rst) { print "To set up test environment......[Failed]\n"; - dump_error(\@error); + dump_info(\@error); to_exit(1); } else { print "To set up test environment......[pass]\n"; @@ -147,13 +166,13 @@ print "----------------To discover BMC of $discovery_target_node --------------- $rst = bmc_discovery(\@error); if ($rst) { print "To discover BMC of $discovery_target_node......[Failed]\n"; - dump_error(\@error); + dump_info(\@error); to_exit(1); } else { print "To discover BMC of $discovery_target_node......[pass]\n"; print "The discovered BMC is $be_discovered_bmc_node\n"; my @output = runcmd("lsdef $be_discovered_bmc_node"); - print "$_\n" foreach (@output); + dump_info(\@output); } if ($bmc_discovery_only) { @@ -164,26 +183,26 @@ print "----------------To set up test environment for node discovery------------ $rst = set_up_test_env_for_node_discovery(\@error); if ($rst) { print "To set up test environment......[Failed]\n"; - dump_error(\@error); + dump_info(\@error); to_exit(1); } else { print "To set up test environment......[pass]\n"; print "The predefine node used to be discovered is $discovery_prodefine_node_name_in_automation\n"; my @output = runcmd("lsdef $discovery_prodefine_node_name_in_automation"); - print "$_\n" foreach (@output); + dump_info(\@output); } print "----------------To discover node $discovery_target_node ----------------\n"; $rst = node_discovery(\@error); if ($rst) { print "To discover node $discovery_prodefine_node_name_in_automation......[Failed]\n"; - dump_error(\@error); + dump_info(\@error); to_exit(1); } else { print "To discover node $discovery_prodefine_node_name_in_automation......[pass]\n"; print "The discovered node is $discovery_prodefine_node_name_in_automation\n"; my @output = runcmd("lsdef $discovery_prodefine_node_name_in_automation"); - print "$_\n" foreach (@output); + dump_info(\@output); } to_exit(0); @@ -198,15 +217,13 @@ to_exit(0); # Retrun code: #-------------------------------------------------------- sub check_test_case_self_conf { - my $discovery_mode = shift; - my $target_node = shift; my $error_ref = shift; @$error_ref = (); - $discovery_target_node_info{nodename} = $target_node; - my @output = runcmd("lsdef -l $target_node"); + $discovery_target_node_info{nodename} = $discovery_target_node; + my @output = runcmd("lsdef -l $discovery_target_node"); if ($::RUNCMD_RC) { - push @$error_ref, "The reference node $target_node is not defined in xcat database"; + push @$error_ref, "The reference node $discovery_target_node is not defined in xcat database"; } else { #backup original node definition @@ -235,7 +252,7 @@ sub check_test_case_self_conf { if (@missing_attrs) { my $missing_attrs_str = join(",", @missing_attrs); - push @$error_ref, "The reference node '$target_node' is missing '$missing_attrs_str' attribute"; + push @$error_ref, "The reference node '$discovery_target_node' is missing '$missing_attrs_str' attribute"; } } @@ -367,12 +384,12 @@ sub runcmd { #-------------------------------------------------------- -# Fuction name: dump_error +# Fuction name: dump_info # Description: # Atrributes: # Retrun code: #-------------------------------------------------------- -sub dump_error { +sub dump_info { my $error_ref = shift; foreach (@$error_ref) { print "$_\n"; @@ -380,13 +397,12 @@ sub dump_error { } #-------------------------------------------------------- -# Fuction name: set_up_test_env_for_bmc_discovery +# Fuction name: reset_bmc_to_factory # Description: # Atrributes: # Retrun code: #-------------------------------------------------------- -sub set_up_test_env_for_bmc_discovery { - my $error_ref = shift; +sub reset_bmc_to_factory { my @output; my $tmp_bmc_name; @@ -420,7 +436,7 @@ sub set_up_test_env_for_bmc_discovery { @output = runcmd("$cmd"); if ($::RUNCMD_RC) { print "[Failed]\n"; - dump_error(\@output); + dump_info(\@output); return 1; } else { print "[Successful]\n"; @@ -437,7 +453,6 @@ sub set_up_test_env_for_bmc_discovery { # Retrun code: #-------------------------------------------------------- sub set_up_test_env_for_node_discovery { - my $error_ref = shift; my @output; #To clear up history and predefine node @@ -474,7 +489,7 @@ sub set_up_test_env_for_node_discovery { @output = runcmd("$cmd"); if ($::RUNCMD_RC) { print "failed\n"; - dump_error(\@output); + dump_info(\@output); return 1; } else { print "successful\n"; @@ -602,7 +617,7 @@ sub node_discovery { my $error_ref = shift; my @output; - print "Boot target node $discovery_target_node, start discovery process\n"; + print "Boot target node $discovery_prodefine_node_name_in_automation, start discovery process\n"; my @cmds = ("rsetboot $be_discovered_bmc_node net", "rpower $be_discovered_bmc_node boot"); foreach my $cmd (@cmds) { @@ -615,6 +630,8 @@ sub node_discovery { } } + print "Waiting for node $discovery_prodefine_node_name_in_automation be discoveried\n"; + #suppose discovery process should get MAC address for predined node in 10 minuts my $find_me_succ = 0; my $mac_in_find_me; @@ -659,7 +676,7 @@ sub node_discovery { @output = runcmd("$cmd"); print "$_\n" foreach (@output); if ($::RUNCMD_RC) { - push @$error_ref, "Add getadapter into chain failed"; + push @$error_ref, "Add getadapter,bmcsetup,osimage into chain failed"; return 1; } } @@ -683,7 +700,7 @@ sub node_discovery { return 1; } print "getadapter obtain below adapter infomation\n"; - print "$_\n" foreach (@output); + dump_info(\@output); if (!(grep { /$discovery_target_node_info{mac}/i } @output)) { push @$error_ref, "The adapters information obtained by getadapter does not contain expected mac $discovery_target_node_info{mac}"; @@ -782,18 +799,17 @@ sub node_discovery { #-------------------------------------------------------- sub parse_dynamic_ip_range { my $original_dynamic_ip_str = shift; - my @ips = (); my @sec = split(/\./, $original_dynamic_ip_str); for (my $i = 0 ; $i <= $#sec ; $i++) { - $sec[$i] = "{$1,$2}" if ($sec[$i] =~ /(\d+)-(\d+)/); + $sec[$i] = "{$1..$2}" if ($sec[$i] =~ /(\d+)-(\d+)/); } my $str = join(".", @sec); my @output = runcmd("echo $str"); return split(/ /, $output[0]); -} +} #-------------------------------------------------------- -# Fuction name: parse_dynamic_ip_range +# Fuction name: calculate_bmc_info # Description: # Atrributes: # Retrun code: