Skip to content

Commit 5446135

Browse files
Run cleanup every 2 hours and only cleanup kvs that are older than an hour (#10323)
1 parent 89125b3 commit 5446135

File tree

13 files changed

+160
-129
lines changed

13 files changed

+160
-129
lines changed

.github/workflows/e2e-project-cleanup.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ name: E2E Project Cleanup
55
on:
66
workflow_dispatch:
77
schedule:
8-
- cron: "0 3 * * *" # Run at 3am each day
8+
- cron: "0 */2 * * *" # Run every 2 hours
99

1010
permissions:
1111
contents: read

fixtures/get-platform-proxy-remote-bindings/tests/index.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ const execOptions = {
1616
} as const;
1717
const remoteWorkerName = `tmp-e2e-worker-test-remote-bindings-${randomUUID().split("-")[0]}`;
1818
const remoteStagingWorkerName = `tmp-e2e-staging-worker-test-remote-bindings-${randomUUID().split("-")[0]}`;
19-
const remoteKvName = `tmp-e2e-remote-kv-test-remote-bindings-${randomUUID().split("-")[0]}`;
19+
const remoteKvName = `tmp-e2e-kv${Date.now()}-test-remote-bindings-${randomUUID().split("-")[0]}`;
2020

2121
if (auth) {
2222
describe("getPlatformProxy - remote bindings", { timeout: 50_000 }, () => {
Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,39 @@
11
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
22

3-
exports[`basic js dev: 'wrangler dev --remote' > --test-scheduled works with wrangler dev --remote > custom build 1`] = `"Ran scheduled event"`;
3+
exports[`basic js dev: 'wrangler dev --port=0' > --test-scheduled works with wrangler dev --port=0 > custom build 1`] = `"Ran scheduled event"`;
44

5-
exports[`basic js dev: 'wrangler dev --remote' > --test-scheduled works with wrangler dev --remote > no custom build 1`] = `"Ran scheduled event"`;
5+
exports[`basic js dev: 'wrangler dev --port=0' > --test-scheduled works with wrangler dev --port=0 > no custom build 1`] = `"Ran scheduled event"`;
66

7-
exports[`basic js dev: 'wrangler dev --remote' > Workers + Assets > can modify User Worker during wrangler dev --remote 1`] = `"Hello World!"`;
7+
exports[`basic js dev: 'wrangler dev --port=0' > Workers + Assets > can modify User Worker during wrangler dev --port=0 1`] = `"Hello World!"`;
88

9-
exports[`basic js dev: 'wrangler dev --remote' > Workers + Assets > can modify User Worker during wrangler dev --remote 2`] = `"Updated Worker!"`;
9+
exports[`basic js dev: 'wrangler dev --port=0' > Workers + Assets > can modify User Worker during wrangler dev --port=0 2`] = `"Updated Worker!"`;
1010

11-
exports[`basic js dev: 'wrangler dev --remote' > Workers + Assets > can modify assets during wrangler dev --remote 1`] = `"Hello World!"`;
11+
exports[`basic js dev: 'wrangler dev --port=0' > Workers + Assets > can modify assets during wrangler dev --port=0 1`] = `"Hello World!"`;
1212

13-
exports[`basic js dev: 'wrangler dev --remote' > Workers + Assets > can modify assets during wrangler dev --remote 2`] = `"Hello World!"`;
13+
exports[`basic js dev: 'wrangler dev --port=0' > Workers + Assets > can modify assets during wrangler dev --port=0 2`] = `"Hello World!"`;
1414

15-
exports[`basic js dev: 'wrangler dev --remote' > can modify Worker during wrangler dev --remote 1`] = `"Hello World!"`;
15+
exports[`basic js dev: 'wrangler dev --port=0' > can modify Worker during wrangler dev --port=0 1`] = `"Hello World!"`;
1616

17-
exports[`basic js dev: 'wrangler dev --remote' > can modify Worker during wrangler dev --remote 2`] = `"Updated Worker! value"`;
17+
exports[`basic js dev: 'wrangler dev --port=0' > can modify Worker during wrangler dev --port=0 2`] = `"Updated Worker! value"`;
1818

19-
exports[`basic js dev: 'wrangler dev --remote' > hotkeys can be disabled with wrangler dev --remote 1`] = `"Hello World!"`;
19+
exports[`basic js dev: 'wrangler dev --port=0' > hotkeys can be disabled with wrangler dev --port=0 1`] = `"Hello World!"`;
2020

21-
exports[`basic js dev: 'wrangler dev' > --test-scheduled works with wrangler dev > custom build 1`] = `"Ran scheduled event"`;
21+
exports[`basic js dev: 'wrangler dev --remote' > --test-scheduled works with wrangler dev --remote > custom build 1`] = `"Ran scheduled event"`;
2222

23-
exports[`basic js dev: 'wrangler dev' > --test-scheduled works with wrangler dev > no custom build 1`] = `"Ran scheduled event"`;
23+
exports[`basic js dev: 'wrangler dev --remote' > --test-scheduled works with wrangler dev --remote > no custom build 1`] = `"Ran scheduled event"`;
2424

25-
exports[`basic js dev: 'wrangler dev' > Workers + Assets > can modify User Worker during wrangler dev 1`] = `"Hello World!"`;
25+
exports[`basic js dev: 'wrangler dev --remote' > Workers + Assets > can modify User Worker during wrangler dev --remote 1`] = `"Hello World!"`;
2626

27-
exports[`basic js dev: 'wrangler dev' > Workers + Assets > can modify User Worker during wrangler dev 2`] = `"Updated Worker!"`;
27+
exports[`basic js dev: 'wrangler dev --remote' > Workers + Assets > can modify User Worker during wrangler dev --remote 2`] = `"Updated Worker!"`;
2828

29-
exports[`basic js dev: 'wrangler dev' > Workers + Assets > can modify assets during wrangler dev 1`] = `"Hello World!"`;
29+
exports[`basic js dev: 'wrangler dev --remote' > Workers + Assets > can modify assets during wrangler dev --remote 1`] = `"Hello World!"`;
3030

31-
exports[`basic js dev: 'wrangler dev' > Workers + Assets > can modify assets during wrangler dev 2`] = `"Hello World!"`;
31+
exports[`basic js dev: 'wrangler dev --remote' > Workers + Assets > can modify assets during wrangler dev --remote 2`] = `"Hello World!"`;
3232

33-
exports[`basic js dev: 'wrangler dev' > can modify Worker during wrangler dev 1`] = `"Hello World!"`;
33+
exports[`basic js dev: 'wrangler dev --remote' > Workers + Assets > can modify assets during wrangler dev --remote 3`] = `"Hello World!"`;
3434

35-
exports[`basic js dev: 'wrangler dev' > can modify Worker during wrangler dev 2`] = `"Updated Worker! value"`;
35+
exports[`basic js dev: 'wrangler dev --remote' > can modify Worker during wrangler dev --remote 1`] = `"Hello World!"`;
36+
37+
exports[`basic js dev: 'wrangler dev --remote' > can modify Worker during wrangler dev --remote 2`] = `"Updated Worker! value"`;
3638

37-
exports[`basic js dev: 'wrangler dev' > hotkeys can be disabled with wrangler dev 1`] = `"Hello World!"`;
39+
exports[`basic js dev: 'wrangler dev --remote' > hotkeys can be disabled with wrangler dev --remote 1`] = `"Hello World!"`;

packages/wrangler/e2e/cert.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ describe.skipIf(!CLOUDFLARE_ACCOUNT_ID)("cert", () => {
7373
"? Are you sure you want to delete certificate 00000000-0000-0000-0000-000000000000 (tmp-e2e-mtls-cert-00000000-0000-0000-0000-000000000000)?
7474
🤖 Using fallback value in non-interactive context: yes
7575
Deleted certificate 00000000-0000-0000-0000-000000000000 (tmp-e2e-mtls-cert-00000000-0000-0000-0000-000000000000) successfully"
76-
`
76+
`
7777
);
7878
});
7979

@@ -86,7 +86,7 @@ describe.skipIf(!CLOUDFLARE_ACCOUNT_ID)("cert", () => {
8686
"? Are you sure you want to delete certificate 00000000-0000-0000-0000-000000000000 (tmp-e2e-ca-cert-00000000-0000-0000-0000-000000000000)?
8787
🤖 Using fallback value in non-interactive context: yes
8888
Deleted certificate 00000000-0000-0000-0000-000000000000 (tmp-e2e-ca-cert-00000000-0000-0000-0000-000000000000) successfully"
89-
`
89+
`
9090
);
9191
});
9292
});

