File
Blob: src/workerd/api/tests/tail-worker-test.wd-test
| 1 | using Workerd = import "/workerd/workerd.capnp"; |
| 2 | |
| 3 | const 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 | |
| 108 | const 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 | |
| 129 | const 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 | |
| 148 | const 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 | |
| 166 | const 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 | |
| 174 | const logReceiver :Workerd.Worker = ( |
| 175 | modules = [ |
| 176 | (name = "worker", esModule = embed "tail-worker-test-receiver.js") |
| 177 | ], |
| 178 | compatibilityFlags = ["experimental", "nodejs_compat"], |
| 179 | ); |
| 180 | |
| 181 | const 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 | ); |