testcontainers 10.24.0 → 10.24.1

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.
@@ -1 +1 @@
1
- export declare const LIB_VERSION = "10.24.0";
1
+ export declare const LIB_VERSION = "10.24.1";
package/build/version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.LIB_VERSION = void 0;
4
- exports.LIB_VERSION = "10.24.0";
4
+ exports.LIB_VERSION = "10.24.1";
5
5
  //# sourceMappingURL=version.js.map
@@ -7,4 +7,8 @@ export declare class LogWaitStrategy extends AbstractWaitStrategy {
7
7
  private readonly times;
8
8
  constructor(message: Log | RegExp, times: number);
9
9
  waitUntilReady(container: Dockerode.Container, boundPorts: BoundPorts, startTime?: Date): Promise<void>;
10
+ handleTimeout(containerId: string): Promise<void>;
11
+ handleLogs(container: Dockerode.Container, startTime?: Date): Promise<void>;
12
+ matches(line: string): boolean;
13
+ throwError(containerId: string, message: string): void;
10
14
  }
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.LogWaitStrategy = void 0;
7
7
  const byline_1 = __importDefault(require("byline"));
8
+ const promises_1 = require("timers/promises");
8
9
  const common_1 = require("../common");
9
10
  const container_runtime_1 = require("../container-runtime");
10
11
  const wait_strategy_1 = require("./wait-strategy");
@@ -17,45 +18,32 @@ class LogWaitStrategy extends wait_strategy_1.AbstractWaitStrategy {
17
18
  this.times = times;
18
19
  }
19
20
  async waitUntilReady(container, boundPorts, startTime) {
21
+ await Promise.race([this.handleTimeout(container.id), this.handleLogs(container, startTime)]);
22
+ }
23
+ async handleTimeout(containerId) {
24
+ await (0, promises_1.setTimeout)(this.startupTimeout);
25
+ this.throwError(containerId, `Log message "${this.message}" not received after ${this.startupTimeout}ms`);
26
+ }
27
+ async handleLogs(container, startTime) {
20
28
  common_1.log.debug(`Waiting for log message "${this.message}"...`, { containerId: container.id });
21
29
  const client = await (0, container_runtime_1.getContainerRuntimeClient)();
22
30
  const stream = await client.container.logs(container, { since: startTime ? startTime.getTime() / 1000 : 0 });
23
- return new Promise((resolve, reject) => {
24
- const timeout = setTimeout(() => {
25
- const message = `Log message "${this.message}" not received after ${this.startupTimeout}ms`;
26
- common_1.log.error(message, { containerId: container.id });
27
- reject(new Error(message));
28
- }, this.startupTimeout);
29
- const comparisonFn = (line) => {
30
- if (this.message instanceof RegExp) {
31
- return this.message.test(line);
32
- }
33
- else {
34
- return line.includes(this.message);
31
+ let matches = 0;
32
+ for await (const line of (0, byline_1.default)(stream)) {
33
+ if (this.matches(line)) {
34
+ if (++matches === this.times) {
35
+ return common_1.log.debug(`Log wait strategy complete`, { containerId: container.id });
35
36
  }
36
- };
37
- let count = 0;
38
- const lineProcessor = (line) => {
39
- if (comparisonFn(line)) {
40
- if (++count === this.times) {
41
- stream.destroy();
42
- clearTimeout(timeout);
43
- common_1.log.debug(`Log wait strategy complete`, { containerId: container.id });
44
- resolve();
45
- }
46
- }
47
- };
48
- (0, byline_1.default)(stream)
49
- .on("data", lineProcessor)
50
- .on("err", lineProcessor)
51
- .on("end", () => {
52
- stream.destroy();
53
- clearTimeout(timeout);
54
- const message = `Log stream ended and message "${this.message}" was not received`;
55
- common_1.log.error(message, { containerId: container.id });
56
- reject(new Error(message));
57
- });
58
- });
37
+ }
38
+ }
39
+ this.throwError(container.id, `Log stream ended and message "${this.message}" was not received`);
40
+ }
41
+ matches(line) {
42
+ return this.message instanceof RegExp ? this.message.test(line) : line.includes(this.message);
43
+ }
44
+ throwError(containerId, message) {
45
+ common_1.log.error(message, { containerId });
46
+ throw new Error(message);
59
47
  }
60
48
  }
61
49
  exports.LogWaitStrategy = LogWaitStrategy;
