mirror of
https://github.com/Azure/cosmos-explorer.git
synced 2025-12-29 22:02:01 +00:00
* Added health metrics for application load * Added health metrics for application load * Fix unit tests * Added more metrics * Added few comments * Added DatabaseLoad Scenario and address comments * Fix unit tests * fix unit tests * Fix unit tests * fix unit tests * fix the mock * Fix unit tests
30 lines
1.2 KiB
TypeScript
30 lines
1.2 KiB
TypeScript
import React, { useContext } from "react";
|
|
import MetricScenario from "./MetricEvents";
|
|
import { MetricPhase } from "./ScenarioConfig";
|
|
import { scenarioMonitor } from "./ScenarioMonitor";
|
|
|
|
interface MetricScenarioContextValue {
|
|
startScenario: (scenario: MetricScenario) => void;
|
|
startPhase: (scenario: MetricScenario, phase: MetricPhase) => void;
|
|
completePhase: (scenario: MetricScenario, phase: MetricPhase) => void;
|
|
}
|
|
|
|
const MetricScenarioContext = React.createContext<MetricScenarioContextValue | undefined>(undefined);
|
|
|
|
export const MetricScenarioProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {
|
|
const value: MetricScenarioContextValue = {
|
|
startScenario: (s: MetricScenario) => scenarioMonitor.start(s),
|
|
startPhase: (s: MetricScenario, p: MetricPhase) => scenarioMonitor.startPhase(s, p),
|
|
completePhase: (s: MetricScenario, p: MetricPhase) => scenarioMonitor.completePhase(s, p),
|
|
};
|
|
return <MetricScenarioContext.Provider value={value}>{children}</MetricScenarioContext.Provider>;
|
|
};
|
|
|
|
export function useMetricScenario(): MetricScenarioContextValue {
|
|
const ctx = useContext(MetricScenarioContext);
|
|
if (!ctx) {
|
|
throw new Error("useMetricScenario must be used within MetricScenarioProvider");
|
|
}
|
|
return ctx;
|
|
}
|