@goatlab/tasks-adapter-gcp 0.3.3 → 0.3.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.
@@ -25,7 +25,7 @@ export declare class CloudTaskConnector implements TaskConnector<object> {
25
25
  queueName: string;
26
26
  backoffSettings: any;
27
27
  baseUrl?: string;
28
- }): Promise<import("@google-cloud/tasks/build/protos/protos").google.cloud.tasks.v2.ITask>;
28
+ }): Promise<import("@google-cloud/tasks/build/protos/protos.js").google.cloud.tasks.v2.ITask>;
29
29
  /**
30
30
  * Lists all failed tasks in the specified queue.
31
31
  * It filters tasks that have been dispatched more than twice,
@@ -34,7 +34,7 @@ export declare class CloudTaskConnector implements TaskConnector<object> {
34
34
  * @param queueName - Name of the queue to list failed tasks from.
35
35
  * @returns An array of failed tasks.
36
36
  */
37
- listFailedTasks(queueName?: string): Promise<import("@google-cloud/tasks/build/protos/protos").google.cloud.tasks.v2.ITask[]>;
37
+ listFailedTasks(queueName?: string): Promise<import("@google-cloud/tasks/build/protos/protos.js").google.cloud.tasks.v2.ITask[]>;
38
38
  /**
39
39
  * Decrypts the body of a task.
40
40
  * This service encrypts the body of the task before sending it,
@@ -229,10 +229,9 @@ class CloudTaskConnector {
229
229
  });
230
230
  const creation = Number(task.createTime?.seconds || 0) || 0;
231
231
  const scheduled = Number(task.scheduleTime?.seconds || 0) || 0;
232
- const taskName = task.name.split('/').pop() || '';
233
232
  return {
234
233
  id: task.name,
235
- name: taskName,
234
+ name: params.taskName,
236
235
  output: '',
237
236
  attempts: 0,
238
237
  status: 'QUEUED',
@@ -1 +1 @@
1
- {"version":3,"file":"CloudTaskConnector.js","sourceRoot":"","sources":["../src/CloudTaskConnector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CloudTaskConnector.js","sourceRoot":"","sources":["../src/CloudTaskConnector.ts"],"names":[],"mappings":";;;;AAAA,gDAA0E;AAC1E,oDAA8C;AAY9C,MAAM,sBAAsB,GAAoB;IAC9C,UAAU,EAAE,CAAC;IACb,uBAAuB,EAAE,IAAI;IAC7B,oBAAoB,EAAE,GAAG;IACzB,mBAAmB,EAAE,IAAI;IACzB,uBAAuB,EAAE,IAAI;CAC9B,CAAA;AAED,2BAA2B;AAC3B,MAAM,aAAa,GAAG,CAAC,GAAG,KAAK,CAAA;AAE/B,SAAS,gBAAgB,CAAC,SAAiB;IAGzC,IAAI,SAAS,KAAK,CAAC,EAAE;QACnB,OAAO;YACL,YAAY,EAAE,CAAC;SAChB,CAAA;KACF;IAED,gEAAgE;IAChE,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAC7B,CAAC,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,aAAa,CAChD,CAAA;IAED,OAAO,EAAE,YAAY,EAAE,CAAA;AACzB,CAAC;AAED,MAAa,kBAAkB;IACrB,iBAAiB,CAAmB;IACpC,QAAQ,CAAQ;IAChB,aAAa,CAAQ;IACrB,UAAU,CAAQ;IAE1B,YAAY,EACV,iBAAiB,EACjB,QAAQ,EACR,aAAa,EACb,UAAU,EAMX;QACC,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,IAAI,EAAE,CAAA;QAChD,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,cAAc,CAAA;QAC1C,IAAI,CAAC,aAAa,GAAG,aAAa,IAAI,EAAE,CAAA;QACxC,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,EAAE,CAAA;IACpC,CAAC;IAGa,AAAN,KAAK,CAAC,mBAAmB;QAC/B,MAAM,UAAU,GAAG,2CAAa,qBAAqB,EAAC,CAAA;QAEtD,OAAO,CAAC,GAAG,CACT,iDAAiD,IAAI,CAAC,UAAU,EAAE,CACnE,CAAA;QAED,OAAO,IAAI,UAAU,CAAC,gBAAgB,CAAC;YACrC,WAAW,EAAE,IAAI,CAAC,iBAAiB;YACnC,SAAS,EAAE,IAAI,CAAC,UAAU;SAC3B,CAAC,CAAA;IACJ,CAAC;IACD;;;OAGG;IACH,KAAK,CAAC,OAAO,CAAC,EACZ,IAAI,EACJ,SAAS,GAAG,SAAS,EACrB,eAAe,GAAG,sBAAsB,EACxC,OAAO,EAMR;QACC,IAAA,iBAAM,EAAC,IAAI,CAAC,WAAW,EAAE,uCAAuC,CAAC,CAAA;QAEjE,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,CAAA;QAChC,IAAA,iBAAM,EAAC,GAAG,EAAE,sBAAsB,CAAC,CAAA;QAEnC,+EAA+E;QAC/E,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QACvC,IAAA,iBAAM,EAAC,SAAS,EAAE,qBAAqB,CAAC,CAAA;QAExC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAA;QAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;QAE1E,4DAA4D;QAC5D,MAAM,SAAS,GAAG;YAChB,GAAG,IAAI;YACP,IAAI,EACF,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;gBACxC,CAAC,CAAC,GAAG,MAAM,UAAU,IAAI,CAAC,IAAI,EAAE;gBAChC,CAAC,CAAC,IAAI,CAAC,IAAI;YACf,WAAW,EAAE;gBACX,GAAG,IAAI,CAAC,WAAW;gBACnB,GAAG,EAAE,SAAS,CAAC,IAAI;gBACnB,OAAO,EAAE;oBACP,cAAc,EAAE,0BAA0B;iBAC3C;gBACD,oEAAoE;gBACpE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC;oBACrB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;iBACxC,CAAC;aACH;SACF,CAAA;QAED,0CAA0C;QAC1C,qCAAqC;QACrC,uBAAuB;QACvB,mBAAmB;QACnB,kCAAkC;QAClC,kBAAkB;QAClB,MAAM;QACN,6CAA6C;QAC7C,uCAAuC;QACvC,sBAAsB;QACtB,iBAAiB;QACjB,+BAA+B;QAC/B,qCAAqC;QACrC,SAAS;QACT,oCAAoC;QACpC,2CAA2C;QAC3C,OAAO;QACP,gBAAgB;QAChB,IAAI;QAEJ,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,MAAM,CAAC,UAAU,CACxC;YACE,MAAM;YACN,IAAI,EAAE,SAAS;SAChB,EACD;YACE,KAAK,EAAE;gBACL,UAAU,EAAE;oBACV,CAAC;oBACD,EAAE,CAAC,WAAW;iBACf;gBACD,eAAe;aAChB;SACF,CACF,CAAA;QAED,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,eAAe,CAAC,SAAS,GAAG,SAAS;QACzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAA;QAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;QAE1E,+DAA+D;QAC/D,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAA;QAExE,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YACzB,OAAO,IAAI,CAAC,aAAa,IAAI,CAAC,GAAG,CAAC,CAAA;QACpC,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;;;;;;;;OASG;IACH,WAAW,CAAC,IAAmC;QAC7C,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,EAA+B,CAAA;SACvC;QAED,oEAAoE;QACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CACzB,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CACtE,CAAA;QAED,MAAM,aAAa,GAAG,qBAAQ,CAAC,aAAa,CAC1C,QAAQ,EACR,IAAI,CAAC,aAAa,CACZ,CAAA;QAER,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAA8B,CAAA;IACvE,CAAC;IAED;;;;;;;;OAQG;IAEH,WAAW,CAAC,GAAwB;QAClC,MAAM,SAAS,GAAG,qBAAQ,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;QAEjE,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAClE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,SAAS,CAAC,IAAY;QAC1B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAA;QAC/C,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,MAAM,mBAAQ,CAAC,GAAG,CACtC,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAC/C,CAAA;QAED,4FAA4F;QAC5F,IAAI,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAC,EAAE;YACxD,yBAAyB;YACzB,MAAM,QAAQ,GAAG,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAA;YAC7C,OAAO;gBACL,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,KAAK,EAAE,OAAO;gBACtB,QAAQ,EAAE,CAAC;gBACX,MAAM,EAAE,WAAW;gBACnB,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACjC,OAAO,EAAE,IAAI;gBACb,cAAc,EAAE,IAAI;gBACpB,OAAO,EAAE,EAAE;aACZ,CAAA;SACF;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QAEpB,sBAAsB;QACtB,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,CAAC,CAAA;QAC7C,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,CAAC,CAAA;QAC7C,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,CAAA;QAC3D,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,CAAA;QAE9D,yCAAyC;QACzC,IAAI,MAAM,GAAmB,SAAS,CAAA;QACtC,IAAI,aAAa,KAAK,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,aAAa,IAAI,CAAC,CAAC,EAAE;YACpE,MAAM,GAAG,QAAQ,CAAA;SAClB;aAAM,IAAI,aAAa,GAAG,CAAC,EAAE;YAC5B,MAAM,GAAG,WAAW,CAAA;SACrB;QAED,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE;YACvC,QAAQ,EAAE,aAAa;YACvB,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,cAAc,EAAE,OAAO,IAAI,EAAE;YACvD,MAAM;YACN,OAAO,EAAE,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE;YAChD,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI;YACpE,cAAc,EAAE,SAAS;gBACvB,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,YAAY;gBAC1C,CAAC,CAAC,IAAI;YACR,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;SAClD,CAAA;IACH,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,KAAK,CAAC,MAAW;QACrB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;YAC9B,IAAI,EAAE;gBACJ,IAAI,EAAE,GAAG,MAAM,CAAC,cAAc,IAAI,cAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;gBACjD,WAAW,EAAE;oBACX,GAAG,EAAE,MAAM,CAAC,OAAO;oBACnB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;iBACtC;aACF;YACD,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,SAAS;YACxC,eAAe,EAAE,sBAAsB;SACxC,CAAC,CAAA;QAEF,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,CAAA;QAC3D,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,CAAA;QAE9D,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,IAAI;YACb,IAAI,EAAE,MAAM,CAAC,QAAQ;YACrB,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,QAAQ;gBACf,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE;gBACzC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YAC5B,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI;YACpE,cAAc,EAAE,IAAI;SACrB,CAAA;IACH,CAAC;CACF;AAlQe;IADb,eAAI,CAAC,WAAW,EAAE;;;;6DAYlB;AAnCH,gDA0RC"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * MockCloudTaskConnector - In-memory mock for testing
3
+ *
4
+ * This connector simulates GCP Cloud Tasks behavior locally for testing purposes.
5
+ * It stores tasks in memory and executes them via a simulated worker,
6
+ * allowing us to run the same test suite as BullMQ and Hatchet adapters.
7
+ */
8
+ import type { ShouldQueue, TaskConnector, TaskStatus } from '@goatlab/tasks-core';
9
+ export declare class MockCloudTaskConnector implements TaskConnector<object> {
10
+ private tasks;
11
+ private taskHandlers;
12
+ private isProcessing;
13
+ private processInterval;
14
+ /**
15
+ * Registers task handlers (similar to BullMQ/Hatchet startWorker).
16
+ * This allows the mock to execute tasks when they are queued.
17
+ */
18
+ startWorker({ tasks }: {
19
+ workerName?: string;
20
+ tasks: ShouldQueue[];
21
+ }): Promise<() => Promise<void>>;
22
+ /**
23
+ * Processes queued tasks by executing their handlers.
24
+ * Simulates GCP Cloud Tasks calling HTTP endpoints.
25
+ */
26
+ private processTasks;
27
+ /**
28
+ * Gets the status of a task by its ID.
29
+ */
30
+ getStatus(id: string): Promise<TaskStatus>;
31
+ /**
32
+ * Queues a task to be run.
33
+ */
34
+ queue(params: {
35
+ uniqueTaskName: string;
36
+ taskName: string;
37
+ postUrl: string;
38
+ taskBody: object;
39
+ handle: () => Promise<any>;
40
+ }): Promise<Omit<TaskStatus, 'payload'>>;
41
+ /**
42
+ * Clears all stored tasks.
43
+ */
44
+ clear(): void;
45
+ /**
46
+ * Closes the connector and stops processing.
47
+ */
48
+ close(): Promise<void>;
49
+ }
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ /**
3
+ * MockCloudTaskConnector - In-memory mock for testing
4
+ *
5
+ * This connector simulates GCP Cloud Tasks behavior locally for testing purposes.
6
+ * It stores tasks in memory and executes them via a simulated worker,
7
+ * allowing us to run the same test suite as BullMQ and Hatchet adapters.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.MockCloudTaskConnector = void 0;
11
+ const js_utils_1 = require("@goatlab/js-utils");
12
+ class MockCloudTaskConnector {
13
+ tasks = new Map();
14
+ taskHandlers = new Map();
15
+ isProcessing = false;
16
+ processInterval = null;
17
+ /**
18
+ * Registers task handlers (similar to BullMQ/Hatchet startWorker).
19
+ * This allows the mock to execute tasks when they are queued.
20
+ */
21
+ async startWorker({ tasks }) {
22
+ for (const task of tasks) {
23
+ this.taskHandlers.set(task.taskName, task);
24
+ }
25
+ // Start processing tasks
26
+ this.isProcessing = true;
27
+ this.processInterval = setInterval(() => this.processTasks(), 50);
28
+ return async () => {
29
+ this.isProcessing = false;
30
+ if (this.processInterval) {
31
+ clearInterval(this.processInterval);
32
+ this.processInterval = null;
33
+ }
34
+ };
35
+ }
36
+ /**
37
+ * Processes queued tasks by executing their handlers.
38
+ * Simulates GCP Cloud Tasks calling HTTP endpoints.
39
+ */
40
+ async processTasks() {
41
+ if (!this.isProcessing) {
42
+ return;
43
+ }
44
+ for (const [_id, task] of this.tasks.entries()) {
45
+ if (task.status === 'QUEUED') {
46
+ // Mark as running
47
+ task.status = 'RUNNING';
48
+ task.attempts++;
49
+ const handler = this.taskHandlers.get(task.name);
50
+ if (handler) {
51
+ try {
52
+ const result = await handler.handle(task.payload);
53
+ task.status = 'COMPLETED';
54
+ task.output = result ? JSON.stringify(result) : '';
55
+ }
56
+ catch (error) {
57
+ task.status = 'FAILED';
58
+ task.output = error?.message || 'Unknown error';
59
+ }
60
+ }
61
+ else {
62
+ // No handler registered - mark as completed (simulates successful HTTP call)
63
+ task.status = 'COMPLETED';
64
+ }
65
+ }
66
+ }
67
+ }
68
+ /**
69
+ * Gets the status of a task by its ID.
70
+ */
71
+ async getStatus(id) {
72
+ const task = this.tasks.get(id);
73
+ if (!task) {
74
+ return {
75
+ id,
76
+ name: '',
77
+ status: 'COMPLETED',
78
+ output: 'Task not found',
79
+ attempts: 0,
80
+ created: new Date().toISOString(),
81
+ nextRun: null,
82
+ nextRunMinutes: null,
83
+ payload: {}
84
+ };
85
+ }
86
+ return {
87
+ id: task.id,
88
+ name: task.name,
89
+ status: task.status,
90
+ output: task.output,
91
+ attempts: task.attempts,
92
+ created: task.created,
93
+ nextRun: null,
94
+ nextRunMinutes: null,
95
+ payload: task.payload
96
+ };
97
+ }
98
+ /**
99
+ * Queues a task to be run.
100
+ */
101
+ async queue(params) {
102
+ const id = `mock-task-${params.uniqueTaskName}_${js_utils_1.Ids.nanoId(5)}`;
103
+ const now = new Date().toISOString();
104
+ const storedTask = {
105
+ id,
106
+ name: params.taskName,
107
+ payload: params.taskBody,
108
+ status: 'QUEUED',
109
+ attempts: 0,
110
+ created: now,
111
+ output: '',
112
+ handle: params.handle
113
+ };
114
+ this.tasks.set(id, storedTask);
115
+ return {
116
+ id,
117
+ name: params.taskName,
118
+ output: '',
119
+ attempts: 0,
120
+ status: 'QUEUED',
121
+ created: now,
122
+ nextRun: null,
123
+ nextRunMinutes: null
124
+ };
125
+ }
126
+ /**
127
+ * Clears all stored tasks.
128
+ */
129
+ clear() {
130
+ this.tasks.clear();
131
+ }
132
+ /**
133
+ * Closes the connector and stops processing.
134
+ */
135
+ async close() {
136
+ this.isProcessing = false;
137
+ if (this.processInterval) {
138
+ clearInterval(this.processInterval);
139
+ this.processInterval = null;
140
+ }
141
+ this.tasks.clear();
142
+ this.taskHandlers.clear();
143
+ }
144
+ }
145
+ exports.MockCloudTaskConnector = MockCloudTaskConnector;
146
+ //# sourceMappingURL=MockCloudTaskConnector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MockCloudTaskConnector.js","sourceRoot":"","sources":["../src/MockCloudTaskConnector.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH,gDAAuC;AAmBvC,MAAa,sBAAsB;IACzB,KAAK,GAA4B,IAAI,GAAG,EAAE,CAAA;IAC1C,YAAY,GAA6B,IAAI,GAAG,EAAE,CAAA;IAClD,YAAY,GAAG,KAAK,CAAA;IACpB,eAAe,GAA0B,IAAI,CAAA;IAErD;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAC,EAChB,KAAK,EAIN;QACC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;SAC3C;QAED,yBAAyB;QACzB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;QACxB,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,CAAC,CAAA;QAEjE,OAAO,KAAK,IAAI,EAAE;YAChB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA;YACzB,IAAI,IAAI,CAAC,eAAe,EAAE;gBACxB,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;gBACnC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;aAC5B;QACH,CAAC,CAAA;IACH,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,YAAY;QACxB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB,OAAM;SACP;QAED,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;YAC9C,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE;gBAC5B,kBAAkB;gBAClB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;gBACvB,IAAI,CAAC,QAAQ,EAAE,CAAA;gBAEf,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAChD,IAAI,OAAO,EAAE;oBACX,IAAI;wBACF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAc,CAAC,CAAA;wBACxD,IAAI,CAAC,MAAM,GAAG,WAAW,CAAA;wBACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;qBACnD;oBAAC,OAAO,KAAU,EAAE;wBACnB,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAA;wBACtB,IAAI,CAAC,MAAM,GAAG,KAAK,EAAE,OAAO,IAAI,eAAe,CAAA;qBAChD;iBACF;qBAAM;oBACL,6EAA6E;oBAC7E,IAAI,CAAC,MAAM,GAAG,WAAW,CAAA;iBAC1B;aACF;SACF;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,EAAU;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAE/B,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;gBACL,EAAE;gBACF,IAAI,EAAE,EAAE;gBACR,MAAM,EAAE,WAAW;gBACnB,MAAM,EAAE,gBAAgB;gBACxB,QAAQ,EAAE,CAAC;gBACX,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACjC,OAAO,EAAE,IAAI;gBACb,cAAc,EAAE,IAAI;gBACpB,OAAO,EAAE,EAAE;aACZ,CAAA;SACF;QAED,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI;YACb,cAAc,EAAE,IAAI;YACpB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAA;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,MAMX;QACC,MAAM,EAAE,GAAG,aAAa,MAAM,CAAC,cAAc,IAAI,cAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;QAChE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QAEpC,MAAM,UAAU,GAAe;YAC7B,EAAE;YACF,IAAI,EAAE,MAAM,CAAC,QAAQ;YACrB,OAAO,EAAE,MAAM,CAAC,QAAQ;YACxB,MAAM,EAAE,QAAQ;YAChB,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,GAAG;YACZ,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAA;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAA;QAE9B,OAAO;YACL,EAAE;YACF,IAAI,EAAE,MAAM,CAAC,QAAQ;YACrB,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,GAAG;YACZ,OAAO,EAAE,IAAI;YACb,cAAc,EAAE,IAAI;SACrB,CAAA;IACH,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA;QACzB,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;YACnC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;SAC5B;QACD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;QAClB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAA;IAC3B,CAAC;CACF;AA5JD,wDA4JC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * GCP Cloud Tasks Benchmark Script
3
+ *
4
+ * Run with: npx tsx src/benchmark.ts [mode]
5
+ *
6
+ * Modes:
7
+ * (default) - Run queue throughput benchmark
8
+ * payload - Compare different payload sizes
9
+ * batch - Compare different batch sizes
10
+ *
11
+ * Requires FIREBASE_SERVICE_ACCOUNT environment variable.
12
+ *
13
+ * Note: GCP Cloud Tasks is HTTP callback based, so we can only measure
14
+ * queue throughput (enqueue rate). E2E and latency tests would require
15
+ * a real HTTP endpoint to receive callbacks.
16
+ */
17
+ import 'dotenv/config';
@@ -0,0 +1,260 @@
1
+ "use strict";
2
+ /**
3
+ * GCP Cloud Tasks Benchmark Script
4
+ *
5
+ * Run with: npx tsx src/benchmark.ts [mode]
6
+ *
7
+ * Modes:
8
+ * (default) - Run queue throughput benchmark
9
+ * payload - Compare different payload sizes
10
+ * batch - Compare different batch sizes
11
+ *
12
+ * Requires FIREBASE_SERVICE_ACCOUNT environment variable.
13
+ *
14
+ * Note: GCP Cloud Tasks is HTTP callback based, so we can only measure
15
+ * queue throughput (enqueue rate). E2E and latency tests would require
16
+ * a real HTTP endpoint to receive callbacks.
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ require("dotenv/config");
20
+ const tasks_core_1 = require("@goatlab/tasks-core");
21
+ const CloudTaskConnector_js_1 = require("./CloudTaskConnector.js");
22
+ // Configuration
23
+ const WARMUP_COUNT = 10;
24
+ const BENCHMARK_DURATION_MS = 10000; // 10 seconds (GCP has rate limits)
25
+ const DEFAULT_BATCH_SIZE = 10; // Smaller batches for GCP rate limits
26
+ // Parse service account
27
+ const serviceAccountBase64 = process.env.FIREBASE_SERVICE_ACCOUNT;
28
+ if (!serviceAccountBase64) {
29
+ console.error('āŒ FIREBASE_SERVICE_ACCOUNT environment variable is required');
30
+ process.exit(1);
31
+ }
32
+ const serviceAccountJson = Buffer.from(serviceAccountBase64, 'base64').toString('utf8');
33
+ const gcpServiceAccount = JSON.parse(serviceAccountJson);
34
+ class BenchmarkTask extends tasks_core_1.ShouldQueue {
35
+ postUrl;
36
+ taskName;
37
+ constructor(connector, name) {
38
+ super({ connector });
39
+ this.taskName = name;
40
+ // Use httpbin to accept the POST (though we won't wait for it)
41
+ this.postUrl = 'https://httpbin.org/post';
42
+ }
43
+ async handle() {
44
+ return undefined;
45
+ }
46
+ }
47
+ async function runQueueBenchmark(_connector, task, batchSize = DEFAULT_BATCH_SIZE) {
48
+ console.log('\nšŸ“Š Queue Throughput (enqueue to GCP)');
49
+ console.log('='.repeat(50));
50
+ console.log(`Batch size: ${batchSize}`);
51
+ // Warmup
52
+ console.log(`Warming up (${WARMUP_COUNT} tasks)...`);
53
+ for (let i = 0; i < WARMUP_COUNT; i++) {
54
+ try {
55
+ await task.queue({ index: i });
56
+ }
57
+ catch (err) {
58
+ console.log(`Warmup error: ${err.message}`);
59
+ }
60
+ }
61
+ console.log(`Running for ${BENCHMARK_DURATION_MS / 1000}s...`);
62
+ let count = 0;
63
+ let errors = 0;
64
+ const startTime = Date.now();
65
+ const endTime = startTime + BENCHMARK_DURATION_MS;
66
+ while (Date.now() < endTime) {
67
+ const promises = [];
68
+ for (let i = 0; i < batchSize; i++) {
69
+ promises.push(task.queue({ index: count++ }).catch(_err => {
70
+ errors++;
71
+ return null;
72
+ }));
73
+ }
74
+ await Promise.all(promises);
75
+ }
76
+ const elapsed = Date.now() - startTime;
77
+ const successful = count - errors;
78
+ const throughput = (successful / elapsed) * 1000;
79
+ console.log(`āœ… Attempted: ${count.toLocaleString()} tasks`);
80
+ console.log(`āœ… Successful: ${successful.toLocaleString()} tasks`);
81
+ console.log(`āŒ Errors: ${errors.toLocaleString()} tasks`);
82
+ console.log(`āœ… Throughput: ${throughput.toFixed(1)} tasks/sec`);
83
+ return { throughput, successful, errors };
84
+ }
85
+ async function runSequentialBenchmark(_connector, task) {
86
+ console.log('\nšŸ“Š Sequential Queue (one at a time)');
87
+ console.log('='.repeat(50));
88
+ const count = 50;
89
+ const latencies = [];
90
+ for (let i = 0; i < count; i++) {
91
+ const start = Date.now();
92
+ try {
93
+ await task.queue({ index: i });
94
+ latencies.push(Date.now() - start);
95
+ }
96
+ catch (err) {
97
+ console.log(`Error at ${i}: ${err.message}`);
98
+ }
99
+ }
100
+ if (latencies.length === 0) {
101
+ console.log('āŒ No successful queues');
102
+ return { avg: 0, p50: 0, p95: 0, throughput: 0 };
103
+ }
104
+ latencies.sort((a, b) => a - b);
105
+ const avg = latencies.reduce((a, b) => a + b, 0) / latencies.length;
106
+ const p50 = latencies[Math.floor(latencies.length * 0.5)];
107
+ const p95 = latencies[Math.floor(latencies.length * 0.95)];
108
+ const throughput = 1000 / avg;
109
+ console.log(`āœ… Samples: ${latencies.length}`);
110
+ console.log(`āœ… Avg latency: ${avg.toFixed(0)}ms | P50: ${p50}ms | P95: ${p95}ms`);
111
+ console.log(`āœ… Sequential throughput: ${throughput.toFixed(1)} tasks/sec`);
112
+ return { avg, p50, p95, throughput };
113
+ }
114
+ async function runPayloadComparison(connector) {
115
+ console.log('\nšŸ“Š Payload Size Comparison');
116
+ console.log('='.repeat(50));
117
+ const results = [];
118
+ const payloads = [
119
+ { name: 'Tiny (100B)', data: 'x'.repeat(80) },
120
+ { name: 'Small (1KB)', data: 'x'.repeat(900) },
121
+ { name: 'Medium (10KB)', data: 'x'.repeat(10000) },
122
+ { name: 'Large (50KB)', data: 'x'.repeat(50000) },
123
+ // GCP Cloud Tasks has a 100KB limit for task payload
124
+ { name: 'Max (95KB)', data: 'x'.repeat(95000) }
125
+ ];
126
+ for (const payload of payloads) {
127
+ const bytes = JSON.stringify({ index: 0, data: payload.data }).length;
128
+ console.log(`\nšŸ“Š Payload: ${payload.name} (~${(bytes / 1024).toFixed(1)}KB)`);
129
+ const task = new BenchmarkTask(connector, `bench_payload_${Date.now()}`);
130
+ task.postUrl = 'https://httpbin.org/post';
131
+ // Smaller test for payload comparison
132
+ const testDuration = 5000;
133
+ let count = 0;
134
+ let errors = 0;
135
+ const startTime = Date.now();
136
+ const endTime = startTime + testDuration;
137
+ while (Date.now() < endTime) {
138
+ try {
139
+ await task.queue({ index: count++, data: payload.data });
140
+ }
141
+ catch (err) {
142
+ errors++;
143
+ if (errors === 1) {
144
+ console.log(`First error: ${err.message?.slice(0, 100)}`);
145
+ }
146
+ }
147
+ }
148
+ const elapsed = Date.now() - startTime;
149
+ const throughput = ((count - errors) / elapsed) * 1000;
150
+ console.log(`āœ… Throughput: ${throughput.toFixed(1)} tasks/sec (${errors} errors)`);
151
+ results.push({ size: payload.name, bytes, throughput, errors });
152
+ }
153
+ // Summary
154
+ console.log(`\n${'='.repeat(50)}`);
155
+ console.log('šŸ“ˆ PAYLOAD SIZE COMPARISON');
156
+ console.log('='.repeat(50));
157
+ const maxThroughput = Math.max(...results.map(r => r.throughput));
158
+ for (const r of results) {
159
+ const pct = maxThroughput > 0 ? Math.round((r.throughput / maxThroughput) * 100) : 0;
160
+ console.log(`${r.size.padEnd(15)} ${r.throughput.toFixed(1).padStart(8)} tasks/sec (${pct.toString().padStart(3)}%) ${r.errors} errors`);
161
+ }
162
+ return results;
163
+ }
164
+ async function runBatchComparison(connector) {
165
+ console.log('\nšŸ“Š Batch Size Comparison');
166
+ console.log('='.repeat(50));
167
+ const results = [];
168
+ const batchSizes = [1, 5, 10, 20, 50];
169
+ for (const batchSize of batchSizes) {
170
+ console.log(`\nšŸ“Š Batch size: ${batchSize}`);
171
+ const task = new BenchmarkTask(connector, `bench_batch_${Date.now()}`);
172
+ const testDuration = 5000;
173
+ let count = 0;
174
+ let errors = 0;
175
+ const startTime = Date.now();
176
+ const endTime = startTime + testDuration;
177
+ while (Date.now() < endTime) {
178
+ const promises = [];
179
+ for (let i = 0; i < batchSize; i++) {
180
+ promises.push(task.queue({ index: count++ }).catch(() => {
181
+ errors++;
182
+ return null;
183
+ }));
184
+ }
185
+ await Promise.all(promises);
186
+ }
187
+ const elapsed = Date.now() - startTime;
188
+ const throughput = ((count - errors) / elapsed) * 1000;
189
+ console.log(`āœ… Throughput: ${throughput.toFixed(1)} tasks/sec (${errors} errors)`);
190
+ results.push({ batchSize, throughput, errors });
191
+ }
192
+ // Summary
193
+ console.log(`\n${'='.repeat(50)}`);
194
+ console.log('šŸ“ˆ BATCH SIZE COMPARISON');
195
+ console.log('='.repeat(50));
196
+ const maxThroughput = Math.max(...results.map(r => r.throughput));
197
+ for (const r of results) {
198
+ const pct = maxThroughput > 0 ? Math.round((r.throughput / maxThroughput) * 100) : 0;
199
+ console.log(`Batch ${r.batchSize.toString().padStart(2)}: ${r.throughput.toFixed(1).padStart(8)} tasks/sec (${pct.toString().padStart(3)}%) ${r.errors} errors`);
200
+ }
201
+ return results;
202
+ }
203
+ async function main() {
204
+ console.log('šŸš€ GCP Cloud Tasks Benchmark');
205
+ console.log('='.repeat(50));
206
+ console.log(`Project: ${gcpServiceAccount.project_id}`);
207
+ console.log(`Location: europe-west1`);
208
+ console.log(`Queue: default`);
209
+ console.log('');
210
+ console.log('āš ļø Note: GCP Cloud Tasks has rate limits.');
211
+ console.log(' Results may vary based on quota and network latency.');
212
+ console.log('');
213
+ const connector = new CloudTaskConnector_js_1.CloudTaskConnector({
214
+ gcpServiceAccount,
215
+ location: 'europe-west1',
216
+ encryptionKey: 'benchmark-encryption-key-32ch!',
217
+ gcpProject: gcpServiceAccount.project_id
218
+ });
219
+ // Queue throughput test
220
+ const task1 = new BenchmarkTask(connector, `bench_queue_${Date.now()}`);
221
+ const queueResult = await runQueueBenchmark(connector, task1, DEFAULT_BATCH_SIZE);
222
+ // Sequential test (measures single-request latency)
223
+ const task2 = new BenchmarkTask(connector, `bench_seq_${Date.now()}`);
224
+ const seqResult = await runSequentialBenchmark(connector, task2);
225
+ // Summary
226
+ console.log(`\n${'='.repeat(50)}`);
227
+ console.log('šŸ“ˆ GCP CLOUD TASKS SUMMARY');
228
+ console.log('='.repeat(50));
229
+ console.log(`Parallel throughput: ${queueResult.throughput.toFixed(1)} tasks/sec (batch=${DEFAULT_BATCH_SIZE})`);
230
+ console.log(`Sequential throughput: ${seqResult.throughput.toFixed(1)} tasks/sec`);
231
+ console.log(`Avg queue latency: ${seqResult.avg.toFixed(0)}ms`);
232
+ console.log(`P95 queue latency: ${seqResult.p95}ms`);
233
+ console.log('');
234
+ console.log('Note: E2E throughput cannot be measured without an HTTP endpoint');
235
+ console.log(' to receive GCP callbacks.');
236
+ }
237
+ // CLI
238
+ const mode = process.argv[2];
239
+ if (mode === 'payload') {
240
+ const connector = new CloudTaskConnector_js_1.CloudTaskConnector({
241
+ gcpServiceAccount,
242
+ location: 'europe-west1',
243
+ encryptionKey: 'benchmark-encryption-key-32ch!',
244
+ gcpProject: gcpServiceAccount.project_id
245
+ });
246
+ runPayloadComparison(connector).catch(console.error);
247
+ }
248
+ else if (mode === 'batch') {
249
+ const connector = new CloudTaskConnector_js_1.CloudTaskConnector({
250
+ gcpServiceAccount,
251
+ location: 'europe-west1',
252
+ encryptionKey: 'benchmark-encryption-key-32ch!',
253
+ gcpProject: gcpServiceAccount.project_id
254
+ });
255
+ runBatchComparison(connector).catch(console.error);
256
+ }
257
+ else {
258
+ main().catch(console.error);
259
+ }
260
+ //# sourceMappingURL=benchmark.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"benchmark.js","sourceRoot":"","sources":["../src/benchmark.ts"],"names":[],"mappings":"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"}