Skip to content

Commit 7a003cb

Browse files
jmorrellclaude
andcommitted
Use distinct service types per side in simultaneous call tests
Instead of both sides implementing the same service, A provides AddService and B provides MultiplyService, making it clear which side is calling which. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 74852bc commit 7a003cb

1 file changed

Lines changed: 27 additions & 27 deletions

File tree

src/__tests__/session.test.ts

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -166,8 +166,11 @@ describe("Acceptor calls method on initiator", () => {
166166
});
167167

168168
describe("Simultaneous calls without ID collision", () => {
169-
type CommonService = {
169+
type AddService = {
170170
add(a: number, b: number): Promise<number>;
171+
};
172+
173+
type MultiplyService = {
171174
multiply(a: number, b: number): Promise<number>;
172175
};
173176

@@ -178,31 +181,30 @@ describe("Simultaneous calls without ID collision", () => {
178181
const sendSpyA = vi.spyOn(transportA, "send");
179182
const sendSpyB = vi.spyOn(transportB, "send");
180183

181-
// Common service with methods both sides can call
182-
const service: CommonService = {
183-
add(a: number, b: number): Promise<number> {
184-
return Promise.resolve(a + b);
185-
},
186-
multiply(a: number, b: number): Promise<number> {
187-
return Promise.resolve(a * b);
188-
},
184+
const addService: AddService = {
185+
add: (a, b) => Promise.resolve(a + b),
189186
};
190187

191-
const sessionA = new RpcSession<CommonService, CommonService>(transportA, service, { role: "initiator" });
192-
const sessionB = new RpcSession<CommonService, CommonService>(transportB, service, { role: "acceptor" });
188+
const multiplyService: MultiplyService = {
189+
multiply: (a, b) => Promise.resolve(a * b),
190+
};
191+
192+
// A provides add, calls B's multiply. B provides multiply, calls A's add.
193+
const sessionA = new RpcSession<MultiplyService, AddService>(transportA, addService, { role: "initiator" });
194+
const sessionB = new RpcSession<AddService, MultiplyService>(transportB, multiplyService, { role: "acceptor" });
193195

194196
// Initiator calls: should generate wire-level IDs 1, 2, 3...
195197
const initiatorCalls = [
196-
sessionA.remote.add(1, 2),
197-
sessionA.remote.add(3, 4),
198-
sessionA.remote.add(5, 6),
198+
sessionA.remote.multiply(1, 2),
199+
sessionA.remote.multiply(3, 4),
200+
sessionA.remote.multiply(5, 6),
199201
];
200202

201203
// Acceptor calls: should generate wire-level IDs -1, -2, -3...
202204
const acceptorCalls = [
203-
sessionB.remote.multiply(2, 3),
204-
sessionB.remote.multiply(4, 5),
205-
sessionB.remote.multiply(6, 7),
205+
sessionB.remote.add(2, 3),
206+
sessionB.remote.add(4, 5),
207+
sessionB.remote.add(6, 7),
206208
];
207209

208210
await Promise.all([...initiatorCalls, ...acceptorCalls]);
@@ -252,24 +254,22 @@ describe("Simultaneous calls without ID collision", () => {
252254
const sendSpyA = vi.spyOn(transportA, "send");
253255
const sendSpyB = vi.spyOn(transportB, "send");
254256

255-
type EchoService = {
256-
echo(value: number): Promise<number>;
257+
const addService: AddService = {
258+
add: (a, b) => Promise.resolve(a + b),
257259
};
258260

259-
const service: EchoService = {
260-
echo(value: number): Promise<number> {
261-
return Promise.resolve(value);
262-
},
261+
const multiplyService: MultiplyService = {
262+
multiply: (a, b) => Promise.resolve(a * b),
263263
};
264264

265-
const sessionA = new RpcSession<EchoService, EchoService>(transportA, service, { role: "initiator" });
266-
const sessionB = new RpcSession<EchoService, EchoService>(transportB, service, { role: "acceptor" });
265+
const sessionA = new RpcSession<MultiplyService, AddService>(transportA, addService, { role: "initiator" });
266+
const sessionB = new RpcSession<AddService, MultiplyService>(transportB, multiplyService, { role: "acceptor" });
267267

268268
// Both sides make 5 calls each
269269
const calls = [];
270270
for (let i = 0; i < 5; i++) {
271-
calls.push(sessionA.remote.echo(1000 + i));
272-
calls.push(sessionB.remote.echo(2000 + i));
271+
calls.push(sessionA.remote.multiply(1000 + i, 1));
272+
calls.push(sessionB.remote.add(2000 + i, 0));
273273
}
274274

275275
await Promise.all(calls);

0 commit comments

Comments
 (0)