Skip to content

Commit e1ad40e

Browse files
guybedfordelliottt
andauthored
StarlingMonkey port of kv-store, client info (#779)
Co-authored-by: Trevor Elliott <[email protected]>
1 parent 770f305 commit e1ad40e

22 files changed

+1371
-131
lines changed

integration-tests/js-compute/fixtures/app/fastly.toml.in

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,10 @@ service_id = ""
9393
key = "placeholder"
9494
data = 'placholder'
9595

96+
[[local_server.kv_stores.example-test-kv-store-sm]]
97+
key = "placeholder"
98+
data = 'placholder'
99+
96100
[local_server.secret_stores]
97101
[[local_server.secret_stores.example-test-secret-store]]
98102
key = "first"

integration-tests/js-compute/fixtures/app/src/geoip.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
/* eslint-env serviceworker */
22
/* global fastly */
33
import { pass, assert, assertThrows } from "./assertions.js";
4-
import * as geolocation from 'fastly:geolocation';
4+
import { getGeolocationForIpAddress } from 'fastly:geolocation';
55
import { isRunningLocally, routes } from "./routes.js";
66

7-
const { getGeolocationForIpAddress } = geolocation;
8-
97
routes.set("/fastly/getgeolocationforipaddress/interface", async function () {
108
let actual = Reflect.getOwnPropertyDescriptor(fastly, 'getGeolocationForIpAddress')
119
let expected = {

integration-tests/js-compute/fixtures/app/src/kv-store.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ const starlingmonkey = sdkVersion.includes('starlingmonkey');
106106
routes.set("/kv-store/put/called-as-constructor", async () => {
107107
let error = assertThrows(() => {
108108
new KVStore.prototype.put('1', '1')
109-
}, TypeError, `KVStore.prototype.put is not a constructor`)
109+
}, TypeError)
110110
if (error) { return error }
111111
return pass()
112112
});
@@ -504,7 +504,7 @@ const starlingmonkey = sdkVersion.includes('starlingmonkey');
504504
routes.set("/kv-store/delete/called-as-constructor", async () => {
505505
let error = assertThrows(() => {
506506
new KVStore.prototype.delete('1')
507-
}, TypeError, `KVStore.prototype.delete is not a constructor`)
507+
}, TypeError)
508508
if (error) { return error }
509509
return pass()
510510
});
@@ -698,7 +698,7 @@ const starlingmonkey = sdkVersion.includes('starlingmonkey');
698698
routes.set("/kv-store/get/called-as-constructor", async () => {
699699
let error = assertThrows(() => {
700700
new KVStore.prototype.get('1')
701-
}, TypeError, `KVStore.prototype.get is not a constructor`)
701+
}, TypeError)
702702
if (error) { return error }
703703
return pass()
704704
});

integration-tests/js-compute/fixtures/app/tests-starlingmonkey.json

