Validate E2E cleanup duration

This commit is contained in:
Vsevolod Kukol
2026-09-11 22:30:01 +02:00
parent f8aad79af9
commit 2ff1308a6e
2 changed files with 30 additions and 5 deletions
+15 -4
View File
@@ -5,10 +5,21 @@ const ms = require("ms");
const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"];
const resourceGroupName = process.env["E2ETESTS_RESOURCEGROUP_NAME"]; const resourceGroupName = process.env["E2ETESTS_RESOURCEGROUP_NAME"];
const cleanupMinimumAge = ms(process.env["E2E_CLEANUP_MINIMUM_AGE"] || "6h"); function parseCleanupMinimumAge(configuredAge) {
if (!cleanupMinimumAge) { let parsedAge;
throw new Error("E2E_CLEANUP_MINIMUM_AGE must be a valid duration"); try {
parsedAge = ms(configuredAge === undefined ? "6h" : configuredAge);
} catch {
parsedAge = undefined;
}
if (!Number.isFinite(parsedAge) || parsedAge <= 0) {
throw new Error("E2E_CLEANUP_MINIMUM_AGE must be a positive duration");
}
return parsedAge;
} }
const cleanupMinimumAge = parseCleanupMinimumAge(process.env["E2E_CLEANUP_MINIMUM_AGE"]);
const cleanupThreshold = Date.now() - cleanupMinimumAge; const cleanupThreshold = Date.now() - cleanupMinimumAge;
function shouldDeleteResource(name, timestamp, threshold = cleanupThreshold) { function shouldDeleteResource(name, timestamp, threshold = cleanupThreshold) {
@@ -150,4 +161,4 @@ if (require.main === module) {
}); });
} }
module.exports = { shouldDeleteResource }; module.exports = { parseCleanupMinimumAge, shouldDeleteResource };
+15 -1
View File
@@ -1,9 +1,23 @@
const assert = require("node:assert/strict"); const assert = require("node:assert/strict");
const test = require("node:test"); const test = require("node:test");
const { shouldDeleteResource } = require("./cleanupDBs"); const { parseCleanupMinimumAge, shouldDeleteResource } = require("./cleanupDBs");
const cleanupThreshold = Date.now(); const cleanupThreshold = Date.now();
test("uses a six-hour cleanup age when no value is configured", () => {
assert.equal(parseCleanupMinimumAge(undefined), 6 * 60 * 60 * 1000);
});
test("accepts a finite positive cleanup age", () => {
assert.equal(parseCleanupMinimumAge("12h"), 12 * 60 * 60 * 1000);
});
test("rejects unsafe cleanup ages", () => {
for (const configuredAge of ["", "invalid", "0ms", "-1h", "Infinity"]) {
assert.throws(() => parseCleanupMinimumAge(configuredAge), /E2E_CLEANUP_MINIMUM_AGE must be a positive duration/);
}
});
test("deletes owned test resources older than the threshold", () => { test("deletes owned test resources older than the threshold", () => {
assert.equal(shouldDeleteResource("t_12345_1_dbab_1000", cleanupThreshold - 1, cleanupThreshold), true); assert.equal(shouldDeleteResource("t_12345_1_dbab_1000", cleanupThreshold - 1, cleanupThreshold), true);
}); });