diff --git a/agent/lib/src/agent.dart b/agent/lib/src/agent.dart index e4d605626b..b60e23eccf 100644 --- a/agent/lib/src/agent.dart +++ b/agent/lib/src/agent.dart @@ -41,8 +41,8 @@ class Agent { return JSON.decode(resp.body); } - Future uploadLogChunk(CocoonTask task, String chunk) async { - String url = '$baseCocoonUrl/api/append-log?ownerKey=${task.key}'; + Future uploadLogChunk(String taskKey, String chunk) async { + String url = '$baseCocoonUrl/api/append-log?ownerKey=${taskKey}'; Response resp = await httpClient.post(url, body: chunk); if (resp.statusCode != 200) { throw 'Failed uploading log chunk. Server responded with HTTP status ${resp.statusCode}\n' @@ -102,7 +102,8 @@ class Agent { await _cocoon('update-task-status', status); } - Future reportFailure(String taskKey) async { + Future reportFailure(String taskKey, String reason) async { + await uploadLogChunk(taskKey, '\n\nTask failed with the following reason:\n$reason\n'); await _cocoon('update-task-status', { 'TaskKey': taskKey, 'NewStatus': 'Failed', diff --git a/agent/lib/src/commands/ci.dart b/agent/lib/src/commands/ci.dart index 96d2b27c9d..56523c62db 100644 --- a/agent/lib/src/commands/ci.dart +++ b/agent/lib/src/commands/ci.dart @@ -81,8 +81,9 @@ class ContinuousIntegrationCommand extends Command { await _runTask(task); } } catch(error, stackTrace) { - print('ERROR: $error\n$stackTrace'); - await agent.reportFailure(task.key); + String errorMessage = 'ERROR: $error\n$stackTrace'; + print(errorMessage); + await agent.reportFailure(task.key, errorMessage); } } catch(error, stackTrace) { print('ERROR: $error\n$stackTrace'); @@ -102,7 +103,7 @@ class ContinuousIntegrationCommand extends Command { await agent.reportSuccess(task.key, result.data, result.benchmarkScoreKeys); await _uploadDataToFirebase(task, result); } else { - await agent.reportFailure(task.key); + await agent.reportFailure(task.key, result.reason); } }); } diff --git a/agent/lib/src/runner.dart b/agent/lib/src/runner.dart index 533b7c7328..4d81043ff2 100644 --- a/agent/lib/src/runner.dart +++ b/agent/lib/src/runner.dart @@ -104,7 +104,7 @@ Future runTask(Agent agent, CocoonTask task) async { if (flush || buffer.length > _kLogChunkSize) { String chunk = buffer.toString(); buffer = new StringBuffer(); - await agent.uploadLogChunk(task, chunk); + await agent.uploadLogChunk(task.key, chunk); } }