@moltzap/protocol 2026.503.3 → 2026.503.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/test-fixtures/seed-data.d.ts.map +1 -1
- package/dist/test-fixtures/seed-data.js +52 -21
- package/dist/test-fixtures/seed-data.js.map +1 -1
- package/dist/testing/agent-registration.d.ts.map +1 -1
- package/dist/testing/agent-registration.js +4 -1
- package/dist/testing/agent-registration.js.map +1 -1
- package/dist/testing/arbitraries/frames.d.ts.map +1 -1
- package/dist/testing/arbitraries/frames.js +2 -1
- package/dist/testing/arbitraries/frames.js.map +1 -1
- package/dist/testing/arbitraries/from-typebox.d.ts.map +1 -1
- package/dist/testing/arbitraries/from-typebox.js +19 -10
- package/dist/testing/arbitraries/from-typebox.js.map +1 -1
- package/dist/testing/arbitraries/rpc.d.ts.map +1 -1
- package/dist/testing/arbitraries/rpc.js +12 -3
- package/dist/testing/arbitraries/rpc.js.map +1 -1
- package/dist/testing/captures.d.ts.map +1 -1
- package/dist/testing/captures.js +4 -3
- package/dist/testing/captures.js.map +1 -1
- package/dist/testing/codec.d.ts.map +1 -1
- package/dist/testing/codec.js +13 -5
- package/dist/testing/codec.js.map +1 -1
- package/dist/testing/conformance/__divergence_proofs__/executable-proof-helpers.d.ts.map +1 -1
- package/dist/testing/conformance/__divergence_proofs__/executable-proof-helpers.js +7 -4
- package/dist/testing/conformance/__divergence_proofs__/executable-proof-helpers.js.map +1 -1
- package/dist/testing/conformance/_helpers.d.ts +6 -1
- package/dist/testing/conformance/_helpers.d.ts.map +1 -1
- package/dist/testing/conformance/_helpers.js +24 -0
- package/dist/testing/conformance/_helpers.js.map +1 -1
- package/dist/testing/conformance/adversity.d.ts.map +1 -1
- package/dist/testing/conformance/adversity.js +76 -66
- package/dist/testing/conformance/adversity.js.map +1 -1
- package/dist/testing/conformance/boundary.d.ts.map +1 -1
- package/dist/testing/conformance/boundary.js +49 -39
- package/dist/testing/conformance/boundary.js.map +1 -1
- package/dist/testing/conformance/client/adversity.d.ts.map +1 -1
- package/dist/testing/conformance/client/adversity.js +20 -15
- package/dist/testing/conformance/client/adversity.js.map +1 -1
- package/dist/testing/conformance/client/boundary.d.ts.map +1 -1
- package/dist/testing/conformance/client/boundary.js +7 -5
- package/dist/testing/conformance/client/boundary.js.map +1 -1
- package/dist/testing/conformance/client/delivery.d.ts.map +1 -1
- package/dist/testing/conformance/client/delivery.js +26 -20
- package/dist/testing/conformance/client/delivery.js.map +1 -1
- package/dist/testing/conformance/client/rpc-semantics.d.ts.map +1 -1
- package/dist/testing/conformance/client/rpc-semantics.js +18 -15
- package/dist/testing/conformance/client/rpc-semantics.js.map +1 -1
- package/dist/testing/conformance/client/runner.d.ts +13 -8
- package/dist/testing/conformance/client/runner.d.ts.map +1 -1
- package/dist/testing/conformance/client/runner.js +17 -24
- package/dist/testing/conformance/client/runner.js.map +1 -1
- package/dist/testing/conformance/client/schema-conformance.d.ts.map +1 -1
- package/dist/testing/conformance/client/schema-conformance.js +11 -9
- package/dist/testing/conformance/client/schema-conformance.js.map +1 -1
- package/dist/testing/conformance/client/suite.d.ts.map +1 -1
- package/dist/testing/conformance/client/suite.js +2 -1
- package/dist/testing/conformance/client/suite.js.map +1 -1
- package/dist/testing/conformance/delivery.d.ts.map +1 -1
- package/dist/testing/conformance/delivery.js +70 -88
- package/dist/testing/conformance/delivery.js.map +1 -1
- package/dist/testing/conformance/env.d.ts +9 -0
- package/dist/testing/conformance/env.d.ts.map +1 -1
- package/dist/testing/conformance/env.js +16 -3
- package/dist/testing/conformance/env.js.map +1 -1
- package/dist/testing/conformance/presence.d.ts.map +1 -1
- package/dist/testing/conformance/presence.js +4 -2
- package/dist/testing/conformance/presence.js.map +1 -1
- package/dist/testing/conformance/registry.d.ts +1 -1
- package/dist/testing/conformance/registry.d.ts.map +1 -1
- package/dist/testing/conformance/registry.js +1 -1
- package/dist/testing/conformance/registry.js.map +1 -1
- package/dist/testing/conformance/rpc-semantics.d.ts.map +1 -1
- package/dist/testing/conformance/rpc-semantics.js +102 -63
- package/dist/testing/conformance/rpc-semantics.js.map +1 -1
- package/dist/testing/conformance/runner.d.ts +2 -2
- package/dist/testing/conformance/runner.d.ts.map +1 -1
- package/dist/testing/conformance/runner.js +5 -10
- package/dist/testing/conformance/runner.js.map +1 -1
- package/dist/testing/conformance/schema-conformance.d.ts.map +1 -1
- package/dist/testing/conformance/schema-conformance.js +113 -67
- package/dist/testing/conformance/schema-conformance.js.map +1 -1
- package/dist/testing/conformance/suite.d.ts +1 -1
- package/dist/testing/conformance/suite.d.ts.map +1 -1
- package/dist/testing/conformance/suite.js +12 -9
- package/dist/testing/conformance/suite.js.map +1 -1
- package/dist/testing/models/dispatch.d.ts.map +1 -1
- package/dist/testing/models/dispatch.js +58 -50
- package/dist/testing/models/dispatch.js.map +1 -1
- package/dist/testing/models/state.d.ts +3 -3
- package/dist/testing/models/state.d.ts.map +1 -1
- package/dist/testing/models/state.js +14 -1
- package/dist/testing/models/state.js.map +1 -1
- package/dist/testing/test-client.d.ts +22 -3
- package/dist/testing/test-client.d.ts.map +1 -1
- package/dist/testing/test-client.js +51 -31
- package/dist/testing/test-client.js.map +1 -1
- package/dist/testing/test-server.d.ts.map +1 -1
- package/dist/testing/test-server.js +7 -11
- package/dist/testing/test-server.js.map +1 -1
- package/dist/testing/toxics/client.d.ts.map +1 -1
- package/dist/testing/toxics/client.js +9 -3
- package/dist/testing/toxics/client.js.map +1 -1
- package/dist/testing/toxics/profile.d.ts.map +1 -1
- package/dist/testing/toxics/profile.js +4 -1
- package/dist/testing/toxics/profile.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
|
@@ -8,13 +8,14 @@
|
|
|
8
8
|
* — is registered as `app-disconnect-fail-policy` below.
|
|
9
9
|
*/
|
|
10
10
|
import * as fc from "fast-check";
|
|
11
|
-
import { Duration, Effect, Exit, Scope } from "effect";
|
|
11
|
+
import { Data, Duration, Effect, Either, Exit, Scope } from "effect";
|
|
12
12
|
import { allRpcMethods, arbitraryCallFor } from "../arbitraries/rpc.js";
|
|
13
13
|
import { makeTestClient } from "../test-client.js";
|
|
14
14
|
import { registerTestAgent } from "../agent-registration.js";
|
|
15
|
-
import { Data } from "effect";
|
|
16
15
|
import { PropertyDeferred, PropertyInvariantViolation, PropertyUnavailable, registerProperty, } from "./registry.js";
|
|
17
|
-
import { sendUntypedRpc } from "./_helpers.js";
|
|
16
|
+
import { leftOrNull, sendUntypedRpc } from "./_helpers.js";
|
|
17
|
+
import { AgentsList } from "../../schema/methods/auth.js";
|
|
18
|
+
import { AppsAuthorizeDispatch, AppsCreate, AppsOnBeforeDispatch, AppsOnBeforeMessageDelivery, AppsRegister, } from "../../schema/methods/apps.js";
|
|
18
19
|
/**
|
|
19
20
|
* Tagged sentinel for "the dispatch RPC did not reply within the
|
|
20
21
|
* property's bound." Distinct from any wire-level RpcResponseError so
|
|
@@ -26,6 +27,10 @@ class DispatchHungError extends Data.TaggedError("ConformanceDispatchHungError")
|
|
|
26
27
|
const CATEGORY = "boundary";
|
|
27
28
|
const DEFAULT_TIMEOUT_MS = 3000;
|
|
28
29
|
const DEFAULT_CAPTURE_CAPACITY = 32;
|
|
30
|
+
const SCHEMA_EXHAUSTIVE_FUZZ_PROPERTY = "schema-exhaustive-fuzz";
|
|
31
|
+
const APP_DISCONNECT_FAIL_POLICY_PROPERTY = "app-disconnect-fail-policy";
|
|
32
|
+
const FUZZ_CAPTURE_CAPACITY_PER_METHOD = 4;
|
|
33
|
+
const DATE_ID_RADIX = 36;
|
|
29
34
|
/**
|
|
30
35
|
* Schema-exhaustive fuzz — for every `RpcMethodName`, draws arbitrary
|
|
31
36
|
* valid params, sends through a real TestClient, and asserts the server
|
|
@@ -38,13 +43,13 @@ const DEFAULT_CAPTURE_CAPACITY = 32;
|
|
|
38
43
|
* so artifacts are actionable.
|
|
39
44
|
*/
|
|
40
45
|
export function registerSchemaExhaustiveFuzz(ctx) {
|
|
41
|
-
registerProperty(ctx, CATEGORY,
|
|
46
|
+
registerProperty(ctx, CATEGORY, SCHEMA_EXHAUSTIVE_FUZZ_PROPERTY, "every RpcMethodName drawn → server survives & stays responsive", Effect.scoped(Effect.gen(function* () {
|
|
42
47
|
const agent = yield* registerTestAgent({
|
|
43
48
|
baseUrl: ctx.realServer.baseUrl,
|
|
44
49
|
name: "fuzz",
|
|
45
50
|
}).pipe(Effect.mapError((e) => new PropertyInvariantViolation({
|
|
46
51
|
category: CATEGORY,
|
|
47
|
-
name:
|
|
52
|
+
name: SCHEMA_EXHAUSTIVE_FUZZ_PROPERTY,
|
|
48
53
|
reason: `register agent: ${e.body}`,
|
|
49
54
|
})));
|
|
50
55
|
const client = yield* makeTestClient({
|
|
@@ -52,10 +57,10 @@ export function registerSchemaExhaustiveFuzz(ctx) {
|
|
|
52
57
|
agentKey: agent.apiKey,
|
|
53
58
|
agentId: agent.agentId,
|
|
54
59
|
defaultTimeoutMs: DEFAULT_TIMEOUT_MS,
|
|
55
|
-
captureCapacity: allRpcMethods.length *
|
|
60
|
+
captureCapacity: allRpcMethods.length * FUZZ_CAPTURE_CAPACITY_PER_METHOD,
|
|
56
61
|
}).pipe(Effect.mapError((e) => new PropertyInvariantViolation({
|
|
57
62
|
category: CATEGORY,
|
|
58
|
-
name:
|
|
63
|
+
name: SCHEMA_EXHAUSTIVE_FUZZ_PROPERTY,
|
|
59
64
|
reason: `client acquire: ${String(e)}`,
|
|
60
65
|
})));
|
|
61
66
|
const samplesPerMethod = ctx.opts.numRuns ?? 1;
|
|
@@ -68,7 +73,7 @@ export function registerSchemaExhaustiveFuzz(ctx) {
|
|
|
68
73
|
if (samples.length === 0) {
|
|
69
74
|
return yield* Effect.fail(new PropertyInvariantViolation({
|
|
70
75
|
category: CATEGORY,
|
|
71
|
-
name:
|
|
76
|
+
name: SCHEMA_EXHAUSTIVE_FUZZ_PROPERTY,
|
|
72
77
|
reason: `failed to sample call for ${method}`,
|
|
73
78
|
}));
|
|
74
79
|
}
|
|
@@ -82,13 +87,14 @@ export function registerSchemaExhaustiveFuzz(ctx) {
|
|
|
82
87
|
// exactly what the property must reject. Require the post
|
|
83
88
|
// call to SUCCEED; timeouts are failures here.
|
|
84
89
|
const post = yield* client
|
|
85
|
-
.sendRpc(
|
|
90
|
+
.sendRpc(AgentsList.name, {})
|
|
86
91
|
.pipe(Effect.either);
|
|
87
|
-
|
|
92
|
+
const postFailure = leftOrNull(post);
|
|
93
|
+
if (postFailure !== null) {
|
|
88
94
|
return yield* Effect.fail(new PropertyInvariantViolation({
|
|
89
95
|
category: CATEGORY,
|
|
90
|
-
name:
|
|
91
|
-
reason: `server became unresponsive after ${method} (post-call ${
|
|
96
|
+
name: SCHEMA_EXHAUSTIVE_FUZZ_PROPERTY,
|
|
97
|
+
reason: `server became unresponsive after ${method} (post-call ${postFailure._tag})`,
|
|
92
98
|
}));
|
|
93
99
|
}
|
|
94
100
|
}
|
|
@@ -129,7 +135,7 @@ export function registerSchemaExhaustiveFuzz(ctx) {
|
|
|
129
135
|
* runnability is gated on the consumer's fixture capabilities.
|
|
130
136
|
*/
|
|
131
137
|
export function registerAppDisconnectFailPolicy(ctx) {
|
|
132
|
-
registerProperty(ctx, CATEGORY,
|
|
138
|
+
registerProperty(ctx, CATEGORY, APP_DISCONNECT_FAIL_POLICY_PROPERTY, "app WS sever ⇒ pending s2c Deferreds fail-closed; no leaks", Effect.scoped(Effect.gen(function* () {
|
|
133
139
|
// Step 1: register the app-side agent (will host admission
|
|
134
140
|
// handlers via apps/register).
|
|
135
141
|
const appAgent = yield* registerTestAgent({
|
|
@@ -137,7 +143,7 @@ export function registerAppDisconnectFailPolicy(ctx) {
|
|
|
137
143
|
name: "adfp-app",
|
|
138
144
|
}).pipe(Effect.mapError((e) => new PropertyUnavailable({
|
|
139
145
|
category: CATEGORY,
|
|
140
|
-
name:
|
|
146
|
+
name: APP_DISCONNECT_FAIL_POLICY_PROPERTY,
|
|
141
147
|
reason: `app agent register: ${e.body}`,
|
|
142
148
|
})));
|
|
143
149
|
// Step 2: open an app TestClient inside an INNER scope so the
|
|
@@ -152,19 +158,19 @@ export function registerAppDisconnectFailPolicy(ctx) {
|
|
|
152
158
|
captureCapacity: DEFAULT_CAPTURE_CAPACITY,
|
|
153
159
|
}), appScope).pipe(Effect.mapError((e) => new PropertyUnavailable({
|
|
154
160
|
category: CATEGORY,
|
|
155
|
-
name:
|
|
161
|
+
name: APP_DISCONNECT_FAIL_POLICY_PROPERTY,
|
|
156
162
|
reason: `app client acquire: ${String(e)}`,
|
|
157
163
|
})));
|
|
158
164
|
// Step 3: register a manifest. apps/register is owner-agnostic
|
|
159
165
|
// (see apps.handlers.ts:25-41) — succeeds even when the agent's
|
|
160
166
|
// owner_user_id is null.
|
|
161
|
-
const appId = `adfp-${Date.now().toString(
|
|
167
|
+
const appId = `adfp-${Date.now().toString(DATE_ID_RADIX)}`;
|
|
162
168
|
// `apps/register` is server-handled but absent from the typed
|
|
163
169
|
// `rpcMethods` registry today (see `rpc-registry.ts:60-118`);
|
|
164
170
|
// app-sdk and `34-rpc-additions.integration.test.ts:48` use the
|
|
165
171
|
// same untyped-cast path. Adding it to the registry is an
|
|
166
172
|
// accretive change outside this sub-issue's scope.
|
|
167
|
-
const registerOutcome = yield* sendUntypedRpc(appClient,
|
|
173
|
+
const registerOutcome = yield* sendUntypedRpc(appClient, AppsRegister.name, {
|
|
168
174
|
manifest: {
|
|
169
175
|
appId,
|
|
170
176
|
name: `Disconnect-fail app ${appId}`,
|
|
@@ -178,19 +184,20 @@ export function registerAppDisconnectFailPolicy(ctx) {
|
|
|
178
184
|
},
|
|
179
185
|
},
|
|
180
186
|
}).pipe(Effect.either);
|
|
181
|
-
|
|
187
|
+
const registerFailure = leftOrNull(registerOutcome);
|
|
188
|
+
if (registerFailure !== null) {
|
|
182
189
|
yield* Scope.close(appScope, Exit.void);
|
|
183
190
|
return yield* Effect.fail(new PropertyUnavailable({
|
|
184
191
|
category: CATEGORY,
|
|
185
|
-
name:
|
|
186
|
-
reason: `apps/register failed: ${
|
|
192
|
+
name: APP_DISCONNECT_FAIL_POLICY_PROPERTY,
|
|
193
|
+
reason: `apps/register failed: ${registerFailure._tag}`,
|
|
187
194
|
}));
|
|
188
195
|
}
|
|
189
196
|
// Step 4: register an admission handler that NEVER replies, so
|
|
190
197
|
// the server-side Deferred is parked. The sever in step 6 is the
|
|
191
198
|
// event the property exercises.
|
|
192
|
-
yield* appClient.handleServerRpc(
|
|
193
|
-
yield* appClient.handleServerRpc(
|
|
199
|
+
yield* appClient.handleServerRpc(AppsOnBeforeDispatch.name, () => Effect.never);
|
|
200
|
+
yield* appClient.handleServerRpc(AppsOnBeforeMessageDelivery.name, () => Effect.never);
|
|
194
201
|
// Step 5: register a sender agent and attempt to create an app
|
|
195
202
|
// session that this agent initiates. apps/create requires the
|
|
196
203
|
// initiator's owner_user_id to be non-null (app-host.ts:629);
|
|
@@ -202,7 +209,7 @@ export function registerAppDisconnectFailPolicy(ctx) {
|
|
|
202
209
|
name: "adfp-sender",
|
|
203
210
|
}).pipe(Effect.mapError((e) => new PropertyUnavailable({
|
|
204
211
|
category: CATEGORY,
|
|
205
|
-
name:
|
|
212
|
+
name: APP_DISCONNECT_FAIL_POLICY_PROPERTY,
|
|
206
213
|
reason: `sender register: ${e.body}`,
|
|
207
214
|
})));
|
|
208
215
|
const senderClient = yield* makeTestClient({
|
|
@@ -213,20 +220,20 @@ export function registerAppDisconnectFailPolicy(ctx) {
|
|
|
213
220
|
captureCapacity: DEFAULT_CAPTURE_CAPACITY,
|
|
214
221
|
}).pipe(Effect.mapError((e) => new PropertyUnavailable({
|
|
215
222
|
category: CATEGORY,
|
|
216
|
-
name:
|
|
223
|
+
name: APP_DISCONNECT_FAIL_POLICY_PROPERTY,
|
|
217
224
|
reason: `sender client acquire: ${String(e)}`,
|
|
218
225
|
})));
|
|
219
226
|
const sessionOutcome = yield* senderClient
|
|
220
|
-
.sendRpc(
|
|
227
|
+
.sendRpc(AppsCreate.name, { appId, invitedAgentIds: [] })
|
|
221
228
|
.pipe(Effect.either);
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
return yield* Effect.fail(new PropertyUnavailable({
|
|
229
|
+
const sessionResult = yield* Either.match(sessionOutcome, {
|
|
230
|
+
onLeft: (error) => Scope.close(appScope, Exit.void).pipe(Effect.zipRight(Effect.fail(new PropertyUnavailable({
|
|
225
231
|
category: CATEGORY,
|
|
226
|
-
name:
|
|
227
|
-
reason: `apps/create failed (likely owner_user_id null on sender; B.9 covers via DB seeding): ${
|
|
228
|
-
}))
|
|
229
|
-
|
|
232
|
+
name: APP_DISCONNECT_FAIL_POLICY_PROPERTY,
|
|
233
|
+
reason: `apps/create failed (likely owner_user_id null on sender; B.9 covers via DB seeding): ${error._tag}`,
|
|
234
|
+
})))),
|
|
235
|
+
onRight: (success) => Effect.succeed(success),
|
|
236
|
+
});
|
|
230
237
|
// Step 6: sever the app's WS. Closing the inner scope closes the
|
|
231
238
|
// socket; the server's connection-scope finalizer runs through
|
|
232
239
|
// sendRpcToClient's Deferred-cleanup path (issue #310).
|
|
@@ -240,12 +247,12 @@ export function registerAppDisconnectFailPolicy(ctx) {
|
|
|
240
247
|
// the (now severed) admission path.
|
|
241
248
|
// `apps/create` result: `{ session: { conversations: { [key]: convId } } }`
|
|
242
249
|
// — a Record map, not an array. Pull the first id deterministically.
|
|
243
|
-
const session =
|
|
250
|
+
const session = sessionResult.session;
|
|
244
251
|
const sessionConvId = Object.values(session.conversations)[0];
|
|
245
252
|
if (typeof sessionConvId !== "string" || sessionConvId.length === 0) {
|
|
246
253
|
return yield* Effect.fail(new PropertyDeferred({
|
|
247
254
|
category: CATEGORY,
|
|
248
|
-
name:
|
|
255
|
+
name: APP_DISCONNECT_FAIL_POLICY_PROPERTY,
|
|
249
256
|
followUp: "apps/create response did not surface a session conversation id; B.9 (#318) covers via DB-seeded fixture",
|
|
250
257
|
}));
|
|
251
258
|
}
|
|
@@ -257,7 +264,7 @@ export function registerAppDisconnectFailPolicy(ctx) {
|
|
|
257
264
|
// class makes the leak observable in the Left branch.
|
|
258
265
|
const dispatchStarted = Date.now();
|
|
259
266
|
const dispatchOutcome = yield* senderClient
|
|
260
|
-
.sendRpc(
|
|
267
|
+
.sendRpc(AppsAuthorizeDispatch.name, {
|
|
261
268
|
conversationId: sessionConvId,
|
|
262
269
|
messageId: `00000000-0000-0000-0000-000000000001`,
|
|
263
270
|
senderAgentId: sender.agentId,
|
|
@@ -268,12 +275,15 @@ export function registerAppDisconnectFailPolicy(ctx) {
|
|
|
268
275
|
elapsedMs: Date.now() - dispatchStarted,
|
|
269
276
|
}),
|
|
270
277
|
}), Effect.either);
|
|
271
|
-
|
|
272
|
-
|
|
278
|
+
const dispatchHung = Either.match(dispatchOutcome, {
|
|
279
|
+
onLeft: (error) => error instanceof DispatchHungError ? error : null,
|
|
280
|
+
onRight: () => null,
|
|
281
|
+
});
|
|
282
|
+
if (dispatchHung !== null) {
|
|
273
283
|
return yield* Effect.fail(new PropertyInvariantViolation({
|
|
274
284
|
category: CATEGORY,
|
|
275
|
-
name:
|
|
276
|
-
reason: `dispatch hung ${
|
|
285
|
+
name: APP_DISCONNECT_FAIL_POLICY_PROPERTY,
|
|
286
|
+
reason: `dispatch hung ${dispatchHung.elapsedMs}ms after app sever — Deferred leak suspected`,
|
|
277
287
|
}));
|
|
278
288
|
}
|
|
279
289
|
})));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boundary.js","sourceRoot":"","sources":["../../../src/testing/conformance/boundary.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"boundary.js","sourceRoot":"","sources":["../../../src/testing/conformance/boundary.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EACL,gBAAgB,EAChB,0BAA0B,EAC1B,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EACL,qBAAqB,EACrB,UAAU,EACV,oBAAoB,EACpB,2BAA2B,EAC3B,YAAY,GACb,MAAM,8BAA8B,CAAC;AAEtC;;;;;GAKG;AACH,MAAM,iBAAkB,SAAQ,IAAI,CAAC,WAAW,CAC9C,8BAA8B,CACC;CAAG;AAEpC,MAAM,QAAQ,GAAG,UAAmB,CAAC;AACrC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAChC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AACpC,MAAM,+BAA+B,GAAG,wBAAwB,CAAC;AACjE,MAAM,mCAAmC,GAAG,4BAA4B,CAAC;AACzE,MAAM,gCAAgC,GAAG,CAAC,CAAC;AAC3C,MAAM,aAAa,GAAG,EAAE,CAAC;AAEzB;;;;;;;;;;GAUG;AACH,MAAM,UAAU,4BAA4B,CAAC,GAA0B;IACrE,gBAAgB,CACd,GAAG,EACH,QAAQ,EACR,+BAA+B,EAC/B,gEAAgE,EAChE,MAAM,CAAC,MAAM,CACX,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,iBAAiB,CAAC;YACrC,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC,OAAO;YAC/B,IAAI,EAAE,MAAM;SACb,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CACb,CAAC,CAAC,EAAE,EAAE,CACJ,IAAI,0BAA0B,CAAC;YAC7B,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAE,+BAA+B;YACrC,MAAM,EAAE,mBAAmB,CAAC,CAAC,IAAI,EAAE;SACpC,CAAC,CACL,CACF,CAAC;QACF,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC;YACnC,SAAS,EAAE,GAAG,CAAC,UAAU,CAAC,KAAK;YAC/B,QAAQ,EAAE,KAAK,CAAC,MAAM;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,gBAAgB,EAAE,kBAAkB;YACpC,eAAe,EACb,aAAa,CAAC,MAAM,GAAG,gCAAgC;SAC1D,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CACb,CAAC,CAAC,EAAE,EAAE,CACJ,IAAI,0BAA0B,CAAC;YAC7B,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAE,+BAA+B;YACrC,MAAM,EAAE,mBAAmB,MAAM,CAAC,CAAC,CAAC,EAAE;SACvC,CAAC,CACL,CACF,CAAC;QACF,MAAM,gBAAgB,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;QAC/C,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;YACzC,MAAM,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE;gBACjC,OAAO,EAAE,gBAAgB;gBACzB,IAAI,EAAE,GAAG,CAAC,IAAI;aACf,CAAC,CAAC;YACH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,IAAI,0BAA0B,CAAC;oBAC7B,QAAQ,EAAE,QAAQ;oBAClB,IAAI,EAAE,+BAA+B;oBACrC,MAAM,EAAE,6BAA6B,MAAM,EAAE;iBAC9C,CAAC,CACH,CAAC;YACJ,CAAC;YACD,KAAK,MAAM,OAAO,IAAI,OAAO,EAAE,CAAC;gBAC9B,KAAK,CAAC,CAAC,MAAM;qBACV,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;qBACvC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACvB,0DAA0D;gBAC1D,wDAAwD;gBACxD,4DAA4D;gBAC5D,0DAA0D;gBAC1D,+CAA+C;gBAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,MAAM;qBACvB,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;qBAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACvB,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;gBACrC,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;oBACzB,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,IAAI,0BAA0B,CAAC;wBAC7B,QAAQ,EAAE,QAAQ;wBAClB,IAAI,EAAE,+BAA+B;wBACrC,MAAM,EAAE,oCAAoC,MAAM,eAAe,WAAW,CAAC,IAAI,GAAG;qBACrF,CAAC,CACH,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CACH,CACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,UAAU,+BAA+B,CAC7C,GAA0B;IAE1B,gBAAgB,CACd,GAAG,EACH,QAAQ,EACR,mCAAmC,EACnC,4DAA4D,EAC5D,MAAM,CAAC,MAAM,CACX,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,2DAA2D;QAC3D,+BAA+B;QAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,iBAAiB,CAAC;YACxC,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC,OAAO;YAC/B,IAAI,EAAE,UAAU;SACjB,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CACb,CAAC,CAAC,EAAE,EAAE,CACJ,IAAI,mBAAmB,CAAC;YACtB,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAE,mCAAmC;YACzC,MAAM,EAAE,uBAAuB,CAAC,CAAC,IAAI,EAAE;SACxC,CAAC,CACL,CACF,CAAC;QAEF,8DAA8D;QAC9D,4DAA4D;QAC5D,SAAS;QACT,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,CACnC,cAAc,CAAC;YACb,SAAS,EAAE,GAAG,CAAC,UAAU,CAAC,KAAK;YAC/B,QAAQ,EAAE,QAAQ,CAAC,MAAM;YACzB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,gBAAgB,EAAE,kBAAkB;YACpC,eAAe,EAAE,wBAAwB;SAC1C,CAAC,EACF,QAAQ,CACT,CAAC,IAAI,CACJ,MAAM,CAAC,QAAQ,CACb,CAAC,CAAC,EAAE,EAAE,CACJ,IAAI,mBAAmB,CAAC;YACtB,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAE,mCAAmC;YACzC,MAAM,EAAE,uBAAuB,MAAM,CAAC,CAAC,CAAC,EAAE;SAC3C,CAAC,CACL,CACF,CAAC;QAEF,+DAA+D;QAC/D,gEAAgE;QAChE,yBAAyB;QACzB,MAAM,KAAK,GAAG,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QAC3D,8DAA8D;QAC9D,8DAA8D;QAC9D,gEAAgE;QAChE,0DAA0D;QAC1D,mDAAmD;QACnD,MAAM,eAAe,GAAG,KAAK,CAAC,CAAC,cAAc,CAC3C,SAAS,EACT,YAAY,CAAC,IAAI,EACjB;YACE,QAAQ,EAAE;gBACR,KAAK;gBACL,IAAI,EAAE,uBAAuB,KAAK,EAAE;gBACpC,WAAW,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;gBAC3C,aAAa,EAAE;oBACb,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE;iBACxD;gBACD,KAAK,EAAE;oBACL,eAAe,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;oBACrC,uBAAuB,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;iBAC9C;aACF;SACF,CACF,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACtB,MAAM,eAAe,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;QACpD,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;YAC7B,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACxC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,IAAI,mBAAmB,CAAC;gBACtB,QAAQ,EAAE,QAAQ;gBAClB,IAAI,EAAE,mCAAmC;gBACzC,MAAM,EAAE,yBAAyB,eAAe,CAAC,IAAI,EAAE;aACxD,CAAC,CACH,CAAC;QACJ,CAAC;QAED,+DAA+D;QAC/D,iEAAiE;QACjE,gCAAgC;QAChC,KAAK,CAAC,CAAC,SAAS,CAAC,eAAe,CAC9B,oBAAoB,CAAC,IAAI,EACzB,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CACnB,CAAC;QACF,KAAK,CAAC,CAAC,SAAS,CAAC,eAAe,CAC9B,2BAA2B,CAAC,IAAI,EAChC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CACnB,CAAC;QAEF,+DAA+D;QAC/D,8DAA8D;QAC9D,8DAA8D;QAC9D,4DAA4D;QAC5D,iEAAiE;QACjE,iDAAiD;QACjD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,iBAAiB,CAAC;YACtC,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC,OAAO;YAC/B,IAAI,EAAE,aAAa;SACpB,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CACb,CAAC,CAAC,EAAE,EAAE,CACJ,IAAI,mBAAmB,CAAC;YACtB,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAE,mCAAmC;YACzC,MAAM,EAAE,oBAAoB,CAAC,CAAC,IAAI,EAAE;SACrC,CAAC,CACL,CACF,CAAC;QACF,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC;YACzC,SAAS,EAAE,GAAG,CAAC,UAAU,CAAC,KAAK;YAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM;YACvB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,gBAAgB,EAAE,kBAAkB;YACpC,eAAe,EAAE,wBAAwB;SAC1C,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CACb,CAAC,CAAC,EAAE,EAAE,CACJ,IAAI,mBAAmB,CAAC;YACtB,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAE,mCAAmC;YACzC,MAAM,EAAE,0BAA0B,MAAM,CAAC,CAAC,CAAC,EAAE;SAC9C,CAAC,CACL,CACF,CAAC;QACF,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,YAAY;aACvC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC;aACxD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACvB,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE;YACxD,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAChB,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CACnC,MAAM,CAAC,QAAQ,CACb,MAAM,CAAC,IAAI,CACT,IAAI,mBAAmB,CAAC;gBACtB,QAAQ,EAAE,QAAQ;gBAClB,IAAI,EAAE,mCAAmC;gBACzC,MAAM,EAAE,wFAAwF,KAAK,CAAC,IAAI,EAAE;aAC7G,CAAC,CACH,CACF,CACF;YACH,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;SAC9C,CAAC,CAAC;QAEH,iEAAiE;QACjE,+DAA+D;QAC/D,wDAAwD;QACxD,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAExC,6DAA6D;QAC7D,+DAA+D;QAC/D,4DAA4D;QAC5D,8DAA8D;QAC9D,2DAA2D;QAC3D,+DAA+D;QAC/D,oCAAoC;QACpC,4EAA4E;QAC5E,qEAAqE;QACrE,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC;QACtC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpE,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,IAAI,gBAAgB,CAAC;gBACnB,QAAQ,EAAE,QAAQ;gBAClB,IAAI,EAAE,mCAAmC;gBACzC,QAAQ,EACN,yGAAyG;aAC5G,CAAC,CACH,CAAC;QACJ,CAAC;QACD,gEAAgE;QAChE,+DAA+D;QAC/D,+DAA+D;QAC/D,iEAAiE;QACjE,6DAA6D;QAC7D,sDAAsD;QACtD,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACnC,MAAM,eAAe,GAAG,KAAK,CAAC,CAAC,YAAY;aACxC,OAAO,CAAC,qBAAqB,CAAC,IAAI,EAAE;YACnC,cAAc,EACZ,aAAoE;YACtE,SAAS,EAAE,sCAAsC;YACjD,aAAa,EAAE,MAAM,CAAC,OAAO;SAC9B,CAAC;aACD,IAAI,CACH,MAAM,CAAC,WAAW,CAAC;YACjB,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,kBAAkB,CAAC;YAC7C,SAAS,EAAE,GAAG,EAAE,CACd,IAAI,iBAAiB,CAAC;gBACpB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,eAAe;aACxC,CAAC;SACL,CAAC,EACF,MAAM,CAAC,MAAM,CACd,CAAC;QACJ,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE;YACjD,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAChB,KAAK,YAAY,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;YACnD,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI;SACpB,CAAC,CAAC;QACH,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,IAAI,0BAA0B,CAAC;gBAC7B,QAAQ,EAAE,QAAQ;gBAClB,IAAI,EAAE,mCAAmC;gBACzC,MAAM,EAAE,iBAAiB,YAAY,CAAC,SAAS,8CAA8C;aAC9F,CAAC,CACH,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CACH,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adversity.d.ts","sourceRoot":"","sources":["../../../../src/testing/conformance/client/adversity.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"adversity.d.ts","sourceRoot":"","sources":["../../../../src/testing/conformance/client/adversity.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAsB/D;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAC7C,GAAG,EAAE,2BAA2B,GAC/B,IAAI,CAyDN;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,2BAA2B,GAC/B,IAAI,CAeN;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAC7C,GAAG,EAAE,2BAA2B,GAC/B,IAAI,CAeN;AAED;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,2BAA2B,GAC/B,IAAI,CAsEN;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,2BAA2B,GAC/B,IAAI,CA+CN"}
|
|
@@ -28,8 +28,13 @@
|
|
|
28
28
|
import { Clock, Effect } from "effect";
|
|
29
29
|
import { PropertyUnavailable, registerProperty } from "../registry.js";
|
|
30
30
|
import { acquireFixture, collectTagged, invariant, subscribeAll, } from "./_fixtures.js";
|
|
31
|
+
import { AgentsList } from "../../../schema/methods/auth.js";
|
|
31
32
|
const CATEGORY = "adversity";
|
|
32
33
|
const PROPERTY_BUDGET_MS = 10_000;
|
|
34
|
+
const TIMEOUT_ERROR_PREVIEW_CHARS = 200;
|
|
35
|
+
const PROPERTY_LATENCY_RESILIENCE_CLIENT = "latency-resilience-client";
|
|
36
|
+
const PROPERTY_TIMEOUT_SURFACE_CLIENT = "timeout-surface-client";
|
|
37
|
+
const PROPERTY_SLOW_CLOSE_CLEANUP_CLIENT = "slow-close-cleanup-client";
|
|
33
38
|
function unavailable(name, reason) {
|
|
34
39
|
return new PropertyUnavailable({ category: CATEGORY, name, reason });
|
|
35
40
|
}
|
|
@@ -40,11 +45,11 @@ function unavailable(name, reason) {
|
|
|
40
45
|
* discriminating against drops/dups.
|
|
41
46
|
*/
|
|
42
47
|
export function registerLatencyResilienceClient(ctx) {
|
|
43
|
-
registerProperty(ctx, CATEGORY,
|
|
48
|
+
registerProperty(ctx, CATEGORY, PROPERTY_LATENCY_RESILIENCE_CLIENT, "fan-out survives latency (Toxiproxy) or degrades to cardinality check", Effect.scoped(Effect.gen(function* () {
|
|
44
49
|
if (ctx.toxiproxy === null) {
|
|
45
|
-
return yield* Effect.fail(unavailable(
|
|
50
|
+
return yield* Effect.fail(unavailable(PROPERTY_LATENCY_RESILIENCE_CLIENT, "Toxiproxy not provisioned; client-side latency toxic unavailable in this run"));
|
|
46
51
|
}
|
|
47
|
-
const fx = yield* acquireFixture(ctx, CATEGORY,
|
|
52
|
+
const fx = yield* acquireFixture(ctx, CATEGORY, PROPERTY_LATENCY_RESILIENCE_CLIENT);
|
|
48
53
|
yield* subscribeAll(fx.handle);
|
|
49
54
|
const base = {
|
|
50
55
|
jsonrpc: "2.0",
|
|
@@ -66,7 +71,7 @@ export function registerLatencyResilienceClient(ctx) {
|
|
|
66
71
|
}
|
|
67
72
|
const observed = yield* collectTagged(fx.handle, (t) => t === campaign, { expected: N, budgetMs: PROPERTY_BUDGET_MS });
|
|
68
73
|
if (observed.length !== N) {
|
|
69
|
-
return yield* Effect.fail(invariant(CATEGORY,
|
|
74
|
+
return yield* Effect.fail(invariant(CATEGORY, PROPERTY_LATENCY_RESILIENCE_CLIENT, `expected ${N} under latency, got ${observed.length}`));
|
|
70
75
|
}
|
|
71
76
|
})));
|
|
72
77
|
}
|
|
@@ -99,8 +104,8 @@ export function registerResetPeerRecoveryClient(ctx) {
|
|
|
99
104
|
* - `RealClientRpcError.kind === "timeout"`
|
|
100
105
|
*/
|
|
101
106
|
export function registerTimeoutSurfaceClient(ctx) {
|
|
102
|
-
registerProperty(ctx, CATEGORY,
|
|
103
|
-
const fx = yield* acquireFixture(ctx, CATEGORY,
|
|
107
|
+
registerProperty(ctx, CATEGORY, PROPERTY_TIMEOUT_SURFACE_CLIENT, "never-responded RPC surfaces typed RpcTimeoutError on the real client", Effect.scoped(Effect.gen(function* () {
|
|
108
|
+
const fx = yield* acquireFixture(ctx, CATEGORY, PROPERTY_TIMEOUT_SURFACE_CLIENT);
|
|
104
109
|
// Do NOT start a responder — TestServer silently absorbs the
|
|
105
110
|
// request. The real client's internal timeout must fire.
|
|
106
111
|
//
|
|
@@ -109,24 +114,24 @@ export function registerTimeoutSurfaceClient(ctx) {
|
|
|
109
114
|
// exceeds the budget, this property reports unavailable rather
|
|
110
115
|
// than pretending to assert the client-internal deadline.
|
|
111
116
|
const start = yield* Clock.currentTimeMillis;
|
|
112
|
-
const outcome = yield* Effect.exit(fx.handle.call.call(
|
|
117
|
+
const outcome = yield* Effect.exit(fx.handle.call.call(AgentsList.name, {}).pipe(Effect.timeoutFail({
|
|
113
118
|
duration: `${PROPERTY_BUDGET_MS} millis`,
|
|
114
|
-
onTimeout: () => unavailable(
|
|
119
|
+
onTimeout: () => unavailable(PROPERTY_TIMEOUT_SURFACE_CLIENT, `client timeout > ${PROPERTY_BUDGET_MS}ms suite budget`),
|
|
115
120
|
})));
|
|
116
121
|
const elapsed = (yield* Clock.currentTimeMillis) - start;
|
|
117
122
|
if (outcome._tag === "Success") {
|
|
118
|
-
return yield* Effect.fail(invariant(CATEGORY,
|
|
123
|
+
return yield* Effect.fail(invariant(CATEGORY, PROPERTY_TIMEOUT_SURFACE_CLIENT, "RPC unexpectedly resolved without a response"));
|
|
119
124
|
}
|
|
120
125
|
// Walk the cause chain for a RealClientRpcError matching the
|
|
121
126
|
// typed-timeout contract. `PropertyUnavailable` from the suite
|
|
122
127
|
// budget is a different branch.
|
|
123
128
|
const causeStr = String(outcome.cause);
|
|
124
129
|
if (causeStr.includes("PropertyUnavailable")) {
|
|
125
|
-
return yield* Effect.fail(unavailable(
|
|
130
|
+
return yield* Effect.fail(unavailable(PROPERTY_TIMEOUT_SURFACE_CLIENT, `client timeout exceeded suite budget (${elapsed}ms)`));
|
|
126
131
|
}
|
|
127
132
|
if (!causeStr.includes("RpcTimeoutError") &&
|
|
128
133
|
!causeStr.includes("timeout")) {
|
|
129
|
-
return yield* Effect.fail(invariant(CATEGORY,
|
|
134
|
+
return yield* Effect.fail(invariant(CATEGORY, PROPERTY_TIMEOUT_SURFACE_CLIENT, `expected timeout-shape rejection, got: ${causeStr.slice(0, TIMEOUT_ERROR_PREVIEW_CHARS)}`));
|
|
130
135
|
}
|
|
131
136
|
})));
|
|
132
137
|
}
|
|
@@ -139,8 +144,8 @@ export function registerTimeoutSurfaceClient(ctx) {
|
|
|
139
144
|
* resolves within budget; Scope teardown completes.
|
|
140
145
|
*/
|
|
141
146
|
export function registerSlowCloseCleanupClient(ctx) {
|
|
142
|
-
registerProperty(ctx, CATEGORY,
|
|
143
|
-
const fx = yield* acquireFixture(ctx, CATEGORY,
|
|
147
|
+
registerProperty(ctx, CATEGORY, PROPERTY_SLOW_CLOSE_CLEANUP_CLIENT, "slow close completes; real client's closeSignal resolves and Scope releases", Effect.scoped(Effect.gen(function* () {
|
|
148
|
+
const fx = yield* acquireFixture(ctx, CATEGORY, PROPERTY_SLOW_CLOSE_CLEANUP_CLIENT);
|
|
144
149
|
// Initiate a close from the TestServer side.
|
|
145
150
|
yield* fx.connection
|
|
146
151
|
.close({ code: 1001, reason: "slow-close-test" })
|
|
@@ -149,12 +154,12 @@ export function registerSlowCloseCleanupClient(ctx) {
|
|
|
149
154
|
const closeBudget = 3_000;
|
|
150
155
|
const settled = yield* Effect.exit(fx.handle.closeSignal.pipe(Effect.timeoutFail({
|
|
151
156
|
duration: `${closeBudget} millis`,
|
|
152
|
-
onTimeout: () => invariant(CATEGORY,
|
|
157
|
+
onTimeout: () => invariant(CATEGORY, PROPERTY_SLOW_CLOSE_CLEANUP_CLIENT, `closeSignal did not resolve within ${closeBudget}ms`),
|
|
153
158
|
})));
|
|
154
159
|
if (settled._tag === "Failure") {
|
|
155
160
|
const causeStr = String(settled.cause);
|
|
156
161
|
if (causeStr.includes("ConformancePropertyInvariantViolation")) {
|
|
157
|
-
return yield* Effect.fail(invariant(CATEGORY,
|
|
162
|
+
return yield* Effect.fail(invariant(CATEGORY, PROPERTY_SLOW_CLOSE_CLEANUP_CLIENT, `closeSignal timed out (${closeBudget}ms budget)`));
|
|
158
163
|
}
|
|
159
164
|
}
|
|
160
165
|
})));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adversity.js","sourceRoot":"","sources":["../../../../src/testing/conformance/client/adversity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGvC,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EACL,cAAc,EACd,aAAa,EACb,SAAS,EACT,YAAY,GACb,MAAM,gBAAgB,CAAC;AAExB,MAAM,QAAQ,GAAG,WAAoB,CAAC;AACtC,MAAM,kBAAkB,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"adversity.js","sourceRoot":"","sources":["../../../../src/testing/conformance/client/adversity.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boundary.d.ts","sourceRoot":"","sources":["../../../../src/testing/conformance/client/boundary.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"boundary.d.ts","sourceRoot":"","sources":["../../../../src/testing/conformance/client/boundary.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAc/D;;;;;;;;GAQG;AACH,wBAAgB,kCAAkC,CAChD,GAAG,EAAE,2BAA2B,GAC/B,IAAI,CAoEN"}
|
|
@@ -14,6 +14,8 @@ import { registerProperty } from "../registry.js";
|
|
|
14
14
|
import { acquireFixture, collectTagged, invariant, subscribeAll, } from "./_fixtures.js";
|
|
15
15
|
const CATEGORY = "boundary";
|
|
16
16
|
const PROPERTY_BUDGET_MS = 12_000;
|
|
17
|
+
const DEFAULT_FUZZ_BURST_RUNS = 10;
|
|
18
|
+
const PROPERTY_SCHEMA_EXHAUSTIVE_FUZZ_CLIENT = "schema-exhaustive-fuzz-client";
|
|
17
19
|
/**
|
|
18
20
|
* E2 client half — TestServer emits arbitrary `EventFrame`s across
|
|
19
21
|
* many shapes to a real client. Properties interleave with a tagged
|
|
@@ -24,12 +26,12 @@ const PROPERTY_BUDGET_MS = 12_000;
|
|
|
24
26
|
* 2. Liveness probe — a valid tagged event emitted post-fuzz surfaces.
|
|
25
27
|
*/
|
|
26
28
|
export function registerSchemaExhaustiveFuzzClient(ctx) {
|
|
27
|
-
registerProperty(ctx, CATEGORY,
|
|
28
|
-
const fx = yield* acquireFixture(ctx, CATEGORY,
|
|
29
|
+
registerProperty(ctx, CATEGORY, PROPERTY_SCHEMA_EXHAUSTIVE_FUZZ_CLIENT, "real client absorbs arbitrary EventFrames; liveness and boundary hold", Effect.scoped(Effect.gen(function* () {
|
|
30
|
+
const fx = yield* acquireFixture(ctx, CATEGORY, PROPERTY_SCHEMA_EXHAUSTIVE_FUZZ_CLIENT);
|
|
29
31
|
yield* subscribeAll(fx.handle);
|
|
30
32
|
// Fuzz burst: default 10 frames; stress mode scales with
|
|
31
33
|
// CONFORMANCE_NUM_RUNS through ctx.opts.numRuns.
|
|
32
|
-
const fuzzRuns = ctx.opts.numRuns ??
|
|
34
|
+
const fuzzRuns = ctx.opts.numRuns ?? DEFAULT_FUZZ_BURST_RUNS;
|
|
33
35
|
const burst = fc.sample(arbitraryEventFrame(), {
|
|
34
36
|
numRuns: fuzzRuns,
|
|
35
37
|
seed: ctx.seed,
|
|
@@ -42,7 +44,7 @@ export function registerSchemaExhaustiveFuzzClient(ctx) {
|
|
|
42
44
|
// (1) Real client still alive — closeSignal not fired.
|
|
43
45
|
const closeRace = yield* Effect.race(fx.handle.closeSignal.pipe(Effect.as("closed")), Effect.sleep("100 millis").pipe(Effect.as("alive")));
|
|
44
46
|
if (closeRace === "closed") {
|
|
45
|
-
return yield* Effect.fail(invariant(CATEGORY,
|
|
47
|
+
return yield* Effect.fail(invariant(CATEGORY, PROPERTY_SCHEMA_EXHAUSTIVE_FUZZ_CLIENT, "real client closed during fuzz burst"));
|
|
46
48
|
}
|
|
47
49
|
// (2) Liveness probe.
|
|
48
50
|
const tag = yield* fx.window.freshEmissionTag;
|
|
@@ -61,7 +63,7 @@ export function registerSchemaExhaustiveFuzzClient(ctx) {
|
|
|
61
63
|
budgetMs: PROPERTY_BUDGET_MS,
|
|
62
64
|
});
|
|
63
65
|
if (observed.length === 0) {
|
|
64
|
-
return yield* Effect.fail(invariant(CATEGORY,
|
|
66
|
+
return yield* Effect.fail(invariant(CATEGORY, PROPERTY_SCHEMA_EXHAUSTIVE_FUZZ_CLIENT, "liveness probe never surfaced after fuzz burst"));
|
|
65
67
|
}
|
|
66
68
|
})));
|
|
67
69
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boundary.js","sourceRoot":"","sources":["../../../../src/testing/conformance/client/boundary.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EACL,cAAc,EACd,aAAa,EACb,SAAS,EACT,YAAY,GACb,MAAM,gBAAgB,CAAC;AAExB,MAAM,QAAQ,GAAG,UAAmB,CAAC;AACrC,MAAM,kBAAkB,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"boundary.js","sourceRoot":"","sources":["../../../../src/testing/conformance/client/boundary.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery.d.ts","sourceRoot":"","sources":["../../../../src/testing/conformance/client/delivery.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"delivery.d.ts","sourceRoot":"","sources":["../../../../src/testing/conformance/client/delivery.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AA2B/D;;;;;;;;;;;;;GAaG;AACH,wBAAgB,+BAA+B,CAC7C,GAAG,EAAE,2BAA2B,GAC/B,IAAI,CA0EN;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,2BAA2B,GAC/B,IAAI,CAsDN;AAED;;;;;;;GAOG;AACH,wBAAgB,mCAAmC,CACjD,GAAG,EAAE,2BAA2B,GAC/B,IAAI,CAiHN;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,2BAA2B,GAC/B,IAAI,CA4DN"}
|