3 require_once('../include/json-shared.php');
4 require_once('../include/test-results.php');
8 require_existence_of($_POST, array(
9 'master' => '/[A-Za-z0-9\.]+/',
10 'builder_name' => '/^[A-Za-z0-9 \(\)\-_]+$/',
11 'build_number' => '/^[0-9]+?$/',
12 'build_slave' => '/^[A-Za-z0-9\-_]+$/',
13 'revisions' => '/^.+?$/',
14 'start_time' => '/^[0-9]+(\.[0-9]+)?$/',
15 'end_time' => '/^[0-9]+(\.[0-9]+)?$/'));
17 if (!array_key_exists('file', $_FILES) or !array_key_exists('tmp_name', $_FILES['file']) or count($_FILES['file']['tmp_name']) <= 0)
18 exit_with_error('ResultsJSONNotIncluded');
20 $revisions = json_decode($_POST['revisions'], true);
21 foreach ($revisions as $repository_name => $revision_data) {
22 require_format('repository_name', $repository_name, '/^\w+$/');
23 require_existence_of($revision_data, array(
24 'revision' => '/^[a-z0-9]+$/',
25 'timestamp' => '/^[a-z0-9\-\.:TZ]+$/',
29 $test_results = fetch_and_parse_test_results_json($_FILES['file']['tmp_name']);
31 exit_with_error('InvalidResultsJSON');
33 $start_time = float_to_time($_POST['start_time']);
34 $end_time = float_to_time($_POST['end_time']);
36 $build_id = add_build($db, $_POST['master'], $_POST['builder_name'], intval($_POST['build_number']));
38 exit_with_error('FailedToInsertBuild', array('master' => $_POST['master'], 'builderName' => $_POST['builder_name'], 'buildNumber' => $_POST['build_number']));
40 foreach ($revisions as $repository_name => $revision_data) {
41 $repository_id = $db->select_or_insert_row('repositories', NULL, array('name' => $repository_name));
43 exit_with_error('FailedToInsertRepository', array('name' => $repository_name));
45 $revision_data = array(
46 'repository' => $repository_id,
48 'value' => $revision_data['revision'],
49 'time' => array_get($revision_data, 'timestamp'));
50 $db->select_or_insert_row('build_revisions', NULL, array('repository' => $repository_id, 'build' => $build_id), $revision_data, 'value')
51 or exit_with_error('FailedToInsertRevision', array('name' => $repository_name, 'data' => $revision_data));
54 $slave_id = add_slave($db, $_POST['build_slave']);
55 if (!store_test_results($db, $test_results, $build_id, $start_time, $end_time, $slave_id))
56 exit_with_error('FailedToStoreResults', array('buildId' => $build_id));