Lines changed: 108 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,11 @@
9292
"GET /simple-cache/getOrSet/executes-the-set-method-when-key-not-in-cache",
9393
"GET /simple-cache/getOrSet/does-not-execute-the-set-method-when-key-is-in-cache",
9494
"GET /simple-cache/getOrSet/does-not-freeze-when-called-after-a-get",
95+
"GET /client/tlsJA3MD5",
96+
"GET /client/tlsClientHello",
97+
"GET /client/tlsClientCertificate",
98+
"GET /client/tlsCipherOpensslName",
99+
"GET /client/tlsProtocol",
95100
"GET /console",
96101
"GET /crypto",
97102
"GET /crypto.subtle",
@@ -255,11 +260,111 @@
255260
"GET /backend/health/happy-path-backend-exists",
256261
"GET /backend/health/happy-path-backend-does-not-exist",
257262
"GET /env",
263+
"GET /fastly/now",
258264
"GET /fastly/version",
265+
"GET /fastly/getgeolocationforipaddress/interface",
266+
"GET /fastly/getgeolocationforipaddress/called-as-constructor",
267+
"GET /fastly/getgeolocationforipaddress/parameter-calls-7.1.17-ToString",
268+
"GET /fastly/getgeolocationforipaddress/parameter-not-supplied",
269+
"GET /fastly/getgeolocationforipaddress/parameter-empty-string",
270+
"GET /fastly/getgeolocationforipaddress/parameter-ipv4-string",
271+
"GET /fastly/getgeolocationforipaddress/parameter-compressed-ipv6-string",
272+
"GET /fastly/getgeolocationforipaddress/parameter-shortened-ipv6-string",
273+
"GET /fastly/getgeolocationforipaddress/parameter-expanded-ipv6-string",
274+
"GET /fastly/getgeolocationforipaddress/called-unbound",
275+
"GET /fastly:geolocation",
276+
"GET /kv-store/exposed-as-global",
277+
"GET /kv-store/interface",
278+
"GET /kv-store/constructor/called-as-regular-function",
279+
"GET /kv-store/constructor/parameter-calls-7.1.17-ToString",
280+
"GET /kv-store/constructor/empty-parameter",
281+
"GET /kv-store/constructor/found-store",
282+
"GET /kv-store/constructor/missing-store",
283+
"GET /kv-store/constructor/invalid-name",
284+
"GET /kv-store/put/called-as-constructor",
285+
"GET /kv-store/put/called-unbound",
286+
"GET /kv-store/put/key-parameter-calls-7.1.17-ToString",
287+
"GET /kv-store/put/key-parameter-not-supplied",
288+
"GET /kv-store/put/key-parameter-empty-string",
289+
"GET /kv-store/put/key-parameter-1024-character-string",
290+
"GET /kv-store/put/key-parameter-1025-character-string",
291+
"GET /kv-store/put/key-parameter-containing-newline",
292+
"GET /kv-store/put/key-parameter-containing-carriage-return",
293+
"GET /kv-store/put/key-parameter-starting-with-well-known-acme-challenge",
294+
"GET /kv-store/put/key-parameter-single-dot",
295+
"GET /kv-store/put/key-parameter-double-dot",
296+
"GET /kv-store/put/key-parameter-containing-special-characters",
297+
"GET /kv-store/put/value-parameter-as-undefined",
298+
"GET /kv-store/put/value-parameter-not-supplied",
299+
"GET /kv-store/put/value-parameter-readablestream-empty",
300+
"GET /kv-store/put/value-parameter-readablestream-under-30mb",
301+
"GET /kv-store/put/value-parameter-readablestream-over-30mb",
302+
"GET /kv-store/put/value-parameter-readablestream-locked",
303+
"GET /kv-store/put/value-parameter-URLSearchParams",
304+
"GET /kv-store/put/value-parameter-strings",
305+
"GET /kv-store/put/value-parameter-string-over-30mb",
306+
"GET /kv-store/put/value-parameter-calls-7.1.17-ToString",
307+
"GET /kv-store/put/value-parameter-buffer",
308+
"GET /kv-store/put/value-parameter-arraybuffer",
309+
"GET /kv-store/put/value-parameter-typed-arrays",
310+
"GET /kv-store/put/value-parameter-dataview",
311+
"POST /kv-store/put/request-body",
312+
"GET /kv-store/delete/called-as-constructor",
313+
"GET /kv-store/delete/called-unbound",
314+
"GET /kv-store/delete/key-parameter-calls-7.1.17-ToString",
315+
"GET /kv-store/delete/key-parameter-not-supplied",
316+
"GET /kv-store/delete/key-parameter-empty-string",
317+
"GET /kv-store/delete/key-parameter-1024-character-string",
318+
"GET /kv-store/delete/key-parameter-1025-character-string",
319+
"GET /kv-store/delete/key-parameter-containing-newline",
320+
"GET /kv-store/delete/key-parameter-containing-carriage-return",
321+
"GET /kv-store/delete/key-parameter-starting-with-well-known-acme-challenge",
322+
"GET /kv-store/delete/key-parameter-single-dot",
323+
"GET /kv-store/delete/key-parameter-double-dot",
324+
"GET /kv-store/delete/key-parameter-containing-special-characters",
325+
"GET /kv-store/delete/key-does-not-exist-returns-undefined",
326+
"GET /kv-store/delete/key-exists",
327+
"GET /kv-store/delete/delete-key-twice",
328+
"GET /kv-store/delete/multiple-deletes-at-once",
329+
"GET /kv-store/get/called-as-constructor",
330+
"GET /kv-store/get/called-unbound",
331+
"GET /kv-store/get/key-parameter-calls-7.1.17-ToString",
332+
"GET /kv-store/get/key-parameter-not-supplied",
333+
"GET /kv-store/get/key-parameter-empty-string",
334+
"GET /kv-store/get/key-parameter-1024-character-string",
335+
"GET /kv-store/get/key-parameter-1025-character-string",
336+
"GET /kv-store/get/key-parameter-containing-newline",
337+
"GET /kv-store/get/key-parameter-containing-carriage-return",
338+
"GET /kv-store/get/key-parameter-starting-with-well-known-acme-challenge",
339+
"GET /kv-store/get/key-parameter-single-dot",
340+
"GET /kv-store/get/key-parameter-double-dot",
341+
"GET /kv-store/get/key-parameter-containing-special-characters",
342+
"GET /kv-store/get/key-does-not-exist-returns-null",
343+
"GET /kv-store/get/key-exists",
344+
"GET /kv-store/get/multiple-lookups-at-once",
345+
"GET /kv-store-entry/interface",
346+
"GET /kv-store-entry/text/valid",
347+
"GET /kv-store-entry/json/valid",
348+
"GET /kv-store-entry/json/invalid",
349+
"GET /kv-store-entry/arrayBuffer/valid",
350+
"GET /kv-store-entry/bodyUsed",
351+
"GET /missing-backend",
259352
"GET /multiple-set-cookie/response-init",
260353
"GET /multiple-set-cookie/response-direct",
354+
"GET /multiple-set-cookie/downstream",
355+
"GET /Performance/interface",
356+
"GET /request/constructor/fastly/decompressGzip/true",
357+
"GET /request/constructor/fastly/decompressGzip/false",
358+
"GET /fetch/requestinit/fastly/decompressGzip/true",
359+
"GET /fetch/requestinit/fastly/decompressGzip/false",
360+
"GET /request/setCacheKey/called-as-constructor",
361+
"GET /request/setCacheKey/called-unbound",
362+
"GET /request/setCacheKey/key-parameter-calls-7.1.17-ToString",
363+
"GET /request/setCacheKey/key-parameter-not-supplied",
364+
"GET /request/setCacheKey/key-valid",
261365
"GET /request/clone/called-as-constructor",
262366
"GET /request/clone/called-unbound",
367+
"GET /request/clone/valid",
263368
"GET /request/clone/invalid",
264369
"GET /response/text/guest-backed-stream",
265370
"GET /response/json/guest-backed-stream",
@@ -311,6 +416,7 @@
311416
"GET /urlsearchparams/sort",
312417
"GET /random",
313418
"GET /error",
419+
"GET /tee/error",
314420
"GET /override-content-length/request/init/object-literal/true",
315421
"GET /override-content-length/request/init/object-literal/false",
316422
"GET /override-content-length/fetch/init/object-literal/true",
@@ -320,5 +426,6 @@
320426
"GET /override-content-length/response/init/response-instance/true",
321427
"GET /override-content-length/response/init/response-instance/false",
322428
"GET /override-content-length/response/method/false",
323-
"GET /override-content-length/response/method/true"
429+
"GET /override-content-length/response/method/true",
430+
"GET /headers/non-ascii-latin1-field-value"
324431
]

