case "failed": $test['status'] = "Failed"; $test['statusclass'] = "error"; $numFailed++; break; case "notrun": $test['status'] = "Not Run"; $test['statusclass'] = "warning"; $numNotRun++; break; } if ($row["timestatus"] >= $testtimemaxstatus) { $numTimeFailed++; } $testid = $row['id']; get_labels_JSON_from_query_results("SELECT text FROM label, label2test WHERE " . "label.id=label2test.labelid AND " . "label2test.testid='{$testid}' AND " . "label2test.buildid='{$buildid}' " . "ORDER BY text ASC", $test); // Search for recent test history if ($previous_buildids_str != "") { $history_query = "\n SELECT DISTINCT status FROM build2test\n WHERE testid={$testid} AND buildid IN ({$previous_buildids_str})"; $history_results = pdo_query($history_query); $num_statuses = pdo_num_rows($history_results); if ($num_statuses > 0) { $response['displayhistory'] = 1; if ($num_statuses > 1) { $test['history'] = "Unstable"; $test['historyclass'] = "warning"; } else { $row = pdo_fetch_array($history_results); $test['history'] = ucfirst($row['status']); switch ($row['status']) { case "passed":
$marshaledResolvedBuildFailure = array_merge($marshaledResolvedBuildFailure, array('stderr' => $resolvedBuildFailure['stderror'], 'stderrorrows' => min(10, substr_count($resolvedBuildFailure['stderror'], "\n") + 1), 'stdoutput' => $resolvedBuildFailure['stdoutput'], 'stdoutputrows' => min(10, substr_count($resolvedBuildFailure['stdoutputrows'], "\n") + 1))); addErrorResponse($marshaledResolvedBuildFailure); } } else { $extrasql = ''; if (isset($_GET['onlydeltap'])) { $extrasql = " AND newstatus='1'"; } // Build error table $buildErrors = $build->GetBuildErrors($type, $extrasql); while ($buildError = pdo_fetch_array($buildErrors)) { addErrorResponse(builderror::marshal($buildError, $project_array, $revision)); } // Build failure table $buildFailures = $build->getBuildFailures($projectid, $type, $extrasql, 'bf.id ASC'); while ($buildFailure = pdo_fetch_array($buildFailures)) { $marshaledBuildFailure = buildfailure::marshal($buildFailure, $project_array, $revision, true); if ($project_array['displaylabels']) { get_labels_JSON_from_query_results("SELECT text FROM label, label2buildfailure\n WHERE label.id=label2buildfailure.labelid AND\n label2buildfailure.buildfailureid='" . $buildFailure['id'] . "'\n ORDER BY text ASC", $marshaledBuildFailure); } addErrorResponse($marshaledBuildFailure); } } if ($build->IsParentBuild()) { $response['numSubprojects'] = count(array_unique(array_map(function ($buildError) { return $buildError['subprojectid']; }, $response['errors']))); } $end = microtime_float(); $response['generationtime'] = round($end - $start, 3); echo json_encode(cast_data_for_JSON($response));
$error_response['outputtype'] = $error_array['outputtype']; $error_response['workingdirectory'] = $error_array['workingdirectory']; $buildfailureid = $error_array['id']; $arguments = pdo_query("SELECT bfa.argument FROM buildfailureargument AS bfa,\n buildfailure2argument AS bf2a\n WHERE bf2a.buildfailureid='{$buildfailureid}' AND bf2a.argumentid=bfa.id\n ORDER BY bf2a.place ASC"); $i = 0; $arguments_response = array(); while ($argument_array = pdo_fetch_array($arguments)) { if ($i == 0) { $error_response['argumentfirst'] = $argument_array['argument']; } else { $arguments_response[] = $argument_array['argument']; } $i++; } $error_response['arguments'] = $arguments_response; get_labels_JSON_from_query_results("SELECT text FROM label, label2buildfailure\n WHERE label.id=label2buildfailure.labelid AND\n label2buildfailure.buildfailureid='{$buildfailureid}'\n ORDER BY text ASC", $error_response); $stderror = $error_array['stderror']; $stdoutput = $error_array['stdoutput']; if (isset($error_array['sourcefile'])) { $projectCvsUrl = $project_array['cvsurl']; $file = basename($error_array['sourcefile']); $directory = dirname($error_array['sourcefile']); $cvsurl = get_diff_url($projectid, $projectCvsUrl, $directory, $file, $revision); $error_response['cvsurl'] = $cvsurl; $source_dir = get_source_dir($projectid, $projectCvsUrl, $directory); if ($source_dir !== NULL) { $stderror = linkify_compiler_output($projectCvsUrl, $source_dir, $revision, $stderror); $stdoutput = linkify_compiler_output($projectCvsUrl, $source_dir, $revision, $stdoutput); } } if ($stderror) {
public static function marshal($data, $buildid, $projectid, $projectshowtesttime, $testtimemaxstatus, $testdate) { $marshaledStatus = self::marshalStatus($data['status']); $marshaledData = array('id' => $data['id'], 'buildid' => $buildid, 'status' => $marshaledStatus[0], 'statusclass' => $marshaledStatus[1], 'name' => $data['name'], 'execTime' => time_difference($data['time'], true, '', true), 'execTimeFull' => floatval($data['time']), 'details' => $data['details'], 'summaryLink' => "testSummary.php?project={$projectid}&name=" . urlencode($data['name']) . "&date={$testdate}", 'summary' => 'Summary', 'detailsLink' => "testDetails.php?test=" . $data['id'] . "&build={$buildid}"); if ($data['newstatus']) { $marshaledData['new'] = '1'; } if ($projectshowtesttime) { if ($data['timestatus'] < $testtimemaxstatus) { $marshaledData['timestatus'] = 'Passed'; $marshaledData['timestatusclass'] = 'normal'; } else { $marshaledData['timestatus'] = 'Failed'; $marshaledData['timestatusclass'] = 'error'; } } global $CDASH_DB_TYPE; if ($CDASH_DB_TYPE == 'pgsql') { get_labels_JSON_from_query_results('SELECT text FROM label, label2test WHERE ' . 'label.id=label2test.labelid AND ' . "label2test.testid=" . $marshaledData['id'] . " AND " . "label2test.buildid='{$buildid}' " . 'ORDER BY text ASC', $marshaledData); } else { if (!empty($data['labels'])) { $labels = explode(',', $data['labels']); $marshaledData['labels'] = $labels; } } if (isset($data['subprojectid'])) { $marshaledData['subprojectid'] = $data['subprojectid']; } if (isset($data['subprojectname'])) { $marshaledData['subprojectname'] = $data['subprojectname']; } return $marshaledData; }