Skip to content

Commit 8284feb

Browse files
CR-13431 add CF_API_RETRIES
1 parent ca49f60 commit 8284feb

File tree

4 files changed

+24
-5
lines changed

4 files changed

+24
-5
lines changed

config/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ class Config {
109109
branchNormalized: process.env.CF_BRANCH_TAG_NORMALIZED,
110110
storageIntegration: process.env.CF_STORAGE_INTEGRATION,
111111
logLevel: logLevelsMap[process.env.REPORT_LOGGING_LEVEL] || INFO,
112+
retriesForCodefreshAPI: Number(process.env.CF_API_RETRIES) || 0,
112113
sourceReportFolderName: (allureDir || 'allure-results').trim(),
113114
reportDir: ((reportDir || '').trim()) || undefined,
114115
reportPath: ((reportPath || '').trim()).replace(/\/$/, ''),

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "cf-docker-test-reporting",
3-
"version": "1.0.4",
3+
"version": "1.0.5",
44
"description": "Generate test report",
55
"repository": {
66
"type": "git",

src/api/index.js

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,24 @@
11
const rp = require('request-promise');
22

33
class CodefreshAPI {
4+
5+
static async sendRequest(config, opts) {
6+
if (config.env.retriesForCodefreshAPI) {
7+
let error;
8+
for (let i = 0; i < config.env.retriesForCodefreshAPI; i += 1) {
9+
try {
10+
// eslint-disable-next-line no-await-in-loop
11+
const result = await rp(opts);
12+
return result;
13+
} catch (e) {
14+
error = e;
15+
}
16+
}
17+
throw error;
18+
}
19+
return rp(opts);
20+
}
21+
422
static async createAnnotation({ config, value }) {
523
// this query use proxy ability to replace :account_id to currentAccountID
624
// this ability use because we don`t know accountId
@@ -19,7 +37,7 @@ class CodefreshAPI {
1937
json: true,
2038
};
2139

22-
return rp(createAnnotationOpts);
40+
return this.sendRequest(config, createAnnotationOpts);
2341
}
2442

2543
static async getProcessById({ id, config }) {
@@ -33,7 +51,7 @@ class CodefreshAPI {
3351
let process;
3452

3553
try {
36-
const processRes = await rp(opts);
54+
const processRes = await this.sendRequest(config, opts);
3755
process = JSON.parse(processRes);
3856
} catch (e) {
3957
throw new Error('Error during getting process info');

src/storageConfig/StorageConfigProvider.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
const _ = require('lodash');
2-
const rp = require('request-promise');
32
const VariableResolver = require('../ variableResolver/VariableResolver');
43
const storageTypesMap = require('./types');
54
const storageTypes = require('./storageTypes');
65
const fs = require('fs');
6+
const CodefreshAPI = require('../api');
77

88
class StorageConfigProvider {
99
constructor({ config }) {
@@ -29,7 +29,7 @@ class StorageConfigProvider {
2929
};
3030

3131
try {
32-
return await rp(opts);
32+
return await CodefreshAPI.sendRequest(config, opts);
3333
} catch (e) {
3434
const infoErrMsg = `Can't get storage integration: ${this.integrationName}`;
3535
if (config.env.logLevel === config.logLevels.DEBUG) {

0 commit comments

Comments
 (0)