packages/wrangler/e2e/deployments.test.ts

Lines changed: 83 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -79,15 +79,15 @@ describe.skipIf(!CLOUDFLARE_ACCOUNT_ID)(
7979
const output = await helper.run(`wrangler deployments list`);
8080

8181
expect(normalize(output.stdout)).toMatchInlineSnapshot(`
82-
"Created: TIMESTAMP
83-
84-
Source: Upload
85-
Message: Automatic deployment on upload.
86-
Version(s): (100%) 00000000-0000-0000-0000-000000000000
87-
Created: TIMESTAMP
88-
Tag: -
89-
Message: -"
90-
`);
82+
"Created: TIMESTAMP
83+
84+
Source: Upload
85+
Message: Automatic deployment on upload.
86+
Version(s): (100%) 00000000-0000-0000-0000-000000000000
87+
Created: TIMESTAMP
88+
Tag: -
89+
Message: -"
90+
`);
9191
});
9292

9393
it("modifies & deploys a Worker", async () => {
@@ -117,92 +117,92 @@ describe.skipIf(!CLOUDFLARE_ACCOUNT_ID)(
117117
it("lists 2 deployments", async () => {
118118
const dep = await helper.run(`wrangler deployments list`);
119119
expect(normalize(dep.stdout)).toMatchInlineSnapshot(`
120-
"Created: TIMESTAMP
121-
122-
Source: Upload
123-
Message: Automatic deployment on upload.
124-
Version(s): (100%) 00000000-0000-0000-0000-000000000000
125-
Created: TIMESTAMP
126-
Tag: -
127-
Message: -
128-
Created: TIMESTAMP
129-
130-
Source: Unknown (deployment)
131-
Message: -
132-
Version(s): (100%) 00000000-0000-0000-0000-000000000000
133-
Created: TIMESTAMP
134-
Tag: -
135-
Message: -"
136-
`);
120+
"Created: TIMESTAMP
121+
122+
Source: Upload
123+
Message: Automatic deployment on upload.
124+
Version(s): (100%) 00000000-0000-0000-0000-000000000000
125+
Created: TIMESTAMP
126+
Tag: -
127+
Message: -
128+
Created: TIMESTAMP
129+
130+
Source: Unknown (deployment)
131+
Message: -
132+
Version(s): (100%) 00000000-0000-0000-0000-000000000000
133+
Created: TIMESTAMP
134+
Tag: -
135+
Message: -"
136+
`);
137137
});
138138

