mirror of
https://github.com/Azure/cosmos-explorer.git
synced 2026-09-19 17:12:47 +01:00
Validate E2E cleanup duration
This commit is contained in:
+15
-4
@@ -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 };
|
||||||
|
|||||||
@@ -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);
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user