mirror of
				https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
				synced 2025-10-31 18:58:01 +00:00 
			
		
		
		
	script_test: splitting up tests in a more responsible way
This commit is contained in:
		
							
								
								
									
										147
									
								
								script_test.pl
									
									
									
									
									
								
							
							
						
						
									
										147
									
								
								script_test.pl
									
									
									
									
									
								
							| @@ -21,11 +21,13 @@ use LWP::UserAgent; | |||||||
| use JSON; | use JSON; | ||||||
| use Data::Dumper; | use Data::Dumper; | ||||||
|  |  | ||||||
|  | # Ubuntu: libtest2-suite-perl | ||||||
|  |  | ||||||
| use LANforge::Utils; | use LANforge::Utils; | ||||||
| use LANforge::Port; | use LANforge::Port; | ||||||
| use LANforge::Endpoint; | use LANforge::Endpoint; | ||||||
| use LANforge::JsonUtils qw(err logg xpand json_request get_links_from get_thru json_post get_port_names flatten_list); | use LANforge::JsonUtils qw(err logg xpand json_request get_links_from get_thru json_post get_port_names flatten_list); | ||||||
|  | use LANforge::Test qw(new test OK FAIL); | ||||||
| package main; | package main; | ||||||
| our $LFUtils; | our $LFUtils; | ||||||
| our $lfmgr_host       = "ct524-debbie"; | our $lfmgr_host       = "ct524-debbie"; | ||||||
| @@ -39,7 +41,7 @@ our $lf_mgr           = undef; | |||||||
| our $HostUri          = undef; | our $HostUri          = undef; | ||||||
| our $Web              = undef; | our $Web              = undef; | ||||||
| our $Decoder          = undef; | our $Decoder          = undef; | ||||||
| our @test_errs        = (); | #our @test_errs        = (); | ||||||
| my $help              = 0; | my $help              = 0; | ||||||
| my $list              = 0; | my $list              = 0; | ||||||
| my $usage = qq($0 --mgr {lanforge hostname/IP} | my $usage = qq($0 --mgr {lanforge hostname/IP} | ||||||
| @@ -64,33 +66,21 @@ if ($help) { | |||||||
|   print($usage) && exit(0); |   print($usage) && exit(0); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | our %tests = (); | ||||||
|  |  | ||||||
| $lf_mgr = $lfmgr_host; | $lf_mgr = $lfmgr_host; | ||||||
| $::HostUri   = "http://$lf_mgr:$http_port"; | $::HostUri   = "http://$lf_mgr:$http_port"; | ||||||
| $::Web       = LWP::UserAgent->new; | $::Web       = LWP::UserAgent->new; | ||||||
| $::Decoder   = JSON->new->utf8; | $::Decoder   = JSON->new->utf8; | ||||||
|  |  | ||||||
| sub test_err { | my $telnet = new Net::Telnet(Prompt => '/default\@btbits\>\>/', | ||||||
|   for my $e (@_) { |  | ||||||
|     my $ref = "".(caller(1))[3].":".(caller(1))[2].""; |  | ||||||
|      |  | ||||||
|     push (@test_errs, "$ref: $e"); |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| #---------------------------------------------------------------------- |  | ||||||
| #   Tests |  | ||||||
| #---------------------------------------------------------------------- |  | ||||||
|  |  | ||||||
| sub t_create_telnet { |  | ||||||
|   my $rv = 0; |  | ||||||
|   my $t = new Net::Telnet(Prompt => '/default\@btbits\>\>/', |  | ||||||
|                        Timeout => 20); |                        Timeout => 20); | ||||||
|   $t->open(Host    => $::lf_mgr, | $telnet->open(Host    => $::lf_mgr, | ||||||
|         Port    => $::lfmgr_port, |         Port    => $::lfmgr_port, | ||||||
|         Timeout => 10); |         Timeout => 10); | ||||||
|   $t->waitfor("/btbits\>\>/"); | $telnet->waitfor("/btbits\>\>/"); | ||||||
| $::LFUtils = new LANforge::Utils(); | $::LFUtils = new LANforge::Utils(); | ||||||
|   $::LFUtils->telnet($t);         # Set our telnet object. | $::LFUtils->telnet($telnet);         # Set our telnet object. | ||||||
| if ($::LFUtils->isQuiet()) { | if ($::LFUtils->isQuiet()) { | ||||||
|  if (defined $ENV{'LOG_CLI'} && $ENV{'LOG_CLI'} ne "") { |  if (defined $ENV{'LOG_CLI'} && $ENV{'LOG_CLI'} ne "") { | ||||||
|    $::LFUtils->cli_send_silent(0); |    $::LFUtils->cli_send_silent(0); | ||||||
| @@ -104,8 +94,17 @@ sub t_create_telnet { | |||||||
|  $::LFUtils->cli_send_silent(0); # Show input to telnet |  $::LFUtils->cli_send_silent(0); # Show input to telnet | ||||||
|  $::LFUtils->cli_rcv_silent(0);  # Show output from telnet |  $::LFUtils->cli_rcv_silent(0);  # Show output from telnet | ||||||
| } | } | ||||||
|  | #---------------------------------------------------------------------- | ||||||
|  | #   Tests | ||||||
|  | #---------------------------------------------------------------------- | ||||||
|  |  | ||||||
|  | $tests{'t_create_telnet'} = LANforge::Test->new(Name=>"t_create_telnet", | ||||||
|  |    Desc=>"Create telnet connection", | ||||||
|  |    Test=>sub { | ||||||
|  |      my $rv = 0; | ||||||
|  |  | ||||||
|      $rv = 1; |      $rv = 1; | ||||||
| } |    }); | ||||||
|  |  | ||||||
| #---------------------------------------------------------------------- | #---------------------------------------------------------------------- | ||||||
| # multiple ways of querying a port: | # multiple ways of querying a port: | ||||||
| @@ -114,65 +113,67 @@ sub t_create_telnet { | |||||||
| # * JSON | # * JSON | ||||||
| # * shell out to perl script | # * shell out to perl script | ||||||
| #---------------------------------------------------------------------- | #---------------------------------------------------------------------- | ||||||
|  | $tests{'query_port_cli'} = LANforge::Test->new(Name=>'query_port_cli', | ||||||
| sub t_query_port { |    Desc=>'query port using cli', Test => sub{ | ||||||
|   my $expected = 3; |      my $self = pop; | ||||||
|   my $rv = 0; |  | ||||||
|   ## test CLI |  | ||||||
|      my $cmd = $::LFUtils->fmt_cmd("nc_show_port", 1, $::resource, "eth0"); |      my $cmd = $::LFUtils->fmt_cmd("nc_show_port", 1, $::resource, "eth0"); | ||||||
|      my $res = $::LFUtils->doAsyncCmd($cmd); |      my $res = $::LFUtils->doAsyncCmd($cmd); | ||||||
|   #die "Insufficient results $!" if (@res < 5); |  | ||||||
|      my ($port_ip) = $res =~ / IP:\s+([^ ]+) /; |      my ($port_ip) = $res =~ / IP:\s+([^ ]+) /; | ||||||
|   if ((defined $port_ip) && length($port_ip) >= 7) { |      return $::OK if ((defined $port_ip) && (length($port_ip) >= 7)); | ||||||
|     $rv++; |  | ||||||
|   } |      $self->test_err("port_ip [$port_ip] incorrect\n"); | ||||||
|   else { |      return $::FAIL; | ||||||
|     test_err("port_ip [$port_ip] incorrect\n"); |  | ||||||
|    } |    } | ||||||
|  |    ); | ||||||
|  |  | ||||||
| ## test LANforge::Port | ## test LANforge::Port | ||||||
|  | $tests{'query_port_class_port'} = LANforge::Test->new(Name=>'query_port_class_port', | ||||||
|  |    Desc=>'query port using class Port', Test=>sub { | ||||||
|      my $lf_port = LANforge::Port->new; |      my $lf_port = LANforge::Port->new; | ||||||
|      $lf_port->decode($res); |      $lf_port->decode($res); | ||||||
|   if ($lf_port->ip_addr() eq $port_ip) { |      return $::OK if ($lf_port->ip_addr() eq $port_ip); | ||||||
|     $rv++; |      $self->test_err( "port_ip ".$lf_port->ip_addr()." doesn't match above $port_ip"); | ||||||
|   } |      return $::FAIL; | ||||||
|   else { |    }); | ||||||
|     test_err( "port_ip ".$lf_port->ip_addr()." doesn't match above $port_ip"); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
| ## test JsonUtils/port | ## test JsonUtils/port | ||||||
|  | $tests{'query_port_jsonutils'} = LANforge::Test->new(Name=>'query_port_jsonutils', | ||||||
|  |    Desc=>'query port using jsonutils', Test=>sub { | ||||||
|       print "http://".$::lf_mgr.":8080/port/1/1/eth0 \n"; |       print "http://".$::lf_mgr.":8080/port/1/1/eth0 \n"; | ||||||
|       my $port_json = json_request("http://".$::lf_mgr.":8080/port/1/1/eth0"); |       my $port_json = json_request("http://".$::lf_mgr.":8080/port/1/1/eth0"); | ||||||
|  |       return $::OK if ($port_json->{IP} eq $port_ip); | ||||||
|  |       return $::FAIL; | ||||||
|  |    }); | ||||||
|  |  | ||||||
| ## test lf_portmod.pl | ## test lf_portmod.pl | ||||||
|  | $tests{'query_port_lfportmod'} = LANforge::Test->new(Name=>'query_port_lfportmod', | ||||||
|  |    Desc=>'query port using lfportmod', Test=>sub { | ||||||
|       print "Trying: ./lf_portmod.pl --manager $::lf_mgr --card $::resource --port_name eth0 --show_port\n"; |       print "Trying: ./lf_portmod.pl --manager $::lf_mgr --card $::resource --port_name eth0 --show_port\n"; | ||||||
|       $res = `./lf_portmod.pl --manager $::lf_mgr --card $::resource --port_name eth0 --show_port`; |       $res = `./lf_portmod.pl --manager $::lf_mgr --card $::resource --port_name eth0 --show_port`; | ||||||
|   if ($res) { |       if (!(defined $res)) { | ||||||
|  |          $self->test_err("Insufficient output from lf_portmod.pl.\n"); | ||||||
|  |          return $::FAIL; | ||||||
|  |       } | ||||||
|       my ($port_ip2) = $res =~ / IP:\s+([^ ]+) /; |       my ($port_ip2) = $res =~ / IP:\s+([^ ]+) /; | ||||||
|     if ((defined $port_ip2) && length($port_ip2) >= 7) { |       return $::OK if ((defined $port_ip2) && length($port_ip2) >= 7); | ||||||
|       $rv++; |       $self->test_err("port_ip [$port_ip] incorrect\n"); | ||||||
|     } |       return $::FAIL; | ||||||
|     else { |    }); | ||||||
|       test_err("port_ip [$port_ip] incorrect\n"); |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
|   else { |  | ||||||
|     test_err("Insufficient output from lf_portmod.pl.\n"); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   if ($rv == $expected) { |  | ||||||
|     return 1; |  | ||||||
|   } |  | ||||||
|   test_err("Insuffient tests run"); |  | ||||||
|   return 0; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| sub t_set_port_up { | $tests{'port_up_cli'} = LANforge::Test->new(Name=>'t_set_port_up', | ||||||
|   ## test CLI |    Desc=>'set port up, cli', Test=>sub { | ||||||
|  |      my $cmd = $::LFUtils->fmt_cmd("set_port", 1, $::resource, "eth1"); | ||||||
|  |      my $res = $::LFUtils->doAsyncCmd($cmd); | ||||||
|  |    }); | ||||||
|  |  | ||||||
|  | $tests{'port_up_class_port'} = LANforge::Test->new(Name=>'t_set_port_up', | ||||||
|  |    Desc=>'set port up, cli', Test=>sub { | ||||||
|   ## test LANforge::Port |   ## test LANforge::Port | ||||||
|   ## test JsonUtils/port |   ## test JsonUtils/port | ||||||
|   ## test lf_portmod.pl |   ## test lf_portmod.pl | ||||||
| } |    }); | ||||||
|  |  | ||||||
| sub t_set_port_down { | sub t_set_port_down { | ||||||
|   ## test CLI |   ## test CLI | ||||||
| @@ -290,17 +291,17 @@ sub t_rm_sta_L3 { | |||||||
| sub RunTests { | sub RunTests { | ||||||
|   my $rf_test = undef; |   my $rf_test = undef; | ||||||
|  |  | ||||||
|   if (@specific_tests > 0) { |   #if (@specific_tests > 0) { | ||||||
|       for my $test_name (sort @specific_tests) { |   #    for my $test_name (sort @specific_tests) { | ||||||
|           if (defined &{$::test_subs{$test_name}}) { |   #        if (defined &{$::test_subs{$test_name}}) { | ||||||
|             test_err("Failed on $test_name") unless &{$::test_subs{$test_name}}(); |   #          test_err("Failed on $test_name") unless &{$::test_subs{$test_name}}(); | ||||||
|           } |   #        } | ||||||
|           else { |   #        else { | ||||||
|             test_err( "test $test_name not found"); |   #          test_err( "test $test_name not found"); | ||||||
|           } |   #        } | ||||||
|       } |   #    } | ||||||
|   } |   #} | ||||||
|   else { |   #else { | ||||||
|      for my $test_name (sort keys %::test_subs) { |      for my $test_name (sort keys %::test_subs) { | ||||||
|        if (defined &{$::test_subs{$test_name}}) { |        if (defined &{$::test_subs{$test_name}}) { | ||||||
|          test_err("Failed on $test_name") |          test_err("Failed on $test_name") | ||||||
| @@ -310,7 +311,7 @@ sub RunTests { | |||||||
|          test_err("test $test_name not found"); |          test_err("test $test_name not found"); | ||||||
|        } |        } | ||||||
|      } |      } | ||||||
|   } |   #} | ||||||
| } | } | ||||||
|  |  | ||||||
| # ====== ====== ====== ====== ====== ====== ====== ====== | # ====== ====== ====== ====== ====== ====== ====== ====== | ||||||
| @@ -332,9 +333,9 @@ if ($list) { | |||||||
| else { | else { | ||||||
|   RunTests(); |   RunTests(); | ||||||
| } | } | ||||||
| if (@test_errs > 1) { | #if (@test_errs > 1) { | ||||||
|   print "Test errors:\n"; | #  print "Test errors:\n"; | ||||||
|   print join("\n", @::test_errs); | #  print join("\n", @::test_errs); | ||||||
| } | #} | ||||||
| print "\ndone\n"; | print "\ndone\n"; | ||||||
| # | # | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Jed Reynolds
					Jed Reynolds