mirror of
https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
synced 2025-10-28 17:32:35 +00:00
207 lines
4.7 KiB
Perl
Executable File
207 lines
4.7 KiB
Perl
Executable File
#!/usr/bin/perl -w
|
|
|
|
# This program is used to load GUI tests (TR-398, Capacity, etc) from a file
|
|
# and configure it in the LANforge server. See gui/README.txt
|
|
# (C) 2020 Candela Technologies Inc.
|
|
#
|
|
#
|
|
|
|
use strict;
|
|
use warnings;
|
|
use diagnostics;
|
|
use Carp;
|
|
$SIG{ __DIE__ } = sub { Carp::confess( @_ ) };
|
|
$SIG{ __WARN__ } = sub { Carp::confess( @_ ) };
|
|
|
|
# Un-buffer output
|
|
$| = 1;
|
|
|
|
# use lib prepends to @INC, so put lower priority first
|
|
# This is before run-time, so cannot condition this with normal 'if' logic.
|
|
use lib '/home/lanforge/scripts';
|
|
use lib "../";
|
|
use lib "./";
|
|
|
|
use LANforge::Endpoint;
|
|
use LANforge::Port;
|
|
use LANforge::Utils;
|
|
use Net::Telnet ();
|
|
use Getopt::Long;
|
|
|
|
our $NA = 'NA';
|
|
our $NL = "\n";
|
|
|
|
# Default values for ye ole cmd-line args.
|
|
our $quiet = "yes";
|
|
our $test_type = "Plugin-Settings";
|
|
our $test_name = "";
|
|
our $file_name = "";
|
|
our $action = "show";
|
|
our $lfmgr_host = "localhost";
|
|
our $lfmgr_port = 4001;
|
|
|
|
########################################################################
|
|
# Nothing to configure below here, most likely.
|
|
########################################################################
|
|
|
|
our $usage = <<"__EndOfUsage__";
|
|
$0 [ --action {
|
|
show | set
|
|
} ]
|
|
[--file {data file name}]
|
|
[--test_name {test name or ALL}]
|
|
[--test_type {Plugin-Settings or other type or ALL}]
|
|
[--mgr {host-name | IP}]
|
|
[--mgr_port {ip port}]
|
|
[--quiet { yes | no }]
|
|
[--log_cli {1|filename}]
|
|
|
|
Example:
|
|
$0 --action set --test_name AP-Auto-ap-auto-32-64-dual --file test_configs/AP-Auto-ap-auto-32-64-dual.txt
|
|
__EndOfUsage__
|
|
|
|
my $i = 0;
|
|
my $cmd;
|
|
|
|
my $log_cli = "unset"; # use ENV{LOG_CLI} elsewhere
|
|
my $show_help = 0;
|
|
|
|
if (@ARGV < 2) {
|
|
print $usage;
|
|
exit 0;
|
|
}
|
|
|
|
our $debug = 0;
|
|
|
|
GetOptions
|
|
(
|
|
'action|a=s' => \$::action,
|
|
'file=s' => \$::file_name,
|
|
'test_name=s' => \$::test_name,
|
|
'test_type=s' => \$::test_type,
|
|
'debug|d' => \$::debug,
|
|
'help|h' => \$show_help,
|
|
'log_cli=s{0,1}' => \$log_cli,
|
|
'manager|mgr|m=s' => \$::lfmgr_host,
|
|
'lfmgr_port|mgr_port|port|p=i' => \$::lfmgr_port,
|
|
'quiet|q=s' => \$::quiet,
|
|
|
|
) || die("$::usage");
|
|
|
|
if ($show_help) {
|
|
print $usage;
|
|
exit 0;
|
|
}
|
|
|
|
use Data::Dumper;
|
|
|
|
if ($::debug) {
|
|
$ENV{DEBUG} = 1 if (!(defined $ENV{DEBUG}));
|
|
}
|
|
|
|
if ($::quiet eq "0") {
|
|
$::quiet = "no";
|
|
}
|
|
elsif ($::quiet eq "1") {
|
|
$::quiet = "yes";
|
|
}
|
|
|
|
if (defined $log_cli) {
|
|
if ($log_cli ne "unset") {
|
|
# here is how we reset the variable if it was used as a flag
|
|
if ($log_cli eq "") {
|
|
$ENV{'LOG_CLI'} = 1;
|
|
}
|
|
else {
|
|
$ENV{'LOG_CLI'} = $log_cli;
|
|
}
|
|
}
|
|
}
|
|
|
|
our @valid_actions = qw(show set);
|
|
|
|
if (! (grep {$_ eq $::action} @::valid_actions )) {
|
|
die("Invalid action: $::action\n$::usage\n");
|
|
}
|
|
if ($::quiet eq "1" ) {
|
|
$::quiet = "yes";
|
|
}
|
|
|
|
# Open connection to the LANforge server.
|
|
our $utils = new LANforge::Utils();
|
|
$::utils->connect($lfmgr_host, $lfmgr_port);
|
|
|
|
|
|
if ($::action eq "show") {
|
|
$cmd = "show_text_blob $test_type $test_name";
|
|
my $txt = $::utils->doCmd($cmd);
|
|
my @r = split(/\n/, $txt);
|
|
my $first = $r[0];
|
|
chomp($first);
|
|
if ($first =~ /.*::(.*)/) {
|
|
print "$1\n";
|
|
}
|
|
my $i;
|
|
for ($i = 1; $i<@r; $i++) {
|
|
my $ln = $r[$i];
|
|
chomp($ln);
|
|
if ($ln =~ /\s*>>RSLT.*/) {
|
|
# ignore
|
|
}
|
|
elsif ($ln =~ /\s*default\@btbits.*/) {
|
|
# ignore
|
|
}
|
|
else {
|
|
print "$ln\n";
|
|
}
|
|
}
|
|
}
|
|
elsif ($::action eq "set") {
|
|
if ($file_name eq "") {
|
|
print("ERROR: Must specify file name when doing the 'set' action\n");
|
|
exit(1);
|
|
}
|
|
|
|
my @cmds = `cat $file_name`;
|
|
if (@cmds == 0) {
|
|
print("ERROR: Could not read any lines from the file: $file_name\n");
|
|
exit(2);
|
|
}
|
|
|
|
# First clean out any old text blob.
|
|
$cmd = "rm_text_blob $test_type $test_name";
|
|
$::utils->doCmd($cmd);
|
|
|
|
# And add the new blob
|
|
for ($i = 0; $i<@cmds; $i++) {
|
|
my $ln = $cmds[$i];
|
|
chomp($ln);
|
|
|
|
# Skip blank lines
|
|
if ($ln eq "") {
|
|
next;
|
|
}
|
|
|
|
$cmd = "add_text_blob '$test_type' '$test_name' $ln";
|
|
print("$cmd\n");
|
|
if (($i % 25) != 0) {
|
|
$::utils->doCmd($cmd, 1); # send and do not wait for result
|
|
}
|
|
else {
|
|
$::utils->doCmd($cmd); # send and wait for result
|
|
}
|
|
}
|
|
|
|
# Wait until we complete processing of all cmds.
|
|
$cmd = "gossip __gossip_test__";
|
|
$::utils->doCmd($cmd, 0, "/__gossip_test__/");
|
|
}
|
|
else {
|
|
die("Unknown action: $::action\n$::usage\n");
|
|
}
|
|
|
|
exit(0);
|
|
|
|
# ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
|
|
# ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
|