script_test: splitting up tests in a more responsible way

This commit is contained in:
Jed Reynolds
2019-11-22 17:56:47 -08:00
parent 93d851800f
commit 0eaac34317

View File

@@ -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";
# #