Support double upgrades (from Zdenek).
authorFrantišek Dvořák <valtri@civ.zcu.cz>
Mon, 26 Nov 2012 22:00:23 +0000 (23:00 +0100)
committerFrantišek Dvořák <valtri@civ.zcu.cz>
Mon, 26 Nov 2012 22:00:23 +0000 (23:00 +0100)
dashboard.pl

index 6b19c1a..13ca3c7 100755 (executable)
@@ -4,11 +4,17 @@ use POSIX qw(strftime);
 
 my ($list, @list, %list, $item, @item, %item, $result, %platforms, %components, %ins, %upg, $now, $n_platforms, $width);
 my (%list_perf);
-
+my ($doubledistupgrades, $distupgrades, $upgrades, $installs );
+my ($colsforeach);
 
 $list=`ls -1 | egrep '^(gridsite|lb|px|canl)'`;
 @list=split /\n/, $list;
 
+$doubledistupgrades = 0;
+$distupgrades = 0;
+$upgrades = 0;
+$installs = 0;
+
 #$list{install} = ();
 #$list{upgrade} = ();
 foreach my $i (0..$#list) {
@@ -32,11 +38,12 @@ foreach my $i (0..$#list) {
                close FH;
                chomp;
                if (/perf/i) { $scen = $_; }
-                elsif (/^upgrade/i or /major upgrade/i) { $scen = 'distupgrade'; }
-                elsif (/^minor upgrade/i) { $scen = 'upgrade'; }
+                elsif (/^double/i) { $scen = 'doubledistupgrade'; $doubledistupgrades=1; }
+                elsif (/^upgrade/i or /major upgrade/i) { $scen = 'distupgrade'; $distupgrades=1; }
+                elsif (/^minor upgrade/i) { $scen = 'upgrade'; $upgrades=1; }
                 elsif (/build/i) { $scen = 'build'; }
-
        }
+       if ($scen eq 'install') { $installs=1; }
        
        $plat = "$item[1]-$item[2]";
 #printf STDERR "$date, $scen, $item[0], $plat\n";
@@ -61,21 +68,23 @@ foreach my $s (keys %list) {
 #printf STDERR "$item->{component}, $item->{platform}\n";
                        undef $result;
                        if (-f "$item->{dir}/report.twiki") {
-                               my ($section, $err, $yaim_used, $yaim_finished);
+                               my ($section, $err, $yaim_used, $yaim_finished, $missing_deps);
                                `grep -- 'TESTS END HERE' $item->{dir}/report.twiki >/dev/null 2>&1`;
                                $section=$?;
                                `grep -- 'Installed YAIM versions' $item->{dir}/report.twiki >/dev/null 2>&1`;
                                $yaim_used=$?;
                                `grep -- 'YAIM terminated succesfully' $item->{dir}/report.twiki >/dev/null 2>&1`;
                                $yaim_finished=$?;
+                               $missing_deps=`grep -- 'Missing Dependency:' $item->{dir}/report.twiki 2>/dev/null| wc -l | sed 's/ *//g'`;
                                `grep -- 'ERROR:' $item->{dir}/report.twiki >/dev/null 2>&1`;
                                $err=$?;
-#printf STDERR "  sec: $section, err: $err\n";
-                               if ($section == 0 && ($yaim_used != 0 || $yaim_finished == 0)) {
+printf STDERR "  sec: $section, err: $err, missing_deps: $missing_deps\n";
+                               if ($section == 0 && $missing_deps == 0 && ($yaim_used != 0 || $yaim_finished == 0)) {
                                        $result=`grep -- '-TEST FAILED-' $item->{dir}/report.twiki 2>/dev/null| wc -l | sed 's/ *//g'`;
                                        chomp $result;
                                } else {
-                                       if ($section == 0) { $result = 'Deploy Fail'; }
+                                       if ($missing_deps != 0 ) { $result = "$missing_deps missing deps"; }
+                                       elsif ($section == 0) { $result = "Deploy Fail $missing_deps"; }
                                        else { $result = 'TestSuite Fail'; }
                                }
                        } else { undef $result; }
@@ -96,7 +105,7 @@ foreach my $s (keys %list) {
                        }
                        $item->{result2} = defined $result ? $result : '-';
 
-#print STDERR "$item->{dir}: $item->{result}, $item->{result2}\n";
+print STDERR "$item->{dir}: $item->{result}, $item->{result2}\n";
                }
        }
 }
