Skip to content
File

Blob: src/workerd/api/tests/tail-worker-test.wd-test

6.3 KB
1using Workerd = import "/workerd/workerd.capnp";
2 
3const unitTests :Workerd.Config = (
4 services = [
5 # Embedded tests we get traces from
6 ( name = "http-test",
7 worker = (
8 modules = [
9 ( name = "worker", esModule = embed "http-test.js" )
10 ],
11 bindings = [
12 ( name = "SERVICE", service = "http-test" ),
13 ( name = "CACHE_ENABLED", json = "false" ),
14 ],
15 compatibilityFlags = ["nodejs_compat", "service_binding_extra_handlers", "cache_option_disabled", "queues_json_messages", "url_standard", "workers_api_getters_setters_on_prototype", "fetch_legacy_url", "web_socket_auto_reply_to_close"],
16 streamingTails = ["log", "log-invalid", "log-no-op"],
17 ),
18 ),
19 ( name = "queue-test",
20 worker = (
21 modules = [
22 ( name = "worker", esModule = embed "queue-test.js" )
23 ],
24 bindings = [
25 ( name = "QUEUE", queue = "queue-test" ),
26 ( name = "SERVICE", service = "queue-test" ),
27 ],
28 compatibilityFlags = ["nodejs_compat", "service_binding_extra_handlers", "queues_json_messages", "rpc", "capture_async_api_throws", "disable_fast_jsg_struct"],
29 streamingTails = ["log"],
30 )
31 ),
32 (name = "alarms", worker = .alarmsWorker),
33 (name = "hiber", worker = .hiberWorker),
34 (name = "js-rpc-test", worker = .jsRpcWorker),
35 ( name = "connect-handler-test",
36 worker = (
37 modules = [
38 (name = "worker", esModule = embed "connect-handler-test.js"),
39 ],
40 compatibilityFlags = ["nodejs_compat_v2", "experimental"],
41 bindings = [
42 (name = "TARGET", service = (
43 name = "connect-handler-test-local-address-endpoint",
44 entrypoint = "LocalAddressEndpoint")),
45 ],
46 streamingTails = ["log"],
47 )
48 ),
49 ( name = "connect-handler-test-local-address-endpoint",
50 worker = (
51 modules = [
52 (name = "worker", esModule = embed "connect-handler-test-proxy.js"),
53 ],
54 compatibilityFlags = ["nodejs_compat_v2", "experimental"],
55 )
56 ),
57 ( name = "connect-handler-test-proxy",
58 worker = (
59 modules = [
60 (name = "worker", esModule = embed "connect-handler-test-proxy.js"),
61 ],
62 compatibilityFlags = ["nodejs_compat_v2", "experimental"],
63 )
64 ),
65 ( name = "connect-handler-test-endpoint",
66 worker = (
67 modules = [
68 (name = "worker", esModule = embed "connect-handler-test-proxy.js"),
69 ],
70 compatibilityFlags = ["nodejs_compat_v2", "experimental"],
71 )
72 ),
73 ( name = "internet", network = ( allow = ["private"] ) ),
74 (name = "TEST_TMPDIR", disk = (writable = true)),
75 # Dummy buffered tail worker (gets traces from alarms worker and produces trace for main tracer)
76 (name = "buffered", worker = .logBuffered, ),
77 # Receives trace events from STW, used to check that STW produces trace events properly
78 (name = "receiver", worker = .logReceiver, ),
79 # Unified tail worker with tests
80 # tests are executed in order, so logWorker needs to be last to have all traces available
81 (name = "log", worker = .logWorker, ),
82 # tail worker that fails to return a valid handler, used to confirm that this is handled
83 # gracefully, i.e. only results in a user-level error.
84 ( name = "log-invalid",
85 worker = (
86 modules = [
87 (name = "worker", esModule = embed "tail-worker-test-invalid.js")
88 ],
89 ),
90 ),
91 # tail worker with a handler object that doesn't handle any of the individual tail event types,
92 # used to confirm that this does not cause warnings
93 ( name = "log-no-op",
94 worker = (
95 modules = [
96 (name = "worker", esModule = embed "tail-worker-test-no-op.js")
97 ],
98 ),
99 )
100 ],
101 sockets = [
102 (name = "tcp", address = "*:8081", tcp = (), service = "connect-handler-test"),
103 (name = "tcp", address = "*:8082", tcp = (), service = (name = "connect-handler-test-proxy", entrypoint = "ConnectProxy")),
104 (name = "tcp", address = "*:8083", tcp = (), service = (name = "connect-handler-test-endpoint", entrypoint = "ConnectEndpoint"))
105 ]
106);
107 
108const alarmsWorker :Workerd.Worker = (
109 compatibilityFlags = ["experimental", "nodejs_compat"],
110 
111 modules = [
112 (name = "worker", esModule = embed "actor-alarms-test.js"),
113 ],
114 
115 durableObjectNamespaces = [
116 (className = "DurableObjectExample", uniqueKey = "210bd0cbd803ef7883a1ee9d86cce06e"),
117 ],
118 
119 durableObjectStorage = (localDisk = "TEST_TMPDIR"),
120 
121 bindings = [
122 (name = "ns", durableObjectNamespace = "DurableObjectExample"),
123 ],
124 # tailed by the main tail worker and the dummy buffered tail worker, to get traces for it too.
125 tails = ["buffered"],
126 streamingTails = ["log"],
127);
128 
129const hiberWorker :Workerd.Worker = (
130 compatibilityFlags = ["experimental", "nodejs_compat"],
131 
132 modules = [
133 (name = "worker", esModule = embed "websocket-hibernation.js"),
134 ],
135 
136 durableObjectNamespaces = [
137 (className = "DurableObjectExample", uniqueKey = "210bd0cbd803ef7883a1ee9d86cce06f"),
138 ],
139 
140 durableObjectStorage = (localDisk = "TEST_TMPDIR"),
141 
142 bindings = [
143 (name = "ns", durableObjectNamespace = "DurableObjectExample"),
144 ],
145 streamingTails = ["log"],
146);
147 
148const jsRpcWorker :Workerd.Worker = (
149 modules = [
150 (name = "worker", esModule = embed "tail-worker-test-jsrpc.js")
151 ],
152 compatibilityFlags = ["nodejs_compat", "experimental"],
153 
154 bindings = [
155 (name = "MyService", service = (name = "js-rpc-test", entrypoint = "MyService")),
156 (name = "MyActor", durableObjectNamespace = "MyActor"),
157 ],
158 durableObjectNamespaces = [
159 (className = "MyActor", uniqueKey = "foo"),
160 ],
161 durableObjectStorage = (inMemory = void),
162 
163 streamingTails = ["log"],
164);
165 
166const logWorker :Workerd.Worker = (
167 modules = [
168 (name = "worker", esModule = embed "tail-worker-test.js")
169 ],
170 compatibilityFlags = ["experimental", "nodejs_compat", "unsafe_module"],
171 streamingTails = ["receiver"],
172);
173 
174const logReceiver :Workerd.Worker = (
175 modules = [
176 (name = "worker", esModule = embed "tail-worker-test-receiver.js")
177 ],
178 compatibilityFlags = ["experimental", "nodejs_compat"],
179);
180 
181const logBuffered :Workerd.Worker = (
182 modules = [
183 (name = "worker", esModule = embed "tail-worker-test-dummy.js")
184 ],
185 compatibilityFlags = ["streaming_tail_worker"],
186 streamingTails = ["log"],
187);