mirror of https://github.com/certd/certd
60 lines
1.5 KiB
JavaScript
60 lines
1.5 KiB
JavaScript
const { assert } = require('chai');
|
|
const Promise = require('bluebird');
|
|
const util = require('../src/util');
|
|
|
|
let count = 0;
|
|
async function apiRequest() {
|
|
count += 1;
|
|
console.log(new Date(), 'retry count:', count);
|
|
await Promise.delay(2000);
|
|
return count;
|
|
}
|
|
|
|
async function waitForValidStatus() {
|
|
const verifyFn = async (abort) => {
|
|
const resp = await apiRequest();
|
|
|
|
/* Verify status */
|
|
console.log(new Date(), 'Item has status', resp);
|
|
if (count < 3) {
|
|
abort();
|
|
throw new Error(`${new Date()}error`, count);
|
|
}
|
|
|
|
console.log(new Date(), 'success');
|
|
return 'success';
|
|
|
|
// if (resp.data.status === 'invalid') {
|
|
// abort();
|
|
// throw new Error(util.formatResponseError(resp));
|
|
// }
|
|
// else if (resp.data.status === 'pending') {
|
|
// throw new Error('Operation is pending');
|
|
// }
|
|
// else if (resp.data.status === 'valid') {
|
|
// return resp.data;
|
|
// }
|
|
//
|
|
// throw new Error(`Unexpected item status: ${resp.data.status}`);
|
|
};
|
|
|
|
console.log(new Date(), 'Waiting for valid status from', this.backoffOpts);
|
|
return util.retry(verifyFn, this.backoffOpts);
|
|
}
|
|
/**
|
|
*/
|
|
describe('util', () => {
|
|
it('retry', async function() {
|
|
this.timeout(100000);
|
|
try {
|
|
await waitForValidStatus();
|
|
}
|
|
catch (e) {
|
|
console.error('1111', e);
|
|
}
|
|
|
|
|
|
// await Promise.delay(100000);
|
|
});
|
|
});
|