All checks were successful
deploy / deploy (push) Successful in 46s
Proof: targeted verifier salt cache and executor/dashboard tests pass; npm test passes 244/244; operator dashboard bundle builds; git diff --check passes. Assumptions: a 500 ms verifier salt freshness bound with 250 ms background prefetch is conservative for quote-response signing, and stale or malformed salt must block signing instead of using cached data. Still fake: venue-native terminal fill ids and fee-complete realized PnL remain unavailable.
49 lines
2.1 KiB
JavaScript
49 lines
2.1 KiB
JavaScript
import test from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import { readFileSync } from 'node:fs';
|
|
|
|
const source = readFileSync(new URL('../src/apps/trade-executor.mjs', import.meta.url), 'utf8');
|
|
|
|
test('trade executor dispatches each execute command once', () => {
|
|
const calls = source.match(/await handleCommand\(event\);/g) || [];
|
|
assert.equal(calls.length, 1);
|
|
});
|
|
|
|
test('own request preflight suppresses maker quote responses to avoid self-matching', () => {
|
|
assert.match(source, /withMakerSuppressed/);
|
|
assert.match(source, /own_request_preflight_in_progress/);
|
|
assert.match(source, /avoid self-matching/);
|
|
});
|
|
|
|
test('trade executor fails closed on stale execute commands before relay submission', () => {
|
|
assert.match(source, /classifyExecuteCommandExpiry/);
|
|
assert.match(source, /stale_execute_command/);
|
|
assert.match(source, /deadline elapsed before relay submission/);
|
|
});
|
|
|
|
test('trade executor exposes summarized durable command state', () => {
|
|
assert.match(source, /stateStore\.getSummary\(\{ limit: 50 \}\)/);
|
|
assert.doesNotMatch(source, /durable_state:\s*stateStore\.getState\(\)/);
|
|
});
|
|
|
|
test('trade executor records hot path timing in result payloads', () => {
|
|
assert.match(source, /node:perf_hooks/);
|
|
assert.match(source, /startExecutorTiming\(event\)/);
|
|
assert.match(source, /executor_timing/);
|
|
assert.match(source, /current_salt_ms/);
|
|
assert.match(source, /sign_ms/);
|
|
assert.match(source, /relay_response_ms/);
|
|
assert.match(source, /executor_total_ms/);
|
|
assert.match(source, /withExecutorTiming\(\{[\s\S]*?result_code: 'submission_failed'/);
|
|
});
|
|
|
|
test('trade executor uses bounded verifier salt cache instead of per-command salt RPC', () => {
|
|
assert.match(source, /createVerifierSaltCache/);
|
|
assert.match(source, /verifierSaltCache\.start\(\)/);
|
|
assert.match(source, /verifierSaltCache\.getFreshSalt\(\)/);
|
|
assert.match(source, /current_salt_source/);
|
|
assert.match(source, /current_salt_age_ms/);
|
|
assert.match(source, /verifier_salt_cache: verifierSaltCache\.getState\(\)/);
|
|
assert.match(source, /verifierSaltCache\.stop\(\)/);
|
|
assert.doesNotMatch(source, /await verifierClient\.currentSalt\(\);/);
|
|
});
|