@temporalio/testing 0.23.3 → 1.0.0-rc.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 +9 -0
- package/lib/child-process.d.ts +1 -0
- package/lib/child-process.js +12 -1
- package/lib/child-process.js.map +1 -1
- package/lib/index-for-docs.d.ts +1 -0
- package/lib/index-for-docs.js +29 -0
- package/lib/index-for-docs.js.map +1 -0
- package/lib/index.d.ts +5 -3
- package/lib/index.js +11 -9
- package/lib/index.js.map +1 -1
- package/lib/test-service-client.d.ts +9 -1
- package/lib/test-service-client.js +21 -2
- package/lib/test-service-client.js.map +1 -1
- package/lib/utils.js +5 -2
- package/lib/utils.js.map +1 -1
- package/package.json +6 -6
package/README.md
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# `@temporalio/testing`
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/@temporalio/testing)
|
|
4
|
+
|
|
5
|
+
Part of [Temporal](https://temporal.io)'s [TypeScript SDK](https://docs.temporal.io/typescript/introduction/).
|
|
6
|
+
|
|
7
|
+
- [Testing docs](https://docs.temporal.io/typescript/testing)
|
|
8
|
+
- [API reference](https://typescript.temporal.io/api/namespaces/testing)
|
|
9
|
+
- [Sample projects](https://github.com/temporalio/samples-typescript)
|
package/lib/child-process.d.ts
CHANGED
|
@@ -11,4 +11,5 @@ export interface WaitOptions {
|
|
|
11
11
|
}
|
|
12
12
|
export declare function waitOnChild(child: ChildProcess, opts?: WaitOptions): Promise<void>;
|
|
13
13
|
export declare function kill(child: ChildProcess, signal?: NodeJS.Signals, opts?: WaitOptions): Promise<void>;
|
|
14
|
+
export declare function killIfExists(child: ChildProcess, signal?: NodeJS.Signals, opts?: WaitOptions): Promise<void>;
|
|
14
15
|
export declare const shell: boolean;
|
package/lib/child-process.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.shell = exports.kill = exports.waitOnChild = exports.ChildProcessError = void 0;
|
|
3
|
+
exports.shell = exports.killIfExists = exports.kill = exports.waitOnChild = exports.ChildProcessError = void 0;
|
|
4
4
|
class ChildProcessError extends Error {
|
|
5
5
|
constructor(message, code, signal) {
|
|
6
6
|
super(message);
|
|
@@ -42,5 +42,16 @@ async function kill(child, signal = 'SIGINT', opts) {
|
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
exports.kill = kill;
|
|
45
|
+
async function killIfExists(child, signal = 'SIGINT', opts) {
|
|
46
|
+
try {
|
|
47
|
+
await kill(child, signal, opts);
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
if (err.code !== 'ESRCH') {
|
|
51
|
+
throw err;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.killIfExists = killIfExists;
|
|
45
56
|
exports.shell = process.platform === 'win32';
|
|
46
57
|
//# sourceMappingURL=child-process.js.map
|
package/lib/child-process.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"child-process.js","sourceRoot":"","sources":["../src/child-process.ts"],"names":[],"mappings":";;;AAGA,MAAa,iBAAkB,SAAQ,KAAK;IAG1C,YAAY,OAAe,EAAkB,IAAmB,EAAkB,MAA6B;QAC7G,KAAK,CAAC,OAAO,CAAC,CAAC;QAD4B,SAAI,GAAJ,IAAI,CAAe;QAAkB,WAAM,GAAN,MAAM,CAAuB;QAF/F,SAAI,GAAG,mBAAmB,CAAC;IAI3C,CAAC;CACF;AAND,8CAMC;AAMM,KAAK,UAAU,WAAW,CAAC,KAAmB,EAAE,IAAkB;IACvE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YAChC,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,gBAAgB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBACnE,OAAO,EAAE,CAAC;aACX;iBAAM;gBACL,MAAM,CAAC,IAAI,iBAAiB,CAAC,gBAAgB,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;aAC/D;QACH,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC;AAXD,kCAWC;AAEM,KAAK,UAAU,IAAI,CAAC,KAAmB,EAAE,SAAyB,QAAQ,EAAE,IAAkB;IACnG,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE;QAC3B,MAAM,IAAI,SAAS,CAAC,yBAAyB,CAAC,CAAC;KAChD;IACD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI;QACF,MAAM,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KAChC;IAAC,OAAO,GAAG,EAAE;QACZ,0EAA0E;QAC1E,oEAAoE;QACpE,MAAM,WAAW,GAAG,CAAC,CAAC,GAAG,YAAY,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QACnH,IAAI,WAAW,EAAE;YACf,MAAM,GAAG,CAAC;SACX;KACF;AACH,CAAC;AAfD,oBAeC;AAEY,QAAA,KAAK,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC"}
|
|
1
|
+
{"version":3,"file":"child-process.js","sourceRoot":"","sources":["../src/child-process.ts"],"names":[],"mappings":";;;AAGA,MAAa,iBAAkB,SAAQ,KAAK;IAG1C,YAAY,OAAe,EAAkB,IAAmB,EAAkB,MAA6B;QAC7G,KAAK,CAAC,OAAO,CAAC,CAAC;QAD4B,SAAI,GAAJ,IAAI,CAAe;QAAkB,WAAM,GAAN,MAAM,CAAuB;QAF/F,SAAI,GAAG,mBAAmB,CAAC;IAI3C,CAAC;CACF;AAND,8CAMC;AAMM,KAAK,UAAU,WAAW,CAAC,KAAmB,EAAE,IAAkB;IACvE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YAChC,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,gBAAgB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBACnE,OAAO,EAAE,CAAC;aACX;iBAAM;gBACL,MAAM,CAAC,IAAI,iBAAiB,CAAC,gBAAgB,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;aAC/D;QACH,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC;AAXD,kCAWC;AAEM,KAAK,UAAU,IAAI,CAAC,KAAmB,EAAE,SAAyB,QAAQ,EAAE,IAAkB;IACnG,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE;QAC3B,MAAM,IAAI,SAAS,CAAC,yBAAyB,CAAC,CAAC;KAChD;IACD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI;QACF,MAAM,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KAChC;IAAC,OAAO,GAAG,EAAE;QACZ,0EAA0E;QAC1E,oEAAoE;QACpE,MAAM,WAAW,GAAG,CAAC,CAAC,GAAG,YAAY,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QACnH,IAAI,WAAW,EAAE;YACf,MAAM,GAAG,CAAC;SACX;KACF;AACH,CAAC;AAfD,oBAeC;AAEM,KAAK,UAAU,YAAY,CAChC,KAAmB,EACnB,SAAyB,QAAQ,EACjC,IAAkB;IAElB,IAAI;QACF,MAAM,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;KACjC;IAAC,OAAO,GAAQ,EAAE;QACjB,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE;YACxB,MAAM,GAAG,CAAC;SACX;KACF;AACH,CAAC;AAZD,oCAYC;AAEY,QAAA,KAAK,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * as testing from './index';
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.testing = void 0;
|
|
27
|
+
// Reexports the contents of this package under the "testing" namespace for better docs generation
|
|
28
|
+
exports.testing = __importStar(require("./index"));
|
|
29
|
+
//# sourceMappingURL=index-for-docs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-for-docs.js","sourceRoot":"","sources":["../src/index-for-docs.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kGAAkG;AAClG,mDAAmC"}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import * as activity from '@temporalio/activity';
|
|
3
|
-
import { AsyncCompletionClient, WorkflowClient as BaseWorkflowClient, WorkflowClientOptions, WorkflowResultOptions as BaseWorkflowResultOptions, WorkflowStartOptions as BaseWorkflowStartOptions } from '@temporalio/client';
|
|
3
|
+
import { AsyncCompletionClient, WorkflowClient as BaseWorkflowClient, WorkflowClientOptions as BaseWorkflowClientOptions, WorkflowResultOptions as BaseWorkflowResultOptions, WorkflowStartOptions as BaseWorkflowStartOptions } from '@temporalio/client';
|
|
4
4
|
import { ActivityFunction, Workflow, WorkflowResultType } from '@temporalio/common';
|
|
5
5
|
import { NativeConnection, Logger } from '@temporalio/worker';
|
|
6
6
|
import { ChildProcess, StdioOptions } from 'child_process';
|
|
7
7
|
import events from 'events';
|
|
8
8
|
import { Connection, TestService } from './test-service-client';
|
|
9
|
-
import { temporal } from '@temporalio/proto';
|
|
10
9
|
export declare const DEFAULT_TEST_SERVER_PATH: string;
|
|
11
10
|
/**
|
|
12
11
|
* Options passed to {@link WorkflowClient.result}, these are the same as the
|
|
@@ -32,6 +31,9 @@ export declare type WorkflowStartOptions<T extends Workflow> = BaseWorkflowStart
|
|
|
32
31
|
*/
|
|
33
32
|
runInNormalTime?: boolean;
|
|
34
33
|
};
|
|
34
|
+
export interface WorkflowClientOptions extends BaseWorkflowClientOptions {
|
|
35
|
+
connection: Connection;
|
|
36
|
+
}
|
|
35
37
|
/**
|
|
36
38
|
* A client with the exact same API as the "normal" client with 1 exception,
|
|
37
39
|
* When this client waits on a Workflow's result, it will enable time skipping
|
|
@@ -39,7 +41,7 @@ export declare type WorkflowStartOptions<T extends Workflow> = BaseWorkflowStart
|
|
|
39
41
|
*/
|
|
40
42
|
export declare class WorkflowClient extends BaseWorkflowClient {
|
|
41
43
|
protected readonly testService: TestService;
|
|
42
|
-
constructor(
|
|
44
|
+
constructor(options: WorkflowClientOptions);
|
|
43
45
|
/**
|
|
44
46
|
* Execute a Workflow and wait for completion.
|
|
45
47
|
*
|
package/lib/index.js
CHANGED
|
@@ -46,9 +46,9 @@ exports.DEFAULT_TEST_SERVER_PATH = path_1.default.join(__dirname, `../${TEST_SER
|
|
|
46
46
|
* in the test server.
|
|
47
47
|
*/
|
|
48
48
|
class WorkflowClient extends client_1.WorkflowClient {
|
|
49
|
-
constructor(
|
|
50
|
-
super(
|
|
51
|
-
this.testService = testService;
|
|
49
|
+
constructor(options) {
|
|
50
|
+
super(options);
|
|
51
|
+
this.testService = options.connection.testService;
|
|
52
52
|
}
|
|
53
53
|
/**
|
|
54
54
|
* Execute a Workflow and wait for completion.
|
|
@@ -151,8 +151,8 @@ class TestWorkflowEnvironment {
|
|
|
151
151
|
};
|
|
152
152
|
this.connection = connection;
|
|
153
153
|
this.nativeConnection = nativeConnection;
|
|
154
|
-
this.workflowClient = new WorkflowClient(
|
|
155
|
-
this.asyncCompletionClient = new client_1.AsyncCompletionClient(
|
|
154
|
+
this.workflowClient = new WorkflowClient({ connection });
|
|
155
|
+
this.asyncCompletionClient = new client_1.AsyncCompletionClient({ connection });
|
|
156
156
|
}
|
|
157
157
|
/**
|
|
158
158
|
* Create a new test environment
|
|
@@ -164,10 +164,10 @@ class TestWorkflowEnvironment {
|
|
|
164
164
|
const { testServerSpawner, logger } = addDefaults(opts ?? {});
|
|
165
165
|
const child = testServerSpawner(port);
|
|
166
166
|
const address = `127.0.0.1:${port}`;
|
|
167
|
-
const
|
|
167
|
+
const connPromise = test_service_client_1.Connection.connect({ address });
|
|
168
168
|
try {
|
|
169
169
|
await Promise.race([
|
|
170
|
-
|
|
170
|
+
connPromise,
|
|
171
171
|
(0, child_process_2.waitOnChild)(child).then(() => {
|
|
172
172
|
throw new Error('Test server child process exited prematurely');
|
|
173
173
|
}),
|
|
@@ -182,14 +182,16 @@ class TestWorkflowEnvironment {
|
|
|
182
182
|
}
|
|
183
183
|
throw err;
|
|
184
184
|
}
|
|
185
|
-
const
|
|
185
|
+
const conn = await connPromise;
|
|
186
|
+
const nativeConnection = await worker_1.NativeConnection.connect({ address });
|
|
186
187
|
return new this(child, conn, nativeConnection);
|
|
187
188
|
}
|
|
188
189
|
/**
|
|
189
190
|
* Kill the test server process and close the connection to it
|
|
190
191
|
*/
|
|
191
192
|
async teardown() {
|
|
192
|
-
this.connection.
|
|
193
|
+
await this.connection.close();
|
|
194
|
+
await this.nativeConnection.close();
|
|
193
195
|
// TODO: the server should return exit code 0
|
|
194
196
|
await (0, child_process_2.kill)(this.serverProc, 'SIGINT', { validReturnCodes: [0, 130] });
|
|
195
197
|
}
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+DAAiD;AACjD,+CAM4B;AAC5B,+CAA8G;AAC9G,+CAA6E;AAC7E,gDAAwB;AACxB,4CAAoB;AACpB,uDAAmD;AACnD,iDAAkE;AAClE,oDAA4B;AAC5B,mDAAoD;AAEpD,+DAAgE;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+DAAiD;AACjD,+CAM4B;AAC5B,+CAA8G;AAC9G,+CAA6E;AAC7E,gDAAwB;AACxB,4CAAoB;AACpB,uDAAmD;AACnD,iDAAkE;AAClE,oDAA4B;AAC5B,mDAAoD;AAEpD,+DAAgE;AAEhE,MAAM,2BAA2B,GAAG,YAAE,CAAC,QAAQ,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAAC;AAErF,QAAA,wBAAwB,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,2BAA2B,EAAE,CAAC,CAAC;AAgClG;;;;GAIG;AACH,MAAa,cAAe,SAAQ,uBAAkB;IAGpD,YAAY,OAA8B;QACxC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC;IACpD,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,OAAO,CAClB,kBAA8B,EAC9B,OAAgC;QAEhC,OAAO,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAED;;;;OAIG;IACM,KAAK,CAAC,MAAM,CACnB,UAAkB,EAClB,KAA0B,EAC1B,IAAwC;QAExC,IAAI,IAAI,EAAE,eAAe,EAAE;YACzB,OAAO,MAAM,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;SACpD;QACD,MAAM,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAC9C,IAAI;YACF,OAAO,MAAM,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;SACpD;gBAAS;YACR,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;SAC7C;IACH,CAAC;CACF;AAxCD,wCAwCC;AAED;;;;;GAKG;AACU,QAAA,0BAA0B,GAAG,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,+BAA+B,CAAC,CAAC,CAAC;AA+BlG,SAAS,WAAW,CAAC,EACnB,UAAU,EACV,MAAM,GACyB;IAC/B,OAAO;QACL,iBAAiB,EACf,OAAO,UAAU,KAAK,UAAU;YAC9B,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,CAAC,IAAY,EAAE,EAAE,CACf,IAAA,qBAAK,EAAC,UAAU,EAAE,IAAI,IAAI,gCAAwB,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE;gBAC/D,KAAK,EAAE,UAAU,EAAE,KAAK,IAAI,QAAQ;aACrC,CAAC;QACV,MAAM,EAAE,MAAM,IAAI,IAAI,sBAAa,CAAC,MAAM,CAAC;KAC5C,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,sCAAsC;AACtC,MAAM,cAAc,GAAG,IAAI,QAAQ,CAAC,YAAY,EAAE,2BAA2B,CAAC,CAAC;AAE/E;;;;;GAKG;AACH,MAAa,uBAAuB;IAuBlC,YACqB,UAAwB,EAC3C,UAAsB,EACtB,gBAAkC;QAFf,eAAU,GAAV,UAAU,CAAc;QAyD7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAuCG;QACH,UAAK,GAAG,KAAK,EAAE,UAA2B,EAAiB,EAAE;YAC3D,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,2BAA2B,CAAC,EAAE,QAAQ,EAAE,IAAA,eAAM,EAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAClG,CAAC,CAAC;QA/FA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,qBAAqB,GAAG,IAAI,8BAAqB,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;IACzE,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAqC;QACvD,gEAAgE;QAChE,MAAM,OAAO,GAAG,CAAC,MAAM,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,OAA6B,CAAC;QACjF,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC;QAE7B,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAE9D,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAEtC,MAAM,OAAO,GAAG,aAAa,IAAI,EAAE,CAAC;QACpC,MAAM,WAAW,GAAG,gCAAU,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAEpD,IAAI;YACF,MAAM,OAAO,CAAC,IAAI,CAAC;gBACjB,WAAW;gBACX,IAAA,2BAAW,EAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;oBAC3B,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;gBAClE,CAAC,CAAC;aACH,CAAC,CAAC;SACJ;QAAC,OAAO,GAAG,EAAE;YACZ,IAAI;gBACF,MAAM,IAAA,oBAAI,EAAC,KAAK,CAAC,CAAC;aACnB;YAAC,OAAO,KAAK,EAAE;gBACd,MAAM,CAAC,KAAK,CAAC,0CAA0C,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;aACrE;YACD,MAAM,GAAG,CAAC;SACX;QAED,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;QAC/B,MAAM,gBAAgB,GAAG,MAAM,yBAAgB,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAErE,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QACpC,6CAA6C;QAC7C,MAAM,IAAA,oBAAI,EAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC;CA6CF;AA5HD,0DA4HC;AAED;;GAEG;AACU,QAAA,mBAAmB,GAAkB;IAChD,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;IAC9B,UAAU,EAAE,MAAM;IAClB,YAAY,EAAE,SAAS;IACvB,YAAY,EAAE,MAAM;IACpB,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACvD,gBAAgB,EAAE,SAAS;IAC3B,iBAAiB,EAAE,SAAS;IAC5B,iBAAiB,EAAE,SAAS;IAC5B,iBAAiB,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE;IAC7D,oBAAoB,EAAE,CAAC;IACvB,qBAAqB,EAAE,IAAI;IAC3B,wBAAwB,EAAE,IAAI;CAC/B,CAAC;AAEF;;;;;GAKG;AACH,MAAa,uBAAwB,SAAQ,gBAAM,CAAC,YAAY;IAI9D,YAAY,IAA6B;QACvC,KAAK,EAAE,CAAC;QAJH,WAAM,GAA2B,GAAG,EAAE,CAAC,SAAS,CAAC;QAKtD,MAAM,eAAe,GAAG,IAAI,kCAAe,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;YAC/C,IAAI,CAAC,MAAM,GAAG,CAAC,MAAY,EAAE,EAAE;gBAC7B,eAAe,CAAC,KAAK,EAAE,CAAC;gBACxB,MAAM,CAAC,IAAI,yBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;YACvC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,MAAM,iBAAiB,GAAG,CAAC,OAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACjF,IAAI,CAAC,OAAO,GAAG,IAAI,QAAQ,CAAC,OAAO,CACjC,EAAE,GAAG,2BAAmB,EAAE,GAAG,IAAI,EAAE,EACnC,OAAO,EACP,eAAe,CAAC,MAAM,EACtB,iBAAiB,CAClB,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,GAAG,CAAuD,EAAK,EAAE,GAAG,IAAO;QAChF,OAAO,QAAQ,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IACnE,CAAC;CACF;AA5BD,0DA4BC"}
|
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
import * as grpc from '@grpc/grpc-js';
|
|
2
2
|
import { Connection as BaseConnection, ConnectionOptions } from '@temporalio/client';
|
|
3
|
+
import { ConnectionCtorOptions as BaseConnectionCtorOptions } from '@temporalio/client/lib/connection';
|
|
3
4
|
import { temporal } from '../generated-protos';
|
|
4
5
|
export declare type TestService = temporal.api.testservice.v1.TestService;
|
|
5
6
|
export declare const TestService: typeof temporal.api.testservice.v1.TestService;
|
|
7
|
+
interface ConnectionCtorOptions extends BaseConnectionCtorOptions {
|
|
8
|
+
testService: TestService;
|
|
9
|
+
}
|
|
6
10
|
/**
|
|
7
11
|
* A Connection class that can be used to interact with both the test server's TestService and WorkflowService
|
|
8
12
|
*/
|
|
9
13
|
export declare class Connection extends BaseConnection {
|
|
10
14
|
static readonly TestServiceClient: grpc.ServiceClientConstructor;
|
|
11
15
|
readonly testService: TestService;
|
|
12
|
-
|
|
16
|
+
protected static createCtorOptions(options?: ConnectionOptions): ConnectionCtorOptions;
|
|
17
|
+
static lazy(options?: ConnectionOptions): Connection;
|
|
18
|
+
static connect(options?: ConnectionOptions): Promise<Connection>;
|
|
19
|
+
protected constructor(options: ConnectionCtorOptions);
|
|
13
20
|
}
|
|
21
|
+
export {};
|
|
@@ -34,8 +34,27 @@ exports.TestService = generated_protos_1.temporal.api.testservice.v1.TestService
|
|
|
34
34
|
class Connection extends client_1.Connection {
|
|
35
35
|
constructor(options) {
|
|
36
36
|
super(options);
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
this.testService = options.testService;
|
|
38
|
+
}
|
|
39
|
+
static createCtorOptions(options) {
|
|
40
|
+
const ctorOptions = client_1.Connection.createCtorOptions(options);
|
|
41
|
+
const rpcImpl = this.generateRPCImplementation({
|
|
42
|
+
serviceName: 'temporal.api.testservice.v1.TestService',
|
|
43
|
+
client: ctorOptions.client,
|
|
44
|
+
callContextStorage: ctorOptions.callContextStorage,
|
|
45
|
+
interceptors: ctorOptions.options.interceptors,
|
|
46
|
+
});
|
|
47
|
+
const testService = exports.TestService.create(rpcImpl, false, false);
|
|
48
|
+
return { ...ctorOptions, testService };
|
|
49
|
+
}
|
|
50
|
+
static lazy(options) {
|
|
51
|
+
const ctorOptions = this.createCtorOptions(options);
|
|
52
|
+
return new this(ctorOptions);
|
|
53
|
+
}
|
|
54
|
+
static async connect(options) {
|
|
55
|
+
const ret = this.lazy(options);
|
|
56
|
+
await ret.ensureConnected();
|
|
57
|
+
return ret;
|
|
39
58
|
}
|
|
40
59
|
}
|
|
41
60
|
exports.Connection = Connection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-service-client.js","sourceRoot":"","sources":["../src/test-service-client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAAsC;AACtC,+CAAqF;
|
|
1
|
+
{"version":3,"file":"test-service-client.js","sourceRoot":"","sources":["../src/test-service-client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAAsC;AACtC,+CAAqF;AAErF,0DAA+C;AAGhC,mBAAW,GAAK,2BAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,aAAC;AAM3D;;GAEG;AACH,MAAa,UAAW,SAAQ,mBAAc;IA2B5C,YAAsB,OAA8B;QAClD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACzC,CAAC;IA1BS,MAAM,CAAC,iBAAiB,CAAC,OAA2B;QAC5D,MAAM,WAAW,GAAG,mBAAc,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,yBAAyB,CAAC;YAC7C,WAAW,EAAE,yCAAyC;YACtD,MAAM,EAAE,WAAW,CAAC,MAAM;YAC1B,kBAAkB,EAAE,WAAW,CAAC,kBAAkB;YAClD,YAAY,EAAE,WAAW,CAAC,OAAO,CAAC,YAAY;SAC/C,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,mBAAW,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC9D,OAAO,EAAE,GAAG,WAAW,EAAE,WAAW,EAAE,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,OAA2B;QACrC,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACpD,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAA2B;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,MAAM,GAAG,CAAC,eAAe,EAAE,CAAC;QAC5B,OAAO,GAAG,CAAC;IACb,CAAC;;AAzBH,gCA+BC;AA9BwB,4BAAiB,GAAG,IAAI,CAAC,4BAA4B,CAAC,EAAE,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC"}
|
package/lib/utils.js
CHANGED
|
@@ -6,7 +6,7 @@ async function waitOnNamespace(connection, namespace, maxAttempts = 100, retryIn
|
|
|
6
6
|
const runId = '12345678-dead-beef-1234-1234567890ab';
|
|
7
7
|
for (let attempt = 1; attempt <= maxAttempts; ++attempt) {
|
|
8
8
|
try {
|
|
9
|
-
await connection.
|
|
9
|
+
await connection.workflowService.getWorkflowExecutionHistory({
|
|
10
10
|
namespace,
|
|
11
11
|
execution: { workflowId: 'fake', runId },
|
|
12
12
|
});
|
|
@@ -26,7 +26,10 @@ exports.waitOnNamespace = waitOnNamespace;
|
|
|
26
26
|
async function createNamespace(connection, namespace, maxAttempts = 100, retryIntervalSecs = 1) {
|
|
27
27
|
for (let attempt = 1; attempt <= maxAttempts; ++attempt) {
|
|
28
28
|
try {
|
|
29
|
-
await connection.
|
|
29
|
+
await connection.workflowService.registerNamespace({
|
|
30
|
+
namespace,
|
|
31
|
+
workflowExecutionRetentionPeriod: (0, internal_workflow_common_1.msToTs)('1 day'),
|
|
32
|
+
});
|
|
30
33
|
break;
|
|
31
34
|
}
|
|
32
35
|
catch (err) {
|
package/lib/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AACA,mFAA8D;AAEvD,KAAK,UAAU,eAAe,CACnC,UAAsB,EACtB,SAAiB,EACjB,WAAW,GAAG,GAAG,EACjB,iBAAiB,GAAG,CAAC;IAErB,MAAM,KAAK,GAAG,sCAAsC,CAAC;IACrD,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,EAAE,OAAO,EAAE;QACvD,IAAI;YACF,MAAM,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AACA,mFAA8D;AAEvD,KAAK,UAAU,eAAe,CACnC,UAAsB,EACtB,SAAiB,EACjB,WAAW,GAAG,GAAG,EACjB,iBAAiB,GAAG,CAAC;IAErB,MAAM,KAAK,GAAG,sCAAsC,CAAC;IACrD,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,EAAE,OAAO,EAAE;QACvD,IAAI;YACF,MAAM,UAAU,CAAC,eAAe,CAAC,2BAA2B,CAAC;gBAC3D,SAAS;gBACT,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE;aACzC,CAAC,CAAC;SACJ;QAAC,OAAO,GAAQ,EAAE;YACjB,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;gBACrF,MAAM;aACP;YACD,IAAI,OAAO,KAAK,WAAW,EAAE;gBAC3B,MAAM,GAAG,CAAC;aACX;YACD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC,CAAC,CAAC;SAC/E;KACF;AACH,CAAC;AAvBD,0CAuBC;AAEM,KAAK,UAAU,eAAe,CACnC,UAAsB,EACtB,SAAiB,EACjB,WAAW,GAAG,GAAG,EACjB,iBAAiB,GAAG,CAAC;IAErB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,EAAE,OAAO,EAAE;QACvD,IAAI;YACF,MAAM,UAAU,CAAC,eAAe,CAAC,iBAAiB,CAAC;gBACjD,SAAS;gBACT,gCAAgC,EAAE,IAAA,iCAAM,EAAC,OAAO,CAAC;aAClD,CAAC,CAAC;YACH,MAAM;SACP;QAAC,OAAO,GAAQ,EAAE;YACjB,IAAI,GAAG,CAAC,OAAO,KAAK,2BAA2B,EAAE;gBAC/C,MAAM;aACP;YACD,IAAI,OAAO,KAAK,WAAW,EAAE;gBAC3B,MAAM,GAAG,CAAC;aACX;YACD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC,CAAC,CAAC;SAC/E;KACF;AACH,CAAC;AAvBD,0CAuBC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@temporalio/testing",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0-rc.0",
|
|
4
4
|
"description": "Temporal.io SDK Testing sub-package",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "./lib/index.d.ts",
|
|
@@ -18,10 +18,10 @@
|
|
|
18
18
|
"license": "MIT",
|
|
19
19
|
"dependencies": {
|
|
20
20
|
"@grpc/grpc-js": "^1.5.7",
|
|
21
|
-
"@temporalio/activity": "^0.
|
|
22
|
-
"@temporalio/client": "^0.
|
|
23
|
-
"@temporalio/common": "^0.
|
|
24
|
-
"@temporalio/worker": "^0.
|
|
21
|
+
"@temporalio/activity": "^1.0.0-rc.0",
|
|
22
|
+
"@temporalio/client": "^1.0.0-rc.0",
|
|
23
|
+
"@temporalio/common": "^1.0.0-rc.0",
|
|
24
|
+
"@temporalio/worker": "^1.0.0-rc.0",
|
|
25
25
|
"@types/long": "^4.0.1",
|
|
26
26
|
"abort-controller": "^3.0.0",
|
|
27
27
|
"get-port": "^6.1.2",
|
|
@@ -43,5 +43,5 @@
|
|
|
43
43
|
"publishConfig": {
|
|
44
44
|
"access": "public"
|
|
45
45
|
},
|
|
46
|
-
"gitHead": "
|
|
46
|
+
"gitHead": "c25e91309b980f2118df4048d760306982019871"
|
|
47
47
|
}
|