Skip to content

Commit 053389d

Browse files
authored
Fix testcontainers cleanup (#2023)
* update testcontainers packages * increase cleanup timeout and add better logs * small tweaks * decrease docker network size so we can have more of them * add a test flow to check this all works * await all engine.quit calls * add docker diagnostics * reduce number of test runs * improve network attachment output * add setup logs * log redis setup errors * add cleanup log type * stop redis container if setup fails * disable ipv6 * tidy things up a bit * fix unit tests workflow * decrease container cleanup timeout * fix types * fix webapp typecheck
1 parent 43a4139 commit 053389d

22 files changed

+617
-128
lines changed

.github/workflows/unit-tests.yml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,32 @@ jobs:
88
name: "🧪 Unit Tests"
99
runs-on: ubuntu-latest
1010
steps:
11+
- name: 🔧 Disable IPv6
12+
run: |
13+
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
14+
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
15+
sudo sysctl -w net.ipv6.conf.lo.disable_ipv6=1
16+
17+
- name: 🔧 Configure docker address pool
18+
run: |
19+
CONFIG='{
20+
"default-address-pools" : [
21+
{
22+
"base" : "172.17.0.0/12",
23+
"size" : 20
24+
},
25+
{
26+
"base" : "192.168.0.0/16",
27+
"size" : 24
28+
}
29+
]
30+
}'
31+
mkdir -p /etc/docker
32+
echo "$CONFIG" | sudo tee /etc/docker/daemon.json
33+
34+
- name: 🔧 Restart docker daemon
35+
run: sudo systemctl restart docker
36+
1137
- name: ⬇️ Checkout repo
1238
uses: actions/checkout@v4
1339
with:

apps/webapp/tsconfig.check.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
{
22
"extends": "./tsconfig.json",
33
"compilerOptions": {
4+
"lib": ["DOM", "DOM.Iterable", "DOM.AsyncIterable", "ES2022"],
5+
"target": "ES2022",
46
"noEmit": true,
57
"paths": {
68
"~/*": ["./app/*"],

internal-packages/run-engine/src/engine/tests/attemptFailures.test.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ describe("RunEngine attempt failures", () => {
155155
expect(executionData4.run.attemptNumber).toBe(2);
156156
expect(executionData4.run.status).toBe("COMPLETED_SUCCESSFULLY");
157157
} finally {
158-
engine.quit();
158+
await engine.quit();
159159
}
160160
});
161161

@@ -266,7 +266,7 @@ describe("RunEngine attempt failures", () => {
266266
expect(executionData3.run.attemptNumber).toBe(1);
267267
expect(executionData3.run.status).toBe("COMPLETED_WITH_ERRORS");
268268
} finally {
269-
engine.quit();
269+
await engine.quit();
270270
}
271271
});
272272

@@ -375,7 +375,7 @@ describe("RunEngine attempt failures", () => {
375375
expect(executionData3.run.attemptNumber).toBe(1);
376376
expect(executionData3.run.status).toBe("CRASHED");
377377
} finally {
378-
engine.quit();
378+
await engine.quit();
379379
}
380380
});
381381

@@ -482,7 +482,7 @@ describe("RunEngine attempt failures", () => {
482482
expect(executionData.run.attemptNumber).toBe(1);
483483
expect(executionData.run.status).toBe("CRASHED");
484484
} finally {
485-
engine.quit();
485+
await engine.quit();
486486
}
487487
});
488488

@@ -639,7 +639,7 @@ describe("RunEngine attempt failures", () => {
639639
expect(executionData4.run.attemptNumber).toBe(2);
640640
expect(executionData4.run.status).toBe("COMPLETED_SUCCESSFULLY");
641641
} finally {
642-
engine.quit();
642+
await engine.quit();
643643
}
644644
});
645645

@@ -803,7 +803,7 @@ describe("RunEngine attempt failures", () => {
803803
expect(finalExecutionData.run.attemptNumber).toBe(2);
804804
expect(finalExecutionData.run.status).toBe("CRASHED");
805805
} finally {
806-
engine.quit();
806+
await engine.quit();
807807
}
808808
});
809809
});

internal-packages/run-engine/src/engine/tests/batchTrigger.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ describe("RunEngine batchTrigger", () => {
177177
});
178178
expect(batchAfter2?.status).toBe("COMPLETED");
179179
} finally {
180-
engine.quit();
180+
await engine.quit();
181181
}
182182
});
183183
});

internal-packages/run-engine/src/engine/tests/batchTriggerAndWait.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -352,7 +352,7 @@ describe("RunEngine batchTriggerAndWait", () => {
352352
});
353353
expect(batchAfter?.status === "COMPLETED");
354354
} finally {
355-
engine.quit();
355+
await engine.quit();
356356
}
357357
});
358358

