Skip to content

Commit 55d645a

Browse files
update tests to allow them running in parallel on the same cluster
1 parent e91c26f commit 55d645a

15 files changed

Lines changed: 103 additions & 75 deletions

integration-tests/common/EventResourceService.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ describe("EventResourceService", () => {
77
const eventApi = orkesClient.eventResource;
88

99
const [eventName, event, eventDescription, eventTagKey, eventTagValue] = [
10-
"jsSdkTestEventName",
11-
"jsSdkTest:eventHandler:1",
10+
`jsSdkTest-EventName-${Date.now()}`,
11+
`jsSdkTest:eventHandler:1${Date.now()}`,
1212
"jsSdkTestDescription",
1313
"jsSdkTestTagKey",
1414
"jsSdkTestTagValue",

integration-tests/common/MetadataClient.test.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,15 @@ import { orkesConductorClient } from "../../src/orkes";
55

66
describe("MetadataClient", () => {
77
const clientPromise = orkesConductorClient();
8+
const taskName = `jsSdkTest-test_task_definition-${Date.now()}`;
89

910
jest.setTimeout(15000);
1011
test("Should register a task definition", async () => {
1112
const client = await clientPromise;
1213
const metadataClient = new MetadataClient(client);
1314

1415
const newTaskDefinition = taskDefinition({
15-
name: "test_task_definition",
16+
name: taskName,
1617
description: "New Task Definition",
1718
retryCount: 4,
1819
timeoutSeconds: 7200,
@@ -62,7 +63,7 @@ describe("MetadataClient", () => {
6263
const metadataClient = new MetadataClient(client);
6364

6465
const newTaskDefinition = taskDefinition({
65-
name: "test_task_definition",
66+
name: taskName,
6667
description: "New Task Definition Update",
6768
retryCount: 5,
6869
timeoutSeconds: 7201,
@@ -110,14 +111,13 @@ describe("MetadataClient", () => {
110111
test("Should unregister a task definition", async () => {
111112
const client = await clientPromise;
112113
const metadataClient = new MetadataClient(client);
113-
const name ="test_task_definition";
114114

115115
await expect(
116-
metadataClient.unregisterTask("test_task_definition")
116+
metadataClient.unregisterTask(taskName)
117117
).resolves.not.toThrow();
118118

119119
await expect(client.metadataResource.getTaskDef(
120-
name
120+
taskName
121121
)).rejects.toThrow();
122122
})
123123
});

integration-tests/common/TaskManager.test.ts

Lines changed: 33 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,11 @@ describe("TaskManager", () => {
1515
test("Should run workflow with worker", async () => {
1616
const client = await clientPromise;
1717
const executor = new WorkflowExecutor(client);
18+
const taskName = `jsSdkTest-taskmanager-test-${Date.now()}`;
19+
const workflowName = `jsSdkTest-taskmanager-test-wf-${Date.now()}`;
1820

1921
const worker: ConductorWorker = {
20-
taskDefName: "taskmanager-test",
22+
taskDefName: taskName,
2123
execute: async () => {
2224
return {
2325
outputData: {
@@ -34,17 +36,17 @@ describe("TaskManager", () => {
3436
manager.startPolling();
3537

3638
await executor.registerWorkflow(true, {
37-
name: "TaskManagerTest",
39+
name: workflowName,
3840
version: 1,
3941
ownerEmail: "developers@orkes.io",
40-
tasks: [simpleTask("taskmanager-test", "taskmanager-test", {})],
42+
tasks: [simpleTask(taskName, taskName, {})],
4143
inputParameters: [],
4244
outputParameters: {},
4345
timeoutSeconds: 0,
4446
});
4547

4648
const executionId = await executor.startWorkflow({
47-
name: "TaskManagerTest",
49+
name: workflowName,
4850
input: {},
4951
version: 1,
5052
});
@@ -59,18 +61,20 @@ describe("TaskManager", () => {
5961
test("On error it should call the errorHandler provided", async () => {
6062
const client = await clientPromise;
6163
const executor = new WorkflowExecutor(client);
64+
const taskName = `jsSdkTest-taskmanager-error-handler-test-${Date.now()}`;
65+
const workflowName = `jsSdkTest-taskmanager-error-handler-test-wf-${Date.now()}`;
6266

6367
const mockErrorHandler = jest.fn();
6468

6569
const worker: ConductorWorker = {
66-
taskDefName: "taskmanager-error-handler-test-unique",
70+
taskDefName: taskName,
6771
execute: async () => {
6872
throw new Error("This is a forced error for testing error handler");
6973
},
7074
};
7175

7276
await client.metadataResource.registerTaskDef([taskDefinition({
73-
name: "taskmanager-error-handler-test-unique",
77+
name: taskName,
7478
timeoutSeconds: 0,
7579
retryCount: 0,
7680
})]);
@@ -83,20 +87,20 @@ describe("TaskManager", () => {
8387
manager.startPolling();
8488

8589
await executor.registerWorkflow(true, {
86-
name: "TaskManagerTestErrorHandlerUnique",
90+
name: workflowName,
8791
version: 1,
8892
ownerEmail: "developers@orkes.io",
89-
tasks: [simpleTask("taskmanager-error-handler-test-unique", "taskmanager-error-handler-test-unique", {})],
93+
tasks: [simpleTask(taskName, taskName, {})],
9094
inputParameters: [],
9195
outputParameters: {},
9296
timeoutSeconds: 0,
9397
});
9498

9599
const status = await executor.startWorkflow({
96-
name: "TaskManagerTestErrorHandlerUnique",
100+
name: workflowName,
97101
input: {},
98102
version: 1,
99-
correlationId: "errorHandlerTestIdentifierUnique"
103+
correlationId: `${workflowName}-id`
100104
});
101105

102106
const workflowStatus = await TestUtil.waitForWorkflowCompletion(executor, status, BASE_TIME * 30);
@@ -109,16 +113,18 @@ describe("TaskManager", () => {
109113
test("If no error handler provided. it should just update the task", async () => {
110114
const client = await clientPromise;
111115
const executor = new WorkflowExecutor(client);
116+
const taskName = `jsSdkTest-taskmanager-error-test-${Date.now()}`;
117+
const workflowName = `jsSdkTest-taskmanager-error-test-wf-${Date.now()}`;
112118

113119
const worker: ConductorWorker = {
114-
taskDefName: "taskmanager-error-test",
120+
taskDefName: taskName,
115121
execute: async () => {
116122
throw new Error("This is a forced error");
117123
},
118124
};
119125

120126
await client.metadataResource.registerTaskDef([taskDefinition({
121-
name: "taskmanager-error-test",
127+
name: taskName,
122128
timeoutSeconds: 0,
123129
retryCount: 0,
124130
})]);
@@ -130,20 +136,20 @@ describe("TaskManager", () => {
130136
manager.startPolling();
131137

132138
await executor.registerWorkflow(true, {
133-
name: "TaskManagerTestE",
139+
name: workflowName,
134140
version: 1,
135141
ownerEmail: "developers@orkes.io",
136-
tasks: [simpleTask("taskmanager-error-test", "taskmanager-error-test", {})],
142+
tasks: [simpleTask(taskName, taskName, {})],
137143
inputParameters: [],
138144
outputParameters: {},
139145
timeoutSeconds: 0,
140146
});
141147

142148
const executionId = await executor.startWorkflow({
143-
name: "TaskManagerTestE",
149+
name: workflowName,
144150
input: {},
145151
version: 1,
146-
correlationId: "noErrorHandlerProvidedIdentifier"
152+
correlationId: `${workflowName}-id`
147153
});
148154

149155
const workflowStatus = await TestUtil.waitForWorkflowCompletion(executor, executionId!, BASE_TIME * 30);
@@ -158,7 +164,7 @@ describe("TaskManager", () => {
158164
// just create a bunch of worker names
159165
const workerNames: string[] = Array.from({ length: 3 })
160166
.fill(0)
161-
.map((_, i: number) => `taskman-multi-${1 + i}`);
167+
.map((_, i: number) => `jsSdkTest-taskman-multi-${1 + i}-${Date.now()}`);
162168

163169
// names to actual workers
164170
const workers: ConductorWorker[] = workerNames.map((name) => ({
@@ -183,7 +189,7 @@ describe("TaskManager", () => {
183189

184190
expect(manager.isPolling).toBeTruthy();
185191

186-
const workflowName = "TaskManagerTestMulti";
192+
const workflowName = `jsSdkTest-taskmanager-multi-test-wf-${Date.now()}`;
187193

188194
// increase polling speed
189195
manager.updatePollingOptions({ concurrency: 4 });
@@ -203,7 +209,7 @@ describe("TaskManager", () => {
203209
const executionId = await executor.startWorkflow({
204210
name: workflowName,
205211
version: 1,
206-
correlationId: "identifierTaskManMulti"
212+
correlationId: `${workflowName}-id`
207213
});
208214

209215
expect(executionId).toBeDefined();
@@ -233,10 +239,11 @@ describe("TaskManager", () => {
233239

234240
test("Should not be able to startPolling if duplicate workers", async () => {
235241
const client = await clientPromise;
242+
const workerName = `jsSdkTest-worker-name-${Date.now()}`;
236243

237244
const workerNames: string[] = Array.from({ length: 3 })
238245
.fill(0)
239-
.map(() => `worker-name`);
246+
.map(() => workerName);
240247

241248
// names to actual workers
242249
const workers: ConductorWorker[] = workerNames.map((name) => ({
@@ -255,20 +262,21 @@ describe("TaskManager", () => {
255262
options: { pollInterval: BASE_TIME, concurrency: 2 },
256263
});
257264
expect(() => manager.startPolling()).toThrow(
258-
"Duplicate worker taskDefName: worker-name"
265+
`Duplicate worker taskDefName: ${workerName}`
259266
);
260267
});
261268

262269
test("Updates single worker properties", async () => {
263270
const client = await clientPromise;
264271

265272
const executor = new WorkflowExecutor(client);
273+
const workerName = `jsSdkTest-taskman-single-worker-update-${Date.now()}`;
266274
// just create a bunch of worker names
267275
const workerNames: string[] = Array.from({ length: 3 })
268276
.fill(0)
269-
.map((_, i: number) => `taskman-single-worker-update${1 + i}`);
277+
.map((_, i: number) => `${workerName}-${1 + i}`);
270278

271-
const candidateWorkerUpdate = "taskman-single-worker-update1";
279+
const candidateWorkerUpdate = `${workerName}-1`;
272280
const initialCandidateWorkflowOptions = {
273281
concurrency: 1,
274282
pollInterval: BASE_TIME * 3,
@@ -300,7 +308,7 @@ describe("TaskManager", () => {
300308

301309
expect(manager.isPolling).toBeTruthy();
302310

303-
const workflowName = "TaskManagerTestMultiSingleWorkerUpdate";
311+
const workflowName = `jsSdkTest-taskmanager-multi-single-worker-update-wf-${Date.now()}`;
304312

305313
const updatedWorkerOptions = {
306314
concurrency: 3,
@@ -328,7 +336,7 @@ describe("TaskManager", () => {
328336
const executionId = await executor.startWorkflow({
329337
name: workflowName,
330338
version: 1,
331-
correlationId: "identifierTaskManMulti"
339+
correlationId: `${workflowName}-id`
332340
});
333341
expect(executionId).toBeDefined();
334342

integration-tests/common/TaskRunnerIntTest.test.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,13 @@ describe("TaskManager", () => {
1111
test("worker example ", async () => {
1212
const client = await clientPromise;
1313
const executor = new WorkflowExecutor(client);
14+
const taskName = `jsSdkTest-task-manager-int-test-${Date.now()}`;
15+
const workflowName = `jsSdkTest-task-manager-int-test-wf-${Date.now()}`;
1416

1517
const taskRunner = new TaskRunner({
1618
taskResource: client.taskResource,
1719
worker: {
18-
taskDefName: "task-manager-int-test",
20+
taskDefName: taskName,
1921
execute: async () => {
2022
return {
2123
outputData: {
@@ -35,12 +37,12 @@ describe("TaskManager", () => {
3537
taskRunner.startPolling();
3638

3739
expect(taskRunner.isPolling).toEqual(true);
38-
const workflowName = "task-manager-int-test-wf";
40+
3941
await executor.registerWorkflow(true, {
4042
name: workflowName,
4143
version: 1,
4244
ownerEmail: "developers@orkes.io",
43-
tasks: [simpleTask("task-manager-int-test", "task-manager-int-test", {})],
45+
tasks: [simpleTask(taskName, taskName, {})],
4446
inputParameters: [],
4547
outputParameters: {},
4648
timeoutSeconds: 0,
@@ -53,7 +55,7 @@ describe("TaskManager", () => {
5355
},
5456
workflowName,
5557
1,
56-
"RunnerIdentifier"
58+
`${workflowName}-id`
5759
);
5860
expect(executionId).toBeDefined();
5961

@@ -62,7 +64,7 @@ describe("TaskManager", () => {
6264
const workflowStatus = await TestUtil.waitForWorkflowStatus(executor, executionId!, "COMPLETED");
6365

6466
const [firstTask] = workflowStatus.tasks || [];
65-
expect(firstTask?.taskType).toEqual("task-manager-int-test");
67+
expect(firstTask?.taskType).toEqual(taskName);
6668
expect(workflowStatus.status).toEqual("COMPLETED");
6769

6870
await taskRunner.stopPolling();

integration-tests/common/WorkflowResourceService.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ describe("WorkflowResourceService", () => {
1414
simpleTask("simple_ref", "le_simple_task", {}),
1515
];
1616

17-
const wfDef = workflow("unit_test_wf", tasks);
17+
const wfDef = workflow(`jsSdkTest-test_wf-${Date.now()}`, tasks);
1818
wfDef.outputParameters = { message: "${simple_ref.output.message}" };
1919
metadataClient.registerWorkflowDef(wfDef, true);
2020

integration-tests/common/executor.test.ts

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ describe("Executor", () => {
1111
const clientPromise = orkesConductorClient();
1212

1313
jest.setTimeout(15000);
14-
const name = `testWorkflow-${Date.now()}`;
14+
const name = `jsSdkTest-Workflow-${Date.now()}`;
1515
const version = 1;
1616
test("Should be able to register a workflow", async () => {
1717
const client = await clientPromise;
@@ -114,19 +114,21 @@ describe("Executor", () => {
114114
test("Should run workflow with http task with asyncComplete true", async () => {
115115
const client = await clientPromise;
116116
const executor = new WorkflowExecutor(client);
117+
const workflowName = `jsSdkTest-wf_with_asyncComplete_http_task-${Date.now()}`;
118+
const taskName = `jsSdkTest-http_task_with_asyncComplete_true-${Date.now()}`;
117119

118120
await executor.registerWorkflow(true, {
119-
name: "test_jssdk_workflow_with_http_task_with_asyncComplete_true",
121+
name: workflowName,
120122
version: 1,
121123
ownerEmail: "developers@orkes.io",
122-
tasks: [httpTask("test_jssdk_http_task_with_asyncComplete_true", { uri: "http://www.yahoo.com", method: "GET" }, true)],
124+
tasks: [httpTask(taskName, { uri: "http://www.yahoo.com", method: "GET" }, true)],
123125
inputParameters: [],
124126
outputParameters: {},
125127
timeoutSeconds: 300,
126128
});
127129

128130
const executionId = await executor.startWorkflow({
129-
name: "test_jssdk_workflow_with_http_task_with_asyncComplete_true",
131+
name: workflowName,
130132
input: {},
131133
version: 1,
132134
});
@@ -136,7 +138,7 @@ describe("Executor", () => {
136138
expect(["IN_PROGRESS", "SCHEDULED"]).toContain(workflowStatusBefore.tasks?.[0]?.status);
137139

138140
const taskClient = new TaskClient(client);
139-
taskClient.updateTaskResult(executionId, "test_jssdk_http_task_with_asyncComplete_true", "COMPLETED", { hello: "From manuall api call updating task result" });
141+
taskClient.updateTaskResult(executionId, taskName, "COMPLETED", { hello: "From manuall api call updating task result" });
140142

141143
const workflowStatusAfter = await TestUtil.waitForWorkflowStatus(executor, executionId, "COMPLETED");
142144

@@ -145,19 +147,21 @@ describe("Executor", () => {
145147

146148
test("Should run workflow with an optional http task", async () => {
147149
const executor = new WorkflowExecutor(await clientPromise);
150+
const workflowName = `jsSdkTest-wf_with_optional_http_task-${Date.now()}`;
151+
const taskName = `jsSdkTest-optional_http_task-${Date.now()}`;
148152

149153
await executor.registerWorkflow(true, {
150-
name: "test_jssdk_workflow_with_optional_http_task",
154+
name: workflowName,
151155
version: 1,
152156
ownerEmail: "developers@orkes.io",
153-
tasks: [httpTask("test_jssdk_optional_http_task", { uri: "uncorrect_uri", method: "GET" }, false, true)],
157+
tasks: [httpTask(taskName, { uri: "uncorrect_uri", method: "GET" }, false, true)],
154158
inputParameters: [],
155159
outputParameters: {},
156160
timeoutSeconds: 300,
157161
});
158162

159163
const executionId = await executor.startWorkflow({
160-
name: "test_jssdk_workflow_with_optional_http_task",
164+
name: workflowName,
161165
input: {},
162166
version: 1,
163167
});

0 commit comments

Comments
 (0)