Skip to content

Commit c2af264

Browse files
committed
Run js-rpc-test and abortsignal-test again with ExternalPusher.
Currently, it appears that we do not run wd-tests with all-autogates. We probably should but that'll have to be a separate change. For now, this arranges just to run js-rpc-test and abortsignal-test a second time with the ExternalPusher autogate on.
1 parent 20f73c2 commit c2af264

File tree

6 files changed

+118
-48
lines changed

6 files changed

+118
-48
lines changed

src/workerd/api/tests/BUILD.bazel

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,15 @@ wd_test(
157157
data = ["abortsignal-test.js"],
158158
)
159159

160+
wd_test(
161+
src = "abortsignal-external-pusher-test.wd-test",
162+
args = ["--experimental"],
163+
data = [
164+
"abortsignal-test.js",
165+
"abortsignal-test.wd-test",
166+
],
167+
)
168+
160169
wd_test(
161170
src = "actor-stub-test.wd-test",
162171
args = ["--experimental"],
@@ -275,6 +284,15 @@ wd_test(
275284
data = ["js-rpc-test.js"],
276285
)
277286

287+
wd_test(
288+
src = "js-rpc-external-pusher-test.wd-test",
289+
args = ["--experimental"],
290+
data = [
291+
"js-rpc-test.js",
292+
"js-rpc-test.wd-test",
293+
],
294+
)
295+
278296
wd_test(
279297
src = "js-rpc-params-ownership-test.wd-test",
280298
args = ["--experimental"],
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Same as abortsignal-test.wd-test, but enabling the autogate
2+
# workerd-autogate-rpc-use-external-pusher.
3+
4+
using Workerd = import "/workerd/workerd.capnp";
5+
6+
const unitTests :Workerd.Config = (
7+
services = import "abortsignal-test.wd-test".services,
8+
v8Flags = [ "--expose-gc" ],
9+
autogates = [ "workerd-autogate-rpc-use-external-pusher" ]
10+
);
Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,21 @@
11
using Workerd = import "/workerd/workerd.capnp";
22

3+
const services :List(Workerd.Service) = [
4+
( name = "abortsignal-test",
5+
worker = (
6+
modules = [
7+
(name = "worker", esModule = embed "abortsignal-test.js")
8+
],
9+
compatibilityDate = "2025-01-01",
10+
compatibilityFlags = ["nodejs_compat", "enable_abortsignal_rpc", "experimental"],
11+
bindings = [
12+
(name = "RpcRemoteEnd", service = (name = "abortsignal-test", entrypoint = "RpcRemoteEnd")),
13+
]
14+
)
15+
),
16+
];
17+
318
const unitTests :Workerd.Config = (
4-
services = [
5-
( name = "abortsignal-test",
6-
worker = (
7-
modules = [
8-
(name = "worker", esModule = embed "abortsignal-test.js")
9-
],
10-
compatibilityDate = "2025-01-01",
11-
compatibilityFlags = ["nodejs_compat", "enable_abortsignal_rpc", "experimental"],
12-
bindings = [
13-
(name = "RpcRemoteEnd", service = (name = "abortsignal-test", entrypoint = "RpcRemoteEnd")),
14-
]
15-
)
16-
),
17-
],
19+
services = .services,
1820
v8Flags = ["--expose-gc"]
1921
);
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Same as js-rpc-test.wd-test, but enabling the autogate workerd-autogate-rpc-use-external-pusher.
2+
3+
using Workerd = import "/workerd/workerd.capnp";
4+
5+
const unitTests :Workerd.Config = (
6+
services = import "js-rpc-test.wd-test".services,
7+
v8Flags = [ "--expose-gc" ],
8+
autogates = [ "workerd-autogate-rpc-use-external-pusher" ]
9+
);

src/workerd/api/tests/js-rpc-test.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2066,3 +2066,32 @@ export let sendServiceStubOverRpc = {
20662066
}
20672067
},
20682068
};
2069+
2070+
// Make sure that calls are delivered in e-order, even in the presence of pushed externals.
2071+
export let eOrderTest = {
2072+
async test(controller, env, ctx) {
2073+
let abortController = new AbortController();
2074+
let abortSignal = abortController.signal;
2075+
2076+
let readableController;
2077+
let readableStream = new ReadableStream({
2078+
start(c) {
2079+
readableController = c;
2080+
},
2081+
});
2082+
2083+
let stub = await env.MyService.makeCounter(0);
2084+
2085+
let promises = [];
2086+
promises.push(stub.increment(1));
2087+
promises.push(stub.increment(1));
2088+
promises.push(stub.increment(1, abortSignal));
2089+
promises.push(stub.increment(1));
2090+
promises.push(stub.increment(1, readableStream));
2091+
promises.push(stub.increment(1));
2092+
2093+
let results = await Promise.all(promises);
2094+
2095+
assert.deepEqual(results, [1, 2, 3, 4, 5, 6]);
2096+
},
2097+
};
Lines changed: 36 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,42 @@
11
using Workerd = import "/workerd/workerd.capnp";
22

