mirror of
				https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
				synced 2025-10-31 10:48:02 +00:00 
			
		
		
		
	updates to DUT testing scripts
This commit is contained in:
		| @@ -74,6 +74,7 @@ sub json_request { | |||||||
| sub json_post { | sub json_post { | ||||||
|    my ($uri, $rh_data) = @_; |    my ($uri, $rh_data) = @_; | ||||||
|    my $url = xpand($uri); |    my $url = xpand($uri); | ||||||
|  |    print STDERR "URI $uri\n"; | ||||||
|    my $req = HTTP::Request->new("POST" => $url); |    my $req = HTTP::Request->new("POST" => $url); | ||||||
|    $req->header('Accept' => 'application/json'); |    $req->header('Accept' => 'application/json'); | ||||||
|    $req->header('Content-Type' => 'application/json; charset=UTF-8'); |    $req->header('Content-Type' => 'application/json; charset=UTF-8'); | ||||||
|   | |||||||
							
								
								
									
										191
									
								
								json/dut_test.pl
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										191
									
								
								json/dut_test.pl
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,191 @@ | |||||||
|  | #!/usr/bin/perl -w | ||||||
|  | use strict; | ||||||
|  | use warnings; | ||||||
|  | use diagnostics; | ||||||
|  | use Carp; | ||||||
|  | $SIG{ __DIE__  } = sub { Carp::confess( @_ ) }; | ||||||
|  | $SIG{ __WARN__ } = sub { Carp::confess( @_ ) }; | ||||||
|  |  | ||||||
|  | # Un-buffer output | ||||||
|  | $| = 1; | ||||||
|  | use Getopt::Long; | ||||||
|  | use JSON::XS; | ||||||
|  | use HTTP::Request; | ||||||
|  | use LWP; | ||||||
|  | use LWP::UserAgent; | ||||||
|  | use Data::Dumper; | ||||||
|  | use Time::HiRes qw(usleep); | ||||||
|  | use JSON; | ||||||
|  | use lib '/home/lanforge/scripts'; | ||||||
|  | use LANforge::JsonUtils qw(logg err json_request get_links_from get_thru json_post get_port_names flatten_list); | ||||||
|  |  | ||||||
|  | package main; | ||||||
|  | # Default values for ye ole cmd-line args. | ||||||
|  | our $Resource  = 1; | ||||||
|  | our $quiet     = "yes"; | ||||||
|  | our $Host      = "localhost"; | ||||||
|  | our $Port      = 8080; | ||||||
|  | our $HostUri   = "http://$Host:$Port"; | ||||||
|  | our $Web       = LWP::UserAgent->new; | ||||||
|  | our $Decoder   = JSON->new->utf8; | ||||||
|  | our $ssid; | ||||||
|  | our $security; | ||||||
|  | our $passphrase; | ||||||
|  |  | ||||||
|  | my $usage = qq("$0 --action {add|list|show|annotate|del} | ||||||
|  |    # list: lists all device names | ||||||
|  |    # show: shows everything about device | ||||||
|  |    # annotate: updates the note for the device | ||||||
|  |    --note {"double quoted stuff"} | ||||||
|  |    # del: | ||||||
|  |    --name {Device Under Test name} | ||||||
|  |    # when adding, use: | ||||||
|  |    --name {Device Under Test name} | ||||||
|  |    --img {picture name: c:\\stuff.png} | ||||||
|  |    --sw_version {text} | ||||||
|  |    --hw_version {text} | ||||||
|  |    --mgt_ip {1.1.1.1} | ||||||
|  |    --model_num {blanktronix345} | ||||||
|  |    --serial_num {asdf1234} | ||||||
|  |    --serial_port {1.2.ttyS0} | ||||||
|  |    --api_id {0-127} | ||||||
|  |    --lan_port {1.1.eth1} | ||||||
|  |    --wan_port {1.1.eth2} | ||||||
|  |    --ssid1 --passwd1 --ssid2 --passwd2 --ssid3 --passwd3 {stuff} | ||||||
|  | ); | ||||||
|  |  | ||||||
|  |  | ||||||
|  | my $action; | ||||||
|  | my $name = ""; | ||||||
|  | my $notes = ""; | ||||||
|  | my $img_file = ""; | ||||||
|  | my $sw_version  = ""; | ||||||
|  | my $hw_version = ""; | ||||||
|  | my $mgt_ip  = ""; | ||||||
|  | my $model_num  = ""; | ||||||
|  | my $serial_num  = ""; | ||||||
|  | my $serial_port  = ""; | ||||||
|  | my $api_id = ""; | ||||||
|  | my $lan_port = ""; | ||||||
|  | my $wan_port = ""; | ||||||
|  | my $ssid1 = ""; | ||||||
|  | my $ssid2 = ""; | ||||||
|  | my $ssid3 = ""; | ||||||
|  | my $passwd1 = ""; | ||||||
|  | my $passwd2 = ""; | ||||||
|  | my $passwd3 = ""; | ||||||
|  |  | ||||||
|  | my $help; | ||||||
|  | ## | ||||||
|  | ##    M A I N | ||||||
|  | ## | ||||||
|  |  | ||||||
|  | GetOptions(   'host=s'          => \$::Host, | ||||||
|  |    'action=s'        => \$action, | ||||||
|  |    'name=s'          => \$name, | ||||||
|  |    'notes=s'         => \$notes, | ||||||
|  |    'img_file=s'      => \$img_file, | ||||||
|  |    'sw_version=s'    => \$sw_version, | ||||||
|  |    'hw_version=s'    => \$hw_version, | ||||||
|  |    'mgt_ip=s'        => \$mgt_ip, | ||||||
|  |    'model_num=s'     => \$model_num, | ||||||
|  |    'serial_num=s'    => \$serial_num, | ||||||
|  |    'serial_port=s'   => \$serial_port, | ||||||
|  |    'api_id=s'        => \$api_id, | ||||||
|  |    'lan_port=s'      => \$lan_port, | ||||||
|  |    'wan_port=s'      => \$wan_port, | ||||||
|  |    'ssid1=s'         => \$ssid1, | ||||||
|  |    'ssid2=s'         => \$ssid2, | ||||||
|  |    'ssid3=s'         => \$ssid3, | ||||||
|  |    'passwd1=s'       => \$passwd1, | ||||||
|  |    'passwd2=s'       => \$passwd2, | ||||||
|  |    'passwd3=s'       => \$passwd3, | ||||||
|  |    'h|help'          => \$help) | ||||||
|  | || (print($usage) && exit(1)); | ||||||
|  |  | ||||||
|  | if ($help) { | ||||||
|  |    print $usage; | ||||||
|  |    exit 0; | ||||||
|  | } | ||||||
|  | if (!defined $action) { | ||||||
|  |    print $usage; | ||||||
|  |    exit 1; | ||||||
|  | } | ||||||
|  | $::HostUri = "http://$Host:$Port"; | ||||||
|  | my $DEBUGURI = "?__debug=1"; | ||||||
|  | my $uri_args = ""; # ="$DEBUG_URI"; | ||||||
|  |  | ||||||
|  | our $URI = "$::HostUri/dut"; | ||||||
|  | our $Post_URI = "$::HostUri/cli-json"; | ||||||
|  |  | ||||||
|  | if ($action eq "list") { | ||||||
|  |    my $uri = "$::URI/list"; | ||||||
|  |    my $rh = json_request($uri); | ||||||
|  |    flatten_list($rh, 'duts'); | ||||||
|  |    for my $rh_dut (sort keys %{$rh->{'flat_list'}}) { | ||||||
|  |       print "$rh_dut\n"; | ||||||
|  |    } | ||||||
|  |    exit 0; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | if ($action eq "show") { | ||||||
|  |    die ("show what DUT? use --name:\n$usage") | ||||||
|  |       unless (defined $name && $name ne ""); | ||||||
|  |    my $uri = "$::URI/$name"; | ||||||
|  |    my $rh = json_request($uri); | ||||||
|  |    print Dumper($rh->{'dut'}); | ||||||
|  |    die("unable to find DUT $name") | ||||||
|  |       unless(defined $rh->{'dut'}); | ||||||
|  |    print Dumper($rh->{'dut'}); | ||||||
|  |    exit 0; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | my $varnames = q(name img_file sw_version hw_version mgt_ip model_num serial_num serial_port api_id lan_port wan_port ssid1 ssid2 ssid3 passwd1 passwd2 passwd3); | ||||||
|  |  | ||||||
|  | if ($action eq "add") { | ||||||
|  |    die ("show what DUT? use --name:\n$usage") | ||||||
|  |       unless (defined $name && $name ne ""); | ||||||
|  |    my $rh_post = {}; | ||||||
|  |    for my $k (sort split(' ', $varnames)) { | ||||||
|  |       my $v = eval("return \$$k;"); | ||||||
|  |       if ((defined $v) && ($v ne "")) { | ||||||
|  |          $rh_post->{$k} = $v ; | ||||||
|  |       } | ||||||
|  |       else { | ||||||
|  |          $rh_post->{$k} = "NA"; | ||||||
|  |       } | ||||||
|  |    } | ||||||
|  |    print Dumper($rh_post); | ||||||
|  |    my $post_uri = "$::Post_URI/add_dut$DEBUGURI"; | ||||||
|  |    json_post($post_uri, $rh_post); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | if ($action eq "annotate") { | ||||||
|  |    die ("show what DUT? use --name:\n$usage") | ||||||
|  |       unless (defined $name && $name ne ""); | ||||||
|  |    die ("what notes? use --notes:\n$usage") | ||||||
|  |       unless (defined $notes); | ||||||
|  |  | ||||||
|  |    my $rh_post = {}; | ||||||
|  |    my @note_lines=(); | ||||||
|  |    if ($notes eq "") { | ||||||
|  |       $notes = '[BLANK]'; | ||||||
|  |    } | ||||||
|  |     @note_lines = split(/\r?\n/, $notes); | ||||||
|  |  | ||||||
|  |     if ($note_lines[0] ne "[BLANK]") { | ||||||
|  |        unshift(@note_lines, "[BLANK]"); | ||||||
|  |     } | ||||||
|  |     print Dumper(\@note_lines); | ||||||
|  |     my $post_uri = "$::Post_URI/add_dut_notes${DEBUGURI}"; | ||||||
|  |     for my $note_line (@note_lines) { | ||||||
|  |        print Dumper(\$note_line); | ||||||
|  |        my $rh = { | ||||||
|  |           'dut' => $name, | ||||||
|  |           'text' => $note_line | ||||||
|  |        }; | ||||||
|  |        json_post($post_uri, $rh); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | # | ||||||
		Reference in New Issue
	
	Block a user
	 Jed Reynolds
					Jed Reynolds