prool 0.2.3 → 0.2.5

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.
@@ -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 = {
@@ -1 +1 @@
1
- {"version":3,"file":"Instance.d.ts","sourceRoot":"","sources":["../src/Instance.ts"],"names":[],"mappings":"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"}
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, host, name, port, start, stop } = {
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(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"Instance.js","sourceRoot":"","sources":["../src/Instance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Instance.js","sourceRoot":"","sources":["../src/Instance.ts"],"names":[],"mappings":"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"}
@@ -52,6 +52,16 @@ export declare const tempo: Instance.define.ReturnType<{
52
52
  * Amount for each faucet funding transaction
53
53
  */
54
54
  amount?: bigint | undefined;
55
+ /**
56
+ * Whether the faucet is enabled
57
+ * @default true
58
+ */
59
+ enabled?: boolean | undefined;
60
+ /**
61
+ * Node RPC address the faucet submits funding transactions to
62
+ * @default `http://localhost:${port}`
63
+ */
64
+ nodeAddress?: string | undefined;
55
65
  /**
56
66
  * Faucet funding mnemonic
57
67
  */
@@ -117,6 +127,16 @@ export declare namespace tempo {
117
127
  * Amount for each faucet funding transaction
118
128
  */
119
129
  amount?: bigint | undefined;
130
+ /**
131
+ * Whether the faucet is enabled
132
+ * @default true
133
+ */
134
+ enabled?: boolean | undefined;
135
+ /**
136
+ * Node RPC address the faucet submits funding transactions to
137
+ * @default `http://localhost:${port}`
138
+ */
139
+ nodeAddress?: string | undefined;
120
140
  /**
121
141
  * Faucet funding mnemonic
122
142
  */
@@ -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;;;QAgEd;;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"}
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,CA4D9D;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;;;eAGG;YACH,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;YAC7B;;;eAGG;YACH,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;YAChC;;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;;;yCAxF3B,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;;;eAGG;YACH,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;YAC7B;;;eAGG;YACH,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;YAChC;;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"}
@@ -45,9 +45,15 @@ export function command(parameters) {
45
45
  port: port + 20,
46
46
  },
47
47
  };
48
+ const args = deepAssign(defaultParameters, rest);
49
+ // Faucet submits funding transactions over RPC; point it at the resolved http port (node default: 8545).
50
+ const faucet = args['faucet'];
51
+ const http = args['http'];
52
+ if (faucet?.enabled && !faucet.nodeAddress)
53
+ faucet.nodeAddress = `http://localhost:${http.port}`;
48
54
  return [
49
55
  'node',
50
- ...toArgs(deepAssign(defaultParameters, rest), {
56
+ ...toArgs(args, {
51
57
  arraySeparator: null,
52
58
  }),
53
59
  ];
@@ -99,7 +105,8 @@ export const tempo = Instance.define((parameters) => {
99
105
  const message = data.toString();
100
106
  if (log)
101
107
  console.log(message);
102
- if (message.includes('Received new payload from consensus engine') || message.includes('Received block from consensus engine'))
108
+ if (message.includes('Received new payload from consensus engine') ||
109
+ message.includes('Received block from consensus engine'))
103
110
  resolve();
104
111
  if (message.includes('shutting down'))
105
112
  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 +1 @@
1
- {"version":3,"file":"execa.d.ts","sourceRoot":"","sources":["../../src/processes/execa.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAC9C,OAAO,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAA;AACzD,OAAO,KAAK,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAG/C,MAAM,MAAM,gBAAgB,GAAG,aAAa,CAAC;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,KAAK,CAAA;CAAE,CAAC,CAAA;AAE9E,MAAM,MAAM,iBAAiB,GAC3B,QAAQ,CAAC,MAAM,CAAC,6BAA6B,GAAG;IAC9C,QAAQ,CAAC,OAAO,EAAE;QAChB,OAAO,EAAE,gBAAgB,CAAA;QACzB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;QACnC,OAAO,IAAI,IAAI,CAAA;KAChB,GAAG,IAAI,CAAA;CACT,CAAA;AAEH,MAAM,MAAM,OAAO,GAAG;IACpB,SAAS,EAAE;QACT,OAAO,EAAE,gBAAgB,CAAA;KAC1B,CAAA;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CACH,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,IAAI,KAAK,IAAI,EACjC,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CAAA;IAChB,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,eAAe,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7D,CAAA;AAED,wBAAgB,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAmFpE;AAED,MAAM,CAAC,OAAO,WAAW,KAAK,CAAC;IAC7B,KAAY,UAAU,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IAEzC,KAAY,UAAU,GAAG,OAAO,CAAA;CACjC"}
1
+ {"version":3,"file":"execa.d.ts","sourceRoot":"","sources":["../../src/processes/execa.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAC9C,OAAO,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAA;AACzD,OAAO,KAAK,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAG/C,MAAM,MAAM,gBAAgB,GAAG,aAAa,CAAC;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,KAAK,CAAA;CAAE,CAAC,CAAA;AAE9E,MAAM,MAAM,iBAAiB,GAC3B,QAAQ,CAAC,MAAM,CAAC,6BAA6B,GAAG;IAC9C,QAAQ,CAAC,OAAO,EAAE;QAChB,OAAO,EAAE,gBAAgB,CAAA;QACzB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;QACnC,OAAO,IAAI,IAAI,CAAA;KAChB,GAAG,IAAI,CAAA;CACT,CAAA;AAEH,MAAM,MAAM,OAAO,GAAG;IACpB,SAAS,EAAE;QACT,OAAO,EAAE,gBAAgB,CAAA;KAC1B,CAAA;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CACH,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,IAAI,KAAK,IAAI,EACjC,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CAAA;IAChB,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,eAAe,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7D,CAAA;AAED,wBAAgB,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAoFpE;AAED,MAAM,CAAC,OAAO,WAAW,KAAK,CAAC;IAC7B,KAAY,UAAU,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IAEzC,KAAY,UAAU,GAAG,OAAO,CAAA;CACjC"}
@@ -5,10 +5,11 @@ export function execa(parameters) {
5
5
  const errorMessages = [];
6
6
  let process;
7
7
  async function stop(signal) {
8
- const killed = process.kill(signal);
9
- if (!killed)
8
+ process.kill(signal);
9
+ // Process may have exited on its own; 'exit' will not re-fire.
10
+ if (process.exitCode !== null || process.signalCode !== null)
10
11
  return;
11
- return new Promise((resolve) => process.on('close', resolve));
12
+ return new Promise((resolve) => process.once('exit', resolve));
12
13
  }
13
14
  return {
14
15
  _internal: {
@@ -1 +1 @@
1
- {"version":3,"file":"execa.js","sourceRoot":"","sources":["../../src/processes/execa.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,IAAI,EAAsB,MAAM,OAAO,CAAA;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAyBlD,MAAM,UAAU,KAAK,CAAC,UAA4B;IAChD,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAA;IAE3B,MAAM,aAAa,GAAa,EAAE,CAAA;IAClC,IAAI,OAAyB,CAAA;IAE7B,KAAK,UAAU,IAAI,CAAC,MAAuC;QACzD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACnC,IAAI,CAAC,MAAM;YAAE,OAAM;QACnB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;IAC/D,CAAC;IAED,OAAO;QACL,SAAS,EAAE;YACT,IAAI,OAAO;gBACT,OAAO,OAAO,CAAA;YAChB,CAAC;SACF;QACD,IAAI;QACJ,KAAK,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE;YAC1C,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa,EAAQ,CAAA;YAElE,OAAO,GAAG,OAAO,CACf,IAAI,CAAC;gBACH,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,KAAK;aACd,CAAQ,CACqB,CAAA;YAEhC,QAAQ,CAAC;gBACP,OAAO;gBACP,KAAK,CAAC,MAAM,CAAC,IAAI;oBACf,MAAM,IAAI,EAAE,CAAA;oBACZ,MAAM,CACJ,IAAI,KAAK,CAAC,4BAA4B,IAAI,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CACnE,CAAA;gBACH,CAAC;gBACD,OAAO;oBACL,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;oBACzB,OAAO,OAAO,EAAE,CAAA;gBAClB,CAAC;aACF,CAAC,CAAA;YAEF,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACjC,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;gBAC5C,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;gBAChC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;YACjC,CAAC,CAAC,CAAA;YACF,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACvC,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;gBAE5C,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBAC3B,IAAI,aAAa,CAAC,MAAM,GAAG,EAAE;oBAAE,aAAa,CAAC,KAAK,EAAE,CAAA;gBAEpD,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;gBAChC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;YACjC,CAAC,CAAC,CAAA;YACF,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAA;YACvD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;gBAClC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;gBAElC,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,OAAO,CAAC,kBAAkB,EAAE,CAAA;oBAC5B,IAAI,MAAM,KAAK,UAAU;wBACvB,MAAM,CACJ,IAAI,KAAK,CACP,4BAA4B,IAAI,MAC9B,aAAa,CAAC,MAAM,GAAG,CAAC;4BACtB,CAAC,CAAC,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;4BACnC,CAAC,CAAC,QACN,EAAE,CACH,CACF,CAAA;gBACL,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,OAAO,OAAO,CAAA;QAChB,CAAC;QACD,KAAK,CAAC,IAAI;YACR,OAAO,CAAC,kBAAkB,EAAE,CAAA;YAC5B,MAAM,IAAI,EAAE,CAAA;QACd,CAAC;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"execa.js","sourceRoot":"","sources":["../../src/processes/execa.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;AAEzE,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAE/D;;;;;;;;;;GAUG;AACH,eAAO,MAAM,KAAK;;;QAyFd;;WAEG;eACI,MAAM,GAAG,SAAS;QACzB;;WAEG;eACI,MAAM,GAAG,SAAS;;gCAnB3B,CAAA;AAEF,MAAM,CAAC,OAAO,WAAW,KAAK,CAAC;IAC7B,KAAY,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG;QAC/D;;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;CACF"}
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,19 +33,19 @@ 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
- .withNetworkMode('host')
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
+ .withCommand(command({ ...args, port: containerPort }))
48
49
  .withWaitStrategy(Wait.forLogMessage(/Received (block|new payload) from consensus engine/))
49
50
  .withLogConsumer((stream) => {
50
51
  stream.on('data', (data) => {
@@ -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(10_000);
68
+ .withStartupTimeout(ContainerOptions.resolveStartupTimeout(startupTimeout));
68
69
  c.start()
69
- .then((c) => {
70
- container = c;
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":"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"}
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,7 @@
1
+ export const defaults = {
2
+ startupTimeout: 10_000,
3
+ };
4
+ export function resolveStartupTimeout(startupTimeout) {
5
+ return startupTimeout ?? defaults.startupTimeout;
6
+ }
7
+ //# sourceMappingURL=containerOptions.js.map
@@ -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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "prool",
3
3
  "description": "HTTP testing instances for Ethereum",
4
- "version": "0.2.3",
4
+ "version": "0.2.5",
5
5
  "type": "module",
6
6
  "sideEffects": false,
7
7
  "files": [
@@ -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, host, name, port, start, stop } = {
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
 
@@ -1,8 +1,11 @@
1
+ import * as os from 'node:os'
1
2
  import getPort from 'get-port'
2
3
  import { Instance } from 'prool'
3
4
  import { afterEach, expect, test } from 'vitest'
5
+ import { command } from './tempo.js'
4
6
 
5
7
  const instances: Instance.Instance[] = []
8
+ const slowTestTimeout = 30_000
6
9
 
7
10
  const port = await getPort()
8
11
 
@@ -50,18 +53,22 @@ test('behavior: instance errored (duplicate ports)', async () => {
50
53
  await expect(() => instance_2.start()).rejects.toThrowError('Failed to start')
51
54
  })
52
55
 
53
- test('behavior: start and stop multiple times', async () => {
54
- const instance = defineInstance()
55
-
56
- await instance.start()
57
- await instance.stop()
58
- await instance.start()
59
- await instance.stop()
60
- await instance.start()
61
- await instance.stop()
62
- await instance.start()
63
- await instance.stop()
64
- })
56
+ test(
57
+ 'behavior: start and stop multiple times',
58
+ { timeout: slowTestTimeout },
59
+ async () => {
60
+ const instance = defineInstance()
61
+
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
+ await instance.start()
69
+ await instance.stop()
70
+ },
71
+ )
65
72
 
66
73
  test('behavior: can subscribe to stdout', async () => {
67
74
  const messages: string[] = []
@@ -82,3 +89,88 @@ test('behavior: can subscribe to stderr', async () => {
82
89
  instance_2.on('stderr', (message) => messages.push(message))
83
90
  await expect(instance_2.start()).rejects.toThrow('Failed to start')
84
91
  })
92
+
93
+ test(
94
+ 'behavior: faucet funds address',
95
+ { timeout: slowTestTimeout },
96
+ async () => {
97
+ const instance = defineInstance()
98
+ await instance.start()
99
+
100
+ const rpc = async (method: string, params: unknown[]) => {
101
+ const response = await fetch(`http://localhost:${port}`, {
102
+ body: JSON.stringify({ id: 0, jsonrpc: '2.0', method, params }),
103
+ headers: { 'Content-Type': 'application/json' },
104
+ method: 'POST',
105
+ })
106
+ return await response.json()
107
+ }
108
+
109
+ // Funding races the first wall-clock block; expiring-nonce validation rejects until one exists.
110
+ let json: { result?: string[] } = {}
111
+ for (let i = 0; i < 50; i++) {
112
+ json = await rpc('tempo_fundAddress', [
113
+ '0x000000000000000000000000000000000000beef',
114
+ ])
115
+ if (json.result) break
116
+ await new Promise((resolve) => setTimeout(resolve, 200))
117
+ }
118
+
119
+ expect(
120
+ JSON.stringify(json).replaceAll(/0x[0-9a-f]{64}/g, '<hash>'),
121
+ ).toMatchInlineSnapshot(
122
+ `"{"jsonrpc":"2.0","id":0,"result":["<hash>","<hash>","<hash>","<hash>"]}"`,
123
+ )
124
+
125
+ // balanceOf(0x...beef) on the first faucet token.
126
+ let balance = 0n
127
+ for (let i = 0; i < 50; i++) {
128
+ const { result } = await rpc('eth_call', [
129
+ {
130
+ data: '0x70a08231000000000000000000000000000000000000000000000000000000000000beef',
131
+ to: '0x20c0000000000000000000000000000000000000',
132
+ },
133
+ 'latest',
134
+ ])
135
+ balance = BigInt(result ?? 0)
136
+ if (balance > 0n) break
137
+ await new Promise((resolve) => setTimeout(resolve, 200))
138
+ }
139
+ expect(balance).toBeGreaterThan(0n)
140
+ },
141
+ )
142
+
143
+ const redact = (args: string[]) =>
144
+ args.join(' ').replaceAll(os.tmpdir(), '<tmpdir>')
145
+
146
+ test('command: default', () => {
147
+ expect(redact(command({ port: 8545 }))).toMatchInlineSnapshot(
148
+ `"node --authrpc.port 8575 --datadir <tmpdir>/.prool/tempo.8545 --dev --dev.block-time 50ms --engine.disable-precompile-cache --engine.legacy-state-root --faucet.address 0x20c0000000000000000000000000000000000000 0x20c0000000000000000000000000000000000001 0x20c0000000000000000000000000000000000002 0x20c0000000000000000000000000000000000003 --faucet.amount 1000000000000 --faucet.enabled --faucet.private-key 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 --faucet.node-address http://localhost:8545 --http.addr 0.0.0.0 --http.api all --http.corsdomain * --http.port 8545 --port 8555 --ws.port 8565"`,
149
+ )
150
+ })
151
+
152
+ test('command: behavior: faucet node address', () => {
153
+ expect(
154
+ redact(
155
+ command({ faucet: { nodeAddress: 'http://localhost:1337' }, port: 8545 }),
156
+ ),
157
+ ).toMatchInlineSnapshot(
158
+ `"node --authrpc.port 8575 --datadir <tmpdir>/.prool/tempo.8545 --dev --dev.block-time 50ms --engine.disable-precompile-cache --engine.legacy-state-root --faucet.address 0x20c0000000000000000000000000000000000000 0x20c0000000000000000000000000000000000001 0x20c0000000000000000000000000000000000002 0x20c0000000000000000000000000000000000003 --faucet.amount 1000000000000 --faucet.enabled --faucet.private-key 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 --faucet.node-address http://localhost:1337 --http.addr 0.0.0.0 --http.api all --http.corsdomain * --http.port 8545 --port 8555 --ws.port 8565"`,
159
+ )
160
+ })
161
+
162
+ test('command: behavior: faucet disabled', () => {
163
+ expect(
164
+ redact(command({ faucet: { enabled: false }, port: 8545 })),
165
+ ).toMatchInlineSnapshot(
166
+ `"node --authrpc.port 8575 --datadir <tmpdir>/.prool/tempo.8545 --dev --dev.block-time 50ms --engine.disable-precompile-cache --engine.legacy-state-root --faucet.address 0x20c0000000000000000000000000000000000000 0x20c0000000000000000000000000000000000001 0x20c0000000000000000000000000000000000002 0x20c0000000000000000000000000000000000003 --faucet.amount 1000000000000 --faucet.enabled false --faucet.private-key 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 --http.addr 0.0.0.0 --http.api all --http.corsdomain * --http.port 8545 --port 8555 --ws.port 8565"`,
167
+ )
168
+ })
169
+
170
+ test('command: behavior: http port override', () => {
171
+ expect(
172
+ redact(command({ http: { port: 1337 }, port: 8545 })),
173
+ ).toMatchInlineSnapshot(
174
+ `"node --authrpc.port 8575 --datadir <tmpdir>/.prool/tempo.8545 --dev --dev.block-time 50ms --engine.disable-precompile-cache --engine.legacy-state-root --faucet.address 0x20c0000000000000000000000000000000000000 0x20c0000000000000000000000000000000000001 0x20c0000000000000000000000000000000000002 0x20c0000000000000000000000000000000000003 --faucet.amount 1000000000000 --faucet.enabled --faucet.private-key 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 --faucet.node-address http://localhost:1337 --http.addr 0.0.0.0 --http.api all --http.corsdomain * --http.port 1337 --port 8555 --ws.port 8565"`,
175
+ )
176
+ })
@@ -50,9 +50,17 @@ export function command(parameters: tempo.Parameters): string[] {
50
50
  },
51
51
  }
52
52
 
53
+ const args = deepAssign(defaultParameters, rest)
54
+
55
+ // Faucet submits funding transactions over RPC; point it at the resolved http port (node default: 8545).
56
+ const faucet = args['faucet'] as tempo.Parameters['faucet']
57
+ const http = args['http'] as { port: number }
58
+ if (faucet?.enabled && !faucet.nodeAddress)
59
+ faucet.nodeAddress = `http://localhost:${http.port}`
60
+
53
61
  return [
54
62
  'node',
55
- ...toArgs(deepAssign(defaultParameters, rest), {
63
+ ...toArgs(args, {
56
64
  arraySeparator: null,
57
65
  }),
58
66
  ]
@@ -105,11 +113,16 @@ export const tempo = Instance.define((parameters?: tempo.Parameters) => {
105
113
  {
106
114
  ...options,
107
115
  // Resolve when the process is listening via consensus engine message.
108
- resolver({ process, reject, resolve }) {
109
- process.stdout.on('data', (data) => {
110
- const message = data.toString()
111
- if (log) console.log(message)
112
- if (message.includes('Received new payload from consensus engine') || message.includes('Received block from consensus engine'))
116
+ resolver({ process, reject, resolve }) {
117
+ process.stdout.on('data', (data) => {
118
+ const message = data.toString()
119
+ if (log) console.log(message)
120
+ if (
121
+ message.includes(
122
+ 'Received new payload from consensus engine',
123
+ ) ||
124
+ message.includes('Received block from consensus engine')
125
+ )
113
126
  resolve()
114
127
  if (message.includes('shutting down')) reject('shutting down')
115
128
  })
@@ -172,6 +185,16 @@ export declare namespace tempo {
172
185
  * Amount for each faucet funding transaction
173
186
  */
174
187
  amount?: bigint | undefined
188
+ /**
189
+ * Whether the faucet is enabled
190
+ * @default true
191
+ */
192
+ enabled?: boolean | undefined
193
+ /**
194
+ * Node RPC address the faucet submits funding transactions to
195
+ * @default `http://localhost:${port}`
196
+ */
197
+ nodeAddress?: string | undefined
175
198
  /**
176
199
  * Faucet funding mnemonic
177
200
  */
@@ -33,9 +33,10 @@ export function execa(parameters: execa.Parameters): execa.ReturnType {
33
33
  let process: Process_internal
34
34
 
35
35
  async function stop(signal?: keyof SignalConstants | number) {
36
- const killed = process.kill(signal)
37
- if (!killed) return
38
- return new Promise((resolve) => process.on('close', resolve))
36
+ process.kill(signal)
37
+ // Process may have exited on its own; 'exit' will not re-fire.
38
+ if (process.exitCode !== null || process.signalCode !== null) return
39
+ return new Promise((resolve) => process.once('exit', resolve))
39
40
  }
40
41
 
41
42
  return {
@@ -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 ports)', async () => {
46
- const instance_1 = defineInstance({ port: 8546 })
47
- const instance_2 = defineInstance({ port: 8546 })
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('Failed to start')
52
+ await expect(() => instance_2.start()).rejects.toThrowError()
51
53
  })
52
54
 
53
- test('behavior: start and stop multiple times', async () => {
54
- const instance = defineInstance()
55
-
56
- await instance.start()
57
- await instance.stop()
58
- await instance.start()
59
- await instance.stop()
60
- await instance.start()
61
- await instance.stop()
62
- await instance.start()
63
- await instance.stop()
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,50 @@ 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', async () => {
76
- const messages: string[] = []
81
+ test.skip('behavior: can subscribe to stderr', () => {})
77
82
 
78
- const instance_1 = defineInstance({ port: 8546 })
79
- const instance_2 = defineInstance({ port: 8546 })
83
+ test('behavior: faucet funds address', { timeout: 120_000 }, async () => {
84
+ const instance = defineInstance({ startupTimeout: 60_000 })
85
+ await instance.start()
80
86
 
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')
87
+ const rpc = async (method: string, params: unknown[]) => {
88
+ const response = await fetch(`http://${instance.host}:${instance.port}`, {
89
+ body: JSON.stringify({ id: 0, jsonrpc: '2.0', method, params }),
90
+ headers: { 'Content-Type': 'application/json' },
91
+ method: 'POST',
92
+ })
93
+ return await response.json()
94
+ }
95
+
96
+ // Funding races the first wall-clock block; expiring-nonce validation rejects until one exists.
97
+ let json: { result?: string[] } = {}
98
+ for (let i = 0; i < 100; i++) {
99
+ json = await rpc('tempo_fundAddress', [
100
+ '0x000000000000000000000000000000000000beef',
101
+ ])
102
+ if (json.result) break
103
+ await new Promise((resolve) => setTimeout(resolve, 500))
104
+ }
105
+
106
+ expect(
107
+ JSON.stringify(json).replaceAll(/0x[0-9a-f]{64}/g, '<hash>'),
108
+ ).toMatchInlineSnapshot(
109
+ `"{"jsonrpc":"2.0","id":0,"result":["<hash>","<hash>","<hash>","<hash>"]}"`,
110
+ )
111
+
112
+ // balanceOf(0x...beef) on the first faucet token.
113
+ let balance = 0n
114
+ for (let i = 0; i < 100; i++) {
115
+ const { result } = await rpc('eth_call', [
116
+ {
117
+ data: '0x70a08231000000000000000000000000000000000000000000000000000000000000beef',
118
+ to: '0x20c0000000000000000000000000000000000000',
119
+ },
120
+ 'latest',
121
+ ])
122
+ balance = BigInt(result ?? 0)
123
+ if (balance > 0n) break
124
+ await new Promise((resolve) => setTimeout(resolve, 500))
125
+ }
126
+ expect(balance).toBeGreaterThan(0n)
84
127
  })
@@ -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
- .withNetworkMode('host')
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(/Received (block|new payload) from consensus engine/),
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(10_000)
88
+ .withStartupTimeout(
89
+ ContainerOptions.resolveStartupTimeout(startupTimeout),
90
+ )
84
91
 
85
92
  c.start()
86
- .then((c) => {
87
- container = c
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
- * Name of the container.
106
- */
107
- containerName?: string | undefined
108
- /**
109
- * Docker image to use.
110
- */
111
- image?: string | undefined
112
- /**
113
- * Host the server will listen on.
114
- */
115
- host?: string | undefined
116
- /**
117
- * Port the server will listen on.
118
- */
119
- port?: number | undefined
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
+ }