Skip to content

Commit 513626f

Browse files
committed
Test e-order in js-rpc-test when embedding complex externals.
This was missing, and an earlier version of ExternalPusher broke e-order but I didn't notice initially.
1 parent 84e3fe7 commit 513626f

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

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+
};

0 commit comments

Comments
 (0)