139139
it("rolls back", async () => {
140140
const output = await helper.run(
141141
`wrangler rollback --message "A test message"`
142142
);
143143
expect(normalize(output.stdout)).toMatchInlineSnapshot(`
144-
"├ Fetching latest deployment
145-
146-
├ Your current deployment has 1 version(s):
147-
148-
│ (100%) 00000000-0000-0000-0000-000000000000
149-
│ Created: TIMESTAMP
150-
│ Tag: -
151-
│ Message: -
152-
153-
├ Finding latest stable Worker Version to rollback to
154-
155-
156-
? Please provide an optional message for this rollback (120 characters max)
157-
🤖 Using default value in non-interactive context: A test message
158-
159-
├ WARNING You are about to rollback to Worker Version 00000000-0000-0000-0000-000000000000.
160-
│ This will immediately replace the current deployment and become the active deployment across all your deployed triggers.
161-
│ However, your local development environment will not be affected by this rollback.
162-
│ Rolling back to a previous deployment will not rollback any of the bound resources (Durable Object, D1, R2, KV, etc).
163-
164-
│ (100%) 00000000-0000-0000-0000-000000000000
165-
│ Created: TIMESTAMP
166-
│ Tag: -
167-
│ Message: -
168-
169-
? Are you sure you want to deploy this Worker Version to 100% of traffic?
170-
🤖 Using fallback value in non-interactive context: yes
171-
Performing rollback...
172-
173-
╰ SUCCESS Worker Version 00000000-0000-0000-0000-000000000000 has been deployed to 100% of traffic.
174-
Current Version ID: 00000000-0000-0000-0000-000000000000"
175-
`);
144+
"├ Fetching latest deployment
145+
146+
├ Your current deployment has 1 version(s):
147+
148+
│ (100%) 00000000-0000-0000-0000-000000000000
149+
│ Created: TIMESTAMP
150+
│ Tag: -
151+
│ Message: -
152+
153+
├ Finding latest stable Worker Version to rollback to
154+
155+
156+
? Please provide an optional message for this rollback (120 characters max)
157+
🤖 Using default value in non-interactive context: A test message
158+
159+
├ WARNING You are about to rollback to Worker Version 00000000-0000-0000-0000-000000000000.
160+
│ This will immediately replace the current deployment and become the active deployment across all your deployed triggers.
161+
│ However, your local development environment will not be affected by this rollback.
162+
│ Rolling back to a previous deployment will not rollback any of the bound resources (Durable Object, D1, R2, KV, etc).
163+
164+
│ (100%) 00000000-0000-0000-0000-000000000000
165+
│ Created: TIMESTAMP
166+
│ Tag: -
167+
│ Message: -
168+
169+
? Are you sure you want to deploy this Worker Version to 100% of traffic?
170+
🤖 Using fallback value in non-interactive context: yes
171+
Performing rollback...
172+
173+
╰ SUCCESS Worker Version 00000000-0000-0000-0000-000000000000 has been deployed to 100% of traffic.
174+
Current Version ID: 00000000-0000-0000-0000-000000000000"
175+
`);
176176
});
177177

178178
it("lists deployments", async () => {
179179
const dep = await helper.run(`wrangler deployments list`);
180180
expect(normalize(dep.stdout)).toMatchInlineSnapshot(`
181-
"Created: TIMESTAMP
182-
183-
Source: Upload
184-
Message: Automatic deployment on upload.
185-
Version(s): (100%) 00000000-0000-0000-0000-000000000000
186-
Created: TIMESTAMP
187-
Tag: -
188-
Message: -
189-
Created: TIMESTAMP
190-
191-
Source: Unknown (deployment)
192-
Message: -
193-
Version(s): (100%) 00000000-0000-0000-0000-000000000000
194-
Created: TIMESTAMP
195-
Tag: -
196-
Message: -
197-
Created: TIMESTAMP
198-
199-
Source: Unknown (deployment)
200-
Message: A test message
201-
Version(s): (100%) 00000000-0000-0000-0000-000000000000
202-
Created: TIMESTAMP
203-
Tag: -
204-
Message: -"
205-
`);
181+
"Created: TIMESTAMP
182+
183+
Source: Upload
184+
Message: Automatic deployment on upload.
185+
Version(s): (100%) 00000000-0000-0000-0000-000000000000
186+
Created: TIMESTAMP
187+
Tag: -
188+
Message: -
189+
Created: TIMESTAMP
190+
191+
Source: Unknown (deployment)
192+
Message: -
193+
Version(s): (100%) 00000000-0000-0000-0000-000000000000
194+
Created: TIMESTAMP
195+
Tag: -
196+
Message: -
197+
Created: TIMESTAMP
198+
199+
Source: Unknown (deployment)
200+
Message: A test message
201+
Version(s): (100%) 00000000-0000-0000-0000-000000000000
202+
Created: TIMESTAMP
203+
Tag: -
204+
Message: -"
205+
`);
206206
});
207207
}
208208
);

