mirror of
				https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
				synced 2025-10-31 02:38:03 +00:00 
			
		
		
		
	Add basic HTML page generation for automated test bed run.
This commit is contained in:
		| @@ -166,12 +166,12 @@ sleep 20 | |||||||
| # Tell GUI to load and build the scenario | # Tell GUI to load and build the scenario | ||||||
| ../lf_gui_cmd.pl --manager $GMANAGER --port $GMPORT --scenario $SCENARIO | ../lf_gui_cmd.pl --manager $GMANAGER --port $GMPORT --scenario $SCENARIO | ||||||
|  |  | ||||||
| # Clean out temp report directory | # Clean out temp report directory on local system and remote | ||||||
| if [ -d $RPT_TMPDIR ] | if [ -d $RPT_TMPDIR ] | ||||||
| then | then | ||||||
|     rm -fr $RPT_TMPDIR/* |     rm -fr $RPT_TMPDIR/* | ||||||
| fi | fi | ||||||
|  | ssh lanforge\@GMANAGER "test -d $RPT_TMPDIR && rm -fr $RPT_TMPDIR"; | ||||||
|  |  | ||||||
| # Do dataplane pkt size test | # Do dataplane pkt size test | ||||||
| echo "Checking if we should run Dataplane packet size test." | echo "Checking if we should run Dataplane packet size test." | ||||||
| @@ -325,5 +325,7 @@ then | |||||||
|     mv $MY_TMPDIR/dut_console_log.txt $RSLTS_DIR/ |     mv $MY_TMPDIR/dut_console_log.txt $RSLTS_DIR/ | ||||||
| fi | fi | ||||||
|  |  | ||||||
|  | ./lf_gui_report_summary.pl --title "TIP Test Bed Results" --dir $RSLTS_DIR < index_template.html  > $RSLTS_DIR/index.html | ||||||
|  |  | ||||||
| echo "Done with regression test." | echo "Done with regression test." | ||||||
| echo "Results-Dir: $RSLTS_DIR" | echo "Results-Dir: $RSLTS_DIR" | ||||||
|   | |||||||
							
								
								
									
										55
									
								
								gui/index_template.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								gui/index_template.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,55 @@ | |||||||
|  | <!DOCTYPE html> | ||||||
|  | <html> | ||||||
|  |   <head> | ||||||
|  |     <meta charset='utf-8' /> | ||||||
|  |     <meta name='viewport' content='width=device-width, initial-scale=1' /> | ||||||
|  |     <title>___TITLE___</title>    <link rel='shortcut icon' href='canvil.ico' type='image/x-icon' /> | ||||||
|  |     <link rel='stylesheet' href='report.css' /> | ||||||
|  |     <link rel='stylesheet' href='custom.css' /> | ||||||
|  |     <style> | ||||||
|  |      pre { | ||||||
|  |         overflow: auto; | ||||||
|  |      } | ||||||
|  |      img { | ||||||
|  |         width: 100%; | ||||||
|  |         max-width: 8in; | ||||||
|  |      } | ||||||
|  |     </style> | ||||||
|  |   </head> | ||||||
|  |   <body> | ||||||
|  | <div class='HeaderStyle'> | ||||||
|  | <h1 class='TitleFontPrint'>___TITLE___</h1><br/> | ||||||
|  | <h4 class='TitleFontPrintSub'><br>___DATE___</h4></div> | ||||||
|  |  | ||||||
|  | <div class='contentDiv'> | ||||||
|  |    | ||||||
|  | <br> | ||||||
|  |  | ||||||
|  | <h3>Individual test results and logs.</h3> | ||||||
|  | <table border="1" cellpadding="6" cellspacing="0" style="border-top-color: gray; border-top-style: solid; border-top-width: 1px; border-right-color: gray; border-right-style: solid; border-right-width: 1px; border-bottom-color: gray; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: gray; border-left-style: solid; border-left-width: 1px"> | ||||||
|  | <!-- <tr><td><a href=ap_auto_basic_cx/index.html>AP AUto Basic CX Report</a></td><td><a href=ap_auto_basic_cx/logs>Logs</a></td></tr> --> | ||||||
|  |    ___TR_TESTS___ | ||||||
|  | </table> | ||||||
|  | <P> | ||||||
|  |  | ||||||
|  | <table border="1" cellpadding="2" cellspacing="0" style="border-top-color: gray; border-top-style: solid; border-top-width: 1px; border-right-color: gray; border-right-style: solid; border-right-width: 1px; border-bottom-color: gray; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: gray; border-left-style: solid; border-left-width: 1px"> | ||||||
|  |   <tr><th>Test Rig</th><th>DUT Hardware</th><th>DUT Software</th><th>DUT Model</th><th>DUT Serial</th></tr> | ||||||
|  |   <!-- <tr><td>Ben-Home-OTA</td><td>Linksys-MR8300</td><td>TIP-OpenWrt</td><td>Linksys-MR8300</td><td>Unknown</td></tr> --> | ||||||
|  |   ___TR_DUT___ | ||||||
|  | </table> | ||||||
|  |  | ||||||
|  | <P> | ||||||
|  |      | ||||||
|  |     <table border="1" cellpadding="2" cellspacing="0" style="border-top-color: gray; border-top-style: solid; border-top-width: 1px; border-right-color: gray; border-right-style: solid; border-right-width: 1px; border-bottom-color: gray; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: gray; border-left-style: solid; border-left-width: 1px"> | ||||||
|  |       <tr><th>Test-ID</th><th>Short Description</th><th>Pass/Fail</th><th>Numeric Result</th><th>Test Details</th></tr> | ||||||
|  |       <!-- <tr><td>AP AUtomated Test</td><td>Daul Band Performance</td><td>PASS</td><td>86.44</td><td>Dual-Concurrent vs 90% of Sum: 435.68 Mbps / 558.84 Mbps Dual-Concurrent vs 90% of Sum: 598.17 Mbps / 630.11 Mbps</td></tr> --> | ||||||
|  |       ___TR_KPI___ | ||||||
|  |     </table> | ||||||
|  |  | ||||||
|  | </div><!--end content-div --> | ||||||
|  | <div class='FooterStyle'><span class='Gradient'>Generated by Candela Technologies LANforge network testing tool.<br/> | ||||||
|  |   <a href='https://www.candelatech.com/' target='_blank'>www.candelatech.com</a> | ||||||
|  | </span> | ||||||
|  | <a class='LogoImgLink' href='https://www.candelatech.com/' target='_blank'><img align='right' src='candela_swirl_small-72h.png'></a></div><br/> | ||||||
|  |   </body> | ||||||
|  | </html> | ||||||
							
								
								
									
										125
									
								
								gui/lf_gui_report_summary.pl
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										125
									
								
								gui/lf_gui_report_summary.pl
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,125 @@ | |||||||
|  | #!/usr/bin/perl -w | ||||||
|  | # Generate HTML summary page for a collection of GUI reports (with kpi.csv) | ||||||
|  | # (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 Getopt::Long; | ||||||
|  |  | ||||||
|  | our $dir = ""; | ||||||
|  | our $title = "Automated test results."; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ######################################################################## | ||||||
|  | # Nothing to configure below here, most likely. | ||||||
|  | ######################################################################## | ||||||
|  |  | ||||||
|  | our $usage = <<"__EndOfUsage__"; | ||||||
|  | $0 [ --dir directory-to-process ] | ||||||
|  |  | ||||||
|  | Example: | ||||||
|  |  $0 --dir ~/tmp/results --title "My Title" | ||||||
|  | __EndOfUsage__ | ||||||
|  |  | ||||||
|  | my $i = 0; | ||||||
|  | my $show_help = 0; | ||||||
|  |  | ||||||
|  | GetOptions | ||||||
|  | ( | ||||||
|  |    'dir|d=s'            => \$::dir, | ||||||
|  |    'title|t=s'          => \$::title, | ||||||
|  |    'help|h'             => \$show_help, | ||||||
|  | ) || die("$::usage"); | ||||||
|  |  | ||||||
|  | if ($show_help) { | ||||||
|  |    print $usage; | ||||||
|  |    exit 0; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | chdir($dir); | ||||||
|  |  | ||||||
|  | my @files = `ls`; | ||||||
|  | chomp(@files); | ||||||
|  |  | ||||||
|  | my $line; | ||||||
|  |  | ||||||
|  | # Find some html helpers and copy them to current dir. | ||||||
|  | foreach $line (@files) { | ||||||
|  |    if ( -d $line) { | ||||||
|  |       if ( -f "$line/canvil.ico") { | ||||||
|  |          `cp $line/canvil.ico ./`; | ||||||
|  |          `cp $line/*.css ./`; | ||||||
|  |          `cp $line/candela_swirl* ./`; | ||||||
|  |          `cp $line/CandelaLogo* ./`; | ||||||
|  |          last; | ||||||
|  |       } | ||||||
|  |    } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | my $dut_tr = ""; | ||||||
|  | my $kpi_tr = ""; | ||||||
|  | my $tests_tr = ""; | ||||||
|  |  | ||||||
|  | foreach my $line (@files) { | ||||||
|  |    if ( -d $line) { | ||||||
|  |       if ( -d "$line/logs") { | ||||||
|  |          $tests_tr .= "<tr><td><a href=\"$line/index.html\">$line</html></td><td><a href=\"$line/logs\">Logs</td></tr>\n"; | ||||||
|  |       } | ||||||
|  |       else { | ||||||
|  |          $tests_tr .= "<tr><td><a href=\"$line/index.html\">$line</html></td><td></td></tr>\n"; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       if ( -f "$line/kpi.csv") { | ||||||
|  |          my @kpi = `cat $line/kpi.csv`; | ||||||
|  |          chomp(@kpi); | ||||||
|  |          my $i = 0; | ||||||
|  |          foreach my $k (@kpi) { | ||||||
|  |             $i++; | ||||||
|  |             if ($i == 1) { | ||||||
|  |                next; # skip header | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             my @cols = split(/\t/, $k); | ||||||
|  |             if ($dut_tr eq "") { | ||||||
|  |                $dut_tr = "<tr><td>$cols[1]</td><td>$cols[2]</td><td>$cols[3]</td><td>$cols[4]</td><td>$cols[5]</td></tr>\n"; | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             $kpi_tr .= "<tr><td>$cols[7]</td><td>$cols[8]</td><td>$cols[9]</td><td>$cols[10]</td><td>$cols[11]</td></tr>\n"; | ||||||
|  |          } | ||||||
|  |       } | ||||||
|  |    } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | my $date = `date`; | ||||||
|  |  | ||||||
|  | while (<>) { | ||||||
|  |    my $ln = $_; | ||||||
|  |    chomp($ln); | ||||||
|  |  | ||||||
|  |    $ln =~ s/___TITLE___/$title/g; | ||||||
|  |    $ln =~ s/___DATE___/$date/g; | ||||||
|  |    $ln =~ s/___TR_DUT___/$dut_tr/g; | ||||||
|  |    $ln =~ s/___TR_KPI___/$kpi_tr/g; | ||||||
|  |    $ln =~ s/___TR_TESTS___/$tests_tr/g; | ||||||
|  |    print "$ln\n"; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | exit(0); | ||||||
|  |  | ||||||
|  | # ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- | ||||||
|  | # ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- | ||||||
| @@ -152,7 +152,7 @@ if ($ttype ne "") { | |||||||
|         # Copy some place it can be seen easily? |         # Copy some place it can be seen easily? | ||||||
|         print("LANforge GUI test complete, rpt-dest: $rpt_dest  location: $loc\n"); |         print("LANforge GUI test complete, rpt-dest: $rpt_dest  location: $loc\n"); | ||||||
|         if ($rpt_dest ne "") { |         if ($rpt_dest ne "") { | ||||||
|           if (-d $loc) { |           if ($lfmgr_host eq "localhost" || $lfmgr_host eq "127.0.0.1") { | ||||||
|             # Must be on the local system |             # Must be on the local system | ||||||
|             my $cp = "cp -ar $loc $rpt_dest"; |             my $cp = "cp -ar $loc $rpt_dest"; | ||||||
|             print "Copy test results: $cp\n"; |             print "Copy test results: $cp\n"; | ||||||
|   | |||||||
| @@ -184,7 +184,7 @@ elsif ($::action eq "set") { | |||||||
|  |  | ||||||
|       $cmd = "add_text_blob '$test_type' '$test_name' $ln"; |       $cmd = "add_text_blob '$test_type' '$test_name' $ln"; | ||||||
|       print("$cmd\n"); |       print("$cmd\n"); | ||||||
|       if ($i % 25 == 0) { |       if (($i % 25) != 0) { | ||||||
|          $::utils->doCmd($cmd, 1);  # send and do not wait for result |          $::utils->doCmd($cmd, 1);  # send and do not wait for result | ||||||
|       } |       } | ||||||
|       else { |       else { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Ben Greear
					Ben Greear