mirror of
https://github.com/callstack/agent-device.git
synced 2026-09-14 20:06:34 +08:00
b15121ffc8
* test(ios): add snapshot convergence evidence harness * fix(ios): satisfy benchmark CI guards * fix(ios): constrain benchmark proxy routes * fix(ios-benchmark): enforce cell admission evidence * fix(ios-benchmark): protect benchmark state ownership * fix(ios-benchmark): use proxy port flag * fix(ios-benchmark): let proxy choose an ephemeral port * test(ios-benchmark): keep CLI process seam local * fix(ios-benchmark): parse proxy startup envelope * fix(ios-benchmark): bind proxy lease to simulator * fix(ios-benchmark): keep fresh proxy CLI sessions isolated * fix(ios-benchmark): preserve async timeout evidence * docs(ios-benchmark): retain exact-head evidence * test(ios): reveal offscreen alert fixture controls * test(ios): reset alert between relaunch samples * test(ios): admit native alert snapshots * docs(ios): publish snapshot convergence corpus * chore(ios): format benchmark evidence * fix(ios-benchmark): admit proxy fixture anchors * docs(ios): republish exact-head benchmark corpus * fix(size): make publish asset evidence hermetic * style(size): format package evidence test * test(size): update publish preparation contracts * fix: retire stale utils layering zone * test: pin shared publish asset owner * test: verify preserved size reporter closure * fix: move mutation ownership to snapshot module * test(ios): add snapshot convergence evidence harness * fix(ios): satisfy benchmark CI guards * fix(ios): constrain benchmark proxy routes * fix(ios-benchmark): enforce cell admission evidence * fix(ios-benchmark): protect benchmark state ownership * fix(ios-benchmark): use proxy port flag * fix(ios-benchmark): let proxy choose an ephemeral port * test(ios-benchmark): keep CLI process seam local * fix(ios-benchmark): parse proxy startup envelope * fix(ios-benchmark): bind proxy lease to simulator * fix(ios-benchmark): keep fresh proxy CLI sessions isolated * fix(ios-benchmark): preserve async timeout evidence * docs(ios-benchmark): retain exact-head evidence * test(ios): reveal offscreen alert fixture controls * test(ios): reset alert between relaunch samples * test(ios): admit native alert snapshots * docs(ios): publish snapshot convergence corpus * chore(ios): format benchmark evidence * fix(ios-benchmark): admit proxy fixture anchors * docs(ios): republish exact-head benchmark corpus * fix(size): make publish asset evidence hermetic * test(size): update publish preparation contracts * fix: keep git-state gates out of mutation sandboxes
53 lines
1.7 KiB
TypeScript
53 lines
1.7 KiB
TypeScript
import { createNetworkConditioner } from './proxy-conditioner.ts';
|
|
import { runFreshCliMeasurement, runPersistentMeasurement } from './proxy-client.ts';
|
|
import { startProxy } from './proxy-process.ts';
|
|
import type { Measurement, ProxyNetwork, ScreenFixture } from './types.ts';
|
|
|
|
export async function runProxyMeasurements(options: {
|
|
repoRoot: string;
|
|
stateDir: string;
|
|
clientStateDir: string;
|
|
derivedPath: string;
|
|
udid: string;
|
|
fixtures: ScreenFixture[];
|
|
samples: number;
|
|
rtts: readonly number[];
|
|
bandwidthKbps: number | null;
|
|
packetLossPercent: number;
|
|
seed: number;
|
|
}): Promise<{ measurements: Measurement[]; networks: ProxyNetwork[] }> {
|
|
const proxy = await startProxy(options.repoRoot, options.stateDir);
|
|
const measurements: Measurement[] = [];
|
|
const networks: ProxyNetwork[] = [];
|
|
try {
|
|
for (const rttMs of options.rtts) {
|
|
const network: ProxyNetwork = {
|
|
rttMs: rttMs as ProxyNetwork['rttMs'],
|
|
bandwidthKbps: options.bandwidthKbps,
|
|
packetLossPercent: options.packetLossPercent,
|
|
seed: options.seed + rttMs,
|
|
};
|
|
networks.push(network);
|
|
const conditioner = await createNetworkConditioner({
|
|
upstreamBaseUrl: proxy.proxyBaseUrl,
|
|
network,
|
|
});
|
|
try {
|
|
for (const fixture of options.fixtures) {
|
|
measurements.push(
|
|
await runPersistentMeasurement({ ...options, proxy, conditioner, fixture, network }),
|
|
);
|
|
measurements.push(
|
|
await runFreshCliMeasurement({ ...options, proxy, conditioner, fixture, network }),
|
|
);
|
|
}
|
|
} finally {
|
|
await conditioner.close();
|
|
}
|
|
}
|
|
return { measurements, networks };
|
|
} finally {
|
|
await proxy.stop();
|
|
}
|
|
}
|