mirror of
https://github.com/Azure/cosmos-explorer.git
synced 2026-04-20 13:30:27 +01:00
* perf: remove deprecated copilot feature, add ARM timeouts, fix race conditions - Remove entire QueryCopilot feature (~50 files deleted, ~30 files cleaned) - Remove CopilotConfigured and SampleDataLoaded metric phases - Fix DatabaseTreeRendered 76% stuck rate (remove one-shot guard in useMetricPhases) - Add 8s default timeout to ARM requests (AbortController-based) - Fix MSAL token forceRefresh (true -> false, use cache) - Add concurrency limit of 5 to collection loading in Explorer - Remove orphaned SampleDataClient.ts and queryCopilotSampleData.json - Clean up dead sampleDataConnectionInfo field from UserContext * Clean up copilot and optimize initialization * Clean up copilot and optimize initialization
39 lines
1.4 KiB
TypeScript
39 lines
1.4 KiB
TypeScript
import type { PhaseTimings, WebVitals } from "Metrics/Constants";
|
|
import MetricScenario from "./MetricEvents";
|
|
|
|
// Common phases shared across all scenarios
|
|
export enum CommonMetricPhase {
|
|
Interactive = "Interactive",
|
|
}
|
|
|
|
// Application-specific phases
|
|
export enum ApplicationMetricPhase {
|
|
ExplorerInitialized = "ExplorerInitialized",
|
|
PlatformConfigured = "PlatformConfigured",
|
|
DatabasesFetched = "DatabasesFetched",
|
|
CollectionsLoaded = "CollectionsLoaded",
|
|
DatabaseTreeRendered = "DatabaseTreeRendered",
|
|
}
|
|
|
|
// Combined type for all metric phases
|
|
export type MetricPhase = CommonMetricPhase | ApplicationMetricPhase;
|
|
|
|
export interface ScenarioConfig<TPhase extends string = MetricPhase> {
|
|
requiredPhases: TPhase[];
|
|
deferredPhases?: TPhase[]; // Phases not auto-started at scenario start; started explicitly via startPhase()
|
|
timeoutMs: number;
|
|
validate?: (ctx: ScenarioContextSnapshot<TPhase>) => boolean; // Optional custom validation
|
|
}
|
|
|
|
export interface ScenarioContextSnapshot<TPhase extends string = MetricPhase> {
|
|
scenario: MetricScenario;
|
|
startTimeISO: string; // Human-readable ISO timestamp
|
|
endTimeISO: string; // Human-readable end timestamp
|
|
durationMs: number; // Total scenario duration from start to end
|
|
completed: TPhase[]; // Array for JSON serialization
|
|
failedPhases?: TPhase[]; // Phases that failed
|
|
timedOut: boolean;
|
|
vitals?: WebVitals;
|
|
phaseTimings?: Record<string, PhaseTimings>; // Start/end times for each phase
|
|
}
|