mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-13 12:36:15 -08:00
* docs(performance): plan Xtream benchmark * feat(xtream-mock-server): add deterministic 100k fixture * style(xtream-mock-server): apply repository formatting * fix(xtream-mock-server): harden performance fixture data * feat(xtream-mock-server): add performance control plane * docs(performance): correct Xtream capture plan * fix(xtream-mock-server): harden performance controls * fix(xtream-mock-server): harden control lifecycle * feat(performance): add Xtream preload markers * feat(performance): trace Xtream main phases * feat(performance): mark Xtream store publications * feat(performance): trace Xtream database phases * feat(performance): trace Xtream delete cancellation * feat(performance): capture Xtream phase attribution * feat(performance): mark Sources Xtream refresh * test(performance): define Xtream benchmark evidence contracts * test(performance): add Xtream benchmark runner * test(performance): surface failure evidence writes * test(performance): align database read clock * test(performance): preserve capture failure contracts
54 lines
2.0 KiB
TypeScript
54 lines
2.0 KiB
TypeScript
import { XTREAM_ITERATION_KIND } from './xtream-benchmark-contract';
|
|
import { isExactRecord } from './xtream-exact-schema';
|
|
import { XTREAM_NOT_APPLICABLE } from './xtream-summary-contract';
|
|
|
|
export function assertXtreamFixedIterationContracts(
|
|
raw: Record<string, unknown>
|
|
): void {
|
|
const playlist = raw['playlistRefreshWorker'];
|
|
const catalog = raw['catalogVerification'];
|
|
const validity = raw['validity'];
|
|
if (
|
|
!isExactRecord(playlist, ['instantiated', 'reason']) ||
|
|
playlist['instantiated'] !== false ||
|
|
playlist['reason'] !== XTREAM_NOT_APPLICABLE.PLAYLIST_REFRESH_WORKER ||
|
|
!isExactRecord(catalog, [
|
|
'databaseStateValid',
|
|
'fixtureIdentityValid',
|
|
'providerCategoryCount',
|
|
'providerItemCount',
|
|
'verifiedAfterCapture',
|
|
]) ||
|
|
![
|
|
catalog['databaseStateValid'],
|
|
catalog['fixtureIdentityValid'],
|
|
catalog['verifiedAfterCapture'],
|
|
].every((entry) => entry === true) ||
|
|
catalog['providerCategoryCount'] !== 100 ||
|
|
catalog['providerItemCount'] !== 100_000 ||
|
|
!isExactRecord(validity, [
|
|
'actionContractValid',
|
|
'catalogContractValid',
|
|
'databaseWorkerCount',
|
|
'dbPhaseContractValid',
|
|
'diagnosticArtifactsValid',
|
|
'lateDatabaseRequestCount',
|
|
'playlistWorkerCount',
|
|
'rendererTargetCount',
|
|
]) ||
|
|
![
|
|
validity['actionContractValid'],
|
|
validity['catalogContractValid'],
|
|
validity['dbPhaseContractValid'],
|
|
].every((entry) => entry === true) ||
|
|
validity['databaseWorkerCount'] !== 1 ||
|
|
validity['playlistWorkerCount'] !== 0 ||
|
|
validity['rendererTargetCount'] !== 1 ||
|
|
validity['lateDatabaseRequestCount'] !== 0 ||
|
|
validity['diagnosticArtifactsValid'] !==
|
|
(raw['kind'] === XTREAM_ITERATION_KIND.DIAGNOSTIC ? true : null)
|
|
) {
|
|
throw new Error('invalid');
|
|
}
|
|
}
|