@@ -1 +1 @@
1
- {"version":3,"file":"log-wait-strategy.js","sourceRoot":"","sources":["../../src/wait-strategies/log-wait-strategy.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAE5B,sCAAgC;AAChC,4DAAiE;AAEjE,mDAAuD;AAIvD,MAAa,eAAgB,SAAQ,oCAAoB;IAEpC;IACA;IAFnB,YACmB,OAAqB,EACrB,KAAa;QAE9B,KAAK,EAAE,CAAC;QAHS,YAAO,GAAP,OAAO,CAAc;QACrB,UAAK,GAAL,KAAK,CAAQ;IAGhC,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,SAA8B,EAAE,UAAsB,EAAE,SAAgB;QAClG,YAAG,CAAC,KAAK,CAAC,4BAA4B,IAAI,CAAC,OAAO,MAAM,EAAE,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;QACzF,MAAM,MAAM,GAAG,MAAM,IAAA,6CAAyB,GAAE,CAAC;QACjD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7G,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC9B,MAAM,OAAO,GAAG,gBAAgB,IAAI,CAAC,OAAO,wBAAwB,IAAI,CAAC,cAAc,IAAI,CAAC;gBAC5F,YAAG,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;gBAClD,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAC7B,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YAExB,MAAM,YAAY,GAA8B,CAAC,IAAY,EAAE,EAAE;gBAC/D,IAAI,IAAI,CAAC,OAAO,YAAY,MAAM,EAAE;oBAClC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAChC;qBAAM;oBACL,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBACpC;YACH,CAAC,CAAC;YAEF,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,EAAE;gBACrC,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE;oBACtB,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE;wBAC1B,MAAM,CAAC,OAAO,EAAE,CAAC;wBACjB,YAAY,CAAC,OAAO,CAAC,CAAC;wBACtB,YAAG,CAAC,KAAK,CAAC,4BAA4B,EAAE,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;wBACvE,OAAO,EAAE,CAAC;qBACX;iBACF;YACH,CAAC,CAAC;YAEF,IAAA,gBAAM,EAAC,MAAM,CAAC;iBACX,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC;iBACzB,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC;iBACxB,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACd,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,MAAM,OAAO,GAAG,iCAAiC,IAAI,CAAC,OAAO,oBAAoB,CAAC;gBAClF,YAAG,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;gBAClD,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAnDD,0CAmDC"}
1
+ {"version":3,"file":"log-wait-strategy.js","sourceRoot":"","sources":["../../src/wait-strategies/log-wait-strategy.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAE5B,8CAA6C;AAC7C,sCAAgC;AAChC,4DAAiE;AAEjE,mDAAuD;AAIvD,MAAa,eAAgB,SAAQ,oCAAoB;IAEpC;IACA;IAFnB,YACmB,OAAqB,EACrB,KAAa;QAE9B,KAAK,EAAE,CAAC;QAHS,YAAO,GAAP,OAAO,CAAc;QACrB,UAAK,GAAL,KAAK,CAAQ;IAGhC,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,SAA8B,EAAE,UAAsB,EAAE,SAAgB;QAClG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAChG,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,WAAmB;QACrC,MAAM,IAAA,qBAAU,EAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACtC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,gBAAgB,IAAI,CAAC,OAAO,wBAAwB,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC;IAC5G,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,SAA8B,EAAE,SAAgB;QAC/D,YAAG,CAAC,KAAK,CAAC,4BAA4B,IAAI,CAAC,OAAO,MAAM,EAAE,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;QACzF,MAAM,MAAM,GAAG,MAAM,IAAA,6CAAyB,GAAE,CAAC;QACjD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAE7G,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,IAAA,gBAAM,EAAC,MAAM,CAAC,EAAE;YACvC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACtB,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC,KAAK,EAAE;oBAC5B,OAAO,YAAG,CAAC,KAAK,CAAC,4BAA4B,EAAE,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;iBAC/E;aACF;SACF;QAED,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,EAAE,iCAAiC,IAAI,CAAC,OAAO,oBAAoB,CAAC,CAAC;IACnG,CAAC;IAED,OAAO,CAAC,IAAY;QAClB,OAAO,IAAI,CAAC,OAAO,YAAY,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChG,CAAC;IAED,UAAU,CAAC,WAAmB,EAAE,OAAe;QAC7C,YAAG,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;CACF;AA1CD,0CA0CC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "testcontainers",
3
- "version": "10.24.0",
3
+ "version": "10.24.1",
4
4
  "author": "Cristian Greco",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -37,7 +37,7 @@
37
37
  "byline": "^5.0.0",
38
38
  "debug": "^4.3.5",
39
39
  "docker-compose": "^0.24.8",
40
- "dockerode": "^4.0.4",
40
+ "dockerode": "^4.0.5",
41
41
  "get-port": "^7.1.0",
42
42
  "proper-lockfile": "^4.1.2",
43
43
  "properties-reader": "^2.3.0",