prool 0.2.2 → 0.2.4
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/dist/Instance.d.ts +4 -0
- package/dist/Instance.d.ts.map +1 -1
- package/dist/Instance.js +15 -4
- package/dist/Instance.js.map +1 -1
- package/dist/instances/tempo.d.ts.map +1 -1
- package/dist/instances/tempo.js +3 -2
- package/dist/instances/tempo.js.map +1 -1
- package/dist/testcontainers/Instance.d.ts +2 -1
- package/dist/testcontainers/Instance.d.ts.map +1 -1
- package/dist/testcontainers/Instance.js +14 -9
- package/dist/testcontainers/Instance.js.map +1 -1
- package/dist/testcontainers/containerOptions.d.ts +15 -0
- package/dist/testcontainers/containerOptions.d.ts.map +1 -0
- package/dist/testcontainers/containerOptions.js +7 -0
- package/dist/testcontainers/containerOptions.js.map +1 -0
- package/package.json +1 -1
- package/src/Instance.test.ts +39 -0
- package/src/Instance.ts +14 -4
- package/src/instances/tempo.test.ts +17 -12
- package/src/instances/tempo.ts +7 -2
- package/src/testcontainers/Instance.test.ts +24 -27
- package/src/testcontainers/Instance.ts +38 -26
- package/src/testcontainers/containerOptions.ts +20 -0
package/dist/Instance.d.ts
CHANGED
|
@@ -101,6 +101,10 @@ export declare namespace define {
|
|
|
101
101
|
type ReturnType<_internal extends object | undefined = object | undefined, parameters = undefined> = (...parameters: parameters extends undefined ? [options?: InstanceOptions] : [parameters: parameters, options?: InstanceOptions]) => Instance<_internal>;
|
|
102
102
|
type InstanceStartOptions_internal = {
|
|
103
103
|
emitter: EventEmitter<EventTypes>;
|
|
104
|
+
setEndpoint?(endpoint: {
|
|
105
|
+
host?: string;
|
|
106
|
+
port?: number;
|
|
107
|
+
}): void;
|
|
104
108
|
status: Instance['status'];
|
|
105
109
|
};
|
|
106
110
|
type InstanceStopOptions_internal = {
|
package/dist/Instance.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Instance.d.ts","sourceRoot":"","sources":["../src/Instance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAE5C,KAAK,UAAU,GAAG;IAChB,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAA;IAC1D,SAAS,EAAE,EAAE,CAAA;IACb,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC1B,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IACzB,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,QAAQ,CAClB,SAAS,SAAS,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,IACvD,IAAI,CACN,YAAY,CAAC,UAAU,CAAC,EACtB,aAAa,GACb,KAAK,GACL,IAAI,GACJ,MAAM,GACN,oBAAoB,GACpB,gBAAgB,CACnB,GAAG;IACF,SAAS,EAAE,SAAS,CAAA;IACpB;;OAEG;IACH,MAAM,CACJ,UAAU,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,GAAG,SAAS,GACrD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,CAAA;IACtC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;;;;;OAMG;IACH,QAAQ,EAAE;QAAE,KAAK,IAAI,IAAI,CAAC;QAAC,GAAG,IAAI,MAAM,EAAE,CAAA;KAAE,CAAA;IAC5C;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACxB;;;;OAIG;IACH,MAAM,EACF,MAAM,GACN,YAAY,GACZ,SAAS,GACT,UAAU,GACV,SAAS,GACT,UAAU,CAAA;IACd;;;;OAIG;IACH,KAAK,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,CAAA;IAC5B;;OAEG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,yDAAyD;IACzD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,wFAAwF;IACxF,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,MAAM,CACpB,SAAS,SAAS,MAAM,GAAG,SAAS,EACpC,UAAU,GAAG,SAAS,EAEtB,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,GACzC,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"Instance.d.ts","sourceRoot":"","sources":["../src/Instance.ts"],"names":[],"mappings":"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"}
|
package/dist/Instance.js
CHANGED
|
@@ -30,11 +30,12 @@ export function define(fn) {
|
|
|
30
30
|
const parameters = parametersOrOptions;
|
|
31
31
|
const options = options_ || parametersOrOptions || {};
|
|
32
32
|
const instance = fn(parameters);
|
|
33
|
-
const { _internal,
|
|
33
|
+
const { _internal, name, start, stop } = {
|
|
34
34
|
...instance,
|
|
35
35
|
...createParameters,
|
|
36
|
-
port: createParameters.port ?? instance.port,
|
|
37
36
|
};
|
|
37
|
+
let host = instance.host;
|
|
38
|
+
let port = createParameters?.port ?? instance.port;
|
|
38
39
|
const { messageBuffer = 20, timeout } = options;
|
|
39
40
|
let restartResolver = Promise.withResolvers();
|
|
40
41
|
let startResolver = Promise.withResolvers();
|
|
@@ -64,9 +65,13 @@ export function define(fn) {
|
|
|
64
65
|
return messages;
|
|
65
66
|
},
|
|
66
67
|
},
|
|
67
|
-
host
|
|
68
|
+
get host() {
|
|
69
|
+
return host;
|
|
70
|
+
},
|
|
68
71
|
name,
|
|
69
|
-
port
|
|
72
|
+
get port() {
|
|
73
|
+
return port;
|
|
74
|
+
},
|
|
70
75
|
get status() {
|
|
71
76
|
if (restarting)
|
|
72
77
|
return 'restarting';
|
|
@@ -91,6 +96,12 @@ export function define(fn) {
|
|
|
91
96
|
port,
|
|
92
97
|
}, {
|
|
93
98
|
emitter,
|
|
99
|
+
setEndpoint(endpoint) {
|
|
100
|
+
if (endpoint.host)
|
|
101
|
+
host = endpoint.host;
|
|
102
|
+
if (endpoint.port)
|
|
103
|
+
port = endpoint.port;
|
|
104
|
+
},
|
|
94
105
|
status: this.status,
|
|
95
106
|
})
|
|
96
107
|
.then(() => {
|
package/dist/Instance.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Instance.js","sourceRoot":"","sources":["../src/Instance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAqF5C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,MAAM,CAIpB,EAA0C;IAE1C,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,QAAQ,CAAC,EAAE,EAAE;QAC5C,SAAS,MAAM,CAAC,mBAAsD,EAAE;YACtE,MAAM,UAAU,GAAG,mBAAiC,CAAA;YACpD,MAAM,OAAO,GAAG,QAAQ,IAAI,mBAAmB,IAAI,EAAE,CAAA;YAErD,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,CAAA;YAC/B,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"Instance.js","sourceRoot":"","sources":["../src/Instance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAqF5C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,MAAM,CAIpB,EAA0C;IAE1C,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,QAAQ,CAAC,EAAE,EAAE;QAC5C,SAAS,MAAM,CAAC,mBAAsD,EAAE;YACtE,MAAM,UAAU,GAAG,mBAAiC,CAAA;YACpD,MAAM,OAAO,GAAG,QAAQ,IAAI,mBAAmB,IAAI,EAAE,CAAA;YAErD,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,CAAA;YAC/B,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG;gBACvC,GAAG,QAAQ;gBACX,GAAG,gBAAgB;aACpB,CAAA;YACD,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAA;YACxB,IAAI,IAAI,GAAG,gBAAgB,EAAE,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAA;YAClD,MAAM,EAAE,aAAa,GAAG,EAAE,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;YAE/C,IAAI,eAAe,GAAG,OAAO,CAAC,aAAa,EAAQ,CAAA;YACnD,IAAI,aAAa,GAAG,OAAO,CAAC,aAAa,EAAc,CAAA;YACvD,IAAI,YAAY,GAAG,OAAO,CAAC,aAAa,EAAQ,CAAA;YAEhD,MAAM,OAAO,GAAG,IAAI,YAAY,EAAc,CAAA;YAE9C,IAAI,QAAQ,GAAa,EAAE,CAAA;YAC3B,IAAI,MAAM,GAAuB,MAAM,CAAA;YACvC,IAAI,UAAU,GAAG,KAAK,CAAA;YAEtB,SAAS,MAAM;gBACb,MAAM,GAAG,SAAS,CAAA;YACpB,CAAC;YACD,SAAS,WAAW;gBAClB,MAAM,GAAG,SAAS,CAAA;YACpB,CAAC;YACD,SAAS,SAAS,CAAC,OAAe;gBAChC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBACtB,IAAI,QAAQ,CAAC,MAAM,GAAG,aAAa;oBAAE,QAAQ,CAAC,KAAK,EAAE,CAAA;YACvD,CAAC;YAED,OAAO;gBACL,SAAS,EAAE,SAAsB;gBACjC,QAAQ,EAAE;oBACR,KAAK;wBACH,QAAQ,GAAG,EAAE,CAAA;oBACf,CAAC;oBACD,GAAG;wBACD,OAAO,QAAQ,CAAA;oBACjB,CAAC;iBACF;gBACD,IAAI,IAAI;oBACN,OAAO,IAAI,CAAA;gBACb,CAAC;gBACD,IAAI;gBACJ,IAAI,IAAI;oBACN,OAAO,IAAI,CAAA;gBACb,CAAC;gBACD,IAAI,MAAM;oBACR,IAAI,UAAU;wBAAE,OAAO,YAAY,CAAA;oBACnC,OAAO,MAAM,CAAA;gBACf,CAAC;gBACD,KAAK,CAAC,KAAK;oBACT,IAAI,MAAM,KAAK,UAAU;wBAAE,OAAO,aAAa,CAAC,OAAO,CAAA;oBACvD,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,SAAS;wBAC3C,MAAM,IAAI,KAAK,CACb,aAAa,IAAI,iDAAiD,MAAM,EAAE,CAC3E,CAAA;oBAEH,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;wBAChC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;4BAC5B,YAAY,CAAC,KAAK,CAAC,CAAA;4BACnB,aAAa,CAAC,MAAM,CAClB,IAAI,KAAK,CAAC,aAAa,IAAI,4BAA4B,CAAC,CACzD,CAAA;wBACH,CAAC,EAAE,OAAO,CAAC,CAAA;oBACb,CAAC;oBAED,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;oBAChC,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;oBACpC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;oBAE1B,MAAM,GAAG,UAAU,CAAA;oBACnB,KAAK,CACH;wBACE,IAAI;qBACL,EACD;wBACE,OAAO;wBACP,WAAW,CAAC,QAAQ;4BAClB,IAAI,QAAQ,CAAC,IAAI;gCAAE,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAA;4BACvC,IAAI,QAAQ,CAAC,IAAI;gCAAE,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAA;wBACzC,CAAC;wBACD,MAAM,EAAE,IAAI,CAAC,MAAM;qBACpB,CACF;yBACE,IAAI,CAAC,GAAG,EAAE;wBACT,MAAM,GAAG,SAAS,CAAA;wBAElB,YAAY,GAAG,OAAO,CAAC,aAAa,EAAQ,CAAA;wBAC5C,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;oBAC7C,CAAC,CAAC;yBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;wBACf,MAAM,GAAG,MAAM,CAAA;wBACf,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;wBACrB,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;wBACjC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;oBAC7B,CAAC,CAAC,CAAA;oBAEJ,OAAO,aAAa,CAAC,OAAO,CAAA;gBAC9B,CAAC;gBACD,KAAK,CAAC,IAAI;oBACR,IAAI,MAAM,KAAK,UAAU;wBAAE,OAAO,YAAY,CAAC,OAAO,CAAA;oBACtD,IAAI,MAAM,KAAK,UAAU;wBACvB,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,gBAAgB,CAAC,CAAA;oBAEpD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;wBAChC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;4BAC5B,YAAY,CAAC,KAAK,CAAC,CAAA;4BACnB,YAAY,CAAC,MAAM,CACjB,IAAI,KAAK,CAAC,aAAa,IAAI,2BAA2B,CAAC,CACxD,CAAA;wBACH,CAAC,EAAE,OAAO,CAAC,CAAA;oBACb,CAAC;oBAED,MAAM,GAAG,UAAU,CAAA;oBACnB,IAAI,CAAC;wBACH,OAAO;wBACP,MAAM,EAAE,IAAI,CAAC,MAAM;qBACpB,CAAC;yBACC,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE;wBAChB,MAAM,GAAG,SAAS,CAAA;wBAClB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;wBAErB,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;wBACjC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;wBACrC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;wBAE3B,aAAa,GAAG,OAAO,CAAC,aAAa,EAAc,CAAA;wBACnD,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAA;oBAC/B,CAAC,CAAC;yBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;wBACf,MAAM,GAAG,SAAS,CAAA;wBAClB,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;oBAC5B,CAAC,CAAC,CAAA;oBAEJ,OAAO,YAAY,CAAC,OAAO,CAAA;gBAC7B,CAAC;gBACD,KAAK,CAAC,OAAO;oBACX,IAAI,UAAU;wBAAE,OAAO,eAAe,CAAC,OAAO,CAAA;oBAE9C,UAAU,GAAG,IAAI,CAAA;oBAEjB,IAAI,CAAC,IAAI,EAAE;yBACR,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;yBACnC,IAAI,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;yBACrC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC;yBAC7B,OAAO,CAAC,GAAG,EAAE;wBACZ,eAAe,GAAG,OAAO,CAAC,aAAa,EAAQ,CAAA;wBAC/C,UAAU,GAAG,KAAK,CAAA;oBACpB,CAAC,CAAC,CAAA;oBAEJ,OAAO,eAAe,CAAC,OAAO,CAAA;gBAChC,CAAC;gBAED,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;gBAC9C,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;gBAC9B,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;gBAC5B,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;gBAChC,cAAc,EAAE,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;gBACpD,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC;aAC7D,CAAA;QACH,CAAC;QAED,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;IAC5C,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tempo.d.ts","sourceRoot":"","sources":["../../src/instances/tempo.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAI1C,wBAAgB,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,GAAG,MAAM,EAAE,CAoD9D;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,KAAK;;;
|
|
1
|
+
{"version":3,"file":"tempo.d.ts","sourceRoot":"","sources":["../../src/instances/tempo.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAI1C,wBAAgB,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,GAAG,MAAM,EAAE,CAoD9D;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,KAAK;;;QAqEd;;WAEG;oBACS,MAAM,GAAG,SAAS;QAC9B;;WAEG;+BACoB,MAAM,GAAG,SAAS;QACzC;;WAEG;iBACM,MAAM,GAAG,SAAS;QAC3B;;;;;;;;WAQG;gBACK,MAAM,GAAG,SAAS;QAC1B;;WAEG;kBACO,MAAM,GAAG,SAAS;QAC5B;;WAEG;iBAEC;YACE;;eAEG;YACH,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;YAChC;;eAEG;YACH,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;YAC3B;;eAEG;YACH,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;SAChC,GACD,SAAS;QAcb;;WAEG;eACI,MAAM,GAAG,SAAS;QACzB;;;WAGG;mBACQ,MAAM,GAAG,SAAS;QAC7B;;WAEG;eACI,MAAM,GAAG,SAAS;;;yCA9E3B,CAAA;AAEF,MAAM,CAAC,OAAO,WAAW,KAAK,CAAC;IAC7B,KAAY,UAAU,GAAG;QACvB;;WAEG;QACH,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAC3B;;WAEG;QACH,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAC9B;;WAEG;QACH,oBAAoB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACzC;;WAEG;QACH,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAC3B;;;;;;;;WAQG;QACH,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAC1B;;WAEG;QACH,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAC5B;;WAEG;QACH,MAAM,CAAC,EACH;YACE;;eAEG;YACH,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;YAChC;;eAEG;YACH,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;YAC3B;;eAEG;YACH,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;SAChC,GACD,SAAS,CAAA;QACb;;;WAGG;QACH,GAAG,CAAC,EACA,OAAO,GACP,OAAO,GACP,MAAM,GACN,MAAM,GACN,OAAO,GACP,CAAC,MAAM,GAAG,EAAE,CAAC,GACb,OAAO,GACP,SAAS,CAAA;QACb;;WAEG;QACH,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACzB;;;WAGG;QACH,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAC7B;;WAEG;QACH,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAC1B,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC5B"}
|
package/dist/instances/tempo.js
CHANGED
|
@@ -93,13 +93,14 @@ export const tempo = Instance.define((parameters) => {
|
|
|
93
93
|
},
|
|
94
94
|
}) `${[binary, ...command({ ...args, port })]}`, {
|
|
95
95
|
...options,
|
|
96
|
-
// Resolve when the process is listening via
|
|
96
|
+
// Resolve when the process is listening via consensus engine message.
|
|
97
97
|
resolver({ process, reject, resolve }) {
|
|
98
98
|
process.stdout.on('data', (data) => {
|
|
99
99
|
const message = data.toString();
|
|
100
100
|
if (log)
|
|
101
101
|
console.log(message);
|
|
102
|
-
if (message.includes('Received
|
|
102
|
+
if (message.includes('Received new payload from consensus engine') ||
|
|
103
|
+
message.includes('Received block from consensus engine'))
|
|
103
104
|
resolve();
|
|
104
105
|
if (message.includes('shutting down'))
|
|
105
106
|
reject('shutting down');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tempo.js","sourceRoot":"","sources":["../../src/instances/tempo.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tempo.js","sourceRoot":"","sources":["../../src/instances/tempo.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as Instance from '../Instance.js';
|
|
2
2
|
import { type tempo as core_tempo } from '../instances/tempo.js';
|
|
3
|
+
import * as ContainerOptions from './containerOptions.js';
|
|
3
4
|
export type { Instance, InstanceOptions } from '../Instance.js';
|
|
4
5
|
/**
|
|
5
6
|
* Defines a Tempo instance.
|
|
@@ -26,7 +27,7 @@ export declare const tempo: Instance.define.ReturnType<{
|
|
|
26
27
|
};
|
|
27
28
|
}, tempo.Parameters | undefined>;
|
|
28
29
|
export declare namespace tempo {
|
|
29
|
-
type Parameters = Omit<core_tempo.Parameters, 'binary'> & {
|
|
30
|
+
type Parameters = Omit<core_tempo.Parameters, 'binary'> & ContainerOptions.Parameters & {
|
|
30
31
|
/**
|
|
31
32
|
* Name of the container.
|
|
32
33
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Instance.d.ts","sourceRoot":"","sources":["../../src/testcontainers/Instance.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAW,KAAK,KAAK,IAAI,UAAU,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"Instance.d.ts","sourceRoot":"","sources":["../../src/testcontainers/Instance.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAW,KAAK,KAAK,IAAI,UAAU,EAAE,MAAM,uBAAuB,CAAA;AACzE,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAA;AAEzD,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAE/D;;;;;;;;;;GAUG;AACH,eAAO,MAAM,KAAK;;;QAoGZ;;WAEG;eACI,MAAM,GAAG,SAAS;QACzB;;WAEG;eACI,MAAM,GAAG,SAAS;;gCApB7B,CAAA;AAEF,MAAM,CAAC,OAAO,WAAW,KAAK,CAAC;IAC7B,KAAY,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,GAC5D,gBAAgB,CAAC,UAAU,GAAG;QAC5B;;WAEG;QACH,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAClC;;WAEG;QACH,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAC1B;;WAEG;QACH,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACzB;;WAEG;QACH,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAC1B,CAAA;CACJ"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { GenericContainer, PullPolicy, Wait, } from 'testcontainers';
|
|
2
2
|
import * as Instance from '../Instance.js';
|
|
3
3
|
import { command } from '../instances/tempo.js';
|
|
4
|
+
import * as ContainerOptions from './containerOptions.js';
|
|
4
5
|
/**
|
|
5
6
|
* Defines a Tempo instance.
|
|
6
7
|
*
|
|
@@ -13,7 +14,7 @@ import { command } from '../instances/tempo.js';
|
|
|
13
14
|
* ```
|
|
14
15
|
*/
|
|
15
16
|
export const tempo = Instance.define((parameters) => {
|
|
16
|
-
const { containerName = `tempo.${crypto.randomUUID()}`, image = 'ghcr.io/tempoxyz/tempo:latest', log: log_, ...args } = parameters || {};
|
|
17
|
+
const { containerName = `tempo.${crypto.randomUUID()}`, image = 'ghcr.io/tempoxyz/tempo:latest', log: log_, startupTimeout, ...args } = parameters || {};
|
|
17
18
|
const log = (() => {
|
|
18
19
|
try {
|
|
19
20
|
return JSON.parse(log_);
|
|
@@ -32,20 +33,20 @@ export const tempo = Instance.define((parameters) => {
|
|
|
32
33
|
host: args.host ?? 'localhost',
|
|
33
34
|
name,
|
|
34
35
|
port: args.port ?? 8545,
|
|
35
|
-
async start({ port = args.port }, { emitter }) {
|
|
36
|
+
async start({ port = args.port }, { emitter, setEndpoint }) {
|
|
36
37
|
const promise = Promise.withResolvers();
|
|
38
|
+
const containerPort = port ?? 8545;
|
|
37
39
|
const c = new GenericContainer(image)
|
|
38
40
|
.withPullPolicy(PullPolicy.alwaysPull())
|
|
39
41
|
.withPlatform('linux/x86_64')
|
|
40
|
-
.
|
|
42
|
+
.withExposedPorts(containerPort)
|
|
41
43
|
.withExtraHosts([
|
|
42
44
|
{ host: 'host.docker.internal', ipAddress: 'host-gateway' },
|
|
43
|
-
{ host: 'localhost', ipAddress: 'host-gateway' },
|
|
44
45
|
])
|
|
45
46
|
.withName(containerName)
|
|
46
47
|
.withEnvironment({ RUST_LOG })
|
|
47
|
-
.withCommand(command({ ...args, port }))
|
|
48
|
-
.withWaitStrategy(Wait.forLogMessage(/Received block from consensus engine/))
|
|
48
|
+
.withCommand(command({ ...args, port: containerPort }))
|
|
49
|
+
.withWaitStrategy(Wait.forLogMessage(/Received (block|new payload) from consensus engine/))
|
|
49
50
|
.withLogConsumer((stream) => {
|
|
50
51
|
stream.on('data', (data) => {
|
|
51
52
|
const message = data.toString();
|
|
@@ -64,10 +65,14 @@ export const tempo = Instance.define((parameters) => {
|
|
|
64
65
|
promise.reject(new Error(`Failed to start: ${error.message}`));
|
|
65
66
|
});
|
|
66
67
|
})
|
|
67
|
-
.withStartupTimeout(
|
|
68
|
+
.withStartupTimeout(ContainerOptions.resolveStartupTimeout(startupTimeout));
|
|
68
69
|
c.start()
|
|
69
|
-
.then((
|
|
70
|
-
container =
|
|
70
|
+
.then((started) => {
|
|
71
|
+
container = started;
|
|
72
|
+
setEndpoint?.({
|
|
73
|
+
host: started.getHost(),
|
|
74
|
+
port: started.getMappedPort(containerPort),
|
|
75
|
+
});
|
|
71
76
|
promise.resolve();
|
|
72
77
|
})
|
|
73
78
|
.catch(promise.reject);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Instance.js","sourceRoot":"","sources":["../../src/testcontainers/Instance.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,UAAU,EAEV,IAAI,GACL,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,OAAO,EAA4B,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"Instance.js","sourceRoot":"","sources":["../../src/testcontainers/Instance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const defaults: {
|
|
2
|
+
readonly startupTimeout: 10000;
|
|
3
|
+
};
|
|
4
|
+
export type Parameters = {
|
|
5
|
+
/**
|
|
6
|
+
* Startup timeout (in milliseconds) for testcontainers readiness checks.
|
|
7
|
+
*
|
|
8
|
+
* Increase this when running in CI or environments with slow image pulls.
|
|
9
|
+
*
|
|
10
|
+
* @default 10_000
|
|
11
|
+
*/
|
|
12
|
+
startupTimeout?: number | undefined;
|
|
13
|
+
};
|
|
14
|
+
export declare function resolveStartupTimeout(startupTimeout: number | undefined): number;
|
|
15
|
+
//# sourceMappingURL=containerOptions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"containerOptions.d.ts","sourceRoot":"","sources":["../../src/testcontainers/containerOptions.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ;;CAEX,CAAA;AAEV,MAAM,MAAM,UAAU,GAAG;IACvB;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACpC,CAAA;AAED,wBAAgB,qBAAqB,CACnC,cAAc,EAAE,MAAM,GAAG,SAAS,GACjC,MAAM,CAER"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"containerOptions.js","sourceRoot":"","sources":["../../src/testcontainers/containerOptions.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,cAAc,EAAE,MAAM;CACd,CAAA;AAaV,MAAM,UAAU,qBAAqB,CACnC,cAAkC;IAElC,OAAO,cAAc,IAAI,QAAQ,CAAC,cAAc,CAAA;AAClD,CAAC"}
|
package/package.json
CHANGED
package/src/Instance.test.ts
CHANGED
|
@@ -305,6 +305,45 @@ test('behavior: messages', async () => {
|
|
|
305
305
|
`)
|
|
306
306
|
})
|
|
307
307
|
|
|
308
|
+
test('behavior: dynamic host/port via setEndpoint', async () => {
|
|
309
|
+
const foo = Instance.define(() => {
|
|
310
|
+
return {
|
|
311
|
+
name: 'foo',
|
|
312
|
+
host: 'localhost',
|
|
313
|
+
port: 3000,
|
|
314
|
+
async start(_, { setEndpoint }) {
|
|
315
|
+
setEndpoint?.({ host: '192.168.1.100', port: 9999 })
|
|
316
|
+
},
|
|
317
|
+
async stop() {},
|
|
318
|
+
}
|
|
319
|
+
})
|
|
320
|
+
|
|
321
|
+
const instance = foo()
|
|
322
|
+
expect(instance.host).toEqual('localhost')
|
|
323
|
+
expect(instance.port).toEqual(3000)
|
|
324
|
+
|
|
325
|
+
await instance.start()
|
|
326
|
+
expect(instance.host).toEqual('192.168.1.100')
|
|
327
|
+
expect(instance.port).toEqual(9999)
|
|
328
|
+
})
|
|
329
|
+
|
|
330
|
+
test('behavior: start() returning void keeps original host/port', async () => {
|
|
331
|
+
const foo = Instance.define(() => {
|
|
332
|
+
return {
|
|
333
|
+
name: 'foo',
|
|
334
|
+
host: 'localhost',
|
|
335
|
+
port: 3000,
|
|
336
|
+
async start() {},
|
|
337
|
+
async stop() {},
|
|
338
|
+
}
|
|
339
|
+
})
|
|
340
|
+
|
|
341
|
+
const instance = foo()
|
|
342
|
+
await instance.start()
|
|
343
|
+
expect(instance.host).toEqual('localhost')
|
|
344
|
+
expect(instance.port).toEqual(3000)
|
|
345
|
+
})
|
|
346
|
+
|
|
308
347
|
test('options: timeout', async () => {
|
|
309
348
|
const foo = Instance.define(() => {
|
|
310
349
|
return {
|
package/src/Instance.ts
CHANGED
|
@@ -121,11 +121,12 @@ export function define<
|
|
|
121
121
|
const options = options_ || parametersOrOptions || {}
|
|
122
122
|
|
|
123
123
|
const instance = fn(parameters)
|
|
124
|
-
const { _internal,
|
|
124
|
+
const { _internal, name, start, stop } = {
|
|
125
125
|
...instance,
|
|
126
126
|
...createParameters,
|
|
127
|
-
port: createParameters.port ?? instance.port,
|
|
128
127
|
}
|
|
128
|
+
let host = instance.host
|
|
129
|
+
let port = createParameters?.port ?? instance.port
|
|
129
130
|
const { messageBuffer = 20, timeout } = options
|
|
130
131
|
|
|
131
132
|
let restartResolver = Promise.withResolvers<void>()
|
|
@@ -159,9 +160,13 @@ export function define<
|
|
|
159
160
|
return messages
|
|
160
161
|
},
|
|
161
162
|
},
|
|
162
|
-
host
|
|
163
|
+
get host() {
|
|
164
|
+
return host
|
|
165
|
+
},
|
|
163
166
|
name,
|
|
164
|
-
port
|
|
167
|
+
get port() {
|
|
168
|
+
return port
|
|
169
|
+
},
|
|
165
170
|
get status() {
|
|
166
171
|
if (restarting) return 'restarting'
|
|
167
172
|
return status
|
|
@@ -193,6 +198,10 @@ export function define<
|
|
|
193
198
|
},
|
|
194
199
|
{
|
|
195
200
|
emitter,
|
|
201
|
+
setEndpoint(endpoint) {
|
|
202
|
+
if (endpoint.host) host = endpoint.host
|
|
203
|
+
if (endpoint.port) port = endpoint.port
|
|
204
|
+
},
|
|
196
205
|
status: this.status,
|
|
197
206
|
},
|
|
198
207
|
)
|
|
@@ -302,6 +311,7 @@ export declare namespace define {
|
|
|
302
311
|
|
|
303
312
|
export type InstanceStartOptions_internal = {
|
|
304
313
|
emitter: EventEmitter<EventTypes>
|
|
314
|
+
setEndpoint?(endpoint: { host?: string; port?: number }): void
|
|
305
315
|
status: Instance['status']
|
|
306
316
|
}
|
|
307
317
|
|
|
@@ -3,6 +3,7 @@ import { Instance } from 'prool'
|
|
|
3
3
|
import { afterEach, expect, test } from 'vitest'
|
|
4
4
|
|
|
5
5
|
const instances: Instance.Instance[] = []
|
|
6
|
+
const slowTestTimeout = 30_000
|
|
6
7
|
|
|
7
8
|
const port = await getPort()
|
|
8
9
|
|
|
@@ -50,18 +51,22 @@ test('behavior: instance errored (duplicate ports)', async () => {
|
|
|
50
51
|
await expect(() => instance_2.start()).rejects.toThrowError('Failed to start')
|
|
51
52
|
})
|
|
52
53
|
|
|
53
|
-
test(
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
54
|
+
test(
|
|
55
|
+
'behavior: start and stop multiple times',
|
|
56
|
+
{ timeout: slowTestTimeout },
|
|
57
|
+
async () => {
|
|
58
|
+
const instance = defineInstance()
|
|
59
|
+
|
|
60
|
+
await instance.start()
|
|
61
|
+
await instance.stop()
|
|
62
|
+
await instance.start()
|
|
63
|
+
await instance.stop()
|
|
64
|
+
await instance.start()
|
|
65
|
+
await instance.stop()
|
|
66
|
+
await instance.start()
|
|
67
|
+
await instance.stop()
|
|
68
|
+
},
|
|
69
|
+
)
|
|
65
70
|
|
|
66
71
|
test('behavior: can subscribe to stdout', async () => {
|
|
67
72
|
const messages: string[] = []
|
package/src/instances/tempo.ts
CHANGED
|
@@ -104,12 +104,17 @@ export const tempo = Instance.define((parameters?: tempo.Parameters) => {
|
|
|
104
104
|
})`${[binary, ...command({ ...args, port })]}`,
|
|
105
105
|
{
|
|
106
106
|
...options,
|
|
107
|
-
// Resolve when the process is listening via
|
|
107
|
+
// Resolve when the process is listening via consensus engine message.
|
|
108
108
|
resolver({ process, reject, resolve }) {
|
|
109
109
|
process.stdout.on('data', (data) => {
|
|
110
110
|
const message = data.toString()
|
|
111
111
|
if (log) console.log(message)
|
|
112
|
-
if (
|
|
112
|
+
if (
|
|
113
|
+
message.includes(
|
|
114
|
+
'Received new payload from consensus engine',
|
|
115
|
+
) ||
|
|
116
|
+
message.includes('Received block from consensus engine')
|
|
117
|
+
)
|
|
113
118
|
resolve()
|
|
114
119
|
if (message.includes('shutting down')) reject('shutting down')
|
|
115
120
|
})
|
|
@@ -3,6 +3,7 @@ import { Instance } from 'prool/testcontainers'
|
|
|
3
3
|
import { afterEach, expect, test } from 'vitest'
|
|
4
4
|
|
|
5
5
|
const instances: Instance.Instance[] = []
|
|
6
|
+
const slowTestTimeout = 30_000
|
|
6
7
|
|
|
7
8
|
const port = await getPort()
|
|
8
9
|
|
|
@@ -16,7 +17,7 @@ afterEach(async () => {
|
|
|
16
17
|
for (const instance of instances) await instance.stop().catch(() => {})
|
|
17
18
|
})
|
|
18
19
|
|
|
19
|
-
test('default', async () => {
|
|
20
|
+
test('default', { timeout: slowTestTimeout }, async () => {
|
|
20
21
|
const messages: string[] = []
|
|
21
22
|
const stdouts: string[] = []
|
|
22
23
|
|
|
@@ -42,26 +43,31 @@ test('default', async () => {
|
|
|
42
43
|
expect(instance.messages.get()).toMatchInlineSnapshot('[]')
|
|
43
44
|
})
|
|
44
45
|
|
|
45
|
-
test('behavior: instance errored (duplicate
|
|
46
|
-
const
|
|
47
|
-
const
|
|
46
|
+
test('behavior: instance errored (duplicate container names)', async () => {
|
|
47
|
+
const containerName = `tempo.duplicate.${crypto.randomUUID()}`
|
|
48
|
+
const instance_1 = defineInstance({ containerName, port: 8546 })
|
|
49
|
+
const instance_2 = defineInstance({ containerName, port: 8547 })
|
|
48
50
|
|
|
49
51
|
await instance_1.start()
|
|
50
|
-
await expect(() => instance_2.start()).rejects.toThrowError(
|
|
52
|
+
await expect(() => instance_2.start()).rejects.toThrowError()
|
|
51
53
|
})
|
|
52
54
|
|
|
53
|
-
test(
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
55
|
+
test(
|
|
56
|
+
'behavior: start and stop multiple times',
|
|
57
|
+
{ timeout: slowTestTimeout },
|
|
58
|
+
async () => {
|
|
59
|
+
const instance = defineInstance()
|
|
60
|
+
|
|
61
|
+
await instance.start()
|
|
62
|
+
await instance.stop()
|
|
63
|
+
await instance.start()
|
|
64
|
+
await instance.stop()
|
|
65
|
+
await instance.start()
|
|
66
|
+
await instance.stop()
|
|
67
|
+
await instance.start()
|
|
68
|
+
await instance.stop()
|
|
69
|
+
},
|
|
70
|
+
)
|
|
65
71
|
|
|
66
72
|
test('behavior: can subscribe to stdout', async () => {
|
|
67
73
|
const messages: string[] = []
|
|
@@ -72,13 +78,4 @@ test('behavior: can subscribe to stdout', async () => {
|
|
|
72
78
|
expect(messages.length).toBeGreaterThanOrEqual(1)
|
|
73
79
|
})
|
|
74
80
|
|
|
75
|
-
test('behavior: can subscribe to stderr',
|
|
76
|
-
const messages: string[] = []
|
|
77
|
-
|
|
78
|
-
const instance_1 = defineInstance({ port: 8546 })
|
|
79
|
-
const instance_2 = defineInstance({ port: 8546 })
|
|
80
|
-
|
|
81
|
-
await instance_1.start()
|
|
82
|
-
instance_2.on('stderr', (message) => messages.push(message))
|
|
83
|
-
await expect(instance_2.start()).rejects.toThrow('Failed to start')
|
|
84
|
-
})
|
|
81
|
+
test.skip('behavior: can subscribe to stderr', () => {})
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
} from 'testcontainers'
|
|
7
7
|
import * as Instance from '../Instance.js'
|
|
8
8
|
import { command, type tempo as core_tempo } from '../instances/tempo.js'
|
|
9
|
+
import * as ContainerOptions from './containerOptions.js'
|
|
9
10
|
|
|
10
11
|
export type { Instance, InstanceOptions } from '../Instance.js'
|
|
11
12
|
|
|
@@ -25,6 +26,7 @@ export const tempo = Instance.define((parameters?: tempo.Parameters) => {
|
|
|
25
26
|
containerName = `tempo.${crypto.randomUUID()}`,
|
|
26
27
|
image = 'ghcr.io/tempoxyz/tempo:latest',
|
|
27
28
|
log: log_,
|
|
29
|
+
startupTimeout,
|
|
28
30
|
...args
|
|
29
31
|
} = parameters || {}
|
|
30
32
|
|
|
@@ -47,22 +49,25 @@ export const tempo = Instance.define((parameters?: tempo.Parameters) => {
|
|
|
47
49
|
host: args.host ?? 'localhost',
|
|
48
50
|
name,
|
|
49
51
|
port: args.port ?? 8545,
|
|
50
|
-
async start({ port = args.port }, { emitter }) {
|
|
52
|
+
async start({ port = args.port }, { emitter, setEndpoint }) {
|
|
51
53
|
const promise = Promise.withResolvers<void>()
|
|
52
54
|
|
|
55
|
+
const containerPort = port ?? 8545
|
|
56
|
+
|
|
53
57
|
const c = new GenericContainer(image)
|
|
54
58
|
.withPullPolicy(PullPolicy.alwaysPull())
|
|
55
59
|
.withPlatform('linux/x86_64')
|
|
56
|
-
.
|
|
60
|
+
.withExposedPorts(containerPort)
|
|
57
61
|
.withExtraHosts([
|
|
58
62
|
{ host: 'host.docker.internal', ipAddress: 'host-gateway' },
|
|
59
|
-
{ host: 'localhost', ipAddress: 'host-gateway' },
|
|
60
63
|
])
|
|
61
64
|
.withName(containerName)
|
|
62
65
|
.withEnvironment({ RUST_LOG })
|
|
63
|
-
.withCommand(command({ ...args, port }))
|
|
66
|
+
.withCommand(command({ ...args, port: containerPort }))
|
|
64
67
|
.withWaitStrategy(
|
|
65
|
-
Wait.forLogMessage(
|
|
68
|
+
Wait.forLogMessage(
|
|
69
|
+
/Received (block|new payload) from consensus engine/,
|
|
70
|
+
),
|
|
66
71
|
)
|
|
67
72
|
.withLogConsumer((stream) => {
|
|
68
73
|
stream.on('data', (data) => {
|
|
@@ -80,11 +85,17 @@ export const tempo = Instance.define((parameters?: tempo.Parameters) => {
|
|
|
80
85
|
promise.reject(new Error(`Failed to start: ${error.message}`))
|
|
81
86
|
})
|
|
82
87
|
})
|
|
83
|
-
.withStartupTimeout(
|
|
88
|
+
.withStartupTimeout(
|
|
89
|
+
ContainerOptions.resolveStartupTimeout(startupTimeout),
|
|
90
|
+
)
|
|
84
91
|
|
|
85
92
|
c.start()
|
|
86
|
-
.then((
|
|
87
|
-
container =
|
|
93
|
+
.then((started) => {
|
|
94
|
+
container = started
|
|
95
|
+
setEndpoint?.({
|
|
96
|
+
host: started.getHost(),
|
|
97
|
+
port: started.getMappedPort(containerPort),
|
|
98
|
+
})
|
|
88
99
|
promise.resolve()
|
|
89
100
|
})
|
|
90
101
|
.catch(promise.reject)
|
|
@@ -100,22 +111,23 @@ export const tempo = Instance.define((parameters?: tempo.Parameters) => {
|
|
|
100
111
|
})
|
|
101
112
|
|
|
102
113
|
export declare namespace tempo {
|
|
103
|
-
export type Parameters = Omit<core_tempo.Parameters, 'binary'> &
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
114
|
+
export type Parameters = Omit<core_tempo.Parameters, 'binary'> &
|
|
115
|
+
ContainerOptions.Parameters & {
|
|
116
|
+
/**
|
|
117
|
+
* Name of the container.
|
|
118
|
+
*/
|
|
119
|
+
containerName?: string | undefined
|
|
120
|
+
/**
|
|
121
|
+
* Docker image to use.
|
|
122
|
+
*/
|
|
123
|
+
image?: string | undefined
|
|
124
|
+
/**
|
|
125
|
+
* Host the server will listen on.
|
|
126
|
+
*/
|
|
127
|
+
host?: string | undefined
|
|
128
|
+
/**
|
|
129
|
+
* Port the server will listen on.
|
|
130
|
+
*/
|
|
131
|
+
port?: number | undefined
|
|
132
|
+
}
|
|
121
133
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export const defaults = {
|
|
2
|
+
startupTimeout: 10_000,
|
|
3
|
+
} as const
|
|
4
|
+
|
|
5
|
+
export type Parameters = {
|
|
6
|
+
/**
|
|
7
|
+
* Startup timeout (in milliseconds) for testcontainers readiness checks.
|
|
8
|
+
*
|
|
9
|
+
* Increase this when running in CI or environments with slow image pulls.
|
|
10
|
+
*
|
|
11
|
+
* @default 10_000
|
|
12
|
+
*/
|
|
13
|
+
startupTimeout?: number | undefined
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export function resolveStartupTimeout(
|
|
17
|
+
startupTimeout: number | undefined,
|
|
18
|
+
): number {
|
|
19
|
+
return startupTimeout ?? defaults.startupTimeout
|
|
20
|
+
}
|