@@ -147,24 +156,27 @@ print qq(<?xml version="1.0" encoding="UTF-8"?>
                a:hover {color:#333333;}
                a:active {color:#222222;}
                table.main {border:none;}
-               table.cert {border:1px solid black; border-collapse:collapse; text-align:center; width:1024px; table-layout:fixed;}
+               table.cert {border:1px solid black; border-collapse:collapse; text-align:center; width:1280px; table-layout:fixed;}
                th.cert, td.cert {border:0px solid black; text-align:center; padding:5px;}
                .scen {font-size:small; font-style:italic; background-color: #eeeeee; }
                .prod {font-family:sans-serif; font-size:large; font-weight:bold; background-color: #eeeeee}
                .OK {border:1px solid black; text-align:center;background-color: #90f3a5;}
                .DistOK {border:1px solid black; text-align:center;background-color: #a4f584;}
+               .DblDistOK {border:1px solid black; text-align:center;background-color: #c3f88b;}
                .FAIL {border:1px solid black; text-align:center;background-color: #ff4c4c;}
                .DistFAIL {border:1px solid black; text-align:center;background-color: #fd6f3c;}
+               .DblDistFAIL {border:1px solid black; text-align:center;background-color: #fda05c;}
                .NA {border:1px solid black; text-align:center;background-color: #ffffff;}
                .date {font-size:xx-small; color: #404040;}
                .platf{font-family:sans-serif; font-size:smaller; border:1px solid black; text-align:center;background-color: #eeeeee;}
                .comment {font-size:small;margin:0px 0px 0px 0px;}
                p.comment {margin:15px 0px 0px 0px;}
                p.modified {margin:0px 0px 0px 0px;}
-               table.modified {border:0px none; width:1024px;}
+               table.modified {border:0px none; width:1280px;}
                td.modified {font-size:small; border:0px none; float:right; text-align: right;}
                td.thanks {font-size:small; border:0px none; text-align: right;}
                td.heading {font-size:xx-large; font-family:sans-serif; font-weight:bold; border: 0px none; float:left; text-align:left; white-space:nowrap;}
+               td.message {font-weight:bold; border: 0px none; float:left; text-align:left;}
                img { border:0px; }
        </style>
 </head>
@@ -192,77 +204,110 @@ print qq(<?xml version="1.0" encoding="UTF-8"?>
        my $pout;
        my ($classi, $classu);
 
+       # Count hown many columns there will be for each product:
+       if ( $installs ) { $colsforeach++; }
+       if ( $upgrades ) { $colsforeach++; }
+       if ( $distupgrades )  { $colsforeach++; }
+       if ( $doubledistupgrades )  { $colsforeach++; }
 
        print qq(<table class="cert">
        <tr class="cert">
                <th class="prod"></th>
 );
        foreach my $c (sort keys %components) {
-               print "         <th class=\"prod\" colspan=\"3\">$fancy{$c}</th>\n";
+               print "         <th class=\"prod\" colspan=\"$colsforeach\">$fancy{$c}</th>\n";
        }
        print " </tr>\n";
        print " <tr>\n";
                print "         <th class=\"scen\">Platform</th>\n";
        foreach my $c (sort keys %components) {
-               print "         <th class=\"scen\">Install</th>\n";
-               print "         <th class=\"scen\">Upgrade</th>\n";
-               print "         <th class=\"scen\">Dist<BR>Upgrade</th>\n";
+               if ( $installs ) { print "              <th class=\"scen\">Install</th>\n"; }
+               if ( $upgrades ) { print "              <th class=\"scen\">Upgrade</th>\n"; }
+               if ( $distupgrades ) { print "          <th class=\"scen\">Dist<BR>Upgrade</th>\n"; }
+               if ( $doubledistupgrades ) { print "            <th class=\"scen\">Dbl. Dist<BR>Upgrade</th>\n"; }
        }
+
+       
        print " </tr>\n";
        foreach my $p (sort keys %platforms) {
                $pout=$p;
                $pout =~ s/-/<BR>/;
                print " <tr class=\"platf\">\n          <th class=\"cert\">$pout</th>\n";
                foreach my $c (sort keys %components) {
-                       $item = $list{install}{$c}{$p};
-                       if (defined $item) {
-                               if ($item->{result} eq '0') {
-                                       $class='OK';
-                                       $result="<b>OK</b>"; }
-                               else {
-                                       $class='FAIL';
-                                       if ( $item->{result} eq '1' ) { $result="<b>$item->{result} error</b>"; }
-                                       elsif ($item->{result} =~ /^[0-9]+$/) { $result="<b>$item->{result}&nbsp;tests failed</b>"; }
-                                       else { $result = "<b>$item->{result}</b>"; }
+                       if ( $installs ) {
+                               $item = $list{install}{$c}{$p};
+                               if (defined $item) {
+                                       if ($item->{result} eq '0') {
+                                               $class='OK';
+                                               $result="<b>OK</b>"; }
+                                       else {
+                                               $class='FAIL';
+                                               if ( $item->{result} eq '1' ) { $result="<b>$item->{result} error</b>"; }
+                                               elsif ($item->{result} =~ /^[0-9]+$/) { $result="<b>$item->{result}&nbsp;tests failed</b>"; }
+                                               else { $result = "<b>$item->{result}</b>"; }
+                                       }
+
+                                       print "         <td class=\"$class\"><span class=\"date\">$item->{date}</span><br/><a href=\"$item->{dir}/\">$result</a></td>\n";
+                               } else {
+                                       print "         <td class=\"NA\"><span class=\"date\">&nbsp;</span><br/>&nbsp;</td>\n"
                                }
-
-                               print "         <td class=\"$class\"><span class=\"date\">$item->{date}</span><br/><a href=\"$item->{dir}/\">$result</a></td>\n";
-                       } else {
-                               print "         <td class=\"NA\"><span class=\"date\">&nbsp;</span><br/>&nbsp;</td>\n"
                        }
 
-                       $item = $list{upgrade}{$c}{$p};
-                       if (defined $item) {
-                               if ($item->{result} eq '0') {
-                                       $class='OK';
-                                       $result="<b>OK</b>"; }
-                               else {
-                                       $class='FAIL';
-                                       if ( $item->{result} eq '1' ) { $result="<b>$item->{result} error</b>"; }
-                                       elsif ($item->{result} =~ /^[0-9]+$/) { $result="<b>$item->{result}&nbsp;tests failed</b>"; }
-                                       else { $result = "<b>$item->{result}</b>"; }
+                       if ( $upgrades ) {
+                               $item = $list{upgrade}{$c}{$p};
+                               if (defined $item) {
+                                       if ($item->{result} eq '0') {
+                                               $class='OK';
+                                               $result="<b>OK</b>"; }
+                                       else {
+                                               $class='FAIL';
+                                               if ( $item->{result} eq '1' ) { $result="<b>$item->{result} error</b>"; }
+                                               elsif ($item->{result} =~ /^[0-9]+$/) { $result="<b>$item->{result}&nbsp;tests failed</b>"; }
+                                               else { $result = "<b>$item->{result}</b>"; }
+                                       }
+
+                                       print "         <td class=\"$class\"><span class=\"date\">$item->{date}</span><br/><a href=\"$item->{dir}/\">$result</a></td>\n";
+                               } else {
+                                       print "         <td class=\"NA\"><span class=\"date\">&nbsp;</span><br/>&nbsp;</td>\n"
                                }
-
-                               print "         <td class=\"$class\"><span class=\"date\">$item->{date}</span><br/><a href=\"$item->{dir}/\">$result</a></td>\n";
-                       } else {
-                               print "         <td class=\"NA\"><span class=\"date\">&nbsp;</span><br/>&nbsp;</td>\n"
                        }
 
-                       $item = $list{distupgrade}{$c}{$p};
-                       if (defined $item) {
-                               if ($item->{result} eq '0') {
-                                       $class='DistOK';
-                                       $result="<b>OK</b>"; }
-                               else {
-                                       $class='DistFAIL';
-                                       if ( $item->{result} eq '1' ) { $result="<b>$item->{result} error</b>"; }
-                                       elsif ($item->{result} =~ /^[0-9]+$/) { $result="<b>$item->{result}&nbsp;tests failed</b>"; }
-                                       else { $result = "<b>$item->{result}</b>"; }
+                       if ( $distupgrades ) {
+                               $item = $list{distupgrade}{$c}{$p};
+                               if (defined $item) {
+                                       if ($item->{result} eq '0') {
+                                               $class='DistOK';
+                                               $result="<b>OK</b>"; }
+                                       else {
+                                               $class='DistFAIL';
+                                               if ( $item->{result} eq '1' ) { $result="<b>$item->{result} error</b>"; }
+                                               elsif ($item->{result} =~ /^[0-9]+$/) { $result="<b>$item->{result}&nbsp;tests failed</b>"; }
+                                               else { $result = "<b>$item->{result}</b>"; }
+                                       }
+
+                                       print "         <td class=\"$class\"><span class=\"date\">$item->{date}</span><br/><a href=\"$item->{dir}/\">$result</a></td>\n";
+                               } else {
+                                       print "         <td class=\"NA\"><span class=\"date\">&nbsp;</span><br/>&nbsp;</td>\n"
                                }
+                       }
 
-                               print "         <td class=\"$class\"><span class=\"date\">$item->{date}</span><br/><a href=\"$item->{dir}/\">$result</a></td>\n";
-                       } else {
-                               print "         <td class=\"NA\"><span class=\"date\">&nbsp;</span><br/>&nbsp;</td>\n"
+                       if ( $doubledistupgrades ) {
+                               $item = $list{doubledistupgrade}{$c}{$p};
+                               if (defined $item) {
+                                       if ($item->{result} eq '0') {
+                                               $class='DblDistOK';
+                                               $result="<b>OK</b>"; }
+                                       else {
+                                               $class='DblDistFAIL';
+                                               if ( $item->{result} eq '1' ) { $result="<b>$item->{result} error</b>"; }
+                                               elsif ($item->{result} =~ /^[0-9]+$/) { $result="<b>$item->{result}&nbsp;tests failed</b>"; }
+                                               else { $result = "<b>$item->{result}</b>"; }
+                                       }
+
+                                       print "         <td class=\"$class\"><span class=\"date\">$item->{date}</span><br/><a href=\"$item->{dir}/\">$result</a></td>\n";
+                               } else {
+                                       print "         <td class=\"NA\"><span class=\"date\">&nbsp;</span><br/>&nbsp;</td>\n"
+                               }
                        }
                }
                print " </tr>\n";
@@ -270,12 +315,25 @@ print qq(<?xml version="1.0" encoding="UTF-8"?>
        print "</table>\n\n";
 }
 
+my $excls;
+
+if ( $colsforeach != 4 ) {
+       $excls = "There are";
+       if ( $installs == 0 ) { $excls = "$excls no installs," }
+       if ( $upgrades == 0 ) { $excls = "$excls no minor upgrades," }
+       if ( $distupgrades == 0 ) { $excls = "$excls no dist upgrades," }
+       if ( $doubledistupgrades == 0 ) { $excls = "$excls no double dist upgrades," }
+       my $semicol = rindex ($excls, ",");
+       $excls = substr($excls, 0, $semicol);
+       $excls = "<td class=\"message\">$excls.</td>";
+}
+
 print qq{              </td>
        </tr>
 </table>
 <table class="modified">
        <tr>
-               <td class="modified">Last Modified: $now</td>
+               $excls<td class="modified">Last Modified: $now</td>
        </tr>
 </table>