From 8dd6e16cf3fb90400ca4429233862873916f7286 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Bonnefont?= Date: Wed, 24 Nov 2021 16:21:39 +0100 Subject: [PATCH] fix(error-handling): add http error handling (#8) --- src/compute/coverage-for-folder.sh | 2 ++ src/monitor/push-metrics-all-folders.sh | 2 ++ src/monitor/push-metrics-for-folder.js | 17 ++++++----------- src/monitor/push-to-pushgateway.js | 5 +++++ 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/compute/coverage-for-folder.sh b/src/compute/coverage-for-folder.sh index b379b43..b47db11 100755 --- a/src/compute/coverage-for-folder.sh +++ b/src/compute/coverage-for-folder.sh @@ -1,5 +1,7 @@ #!/usr/bin/env bash +set -e + # This script computes the test coverage for a list of folders echo diff --git a/src/monitor/push-metrics-all-folders.sh b/src/monitor/push-metrics-all-folders.sh index bd63f00..98b1e7b 100755 --- a/src/monitor/push-metrics-all-folders.sh +++ b/src/monitor/push-metrics-all-folders.sh @@ -1,5 +1,7 @@ #!/usr/bin/env bash +set -e + # This script push computed metrics to Prometheus. # It expects coverage metrics to be exposed in a tar.gz file called diff --git a/src/monitor/push-metrics-for-folder.js b/src/monitor/push-metrics-for-folder.js index 8582ef2..65faa18 100755 --- a/src/monitor/push-metrics-for-folder.js +++ b/src/monitor/push-metrics-for-folder.js @@ -37,18 +37,13 @@ const pushMetricsForFolder = ({ coverageArtifactsPath, folderName, jobName, push .reduce((metricsAsText, metric) => metricsAsText + formatMetricPayload(metric), "") // Sent metrics to Prometheus - try { - pushToGateway(`${pushGatewayUri}/metrics/job/${jobName}/folder_name/${folderName}`, metricsPayload, (err, data) => { - if (err) { - throw new Error(err.message) - } + pushToGateway(`${pushGatewayUri}/metrics/job/${jobName}/folder_name/${folderName}`, metricsPayload, (err, data) => { + if (err) { + throw new Error(err.message) + } - console.log("Done -", data.body) - }) - } - catch(e) { - throw new Error(`ERROR: ${e.message}`) - } + console.log("Done -", data.body) + }) } // If script is used from command-line as standalone diff --git a/src/monitor/push-to-pushgateway.js b/src/monitor/push-to-pushgateway.js index cc449e6..2574e21 100644 --- a/src/monitor/push-to-pushgateway.js +++ b/src/monitor/push-to-pushgateway.js @@ -25,6 +25,11 @@ const pushToGateway = (pushGatewayUri, metricsPayload, callback) => { res.setEncoding('utf8') res.on('data', chunk => body += chunk) res.on('end', () => { + if (res.statusCode > 204) { + callback(new Error(`Invalid response status code '${res.statusCode}' - response: ${body}`)) + return + } + callback(null, { res, body,