@@ -570,7 +570,7 @@ describe("RunEngine batchTriggerAndWait", () => {
570570
);
571571
expect(parentAfterTriggerAndWait.batch).toBeUndefined();
572572
} finally {
573-
engine.quit();
573+
await engine.quit();
574574
}
575575
}
576576
);

internal-packages/run-engine/src/engine/tests/cancelling.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ describe("RunEngine cancelling", () => {
220220
);
221221
expect(envConcurrencyCompleted).toBe(0);
222222
} finally {
223-
engine.quit();
223+
await engine.quit();
224224
}
225225
}
226226
);
@@ -321,7 +321,7 @@ describe("RunEngine cancelling", () => {
321321
);
322322
expect(envConcurrencyCompleted).toBe(0);
323323
} finally {
324-
engine.quit();
324+
await engine.quit();
325325
}
326326
});
327327

internal-packages/run-engine/src/engine/tests/checkpoints.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1375,7 +1375,7 @@ describe("RunEngine checkpoints", () => {
13751375
});
13761376
expect(batchAfter?.status === "COMPLETED");
13771377
} finally {
1378-
engine.quit();
1378+
await engine.quit();
13791379
}
13801380
});
13811381
});

internal-packages/run-engine/src/engine/tests/delays.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ describe("RunEngine delays", () => {
8686
assertNonNullable(executionData2);
8787
expect(executionData2.snapshot.executionStatus).toBe("QUEUED");
8888
} finally {
89-
engine.quit();
89+
await engine.quit();
9090
}
9191
});
9292

@@ -183,7 +183,7 @@ describe("RunEngine delays", () => {
183183
assertNonNullable(executionData3);
184184
expect(executionData3.snapshot.executionStatus).toBe("QUEUED");
185185
} finally {
186-
engine.quit();
186+
await engine.quit();
187187
}
188188
});
189189

@@ -287,7 +287,7 @@ describe("RunEngine delays", () => {
287287

288288
expect(run3.status).toBe("EXPIRED");
289289
} finally {
290-
engine.quit();
290+
await engine.quit();
291291
}
292292
});
293293

@@ -398,7 +398,7 @@ describe("RunEngine delays", () => {
398398
expect(executionData4.snapshot.executionStatus).toBe("FINISHED");
399399
expect(executionData4.run.status).toBe("CANCELED");
400400
} finally {
401-
engine.quit();
401+
await engine.quit();
402402
}
403403
});
404404
});

internal-packages/run-engine/src/engine/tests/dequeuing.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ describe("RunEngine dequeuing", () => {
7777

7878
expect(dequeued.length).toBe(5);
7979
} finally {
80-
engine.quit();
80+
await engine.quit();
8181
}
8282
});
8383

@@ -169,7 +169,7 @@ describe("RunEngine dequeuing", () => {
169169
const queueLength3 = await engine.runQueue.lengthOfEnvQueue(authenticatedEnvironment);
170170
expect(queueLength3).toBe(12);
171171
} finally {
172-
engine.quit();
172+
await engine.quit();
173173
}
174174
}
175175
);

internal-packages/run-engine/src/engine/tests/pendingVersion.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ describe("RunEngine pending version", () => {
158158
);
159159
expect(queueLength2).toBe(2);
160160
} finally {
161-
engine.quit();
161+
await engine.quit();
162162
}
163163
}
164164
);
@@ -319,7 +319,7 @@ describe("RunEngine pending version", () => {
319319
);
320320
expect(queueLength3).toBe(1);
321321
} finally {
322-
engine.quit();
322+
await engine.quit();
323323
}
324324
}
325325
);

internal-packages/run-engine/src/engine/tests/priority.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ describe("RunEngine priority", () => {
103103
expect(dequeue2.length).toBe(1);
104104
expect(dequeue2[0].run.friendlyId).toBe(runs[2].friendlyId);
105105
} finally {
106-
engine.quit();
106+
await engine.quit();
107107
}
108108
}
109109
);
@@ -197,7 +197,7 @@ describe("RunEngine priority", () => {
197197
expect(dequeue[3].run.friendlyId).toBe(runs[4].friendlyId);
198198
expect(dequeue[4].run.friendlyId).toBe(runs[0].friendlyId);
199199
} finally {
200-
engine.quit();
200+
await engine.quit();
201201
}
202202
}
203203
);

internal-packages/run-engine/src/engine/tests/trigger.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ describe("RunEngine trigger()", () => {
198198
expect(runWaitpointAfter[0].type).toBe("RUN");
199199
expect(runWaitpointAfter[0].output).toBe(`{"foo":"bar"}`);
200200
} finally {
201-
engine.quit();
201+
await engine.quit();
202202
}
203203
});
204204

