Skip to content

Commit 2809f17

Browse files
bcoeAce Nassri
authored and
Ace Nassri
committed
test: retry flaky firewall tests (#646)
Modifies samples so they actually exit with 1 on failure. Add cleanup step and retry logic to flaky firewall tests. Fixes #643, #642
1 parent 30e0cd4 commit 2809f17

File tree

5 files changed

+51
-3
lines changed

5 files changed

+51
-3
lines changed

compute/firewall/createFirewallRule.js

+4
Original file line numberDiff line numberDiff line change
@@ -86,3 +86,7 @@ function main(
8686
}
8787

8888
main(...process.argv.slice(2));
89+
process.on('unhandledRejection', err => {
90+
console.error(err.message);
91+
process.exitCode = 1;
92+
});

compute/firewall/deleteFirewallRule.js

+4
Original file line numberDiff line numberDiff line change
@@ -54,3 +54,7 @@ function main(projectId, firewallRuleName) {
5454
}
5555

5656
main(...process.argv.slice(2));
57+
process.on('unhandledRejection', err => {
58+
console.error(err.message);
59+
process.exitCode = 1;
60+
});

compute/firewall/listFirewallRules.js

+4
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,7 @@ function main(projectId) {
4343
}
4444

4545
main(...process.argv.slice(2));
46+
process.on('unhandledRejection', err => {
47+
console.error(err.message);
48+
process.exitCode = 1;
49+
});

compute/firewall/patchFirewallPriority.js

+4
Original file line numberDiff line numberDiff line change
@@ -63,3 +63,7 @@ function main(projectId, firewallRuleName, priority = 10) {
6363
}
6464

6565
main(...process.argv.slice(2));
66+
process.on('unhandledRejection', err => {
67+
console.error(err.message);
68+
process.exitCode = 1;
69+
});

compute/test/samples.test.js

+35-3
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,33 @@ describe('samples', () => {
317317
});
318318

319319
describe('firewall', () => {
320-
it('should create and delete firewall rule', async () => {
320+
// Clean stale firewall rules, in case prior test runs have failed.
321+
before(async () => {
322+
const FOUR_HOURS = 1000 * 60 * 60 * 4;
323+
const projectId = await instancesClient.getProjectId();
324+
for await (const rule of firewallsClient.listAsync({
325+
project: projectId,
326+
})) {
327+
const created = new Date(rule.creationTimestamp).getTime();
328+
// Delete firewalls that are older than 4 hours and match our
329+
// test prefix.
330+
if (
331+
created < Date.now() - FOUR_HOURS &&
332+
rule.name.startsWith('test-firewall-rule')
333+
) {
334+
console.info(`deleting stale firewall ${rule.name}`);
335+
await firewallsClient.delete({
336+
project: projectId,
337+
firewall: rule.name,
338+
});
339+
}
340+
}
341+
});
342+
343+
it('should create and delete firewall rule', async function () {
344+
this.retries(3);
345+
await delay(this.test);
346+
321347
const projectId = await instancesClient.getProjectId();
322348
const firewallRuleName = `test-firewall-rule-${uuid.v4().split('-')[0]}`;
323349

@@ -332,7 +358,10 @@ describe('samples', () => {
332358
assert.match(output, /Firewall rule deleted/);
333359
});
334360

335-
it('should list firewall rules', async () => {
361+
it('should list firewall rules', async function () {
362+
this.retries(3);
363+
await delay(this.test);
364+
336365
const projectId = await instancesClient.getProjectId();
337366
const firewallRuleName = `test-firewall-rule-${uuid.v4().split('-')[0]}`;
338367

@@ -347,7 +376,10 @@ describe('samples', () => {
347376
);
348377
});
349378

350-
it('should patch firewall rule', async () => {
379+
it('should patch firewall rule', async function () {
380+
this.retries(3);
381+
await delay(this.test);
382+
351383
const projectId = await instancesClient.getProjectId();
352384
const firewallRuleName = `test-firewall-rule-${uuid.v4().split('-')[0]}`;
353385

0 commit comments

Comments
 (0)