Skip to content
File

Blob: src/workerd/api/tests/sync-kv-instrumentation-test.js

javascript186 lines
1// Copyright (c) 2017-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
4import * as assert from 'node:assert';
5import {
6 invocationPromises,
7 spans,
8 testTailHandler,
9} from 'test:instrumentation-tail';
10 
11export default testTailHandler;
12 
13export const test = {
14 async test() {
15 await Promise.allSettled(invocationPromises);
16 // filter out non-KV spans including jsRpc calls
17 let received = Array.from(spans.values()).filter((span) =>
18 span.name.match('kv')
19 );
20 
21 assert.deepStrictEqual(received, expectedSpans);
22 },
23};
24 
25const expectedSpans = [
26 {
27 name: 'durable_object_storage_kv_get',
28 'db.system.name': 'cloudflare-durable-object-sql',
29 'db.operation.name': 'get',
30 'cloudflare.durable_object.kv.query.keys': 'foo',
31 'cloudflare.durable_object.kv.query.keys.count': 1n,
32 closed: true,
33 },
34 {
35 name: 'durable_object_storage_kv_put',
36 'db.system.name': 'cloudflare-durable-object-sql',
37 'db.operation.name': 'put',
38 'cloudflare.durable_object.kv.query.keys': 'foo',
39 'cloudflare.durable_object.kv.query.keys.count': 1n,
40 closed: true,
41 },
42 {
43 name: 'durable_object_storage_kv_get',
44 'db.system.name': 'cloudflare-durable-object-sql',
45 'db.operation.name': 'get',
46 'cloudflare.durable_object.kv.query.keys': 'foo',
47 'cloudflare.durable_object.kv.query.keys.count': 1n,
48 closed: true,
49 },
50 {
51 name: 'durable_object_storage_kv_get',
52 'db.system.name': 'cloudflare-durable-object-sql',
53 'db.operation.name': 'get',
54 'cloudflare.durable_object.kv.query.keys': 'bar',
55 'cloudflare.durable_object.kv.query.keys.count': 1n,
56 closed: true,
57 },
58 {
59 name: 'durable_object_storage_kv_put',
60 'db.system.name': 'cloudflare-durable-object-sql',
61 'db.operation.name': 'put',
62 'cloudflare.durable_object.kv.query.keys': 'bar',
63 'cloudflare.durable_object.kv.query.keys.count': 1n,
64 closed: true,
65 },
66 {
67 name: 'durable_object_storage_kv_get',
68 'db.system.name': 'cloudflare-durable-object-sql',
69 'db.operation.name': 'get',
70 'cloudflare.durable_object.kv.query.keys': 'bar',
71 'cloudflare.durable_object.kv.query.keys.count': 1n,
72 closed: true,
73 },
74 {
75 name: 'durable_object_storage_kv_list',
76 'db.system.name': 'cloudflare-durable-object-sql',
77 'db.operation.name': 'list',
78 closed: true,
79 },
80 {
81 name: 'durable_object_storage_kv_list',
82 'db.system.name': 'cloudflare-durable-object-sql',
83 'db.operation.name': 'list',
84 'cloudflare.durable_object.kv.query.reverse': true,
85 closed: true,
86 },
87 {
88 name: 'durable_object_storage_kv_list',
89 'db.system.name': 'cloudflare-durable-object-sql',
90 'db.operation.name': 'list',
91 closed: true,
92 },
93 {
94 name: 'durable_object_storage_kv_list',
95 'db.system.name': 'cloudflare-durable-object-sql',
96 'db.operation.name': 'list',
97 closed: true,
98 },
99 {
100 name: 'durable_object_storage_kv_put',
101 'db.system.name': 'cloudflare-durable-object-sql',
102 'db.operation.name': 'put',
103 'cloudflare.durable_object.kv.query.keys': 'baz',
104 'cloudflare.durable_object.kv.query.keys.count': 1n,
105 closed: true,
106 },
107 {
108 name: 'durable_object_storage_kv_list',
109 'db.system.name': 'cloudflare-durable-object-sql',
110 'db.operation.name': 'list',
111 'cloudflare.durable_object.kv.query.prefix': 'ba',
112 closed: true,
113 },
114 {
115 name: 'durable_object_storage_kv_list',
116 'db.system.name': 'cloudflare-durable-object-sql',
117 'db.operation.name': 'list',
118 'cloudflare.durable_object.kv.query.limit': 1n,
119 closed: true,
120 },
121 {
122 name: 'durable_object_storage_kv_list',
123 'db.system.name': 'cloudflare-durable-object-sql',
124 'db.operation.name': 'list',
125 'cloudflare.durable_object.kv.query.reverse': true,
126 'cloudflare.durable_object.kv.query.limit': 1n,
127 closed: true,
128 },
129 {
130 name: 'durable_object_storage_kv_list',
131 'db.system.name': 'cloudflare-durable-object-sql',
132 'db.operation.name': 'list',
133 'cloudflare.durable_object.kv.query.start': 'b',
134 'cloudflare.durable_object.kv.query.end': 'c',
135 closed: true,
136 },
137 {
138 name: 'durable_object_storage_kv_list',
139 'db.system.name': 'cloudflare-durable-object-sql',
140 'db.operation.name': 'list',
141 'cloudflare.durable_object.kv.query.start': 'b',
142 'cloudflare.durable_object.kv.query.end': 'baz',
143 closed: true,
144 },
145 {
146 name: 'durable_object_storage_kv_list',
147 'db.system.name': 'cloudflare-durable-object-sql',
148 'db.operation.name': 'list',
149 'cloudflare.durable_object.kv.query.start': 'bar',
150 'cloudflare.durable_object.kv.query.end': 'c',
151 closed: true,
152 },
153 {
154 name: 'durable_object_storage_kv_list',
155 'db.system.name': 'cloudflare-durable-object-sql',
156 'db.operation.name': 'list',
157 'cloudflare.durable_object.kv.query.startAfter': 'bar',
158 'cloudflare.durable_object.kv.query.end': 'c',
159 closed: true,
160 },
161 {
162 name: 'durable_object_storage_kv_delete',
163 'db.system.name': 'cloudflare-durable-object-sql',
164 'db.operation.name': 'delete',
165 'cloudflare.durable_object.kv.query.keys': 'qux',
166 'cloudflare.durable_object.kv.query.keys.count': 1n,
167 'cloudflare.durable_object.kv.response.deleted_count': 0n,
168 closed: true,
169 },
170 {
171 name: 'durable_object_storage_kv_delete',
172 'db.system.name': 'cloudflare-durable-object-sql',
173 'db.operation.name': 'delete',
174 'cloudflare.durable_object.kv.query.keys': 'bar',
175 'cloudflare.durable_object.kv.query.keys.count': 1n,
176 'cloudflare.durable_object.kv.response.deleted_count': 1n,
177 closed: true,
178 },
179 {
180 name: 'durable_object_storage_kv_list',
181 'db.system.name': 'cloudflare-durable-object-sql',
182 'db.operation.name': 'list',
183 closed: true,
184 },
185];