Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl -w
- use strict;
- use JSON;
- use File::Basename;
- use Data::Dumper;
- sub print_html_header($);
- sub print_chart_divs($);
- sub print_html_footer();
- # How to add to a Hudson job
- # C:\QBSanity\SanityConsole.exe QBSanityRunner
- # md workspace\csv
- # C:\PETools\RLXParser\RLXParserConsole.exe workspace\TestStandLogs workspace\csv --resultflag=ALL --targetppk=1.33 --calcstats
- # perl c:\Perl\rest.pl "workspace\csv\EDGE_*_DACAL_PMEAS_*.csv" > workspace\report\EDGE_CAL.html
- # perl c:\Perl\rest.pl "workspace\csv\GSM_*_DACAL_PMEAS_*.csv" > workspace\report\GSM_CAL.html
- # After that add GSM_CAL.html,EDGE_CAL.html to HTMLReport
- my $data = {};
- my $dataSeen = 0;
- # ensure the script has been called with 1 argument
- if (@ARGV != 1 || $ARGV[0] !~ /\.csv$/i) {
- print STDERR qq{Usage: $0 "/path/*.csv"\n};
- exit 1;
- }
- # filenames end with ".csv", but do not contain "txv3"
- @ARGV = grep /\.csv$/i && !/txv3/i, glob($ARGV[0]);
- while (<>) {
- my $csv = basename($ARGV, '.csv');
- if (eof) {
- printf STDERR "Generated chart: %s\n", $csv;
- $dataSeen = 0;
- }
- s/[\r\n]//g;
- my @sp = split /,/;
- next unless @sp > 9;
- my $key = $sp[0];
- next unless $key =~ /^(MEASUREMENT:|LSL:|USL:|\d+)$/;
- $key =~ tr/://d;
- next if ($key eq 'LSL' && !$dataSeen);
- next if ($key eq 'USL' && !$dataSeen);
- my @cut = splice(@sp, 0, 9);
- $data->{$csv} = { cols => [], rows => [] } unless $data->{$csv};
- my $obj = $data->{$csv};
- # the values for the x-axis
- if ($key eq 'MEASUREMENT') {
- push @{$obj->{cols}}, {label => $key, type => 'string', p => {role => 'domain'}};
- for (my $i = 0; $i < @sp; $i++) {
- $obj->{rows}->[$i] = { c => [] } unless $obj->{rows}->[$i];
- my $row = $obj->{rows}->[$i];
- my $val = $sp[$i];
- push @{$row->{c}}, {v => $val};
- }
- } elsif ($key eq 'LSL') {
- push @{$obj->{cols}}, {label => $key, type => 'number', p => {role => 'interval'}};
- for (my $i = 0; $i < @sp; $i++) {
- $obj->{rows}->[$i] = { c => [] } unless $obj->{rows}->[$i];
- my $row = $obj->{rows}->[$i];
- my $val = 1 * $sp[$i];
- push @{$row->{c}}, {v => $val};
- }
- } elsif ($key eq 'USL') {
- push @{$obj->{cols}}, {label => $key, type => 'number', p => {role => 'interval'}};
- for (my $i = 0; $i < @sp; $i++) {
- $obj->{rows}->[$i] = { c => [] } unless $obj->{rows}->[$i];
- my $row = $obj->{rows}->[$i];
- my $val = 1 * $sp[$i];
- push @{$row->{c}}, {v => $val};
- }
- # the values for the y-axis
- } else {
- $dataSeen = 1;
- $obj->{FAIL} = 1 if $cut[6] =~ /Failed/i;
- push @{$obj->{cols}}, {label => $key, type => 'number', p => {role => 'data'}};
- for (my $i = 0; $i < @sp; $i++) {
- $obj->{rows}->[$i] = { c => [] } unless $obj->{rows}->[$i];
- my $row = $obj->{rows}->[$i];
- my $val = 1 * $sp[$i];
- $val = undef if ($val == -32768 || $val == 32767 || $val == 65535);
- push @{$row->{c}}, {v => $val};
- }
- }
- }
- print STDERR Dumper($data);
- print_html_header($data);
- print_chart_divs($data);
- print_html_footer();
- sub print_html_header($) {
- my $href = shift;
- printf <<EOF, encode_json($href);
- <!DOCTYPE HTML>
- <html>
- <head>
- <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
- <script type="text/javascript" src="https://www.google.com/jsapi?autoload={'modules':[{'name':'visualization','version':'1','packages':['corechart']}]}"></script>
- <script type="text/javascript">
- var data = %s;
- function drawCharts() {
- for (var csv in data) {
- var x = new google.visualization.DataTable(data[csv]);
- var options = {
- title: csv,
- width: 800,
- height: 600
- };
- var chart = new google.visualization.LineChart(document.getElementById(csv));
- chart.draw(x, options);
- }
- }
- \$(function() {
- google.setOnLoadCallback(drawCharts);
- });
- </script>
- <style type="text/css">
- span.fail {
- color: #FFFFFF;
- background-color: #FF0000;
- padding: 2px 2px 2px 2px;
- }
- </style>
- </head>
- <body>
- <p><a name="top">CONTENTS:</a></p>
- EOF
- for my $csv (sort keys %$href) {
- my $result = (exists $href->{$csv}->{FAIL} ? ' <span class="fail">FAIL</span>' : '');
- printf qq{<a href="#%s">%s</a>%s<br>\n}, $csv, $csv, $result;
- }
- print '<hr>';
- }
- sub print_chart_divs($) {
- my $href = shift;
- for my $csv (sort keys %$href) {
- my $result = (exists $href->{$csv}->{FAIL} ? ' <span class="fail">FAIL</span>' : '');
- printf qq{<a name="%s" href="#top">%s</a>%s\n}, $csv, $csv, $result;
- printf qq{<div id="%s"></div>\n}, $csv;
- print "<hr>\n";
- }
- }
- sub print_html_footer() {
- print <<EOF;
- </body>
- </html>
- EOF
- }
Add Comment
Please, Sign In to add comment