Skip to content
File

Blob: src/workerd/api/tests/queue-producer-metadata-test.js

javascript77 lines
1// Copyright (c) 2023 Cloudflare, Inc.
2// Licensed under the Apache 2.0 license found in the LICENSE file or at:
3// https://opensource.org/licenses/Apache-2.0
4 
5import assert from 'node:assert';
6 
7const SEND_RESPONSE = {
8 metadata: {
9 metrics: {
10 backlogCount: 100,
11 backlogBytes: 2048,
12 oldestMessageTimestamp: 1000000,
13 },
14 },
15};
16 
17const SEND_BATCH_RESPONSE = {
18 metadata: {
19 metrics: {
20 backlogCount: 200,
21 backlogBytes: 4096,
22 oldestMessageTimestamp: 2000000,
23 },
24 },
25};
26 
27export default {
28 async fetch(request) {
29 const { pathname } = new URL(request.url);
30 
31 if (pathname === '/message') {
32 const text = await request.text();
33 assert.strictEqual(request.method, 'POST');
34 assert.strictEqual(text, 'abc');
35 return Response.json(SEND_RESPONSE);
36 }
37 
38 if (pathname === '/batch') {
39 assert.strictEqual(request.method, 'POST');
40 const body = await request.json();
41 assert.strictEqual(body.messages.length, 1);
42 return Response.json(SEND_BATCH_RESPONSE);
43 }
44 
45 return new Response('Not Found', { status: 404 });
46 },
47 
48 async test(ctrl, env) {
49 const sendResult = await env.QUEUE.send('abc', { contentType: 'text' });
50 const sendBatchResult = await env.QUEUE.sendBatch([
51 { body: 'def', contentType: 'text' },
52 ]);
53 
54 assert.strictEqual(sendResult.metadata.metrics.backlogCount, 100);
55 assert.strictEqual(sendResult.metadata.metrics.backlogBytes, 2048);
56 assert.ok(
57 sendResult.metadata.metrics.oldestMessageTimestamp instanceof Date,
58 'Expected oldestMessageTimestamp to be a Date'
59 );
60 assert.strictEqual(
61 sendResult.metadata.metrics.oldestMessageTimestamp.getTime(),
62 1000000
63 );
64 
65 assert.strictEqual(sendBatchResult.metadata.metrics.backlogCount, 200);
66 assert.strictEqual(sendBatchResult.metadata.metrics.backlogBytes, 4096);
67 assert.ok(
68 sendBatchResult.metadata.metrics.oldestMessageTimestamp instanceof Date,
69 'Expected oldestMessageTimestamp to be a Date'
70 );
71 assert.strictEqual(
72 sendBatchResult.metadata.metrics.oldestMessageTimestamp.getTime(),
73 2000000
74 );
75 },
76};