packages/wrangler/e2e/dev-with-resources.test.ts

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -686,11 +686,13 @@ describe.sequential.each(RUNTIMES)("Bindings: $flags", ({ runtime, flags }) => {
686686
);
687687
});
688688

689-
it.skipIf(isLocal)("exposes Hyperdrive bindings", async () => {
690-
const { id } = await helper.hyperdrive(isLocal);
689+
it.skipIf(isLocal || !process.env.HYPERDRIVE_DATABASE_URL)(
690+
"exposes Hyperdrive bindings",
691+
async () => {
692+
const { id } = await helper.hyperdrive(isLocal);
691693

692-
await helper.seed({
693-
"wrangler.toml": dedent`
694+
await helper.seed({
695+
"wrangler.toml": dedent`
694696
name = "${workerName}"
695697
main = "src/index.ts"
696698
compatibility_date = "2023-10-25"
@@ -699,7 +701,7 @@ describe.sequential.each(RUNTIMES)("Bindings: $flags", ({ runtime, flags }) => {
699701
binding = "HYPERDRIVE"
700702
id = "${id}"
701703
`,
702-
"src/index.ts": dedent`
704+
"src/index.ts": dedent`
703705
export default {
704706
async fetch(request, env) {
705707
if (request.url.includes("connect")) {
@@ -708,12 +710,13 @@ describe.sequential.each(RUNTIMES)("Bindings: $flags", ({ runtime, flags }) => {
708710
return new Response(env.HYPERDRIVE?.connectionString ?? "no")
709711
}
710712
}`,
711-
});
713+
});
712714

713-
const worker = helper.runLongLived(`wrangler dev ${flags}`);
714-
const { url } = await worker.waitForReady();
715-
await fetch(`${url}/connect`);
716-
});
715+
const worker = helper.runLongLived(`wrangler dev ${flags}`);
716+
const { url } = await worker.waitForReady();
717+
await fetch(`${url}/connect`);
718+
}
719+
);
717720

