function vdt($dt) { global $ago; if ($ago) { return dtago($dt); } return nicedt($dt); }
function dal($arow) { global $NATS; echo "<table border=0>"; echo "<tr><td align=right><b>Alert : </b></td>"; echo "<td align=left><b>" . $arow['nodeid'] . "/" . $arow['alertid'] . "</b></td></tr>"; echo "<tr><td align=right>Opened : </td>"; echo "<td align=left>" . nicedt($arow['openedx']) . "</td></tr>"; if ($arow['closedx'] > 0) { $st = "<b class=\"al0\">Resolved</b>"; $ct = nicedt($arow['closedx']) . " (Open for " . nicediff($arow['closedx'] - $arow['openedx']) . ")"; } else { $st = "<b>Open</b>"; $ct = "n/a"; } echo "<tr><td align=right>Status : </td>"; echo "<td align=left>" . $st . "</td></tr>"; echo "<tr><td align=right>Closed : </td>"; echo "<td align=left>" . $ct . "</td></tr>"; echo "<tr><td align=right>Level : </td>"; echo "<td align=left><b class=\"al" . $arow['alertlevel'] . "\">" . aText($arow['alertlevel']) . "</td></tr>"; echo "<tr><td colspan=2> <br><b><u>Alert Log</u></b></td></tr>"; $hq = "SELECT * FROM fnalertlog WHERE alertid=" . $arow['alertid'] . " ORDER BY postedx DESC"; $px = 0; $first = true; $hr = $NATS->DB->Query($hq); while ($hrow = $NATS->DB->Fetch_Array($hr)) { if ($hrow['postedx'] != $px) { if (!$first) { echo "</td></tr>"; } else { $first = false; } echo "<tr><td align=right valign=top>"; $px = $hrow['postedx']; echo nicedt($px); echo " : "; echo "</td><td align=left valign=top>"; } echo $hrow['logentry'] . "<br>"; } if (!$first) { echo "</td></tr>"; } echo "</table>"; }
} else { $s = ""; } echo "<td align=left><input type=checkbox name=nspushenabled value=1" . $s . "> "; echo hlink("Nodeside:PushEnabled"); echo "</td></tr>"; echo "<tr><td align=right>" . $NATS->Lang->Item("push.ip") . " :</td><td align=left>"; echo "<input type=text name=nspuship value=\"" . $row['nspuship'] . "\" size=20 maxlength=120>"; echo " " . hlink("Nodeside:PushIP"); echo "</td></tr>"; echo "<tr><td align=right>" . $NATS->Lang->Item("last.data") . " :</td><td align=left>"; echo nicedt($row['nslastx']) . " - " . dtago($row['nslastx']) . "</td></tr>"; if ($row['nspullenabled'] == 1) { echo "<tr><td align=right>" . $NATS->Lang->Item("next.pull.due") . " :</td><td align=left>"; if ($row['nsnextx'] > 0) { echo nicedt($row['nsnextx']) . " - " . nicenextx($row['nsnextx']); } else { echo $NATS->Lang->Item("now"); } echo "</td></tr>"; } echo "<tr><td align=right>" . $NATS->Lang->Item("catalogue") . " :</td><td align=left>"; $nsq = "SELECT COUNT(nstestid) FROM fnnstest WHERE nodeid=\"" . ss($_REQUEST['nodeid']) . "\""; $nsr = $NATS->DB->Query($nsq); if ($nsrow = $NATS->DB->Fetch_Array($nsr)) { echo $nsrow['COUNT(nstestid)'] . " " . $NATS->Lang->Item("nodeside.monitors"); } $NATS->DB->Free($nsr); echo "</td></tr>"; echo "<tr><td align=right>" . $NATS->Lang->Item("refresh.now") . ":</td><td align=left>"; if ($row['nspullenabled'] == 1) {
echo "<tr><td align=right>" . $NATS->Lang->Item("recorded") . " :</td>"; echo "<td align=left>"; echo "<input type=checkbox name=testrecord value=1" . $s . "> " . hlink("Test:Recorded"); echo "</td></tr>"; if ($row['simpleeval'] == 1) { $s = " checked"; } else { $s = ""; } echo "<tr><td align=right>" . $NATS->Lang->Item("simple.eval") . " :</td>"; echo "<td align=left>"; echo "<input type=checkbox name=simpleeval value=1" . $s . "> " . hlink("Test:SimpleEvaluation"); echo "</td></tr>"; echo "<tr><td colspan=2><hr class=\"nspacer\"></td></tr>"; echo "<tr><td align=right>" . $NATS->Lang->Item("last.checked") . " :</td>"; echo "<td align=left>" . nicedt($row['lastrunx']) . " - " . dtago($row['lastrunx']) . "</td></tr>"; echo "<tr><td align=right>" . $NATS->Lang->Item("last.result") . " :</td>"; echo "<td align=left>"; echo "<b class=\"al" . $row['alertlevel'] . "\">"; echo oText($row['alertlevel']); echo "</b>"; echo "</td></tr>"; echo "<tr><td align=right>" . $NATS->Lang->Item("last.value") . " :</td>"; echo "<td align=left>" . $row['lastvalue'] . "</td></tr>"; echo "<tr><td colspan=2><hr class=\"nspacer\"></td></tr>"; echo "<tr><td> </td><td align=left><input type=submit value=\"" . $NATS->Lang->Item("save.changes") . "\"> "; echo "<a href=node.edit.php?nodeid=" . $row['nodeid'] . ">" . $NATS->Lang->Item("abandon.changes") . "</a>"; echo "</td></tr></form>"; echo "</table>"; End_Round(); echo "<br><br>";
function enicedt($ts) { echo nicedt($ts); }
function GetTest($testid, $protect = false) { if ($testid == "") { return false; } $class = $testid[0]; if (is_numeric($class)) { // test ID will stay the same $class = "L"; $anytestid = $testid; } else { //$testid=substr($testid,1); // as it will here also so direct use to graphs can be made $anytestid = substr($testid, 1); // the classless version } $q = ""; switch ($class) { case "L": // local tests $q = "SELECT * FROM fnlocaltest WHERE localtestid=" . ss($anytestid) . " LIMIT 0,1"; break; case "N": // node-side test $q = "SELECT * FROM fnnstest WHERE nstestid=" . ss($anytestid) . " LIMIT 0,1"; break; default: return false; // can't lookup this class } if ($q == "") { return false; } $r = $this->DB->Query($q); if (!($row = $this->DB->Fetch_Array($r))) { return false; } $row['class'] = $class; $row['testid'] = $testid; $row['anytestid'] = $anytestid; $row['alerttext'] = oText($row['alertlevel']); $row['lastrundt'] = nicedt($row['lastrunx']); $row['lastrunago'] = dtago($row['lastrunx'], false); if ($row['testname'] != "") { $row['name'] = $row['testname']; } else { if ($class == "L") { $row['name'] = lText($row['testtype']); // TODO OTHER TESTS if ($row['testparam'] != "") { $row['name'] .= " (" . $row['testparam'] . ")"; } } else { if ($class == "N") { if ($row['testdesc'] != "") { $row['name'] = $row['testdesc']; } else { $row['name'] = $row['testtype']; } } } } if ($protect && $class == "L") { if ($this->Tests->Exists($row['testtype'])) { $this->Tests->Tests[$row['testtype']]->Create(); $this->Tests->Tests[$row['testtype']]->instance->ProtectOutput($row); } } $this->DB->Free($r); return $row; }
$q="SELECT * FROM fntestrun WHERE finishx=0"; $r=$NATS->DB->Query($q); echo "<b>".$NATS->DB->Num_Rows($r)." Open/Running Test Sessions</b><br><br>"; if ($NATS->DB->Num_Rows($r)>0) { echo "<table class=\"nicetable\">"; echo "<tr><td><b>ID</b></td><td><b>Node</b></td><td><b>Started</b></td><td><b>Notes</b></td></tr>"; $nowx=time(); $fifteenx=$nowx-(15*60); $hourx=$nowx-(60*60); while ($row=$NATS->DB->Fetch_Array($r)) { echo "<tr><td><a href=testrun.php?trid=".$row['trid'].">"; echo $row['trid']."</a></td>"; echo "<td><a href=node.php?nodeid=".$row['fnode']."</a></td>"; echo "<td>".nicedt($row['startx'])." - ".dtago($row['startx'])."</td>"; echo "<td>"; if ($row['startx']<$hourx) echo "Error: Over an hour old"; else if($row['startx']<$fifteenx) echo "Warning: Over fifteen minutes old"; else echo " "; echo "</td></tr>"; } echo "</table>"; } $NATS->DB->Free($r); echo "<br><br>"; echo "<b class=\"subtitle\">Environment: PHP Web (Apache Module/PHP-CGI)</b><br><br>"; $env_test_web=1; include("environment.test.php"); echo "<br>";
echo "</td></tr>"; echo "<tr><td colspan=2><hr class=\"nspacer\"></td></tr>"; echo "<tr><td>" . $NATS->Lang->Item("test.interval") . ":</td>"; echo "<td><input type=text size=3 name=testinterval maxlength=8 value=\"" . $row['testinterval'] . "\"> " . $NATS->Lang->Item("minutes") . " " . hlink("Test:Interval"); echo "</td></tr>"; echo "<input type=hidden name=original_testinterval value=\"" . $row['testinterval'] . "\">"; echo "<tr><td valign=top>" . $NATS->Lang->Item("test.due") . ":</td>"; echo "<td>"; if ($row['nextrunx'] > 0) { echo nicedt($row['nextrunx']) . " - " . nicenextx($row['nextrunx']); } else { echo $NATS->Lang->Item("now"); } echo "</td></tr>"; echo "<tr><td valign=top>" . $NATS->Lang->Item("last.tested") . ":</td>"; echo "<td>" . nicedt($row['lastrunx']) . " - " . dtago($row['lastrunx']) . "<br>"; echo "<a href=localtest.action.php?localtestid=" . $_REQUEST['localtestid'] . "&action=invalidate>" . $NATS->Lang->Item("check.asap") . "</a>"; echo "</td></tr>"; echo "<tr><td colspan=2><hr class=\"nspacer\"></td></tr>"; echo "<tr><td>" . $NATS->Lang->Item("custom.attempts") . ":</td>"; echo "<td><input type=text size=3 name=attempts maxlength=2 value=\"" . $row['attempts'] . "\"> " . hlink("Test:Attempts"); echo "</td></tr>"; echo "<tr><td>" . $NATS->Lang->Item("custom.timeout") . ":</td>"; echo "<td><input type=text name=timeout size=3 maxlength=3 value=\"" . $row['timeout'] . "\"> " . $NATS->Lang->Item("seconds") . " " . hlink("Test:Timeout"); echo "</td></tr>"; echo "<tr><td colspan=2><hr class=\"nspacer\"></td></tr>"; echo "<tr><td> </td><td><input type=submit value=\"" . $NATS->Lang->Item("test.save") . "\"> "; echo "<a href=node.edit.php?nodeid=" . $row['nodeid'] . ">" . $NATS->Lang->Item("abandon.changes") . "</a>"; echo "</td></tr></form>"; echo "</table>"; End_Round();
outTime(time(), "Now", false); echo "<br><input type=submit value=\"View Summary\">"; echo "</td></tr>"; echo "</form></table>"; } if (isset($_REQUEST['startx'])) { $startx = $_REQUEST['startx']; } else { $startx = mktime(0, 0, 0, $td_mon, $td_day, $td_yr); } if (isset($_REQUEST['finishx'])) { $finishx = $_REQUEST['finishx']; } else { $finishx = mktime(23, 59, 59, $td_mon, $td_day, $td_yr); } echo "<br><b>From </b>" . nicedt($startx) . " <b>to</b> " . nicedt($finishx) . "<br><br>"; if ($nodeid == "*") { // $q = "SELECT testid,nodeid FROM fnrecord WHERE recordx>=" . ss($startx) . " AND recordx<=" . ss($finishx); $q .= " GROUP BY testid ORDER BY nodeid"; } else { if ($nodeid == " custom") { $q = "SELECT testid,nodeid FROM fnrecord WHERE recordx>=" . ss($startx) . " AND recordx<=" . ss($finishx) . " "; $q .= "AND nodeid IN ( "; $first = true; foreach ($_REQUEST['nodelist'] as $node) { if ($first) { $first = false; } else { $q .= ","; }
$q="SELECT * FROM fntestrun WHERE trid=".ss($_REQUEST['trid'])." LIMIT 0,1"; $r=$NATS->DB->Query($q); if (!$row=$NATS->DB->Fetch_Array($r)) { echo "<b>Error fetching test run data</b><br><br>"; Screen_Footer(); exit(); } $NATS->DB->Free($r); echo "<table border=0>"; echo "<tr><td>Started : </td>"; echo "<td>".nicedt($row['startx'])." (".dtago($row['startx']).")</td></tr>"; echo "<tr><td>Finished : </td>"; echo "<td>"; if ($row['finishx']>0) echo nicedt($row['finishx'])." (".dtago($row['finishx']).")"; else echo "Still Running (<a href=testrun.php?trid=".$_REQUEST['trid']."&action=finish>Manually Mark Finished</a>)"; echo "</td>"; echo "<tr><td>Node Filter :</td>"; echo "<td>"; if ($row['fnode']=="") echo "All Nodes"; else echo "<a href=node.php?nodeid=".$row['fnode'].">".$row['fnode']."</a>"; echo "</td></tr>"; echo "<tr><td>Sysem Log :</td>"; echo "<td><a href=log.php?f_entry=Tester+".$row['trid'].">Log Events for Tester ".$row['trid']."</a>"; echo "</td></tr>"; echo "<tr><td align=left valign=top>Output : </td>"; echo "<td align=left valign=top>"; echo $row['routput'];
$fx = $nowx; } else { $fx = $finishx; } $p = $fx - $startx; $five_min = 60 * 5; $shouldhave = floor($p / $five_min); } echo "<tr><td colspan=3> <br></td></tr>"; echo "<tr><td>First Test Record"; echo "</td><td> </td><td>"; echo nicedt($firstx); echo "</td></tr>"; echo "<tr><td>Last Test Record"; echo "</td><td> </td><td>"; echo nicedt($lastx); echo "</td></tr>"; echo "<tr><td colspan=3> <br></td></tr>"; echo "<tr><td><b>Service Availability</b>"; echo "</td><td> </td><td><b>"; // Service level is tested-failed echo np($tested, $tested - $failc); echo "</b></td></tr>"; echo "</table><br>"; /* - zoom period debugging echo "Period: $p s (".($p/$five_min).")<br>"; echo "sx: ".$startx." fx: ".$finishx."<br>"; echo "diffx: ".($finishx-$startx)."<br>"; echo "fx2: ".$fx." p: ".$p."<br>"; */ echo "<br><hr style=\"width: 400px; border: 0 solid #a0a0a0; height: 1px; background-color: #a0a0a0; align: left;\" align=\"left\"><br>";
if ($wc != "") { $q .= " WHERE " . $wc; } $q .= " ORDER BY logid"; if ($first) { $q .= " DESC LIMIT 0," . $pull; //$first=false; } else { $q .= " ASC"; } $r = $NATS->DB->Query($q); if ($first) { $s = array(); } while ($row = $NATS->DB->Fetch_Array($r)) { $line = nicedt($row['postedx']) . "\t" . $row['loglevel'] . "\t" . $row['modid'] . ":" . $row['catid'] . "\t" . $row['logevent'] . "\n"; if ($first) { $s[] = $line; } else { echo $line; } if ($row['logid'] > $lastlog) { $lastlog = $row['logid']; } } $NATS->DB->Free($r); if ($first) { for ($a = count($s) - 1; $a >= 0; $a--) { echo $s[$a]; } }
echo "<a href=log.php?d_from=".$dto."&d_show=".$d_show."&f_mod=".$f_mod."&f_cat=".$f_cat."&f_lvl=".$f_lvl."&f_entry=".urlencode($f_entry).">"; echo "<< Previous"; echo "</a></td>"; echo "<td colspan=2 align=right>"; $dto=$d_from+$d_show; if ($dto<0) $dto=0; echo "<a href=log.php?d_from=".$dto."&d_show=".$d_show."&f_mod=".$f_mod."&f_cat=".$f_cat."&f_lvl=".$f_lvl."&f_entry=".urlencode($f_entry).">"; echo "Next >>"; echo "</a></td></tr>"; //echo "<tr><td colspan=5>".$q."</td></tr>"; // <a href=log.php?d_from=".$d_from."&d_show=".$d_show."&f_mod=".$f_mod."&f_cat=".$f_cat."&f_lvl=".$f_lvl."&f_entry=".$fentry."> $r=$NATS->DB->Query($q); while ($row=$NATS->DB->Fetch_Array($r)) { echo "<tr><td>".nicedt($row['postedx'])."</td>"; echo "<td>"; echo "<a href=log.php?d_from=".$d_from."&d_show=".$d_show."&f_mod=".$row['modid']."&f_cat=".$f_cat."&f_lvl=".$f_lvl."&f_entry=".urlencode($f_entry).">"; echo $row['modid']."</a></td>"; echo "<td>"; echo "<a href=log.php?d_from=".$d_from."&d_show=".$d_show."&f_mod=".$f_mod."&f_cat=".$row['catid']."&f_lvl=".$f_lvl."&f_entry=".urlencode($f_entry).">"; echo $row['catid']."</a></td>"; echo "<td>"; echo "<a href=log.php?d_from=".$d_from."&d_show=".$d_show."&f_mod=".$f_mod."&f_cat=".$f_cat."&f_lvl=".$row['loglevel']."&f_entry=".urlencode($f_entry).">"; echo $row['loglevel']."</a></td>"; echo "<td>".$row['logevent']."</td>"; echo "</tr>"; } $NATS->DB->Free($r); echo "<tr><td colspan=3>";
$q .= "testid=\"" . ss($_REQUEST['testid']) . "\" AND recordx>=" . ss($startx) . " AND recordx<=" . ss($finishx); //if (!isset($_REQUEST['disp_pass'])) $q.=" AND alertlevel!=0"; $q .= " ORDER BY recordx DESC"; //echo $q; $r = $NATS->DB->Query($q); $testc = 0; $tested = 0; $untested = 0; $passc = 0; $warnc = 0; $failc = 0; $levelt = 0; echo "<table class=\"nicetable\">"; while ($row = $NATS->DB->Fetch_Array($r)) { if ((isset($_REQUEST['disp_pass']) || $row['alertlevel'] != 0) && !isset($_REQUEST['disp_hdata'])) { echo "<tr><td>" . nicedt($row['recordx']) . "</td>"; echo "<td><b class=\"al" . $row['alertlevel'] . "\">" . oText($row['alertlevel']) . "</b></td>"; echo "<td>" . $row['testvalue'] . "</td>"; echo "</tr>"; } $testc++; switch ($row['alertlevel']) { case 0: $passc++; $tested++; $levelt += $row['testvalue']; // for passed only break; case 1: $warnc++; $tested++;
$still_running = true; } // either never timesout or newer than timelimit ago } $NATS->DB->Free($cr); // and if it is then don't continue if ($still_running) { $NATS->Event("Tester Already Running: Aborted", 1, "Tester", "Error"); db("Tester Already Running: Aborted"); $NATS->Stop(); exit; } $gq = "INSERT INTO fntestrun(startx,fnode) VALUES(" . time() . ",\"" . ss($nfilter) . "\")"; $NATS->DB->Query($gq); $trid = $NATS->DB->Insert_Id(); db("Test ID: " . $trid . " (Started at " . nicedt(time()) . ")"); $NATS->Event("Tester " . $trid . " Started", 5, "Tester", "Start"); db(" "); // Find node to test - must be enabled, have id if set, and be due to be tested (nextrunx) $q = "SELECT * FROM fnnode WHERE nodeenabled=1"; if ($nfilter != "") { $q .= " AND nodeid=\"" . ss($nfilter) . "\""; } $q .= " AND nextrunx<=" . time(); $r = $NATS->DB->Query($q); while ($row = $NATS->DB->Fetch_Array($r)) { $dotests = true; $alertlevel = 0; $alerts = array(); $alertc = 0; db("NodeID: " . $row['nodeid']);