|
15 | 15 | /** Get a json payload from the LNT server asynchronously or error. |
16 | 16 | * @param {string} payload_url JSON payloads URL. |
17 | 17 | */ |
18 | | - function getValue(payload_url) { |
| 18 | + function getValue(payload_url, retries) { |
19 | 19 | var response = $.ajax({ |
20 | 20 | url: payload_url, |
21 | 21 | async: false, |
22 | 22 | cache: false, |
23 | | - timeout: 60000, // Make all requests timeout after a minute. |
| 23 | + timeout: 60000 // Make all requests timeout after a minute. |
24 | 24 | }); |
25 | | - |
| 25 | + if (retries > 0 && response.status >= 500) { |
| 26 | + tableau.reportProgress("Error: Retrying because of 5xx error code."); |
| 27 | + return getValue(payload_url, retries-1); |
| 28 | + } |
26 | 29 | if (response.status >= 400) { |
27 | 30 | var error_msg = "Requesting data from LNT failed with:\n\n HTTP " + |
28 | 31 | response.status + ": " + response.responseText + "\n\nURL: " + |
29 | | - payload_url |
| 32 | + payload_url; |
30 | 33 | tableau.abortWithError(error_msg); |
31 | 34 | throw new Error(error_msg); |
32 | 35 | } |
|
36 | 39 |
|
37 | 40 | function get_matching_machines(regexp) { |
38 | 41 | const name_regexp = new RegExp(regexp); |
39 | | - var resp = getValue(ts_url + "/machines/"); |
| 42 | + var resp = getValue(ts_url + "/machines/", 3); |
40 | 43 | var machines = resp.machines; |
41 | 44 | return machines.filter(function (name_ids) { |
42 | 45 | return name_regexp.test(name_ids.name); |
|
48 | 51 | var search_info = JSON.parse(tableau.connectionData); |
49 | 52 | tableau.reportProgress("Getting Schema from LNT."); |
50 | 53 |
|
51 | | - var field_info = getValue(ts_url + "/fields/"); |
| 54 | + var field_info = getValue(ts_url + "/fields/", 3); |
52 | 55 | var fields = field_info.fields; |
53 | 56 |
|
54 | 57 | // Lookup machines of interest, and gather run fields. |
|
61 | 64 | } |
62 | 65 |
|
63 | 66 | machine_infos.forEach(function (machine) { |
64 | | - var machines_run_data = getValue(ts_url + "/machines/" + machine.id) |
| 67 | + var machines_run_data = getValue(ts_url + "/machines/" + machine.id, 3); |
65 | 68 | // Grab the last run_info. |
66 | 69 | // If fields were added over time, it should have the most. |
67 | 70 | var final_run_info = machines_run_data.runs[machines_run_data.runs.length - 1]; |
|
197 | 200 | var submission_batch_size = 10000; |
198 | 201 | var total_fetched = 1; |
199 | 202 | machine_names.forEach(function (machine) { |
200 | | - var machines_run_data = getValue(ts_url + "/machines/" + machine.id) |
| 203 | + var machines_run_data = getValue(ts_url + "/machines/" + machine.id, 3); |
201 | 204 |
|
202 | 205 | machines_run_data.runs.forEach(function(run_info){ |
203 | 206 | // Incremental support. |
|
257 | 260 | tableau.reportProgress(status_msg); |
258 | 261 | } |
259 | 262 |
|
260 | | - run_data = getValue(ts_url + "/runs/" + run_id); |
| 263 | + run_data = getValue(ts_url + "/runs/" + run_id, 3); |
261 | 264 |
|
262 | 265 | run_data.tests.forEach(function (element) { |
263 | 266 | element.test_name = element.name; |
|
0 commit comments