718721
it("exposes Pipelines bindings", async () => {
719722
await helper.seed({

packages/wrangler/e2e/dev.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import { getStartedWorkerdProcesses } from "./helpers/workerd-processes";
2525
const workerName = generateResourceName();
2626

2727
describe.each([
28-
{ cmd: "wrangler dev" },
28+
{ cmd: "wrangler dev --port=0" },
2929
...(CLOUDFLARE_ACCOUNT_ID ? [{ cmd: "wrangler dev --remote" }] : []),
3030
])("basic js dev: $cmd", ({ cmd }) => {
3131
it(`can modify Worker during ${cmd}`, async () => {
@@ -703,7 +703,7 @@ describe("hyperdrive dev tests", () => {
703703
await socketMsgPromise;
704704
});
705705

706-
it.skipIf(!CLOUDFLARE_ACCOUNT_ID)(
706+
it.skipIf(!CLOUDFLARE_ACCOUNT_ID || !process.env.HYPERDRIVE_DATABASE_URL)(
707707
"does not require local connection string when running `wrangler dev --remote`",
708708
async () => {
709709
const helper = new WranglerE2ETestHelper();

packages/wrangler/e2e/helpers/cert.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { randomUUID } from "node:crypto";
21
import * as forge from "node-forge";
2+
import { generateResourceName } from "./generate-resource-name";
33

44
// Generate X509 self signed root key pair and certificate
55
export function generateRootCertificate() {
@@ -109,9 +109,9 @@ export function generateRootCaCert() {
109109
}
110110

111111
export function generateMtlsCertName() {
112-
return `tmp-e2e-mtls-cert-${randomUUID()}`;
112+
return generateResourceName("mtls-cert");
113113
}
114114

115115
export function generateCaCertName() {
116-
return `tmp-e2e-ca-cert-${randomUUID()}`;
116+
return generateResourceName("ca-cert");
117117
}

packages/wrangler/e2e/helpers/command.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ export function runCommand(
3333
{ cwd, env, timeout = DEFAULT_TIMEOUT }: CommandOptions = {}
3434
) {
3535
try {
36+
console.log(`Running command: ${command}`);
3637
const { status, stdout, stderr, output } = spawnSync(command, [], {
3738
shell: true,
3839
cwd,

packages/wrangler/e2e/helpers/e2e-wrangler-test.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ export class WranglerE2ETestHelper {
8080
}
8181

8282
async kv(isLocal: boolean) {
83-
const name = generateResourceName("kv").replaceAll("-", "_");
83+
const name = generateResourceName("kv" + Date.now()).replaceAll("-", "_");
8484
if (isLocal) {
8585
return name;
8686
}
@@ -164,6 +164,11 @@ export class WranglerE2ETestHelper {
164164
return { id: crypto.randomUUID(), name };
165165
}
166166

167+
assert(
168+
process.env.HYPERDRIVE_DATABASE_URL,
169+
"HYPERDRIVE_DATABASE_URL must be set in order to create a Hyperdrive resource for this test"
170+
);
171+
167172
const result = await this.run(
168173
`wrangler hyperdrive create ${name} --connection-string="${process.env.HYPERDRIVE_DATABASE_URL}"`
169174
);

0 commit comments

Comments
 (0)