3-
const unitTests :Workerd.Config = (
4-
services = [
5-
( name = "js-rpc-test",
6-
worker = (
7-
modules = [
8-
(name = "worker", esModule = embed "js-rpc-test.js")
9-
],
10-
compatibilityDate = "2024-01-01",
11-
compatibilityFlags = [
12-
"nodejs_compat",
13-
"fetcher_no_get_put_delete",
14-
"enable_abortsignal_rpc",
15-
"enhanced_error_serialization",
16-
"enable_ctx_exports",
17-
"experimental"
18-
],
19-
bindings = [
20-
(name = "self", service = (name = "js-rpc-test", entrypoint = "nonClass")),
21-
(name = "MyService", service = (name = "js-rpc-test", entrypoint = "MyService")),
22-
(name = "MyServiceProxy", service = (name = "js-rpc-test", entrypoint = "MyServiceProxy")),
23-
(name = "MyActor", durableObjectNamespace = "MyActor"),
24-
(name = "ActorNoExtends", durableObjectNamespace = "ActorNoExtends"),
25-
(name = "defaultExport", service = "js-rpc-test"),
26-
(name = "twelve", json = "12"),
27-
(name = "GreeterFactory", service = (name = "js-rpc-test", entrypoint = "GreeterFactory")),
28-
],
3+
const services :List(Workerd.Service) = [
4+
( name = "js-rpc-test",
5+
worker = (
6+
modules = [
7+
(name = "worker", esModule = embed "js-rpc-test.js")
8+
],
9+
compatibilityDate = "2024-01-01",
10+
compatibilityFlags = [
11+
"nodejs_compat",
12+
"fetcher_no_get_put_delete",
13+
"enable_abortsignal_rpc",
14+
"enhanced_error_serialization",
15+
"enable_ctx_exports",
16+
"experimental"
17+
],
18+
bindings = [
19+
(name = "self", service = (name = "js-rpc-test", entrypoint = "nonClass")),
20+
(name = "MyService", service = (name = "js-rpc-test", entrypoint = "MyService")),
21+
(name = "MyServiceProxy", service = (name = "js-rpc-test", entrypoint = "MyServiceProxy")),
22+
(name = "MyActor", durableObjectNamespace = "MyActor"),
23+
(name = "ActorNoExtends", durableObjectNamespace = "ActorNoExtends"),
24+
(name = "defaultExport", service = "js-rpc-test"),
25+
(name = "twelve", json = "12"),
26+
(name = "GreeterFactory", service = (name = "js-rpc-test", entrypoint = "GreeterFactory")),
27+
],
28+
29+
durableObjectNamespaces = [
30+
(className = "MyActor", uniqueKey = "foo"),
31+
(className = "ActorNoExtends", uniqueKey = "bar"),
32+
],
2933

30-
durableObjectNamespaces = [
31-
(className = "MyActor", uniqueKey = "foo"),
32-
(className = "ActorNoExtends", uniqueKey = "bar"),
33-
],
34+
durableObjectStorage = (inMemory = void),
35+
)
36+
),
37+
];
3438

35-
durableObjectStorage = (inMemory = void),
36-
)
37-
),
38-
],
39+
const unitTests :Workerd.Config = (
40+
services = .services,
3941
v8Flags = [ "--expose-gc" ],
4042
);

0 commit comments

Comments
 (0)