@@ -325,7 +325,7 @@ describe("RunEngine trigger()", () => {
325325
expect(output.type).toBe(error.type);
326326
expect(runWaitpointAfter[0].outputIsError).toBe(true);
327327
} finally {
328-
engine.quit();
328+
await engine.quit();
329329
}
330330
});
331331
});

internal-packages/run-engine/src/engine/tests/triggerAndWait.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ describe("RunEngine triggerAndWait", () => {
189189
);
190190
expect(parentExecutionDataAfter.completedWaitpoints![0].output).toBe('{"foo":"bar"}');
191191
} finally {
192-
engine.quit();
192+
await engine.quit();
193193
}
194194
});
195195

@@ -445,7 +445,7 @@ describe("RunEngine triggerAndWait", () => {
445445
);
446446
expect(parent2ExecutionDataAfter.completedWaitpoints![0].output).toBe('{"foo":"bar"}');
447447
} finally {
448-
engine.quit();
448+
await engine.quit();
449449
}
450450
}
451451
);

internal-packages/run-engine/src/engine/tests/ttl.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ describe("RunEngine ttl", () => {
102102
);
103103
expect(envConcurrencyCompleted).toBe(0);
104104
} finally {
105-
engine.quit();
105+
await engine.quit();
106106
}
107107
});
108108
});

internal-packages/run-engine/src/engine/tests/waitpoints.test.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ describe("RunEngine Waitpoints", () => {
121121
const executionDataAfter = await engine.getRunExecutionData({ runId: run.id });
122122
expect(executionDataAfter?.snapshot.executionStatus).toBe("EXECUTING");
123123
} finally {
124-
engine.quit();
124+
await engine.quit();
125125
}
126126
});
127127

@@ -261,7 +261,7 @@ describe("RunEngine Waitpoints", () => {
261261
});
262262
expect(runWaitpoint).toBeNull();
263263
} finally {
264-
engine.quit();
264+
await engine.quit();
265265
}
266266
});
267267

@@ -400,7 +400,7 @@ describe("RunEngine Waitpoints", () => {
400400
});
401401
expect(runWaitpoint).toBeNull();
402402
} finally {
403-
engine.quit();
403+
await engine.quit();
404404
}
405405
}
406406
);
@@ -516,7 +516,7 @@ describe("RunEngine Waitpoints", () => {
516516
});
517517
expect(runWaitpoint).toBeNull();
518518
} finally {
519-
engine.quit();
519+
await engine.quit();
520520
}
521521
});
522522

@@ -664,7 +664,7 @@ describe("RunEngine Waitpoints", () => {
664664
expect(runWaitpoints.length).toBe(0);
665665
}
666666
} finally {
667-
engine.quit();
667+
await engine.quit();
668668
}
669669
}
670670
);
@@ -814,7 +814,7 @@ describe("RunEngine Waitpoints", () => {
814814
const isTimeout = isWaitpointOutputTimeout(waitpoint2.output);
815815
expect(isTimeout).toBe(true);
816816
} finally {
817-
engine.quit();
817+
await engine.quit();
818818
}
819819
}
820820
);
@@ -966,7 +966,7 @@ describe("RunEngine Waitpoints", () => {
966966
expect(waitpoint2.status).toBe("COMPLETED");
967967
expect(waitpoint2.outputIsError).toBe(false);
968968
} finally {
969-
engine.quit();
969+
await engine.quit();
970970
}
971971
});
972972

@@ -1126,7 +1126,7 @@ describe("RunEngine Waitpoints", () => {
11261126
expect(waitpoint2.status).toBe("COMPLETED");
11271127
expect(waitpoint2.outputIsError).toBe(false);
11281128
} finally {
1129-
engine.quit();
1129+
await engine.quit();
11301130
}
11311131
});
11321132

internal-packages/testcontainers/package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,11 @@
1010
"ioredis": "^5.3.2"
1111
},
1212
"devDependencies": {
13-
"@testcontainers/postgresql": "^10.13.1",
14-
"@testcontainers/redis": "^10.13.1",
13+
"@testcontainers/postgresql": "^10.25.0",
14+
"@testcontainers/redis": "^10.25.0",
1515
"@trigger.dev/core": "workspace:*",
16-
"testcontainers": "^10.13.1",
16+
"std-env": "^3.9.0",
17+
"testcontainers": "^10.25.0",
1718
"tinyexec": "^0.3.0",
1819
"vitest": "^1.4.0"
1920
},

0 commit comments

Comments
 (0)