mirror of
https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
synced 2025-11-01 03:07:56 +00:00
scripts: Improve gui automation scripts.
This commit is contained in:
178
lf_testmod.pl
Executable file
178
lf_testmod.pl
Executable file
@@ -0,0 +1,178 @@
|
||||
#!/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 $r = $::utils->doCmd($cmd);
|
||||
print $r;
|
||||
print "\n\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";
|
||||
$::utils->doCmd($cmd, 1); # send and do not wait for result
|
||||
}
|
||||
}
|
||||
else {
|
||||
die("Unknown action: $::action\n$::usage\n");
|
||||
}
|
||||
|
||||
exit(0);
|
||||
|
||||
# ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
|
||||
# ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
|
||||
Reference in New Issue
Block a user