testcontainers 10.8.1 → 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/README.md +5 -0
- package/build/container-runtime/image-name.js +16 -4
- package/build/container-runtime/image-name.js.map +1 -1
- package/build/port-forwarder/port-forwarder.js +3 -1
- package/build/port-forwarder/port-forwarder.js.map +1 -1
- package/build/reaper/reaper.js +4 -1
- package/build/reaper/reaper.js.map +1 -1
- 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/README.md
CHANGED
|
@@ -18,8 +18,13 @@ See [LICENSE](https://github.com/testcontainers/testcontainers-node/blob/main/LI
|
|
|
18
18
|
|
|
19
19
|
Copyright (c) 2018 - 2023 Cristian Greco and other authors.
|
|
20
20
|
|
|
21
|
+
## Contributing
|
|
22
|
+
|
|
23
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for how to contribute to this repo.
|
|
24
|
+
|
|
21
25
|
See [contributors](https://github.com/testcontainers/testcontainers-node/graphs/contributors/) for all contributors.
|
|
22
26
|
|
|
27
|
+
|
|
23
28
|
----
|
|
24
29
|
|
|
25
30
|
Join our [Slack workspace](https://slack.testcontainers.org/) | [Testcontainers OSS](https://java.testcontainers.org/) | [Testcontainers Cloud](https://www.testcontainers.cloud/)
|
|
@@ -12,11 +12,23 @@ class ImageName {
|
|
|
12
12
|
this.registry = registry;
|
|
13
13
|
this.image = image;
|
|
14
14
|
this.tag = tag;
|
|
15
|
-
if (!this.registry) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
if (!this.registry && process.env.TESTCONTAINERS_HUB_IMAGE_NAME_PREFIX) {
|
|
16
|
+
const prefix = process.env.TESTCONTAINERS_HUB_IMAGE_NAME_PREFIX;
|
|
17
|
+
// Parse the registry. If it's undefined - then the whole prefix is a registry.
|
|
18
|
+
const parsedRegistry = ImageName.getRegistry(prefix);
|
|
19
|
+
this.registry = parsedRegistry ?? prefix;
|
|
20
|
+
// If the registry is defined, then the imagePrefix is the rest of the prefix.
|
|
21
|
+
let imagePrefix = parsedRegistry ? prefix.substring(prefix.indexOf("/") + 1) : "";
|
|
22
|
+
if (imagePrefix) {
|
|
23
|
+
imagePrefix = imagePrefix.replace(/\/?$/, "/");
|
|
19
24
|
}
|
|
25
|
+
const originalImage = this.image;
|
|
26
|
+
this.image = `${imagePrefix}${this.image}`;
|
|
27
|
+
let message = `Applying changes to image ${originalImage} with tag ${tag}: added registry ${this.registry}`;
|
|
28
|
+
if (this.image !== originalImage) {
|
|
29
|
+
message += ` and changed image to ${this.image}`;
|
|
30
|
+
}
|
|
31
|
+
common_1.log.info(message);
|
|
20
32
|
}
|
|
21
33
|
if (this.registry) {
|
|
22
34
|
if (this.tag.startsWith("sha256:")) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-name.js","sourceRoot":"","sources":["../../src/container-runtime/image-name.ts"],"names":[],"mappings":";;;AAAA,sCAAgC;AAEhC,MAAa,SAAS;IAMF;IACA;IACA;IAPF,MAAM,CAAS;IAEvB,MAAM,CAAU,KAAK,GAAG,iBAAiB,CAAC;IAElD,YACkB,QAA4B,EAC5B,KAAa,EACb,GAAW;QAFX,aAAQ,GAAR,QAAQ,CAAoB;QAC5B,UAAK,GAAL,KAAK,CAAQ;QACb,QAAG,GAAH,GAAG,CAAQ;QAE3B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"image-name.js","sourceRoot":"","sources":["../../src/container-runtime/image-name.ts"],"names":[],"mappings":";;;AAAA,sCAAgC;AAEhC,MAAa,SAAS;IAMF;IACA;IACA;IAPF,MAAM,CAAS;IAEvB,MAAM,CAAU,KAAK,GAAG,iBAAiB,CAAC;IAElD,YACkB,QAA4B,EAC5B,KAAa,EACb,GAAW;QAFX,aAAQ,GAAR,QAAQ,CAAoB;QAC5B,UAAK,GAAL,KAAK,CAAQ;QACb,QAAG,GAAH,GAAG,CAAQ;QAE3B,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,oCAAoC,EAAE;YACtE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC;YAEhE,+EAA+E;YAC/E,MAAM,cAAc,GAAG,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACrD,IAAI,CAAC,QAAQ,GAAG,cAAc,IAAI,MAAM,CAAC;YAEzC,8EAA8E;YAC9E,IAAI,WAAW,GAAG,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAClF,IAAI,WAAW,EAAE;gBACf,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;aAChD;YACD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC;YACjC,IAAI,CAAC,KAAK,GAAG,GAAG,WAAW,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAE3C,IAAI,OAAO,GAAG,6BAA6B,aAAa,aAAa,GAAG,oBAAoB,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5G,IAAI,IAAI,CAAC,KAAK,KAAK,aAAa,EAAE;gBAChC,OAAO,IAAI,yBAAyB,IAAI,CAAC,KAAK,EAAE,CAAC;aAClD;YACD,YAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACnB;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;gBAClC,IAAI,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;aAC5D;iBAAM;gBACL,IAAI,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;aAC5D;SACF;aAAM,IAAI,IAAI,CAAC,GAAG,KAAK,QAAQ,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACpE,+DAA+D;YAC/D,uDAAuD;YACvD,qBAAqB;YACrB,EAAE;YACF,oFAAoF;YACpF,EAAE;YACF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;SAC1B;aAAM,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;YACzC,IAAI,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;SAC3C;aAAM;YACL,IAAI,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;SAC3C;IACH,CAAC;IAEM,MAAM,CAAC,KAAgB;QAC5B,OAAO,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC;IAClG,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,MAAc;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,qBAAqB,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAEvF,IAAI,qBAAqB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACvC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACtD,OAAO,IAAI,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;SAC5C;aAAM,IAAI,qBAAqB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAC9C,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACtD,OAAO,IAAI,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;SAC5C;aAAM;YACL,OAAO,IAAI,SAAS,CAAC,QAAQ,EAAE,qBAAqB,EAAE,QAAQ,CAAC,CAAC;SACjE;IACH,CAAC;IAEO,MAAM,CAAC,WAAW,CAAC,MAAc;QACvC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEhC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;YACjD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;SACjB;IACH,CAAC;IAEO,MAAM,CAAC,UAAU,CAAC,MAAc;QACtC,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,MAAM,KAAK,WAAW,CAAC;IAChF,CAAC;;AAjFH,8BAkFC"}
|
|
@@ -7,7 +7,9 @@ const common_1 = require("../common");
|
|
|
7
7
|
const container_runtime_1 = require("../container-runtime");
|
|
8
8
|
const reaper_1 = require("../reaper/reaper");
|
|
9
9
|
const labels_1 = require("../utils/labels");
|
|
10
|
-
exports.SSHD_IMAGE = process.env["SSHD_CONTAINER_IMAGE"]
|
|
10
|
+
exports.SSHD_IMAGE = process.env["SSHD_CONTAINER_IMAGE"]
|
|
11
|
+
? container_runtime_1.ImageName.fromString(process.env["SSHD_CONTAINER_IMAGE"]).string
|
|
12
|
+
: container_runtime_1.ImageName.fromString("testcontainers/sshd:1.1.0").string;
|
|
11
13
|
class PortForwarder {
|
|
12
14
|
sshConnection;
|
|
13
15
|
containerId;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"port-forwarder.js","sourceRoot":"","sources":["../../src/port-forwarder/port-forwarder.ts"],"names":[],"mappings":";;;AAAA,qEAA6E;AAC7E,8EAA0E;AAC1E,sCAA8C;AAC9C,
|
|
1
|
+
{"version":3,"file":"port-forwarder.js","sourceRoot":"","sources":["../../src/port-forwarder/port-forwarder.ts"],"names":[],"mappings":"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"}
|
package/build/reaper/reaper.js
CHANGED
|
@@ -4,9 +4,12 @@ exports.getReaper = exports.REAPER_IMAGE = void 0;
|
|
|
4
4
|
const generic_container_1 = require("../generic-container/generic-container");
|
|
5
5
|
const wait_1 = require("../wait-strategies/wait");
|
|
6
6
|
const net_1 = require("net");
|
|
7
|
+
const container_runtime_1 = require("../container-runtime");
|
|
7
8
|
const common_1 = require("../common");
|
|
8
9
|
const labels_1 = require("../utils/labels");
|
|
9
|
-
exports.REAPER_IMAGE = process.env["RYUK_CONTAINER_IMAGE"]
|
|
10
|
+
exports.REAPER_IMAGE = process.env["RYUK_CONTAINER_IMAGE"]
|
|
11
|
+
? container_runtime_1.ImageName.fromString(process.env["RYUK_CONTAINER_IMAGE"]).string
|
|
12
|
+
: container_runtime_1.ImageName.fromString("testcontainers/ryuk:0.5.1").string;
|
|
10
13
|
let reaper;
|
|
11
14
|
let sessionId;
|
|
12
15
|
async function getReaper(client) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reaper.js","sourceRoot":"","sources":["../../src/reaper/reaper.ts"],"names":[],"mappings":";;;AACA,8EAA0E;AAC1E,kDAA+C;AAC/C,6BAA6B;
|
|
1
|
+
{"version":3,"file":"reaper.js","sourceRoot":"","sources":["../../src/reaper/reaper.ts"],"names":[],"mappings":"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"}
|
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"}
|