mirror of
				https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
				synced 2025-10-30 18:27:53 +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);
 | |
| 
 | |
| # ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
 | |
| # ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
 | 