integration-tests/js-compute/test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,8 @@ if (starlingmonkey) {
122122
\`\`\`mermaid
123123
pie showData
124124
title 🐦🐵 Test Progress 🚀🚀
125-
"Remaining Tests" : ${testCnt - starlingTestCnt}
126125
"StarlingMonkey Tests" : ${starlingTestCnt}
126+
"Remaining Tests" : ${testCnt - starlingTestCnt}
127127
\`\`\``, true).write();
128128
}
129129
tests = Object.fromEntries(Object.entries(tests).filter(([key]) => testsStarlingMonkey.includes(key)));

runtime/StarlingMonkey

runtime/fastly/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@ add_builtin(fastly::runtime SRC handler.cpp host-api/component/fastly_world_adap
66
add_builtin(fastly::cache_simple SRC builtins/cache-simple.cpp DEPENDENCIES OpenSSL)
77
add_builtin(fastly::fastly SRC builtins/fastly.cpp)
88
add_builtin(fastly::backend SRC builtins/backend.cpp)
9+
add_builtin(fastly::kv_store SRC builtins/kv-store.cpp)
910
add_builtin(fastly::fetch SRC builtins/fetch/fetch.cpp builtins/fetch/request-response.cpp builtins/fetch/headers.cpp)
1011
add_builtin(fastly::cache_override SRC builtins/cache-override.cpp)
11-
add_builtin(fastly::fetch_event SRC builtins/fetch-event.cpp)
12+
add_builtin(fastly::fetch_event SRC builtins/fetch-event.cpp DEPENDENCIES OpenSSL)
1213

1314
project(FastlyJS)

0 commit comments

Comments
 (0)