3 require_once('db.php');
5 function float_to_time($time_in_float) {
6 $time = new DateTime();
7 $time->setTimestamp(floatval($time_in_float));
11 function add_build($db, $master, $builder_name, $build_number) {
12 if (!in_array($master, config('masters')))
15 $builder_id = $db->select_or_insert_row('builders', NULL, array('master' => $master, 'name' => $builder_name));
19 return $db->select_or_insert_row('builds', NULL, array('builder' => $builder_id, 'number' => $build_number));
22 function add_slave($db, $name) {
23 return $db->select_or_insert_row('slaves', NULL, array('name' => $name));
26 function fetch_and_parse_test_results_json($url, $jsonp = FALSE) {
27 $json_contents = file_get_contents($url);
32 $json_contents = preg_replace('/^\w+\(|\);$/', '', $json_contents);
34 return json_decode($json_contents, true);
37 function store_test_results($db, $test_results, $build_id, $start_time, $end_time, $slave_id) {
38 $db->begin_transaction();
41 foreach ($test_results['tests'] as $name => $subtests)
42 recursively_add_test_results($db, $build_id, $subtests, $name);
43 $db->query_and_get_affected_rows('UPDATE builds SET (start_time, end_time, slave, fetched) = ($1, $2, $3, TRUE) WHERE id = $4',
44 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));
45 $db->commit_transaction();
46 } catch (Exception $e) {
47 $db->rollback_transaction();
54 function recursively_add_test_results($db, $build_id, $tests, $full_name) {
55 if (!array_key_exists('expected', $tests) and !array_key_exists('actual', $tests)) {
56 foreach ($tests as $name => $subtests)
57 recursively_add_test_results($db, $build_id, $subtests, $full_name . '/' . $name);
61 $test_id = $db->select_or_insert_row('tests', NULL,
62 array('name' => $full_name), array('name' => $full_name, 'reftest_type' => json_encode(array_get($tests, 'reftest_type'))));
64 // FIXME: Either use a transaction or check the return value.
65 $db->select_or_insert_row('results', NULL, array('test' => $test_id, 'build' => $build_id,
66 'expected' => $tests['expected'], 'actual' => $tests['actual']));