return $db->select_or_insert_row('builders', NULL, array('master' => $master, 'name' => $builder_name));
}
-function add_build($db, $builder_id, $build_number) {
- return $db->select_or_insert_row('builds', NULL, array('builder' => $builder_id, 'number' => $build_number));
+function add_build($db, $builder_id, $build_number, $slave_id) {
+ return $db->select_or_insert_row('builds', NULL, array('builder' => $builder_id, 'number' => $build_number, 'slave' => $slave_id));
}
function add_slave($db, $name) {
return json_decode($json_contents, true);
}
-function store_test_results($db, $test_results, $build_id, $start_time, $end_time, $slave_id) {
+function store_test_results($db, $test_results, $build_id, $start_time, $end_time) {
$db->begin_transaction();
try {
recursively_add_test_results($db, $build_id, $test_results['tests'], '');
$db->query_and_get_affected_rows(
- 'UPDATE builds SET (start_time, end_time, slave) = (least($1, start_time), greatest($2, end_time), $3) WHERE id = $4',
- array($start_time->format('Y-m-d H:i:s.u'), $end_time->format('Y-m-d H:i:s.u'), $slave_id, $build_id));
+ 'UPDATE builds SET (start_time, end_time, is_processed) = (least($1, start_time), greatest($2, end_time), FALSE) WHERE id = $3',
+ array($start_time->format('Y-m-d H:i:s.u'), $end_time->format('Y-m-d H:i:s.u'), $build_id));
$db->commit_transaction();
} catch (Exception $e) {
$db->rollback_transaction();
}
if (!$test_rows)
- return FALSE;
+ return TRUE;
$comma_separated_test_ids = '';
foreach ($test_rows as $row) {
$all_results = $this->db->query(
"SELECT results.*, builds.* FROM results
- JOIN (SELECT builds.*, array_agg((build_revisions.repository, build_revisions.value, build_revisions.time)) AS revisions,
- max(build_revisions.time) AS latest_revision_time
+ JOIN (SELECT builds.*, array_agg((build_revisions.repository, build_revisions.value, build_revisions.time)) AS revisions
FROM builds, build_revisions
WHERE build_revisions.build = builds.id AND builds.builder = $1
GROUP BY builds.id LIMIT 500) as builds ON results.build = builds.id
WHERE results.test in ($comma_separated_test_ids)
- ORDER BY results.test, latest_revision_time DESC", array($this->builder_id));
+ ORDER BY results.test DESC", array($this->builder_id));
if (!$all_results)
return FALSE;
SET is_flaky = preceeding_results.actual = succeeding_results.actual AND preceeding_results.actual != results.actual
FROM results preceeding_results, results succeeding_results
WHERE preceeding_results.build = $1 AND results.build = $2 AND succeeding_results.build = $3
- AND preceeding_results.test = results.test AND succeeding_results.test = results.test",
+ AND preceeding_results.test = results.test AND succeeding_results.test = results.test
+ AND (results.is_flaky IS NULL OR results.is_flaky !=
+ (preceeding_results.actual = succeeding_results.actual AND preceeding_results.actual != results.actual))",
array($preceeding_build['id'], $current_build['id'], $succeeding_build['id']));
}