testcontainers 10.8.2 → 10.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/version.d.ts +1 -1
- package/build/version.js +1 -1
- package/build/wait-strategies/one-shot-startup-startegy.d.ts +8 -0
- package/build/wait-strategies/one-shot-startup-startegy.js +28 -0
- package/build/wait-strategies/one-shot-startup-startegy.js.map +1 -0
- package/build/wait-strategies/startup-check-strategy.d.ts +1 -3
- package/build/wait-strategies/startup-check-strategy.js +4 -4
- package/build/wait-strategies/startup-check-strategy.js.map +1 -1
- package/build/wait-strategies/wait.d.ts +1 -0
- package/build/wait-strategies/wait.js +4 -0
- package/build/wait-strategies/wait.js.map +1 -1
- package/package.json +1 -1
package/build/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const LIB_VERSION = "10.
|
|
1
|
+
export declare const LIB_VERSION = "10.9.0";
|
package/build/version.js
CHANGED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import Dockerode from "dockerode";
|
|
2
|
+
import { StartupCheckStrategy, StartupStatus } from "./startup-check-strategy";
|
|
3
|
+
export declare class OneShotStartupCheckStrategy extends StartupCheckStrategy {
|
|
4
|
+
DOCKER_TIMESTAMP_ZERO: string;
|
|
5
|
+
private isDockerTimestampNonEmpty;
|
|
6
|
+
private isContainerStopped;
|
|
7
|
+
checkStartupState(dockerClient: Dockerode, containerId: string): Promise<StartupStatus>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OneShotStartupCheckStrategy = void 0;
|
|
4
|
+
const startup_check_strategy_1 = require("./startup-check-strategy");
|
|
5
|
+
class OneShotStartupCheckStrategy extends startup_check_strategy_1.StartupCheckStrategy {
|
|
6
|
+
DOCKER_TIMESTAMP_ZERO = "0001-01-01T00:00:00Z";
|
|
7
|
+
isDockerTimestampNonEmpty(dockerTimestamp) {
|
|
8
|
+
return dockerTimestamp !== "" && dockerTimestamp !== this.DOCKER_TIMESTAMP_ZERO && Date.parse(dockerTimestamp) > 0;
|
|
9
|
+
}
|
|
10
|
+
isContainerStopped({ State: state }) {
|
|
11
|
+
if (state.Running || state.Paused) {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
return this.isDockerTimestampNonEmpty(state.StartedAt) && this.isDockerTimestampNonEmpty(state.FinishedAt);
|
|
15
|
+
}
|
|
16
|
+
async checkStartupState(dockerClient, containerId) {
|
|
17
|
+
const info = await dockerClient.getContainer(containerId).inspect();
|
|
18
|
+
if (!this.isContainerStopped(info)) {
|
|
19
|
+
return "PENDING";
|
|
20
|
+
}
|
|
21
|
+
if (info.State.ExitCode === 0) {
|
|
22
|
+
return "SUCCESS";
|
|
23
|
+
}
|
|
24
|
+
return "FAIL";
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.OneShotStartupCheckStrategy = OneShotStartupCheckStrategy;
|
|
28
|
+
//# sourceMappingURL=one-shot-startup-startegy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"one-shot-startup-startegy.js","sourceRoot":"","sources":["../../src/wait-strategies/one-shot-startup-startegy.ts"],"names":[],"mappings":";;;AACA,qEAA+E;AAE/E,MAAa,2BAA4B,SAAQ,6CAAoB;IACnE,qBAAqB,GAAG,sBAAsB,CAAC;IAEvC,yBAAyB,CAAC,eAAuB;QACvD,OAAO,eAAe,KAAK,EAAE,IAAI,eAAe,KAAK,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IACrH,CAAC;IAEO,kBAAkB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAwB;QAC/D,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE;YACjC,OAAO,KAAK,CAAC;SACd;QAED,OAAO,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC7G,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,YAAuB,EAAE,WAAmB;QACzE,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC;QAEpE,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE;YAClC,OAAO,SAAS,CAAC;SAClB;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,CAAC,EAAE;YAC7B,OAAO,SAAS,CAAC;SAClB;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AA5BD,kEA4BC"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { AbstractWaitStrategy } from "./wait-strategy";
|
|
2
2
|
import Dockerode from "dockerode";
|
|
3
|
-
import { ContainerRuntimeClient } from "../container-runtime";
|
|
4
3
|
export type StartupStatus = "PENDING" | "SUCCESS" | "FAIL";
|
|
5
4
|
export declare abstract class StartupCheckStrategy extends AbstractWaitStrategy {
|
|
6
|
-
|
|
7
|
-
constructor(client: ContainerRuntimeClient);
|
|
5
|
+
constructor();
|
|
8
6
|
abstract checkStartupState(dockerClient: Dockerode, containerId: string): Promise<StartupStatus>;
|
|
9
7
|
waitUntilReady(container: Dockerode.Container): Promise<void>;
|
|
10
8
|
}
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.StartupCheckStrategy = void 0;
|
|
4
4
|
const wait_strategy_1 = require("./wait-strategy");
|
|
5
|
+
const container_runtime_1 = require("../container-runtime");
|
|
5
6
|
const common_1 = require("../common");
|
|
6
7
|
class StartupCheckStrategy extends wait_strategy_1.AbstractWaitStrategy {
|
|
7
|
-
|
|
8
|
-
constructor(client) {
|
|
8
|
+
constructor() {
|
|
9
9
|
super();
|
|
10
|
-
this.client = client;
|
|
11
10
|
}
|
|
12
11
|
async waitUntilReady(container) {
|
|
13
|
-
const
|
|
12
|
+
const client = await (0, container_runtime_1.getContainerRuntimeClient)();
|
|
13
|
+
const startupStatus = await new common_1.IntervalRetry(1000).retryUntil(async () => await this.checkStartupState(client.container.dockerode, container.id), (startupStatus) => startupStatus === "SUCCESS" || startupStatus === "FAIL", () => {
|
|
14
14
|
const message = `Container not accessible after ${this.startupTimeout}ms`;
|
|
15
15
|
common_1.log.error(message, { containerId: container.id });
|
|
16
16
|
return new Error(message);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startup-check-strategy.js","sourceRoot":"","sources":["../../src/wait-strategies/startup-check-strategy.ts"],"names":[],"mappings":";;;AAAA,mDAAuD;
|
|
1
|
+
{"version":3,"file":"startup-check-strategy.js","sourceRoot":"","sources":["../../src/wait-strategies/startup-check-strategy.ts"],"names":[],"mappings":";;;AAAA,mDAAuD;AAEvD,4DAAiE;AACjE,sCAA+C;AAI/C,MAAsB,oBAAqB,SAAQ,oCAAoB;IACrE;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IAIe,KAAK,CAAC,cAAc,CAAC,SAA8B;QACjE,MAAM,MAAM,GAAG,MAAM,IAAA,6CAAyB,GAAE,CAAC;QAEjD,MAAM,aAAa,GAAG,MAAM,IAAI,sBAAa,CAAuB,IAAI,CAAC,CAAC,UAAU,CAClF,KAAK,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,EAClF,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,MAAM,EAC1E,GAAG,EAAE;YACH,MAAM,OAAO,GAAG,kCAAkC,IAAI,CAAC,cAAc,IAAI,CAAC;YAC1E,YAAG,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;YAClD,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC,EACD,IAAI,CAAC,cAAc,CACpB,CAAC;QAEF,IAAI,aAAa,YAAY,KAAK,EAAE;YAClC,MAAM,aAAa,CAAC;SACrB;aAAM,IAAI,aAAa,KAAK,MAAM,EAAE;YACnC,MAAM,IAAI,KAAK,CAAC,iCAAiC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;SAClE;IACH,CAAC;CACF;AA3BD,oDA2BC"}
|
|
@@ -8,6 +8,7 @@ export declare class Wait {
|
|
|
8
8
|
static forListeningPorts(): WaitStrategy;
|
|
9
9
|
static forLogMessage(message: Log | RegExp, times?: number): WaitStrategy;
|
|
10
10
|
static forHealthCheck(): WaitStrategy;
|
|
11
|
+
static forOneShotStartup(): WaitStrategy;
|
|
11
12
|
static forHttp(path: string, port: number, options?: HttpWaitStrategyOptions): HttpWaitStrategy;
|
|
12
13
|
static forSuccessfulCommand(command: string): ShellWaitStrategy;
|
|
13
14
|
}
|
|
@@ -7,6 +7,7 @@ const log_wait_strategy_1 = require("./log-wait-strategy");
|
|
|
7
7
|
const shell_wait_strategy_1 = require("./shell-wait-strategy");
|
|
8
8
|
const host_port_wait_strategy_1 = require("./host-port-wait-strategy");
|
|
9
9
|
const composite_wait_strategy_1 = require("./composite-wait-strategy");
|
|
10
|
+
const one_shot_startup_startegy_1 = require("./one-shot-startup-startegy");
|
|
10
11
|
class Wait {
|
|
11
12
|
static forAll(waitStrategies) {
|
|
12
13
|
return new composite_wait_strategy_1.CompositeWaitStrategy(waitStrategies);
|
|
@@ -20,6 +21,9 @@ class Wait {
|
|
|
20
21
|
static forHealthCheck() {
|
|
21
22
|
return new health_check_wait_strategy_1.HealthCheckWaitStrategy();
|
|
22
23
|
}
|
|
24
|
+
static forOneShotStartup() {
|
|
25
|
+
return new one_shot_startup_startegy_1.OneShotStartupCheckStrategy();
|
|
26
|
+
}
|
|
23
27
|
static forHttp(path, port, options = { abortOnContainerExit: false }) {
|
|
24
28
|
return new http_wait_strategy_1.HttpWaitStrategy(path, port, options);
|
|
25
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wait.js","sourceRoot":"","sources":["../../src/wait-strategies/wait.ts"],"names":[],"mappings":";;;AACA,6DAAiF;AACjF,6EAAuE;AACvE,2DAA2D;AAC3D,+DAA0D;AAC1D,uEAAiE;AACjE,uEAAkE;
|
|
1
|
+
{"version":3,"file":"wait.js","sourceRoot":"","sources":["../../src/wait-strategies/wait.ts"],"names":[],"mappings":";;;AACA,6DAAiF;AACjF,6EAAuE;AACvE,2DAA2D;AAC3D,+DAA0D;AAC1D,uEAAiE;AACjE,uEAAkE;AAClE,2EAA0E;AAE1E,MAAa,IAAI;IACR,MAAM,CAAC,MAAM,CAAC,cAA8B;QACjD,OAAO,IAAI,+CAAqB,CAAC,cAAc,CAAC,CAAC;IACnD,CAAC;IAEM,MAAM,CAAC,iBAAiB;QAC7B,OAAO,IAAI,8CAAoB,EAAE,CAAC;IACpC,CAAC;IAEM,MAAM,CAAC,aAAa,CAAC,OAAqB,EAAE,KAAK,GAAG,CAAC;QAC1D,OAAO,IAAI,mCAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;IAEM,MAAM,CAAC,cAAc;QAC1B,OAAO,IAAI,oDAAuB,EAAE,CAAC;IACvC,CAAC;IAEM,MAAM,CAAC,iBAAiB;QAC7B,OAAO,IAAI,uDAA2B,EAAE,CAAC;IAC3C,CAAC;IAEM,MAAM,CAAC,OAAO,CACnB,IAAY,EACZ,IAAY,EACZ,UAAmC,EAAE,oBAAoB,EAAE,KAAK,EAAE;QAElE,OAAO,IAAI,qCAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IAEM,MAAM,CAAC,oBAAoB,CAAC,OAAe;QAChD,OAAO,IAAI,uCAAiB,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;CACF;AAhCD,oBAgCC"}
|