diff --git a/integration-tests/js-compute/fixtures/app/tests-starlingmonkey.json b/integration-tests/js-compute/fixtures/app/tests-starlingmonkey.json index d5faf7e0f9..2af3eee065 100644 --- a/integration-tests/js-compute/fixtures/app/tests-starlingmonkey.json +++ b/integration-tests/js-compute/fixtures/app/tests-starlingmonkey.json @@ -8,6 +8,7 @@ "GET /cache-override/constructor/invalid-mode", "GET /cache-override/constructor/valid-mode", "GET /cache-override/fetch/mode-none", + "GET /cache-override/fetch/mode-pass", "GET /simple-cache/interface", "GET /simple-store/constructor/called-as-regular-function", "GET /simple-cache/constructor/throws", @@ -92,6 +93,11 @@ "GET /simple-cache/getOrSet/executes-the-set-method-when-key-not-in-cache", "GET /simple-cache/getOrSet/does-not-execute-the-set-method-when-key-is-in-cache", "GET /simple-cache/getOrSet/does-not-freeze-when-called-after-a-get", + "GET /client/tlsJA3MD5", + "GET /client/tlsClientHello", + "GET /client/tlsClientCertificate", + "GET /client/tlsCipherOpensslName", + "GET /client/tlsProtocol", "GET /console", "GET /crypto", "GET /crypto.subtle", @@ -255,7 +261,19 @@ "GET /backend/health/happy-path-backend-exists", "GET /backend/health/happy-path-backend-does-not-exist", "GET /env", + "GET /fastly/now", "GET /fastly/version", + "GET /fastly/getgeolocationforipaddress/interface", + "GET /fastly/getgeolocationforipaddress/called-as-constructor", + "GET /fastly/getgeolocationforipaddress/parameter-calls-7.1.17-ToString", + "GET /fastly/getgeolocationforipaddress/parameter-not-supplied", + "GET /fastly/getgeolocationforipaddress/parameter-empty-string", + "GET /fastly/getgeolocationforipaddress/parameter-ipv4-string", + "GET /fastly/getgeolocationforipaddress/parameter-compressed-ipv6-string", + "GET /fastly/getgeolocationforipaddress/parameter-shortened-ipv6-string", + "GET /fastly/getgeolocationforipaddress/parameter-expanded-ipv6-string", + "GET /fastly/getgeolocationforipaddress/called-unbound", + "GET /fastly:geolocation", "GET /kv-store/exposed-as-global", "GET /kv-store/interface", "GET /kv-store/constructor/called-as-regular-function", @@ -291,6 +309,7 @@ "GET /kv-store/put/value-parameter-arraybuffer", "GET /kv-store/put/value-parameter-typed-arrays", "GET /kv-store/put/value-parameter-dataview", + "POST /kv-store/put/request-body", "GET /kv-store/delete/called-as-constructor", "GET /kv-store/delete/called-unbound", "GET /kv-store/delete/key-parameter-calls-7.1.17-ToString", @@ -324,10 +343,29 @@ "GET /kv-store/get/key-does-not-exist-returns-null", "GET /kv-store/get/key-exists", "GET /kv-store/get/multiple-lookups-at-once", + "GET /kv-store-entry/interface", + "GET /kv-store-entry/text/valid", + "GET /kv-store-entry/json/valid", + "GET /kv-store-entry/json/invalid", + "GET /kv-store-entry/arrayBuffer/valid", + "GET /kv-store-entry/bodyUsed", + "GET /missing-backend", "GET /multiple-set-cookie/response-init", "GET /multiple-set-cookie/response-direct", + "GET /multiple-set-cookie/downstream", + "GET /Performance/interface", + "GET /request/constructor/fastly/decompressGzip/true", + "GET /request/constructor/fastly/decompressGzip/false", + "GET /fetch/requestinit/fastly/decompressGzip/true", + "GET /fetch/requestinit/fastly/decompressGzip/false", + "GET /request/setCacheKey/called-as-constructor", + "GET /request/setCacheKey/called-unbound", + "GET /request/setCacheKey/key-parameter-calls-7.1.17-ToString", + "GET /request/setCacheKey/key-parameter-not-supplied", + "GET /request/setCacheKey/key-valid", "GET /request/clone/called-as-constructor", "GET /request/clone/called-unbound", + "GET /request/clone/valid", "GET /request/clone/invalid", "GET /response/text/guest-backed-stream", "GET /response/json/guest-backed-stream", @@ -379,6 +417,7 @@ "GET /urlsearchparams/sort", "GET /random", "GET /error", + "GET /tee/error", "GET /override-content-length/request/init/object-literal/true", "GET /override-content-length/request/init/object-literal/false", "GET /override-content-length/fetch/init/object-literal/true", @@ -388,5 +427,6 @@ "GET /override-content-length/response/init/response-instance/true", "GET /override-content-length/response/init/response-instance/false", "GET /override-content-length/response/method/false", - "GET /override-content-length/response/method/true" + "GET /override-content-length/response/method/true", + "GET /headers/non-ascii-latin1-field-value" ] diff --git a/runtime/fastly/builtins/fetch-event.cpp b/runtime/fastly/builtins/fetch-event.cpp index ac807a100f..00584a89a1 100644 --- a/runtime/fastly/builtins/fetch-event.cpp +++ b/runtime/fastly/builtins/fetch-event.cpp @@ -1,4 +1,5 @@ #include "fetch-event.h" +#include "../../StarlingMonkey/builtins/web/performance.h" #include "../../StarlingMonkey/builtins/web/url.h" #include "../../StarlingMonkey/builtins/web/worker-location.h" #include "../host-api/fastly.h" @@ -172,6 +173,7 @@ bool ClientInfo::tls_cipher_openssl_name_get(JSContext *cx, unsigned argc, JS::V } bool ClientInfo::tls_ja3_md5_get(JSContext *cx, unsigned argc, JS::Value *vp) { + fprintf(stderr, "tlsJA3MD5"); METHOD_HEADER(0); JS::RootedString result(cx, ja3(self)); @@ -410,6 +412,10 @@ JSObject *FetchEvent::prepare_downstream_request(JSContext *cx) { bool FetchEvent::init_request(JSContext *cx, JS::HandleObject self, host_api::HttpReq req, host_api::HttpBody body) { + + builtins::web::performance::Performance::timeOrigin.emplace( + std::chrono::high_resolution_clock::now()); + JS::RootedObject request( cx, &JS::GetReservedSlot(self, static_cast(Slots::Request)).toObject());