Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
levinkerschberger committed Jul 25, 2024
1 parent 8b26ead commit ec7038c
Show file tree
Hide file tree
Showing 8 changed files with 146 additions and 109 deletions.
6 changes: 3 additions & 3 deletions src/components/monitoring/MonitoringSpecifier.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ export default function ShowMonitoringSpecifier() {
const handleSubmit = (rqa) => {
const monitoringDefinition: MonitoringDefinition = {
target: target,
measurementName: measurementName,
measurementType: measurementType,
measurementUnit: measurementUnit,
measurement_name: measurementName,
measurement_type: measurementType,
measurement_unit: measurementUnit,
};

updateRqaMonitoring(rqa, monitoringDefinition);
Expand Down
4 changes: 2 additions & 2 deletions src/components/monitoring/action.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@ const backendUrl = new URL(

export const updateRqaMonitoring = async (
rqa_id: string,
loadtest: MonitoringDefinition
monitoringDefinition: MonitoringDefinition
) => {
const res = await fetch(`${backendUrl}/${rqa_id}/monitoring`, {
method: "PATCH",
body: JSON.stringify(loadtest),
body: JSON.stringify(monitoringDefinition),
headers: {
"Content-Type": "application/json",
},
Expand Down
27 changes: 27 additions & 0 deletions src/components/rqaExplorer/rqaTree/MonitoringDefinitionList.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import { MonitoringDefinition } from "@/types/rqa/definition/monitoring/MonitoringDefinition";

interface MonitoringDefinitionListProps {
monitoringDefinitions: MonitoringDefinition[];
}

export default function MonitoringDefinitionList({
monitoringDefinitions,
}: MonitoringDefinitionListProps) {
return (
<details>
<summary>Monitoring Definitions</summary>
<ul>
{monitoringDefinitions?.map((monitoringDefinition, index) => {
return (
<li key={index}>
{monitoringDefinition.target} -{" "}
{monitoringDefinition.measurement_name} -{" "}
{monitoringDefinition.measurement_type} -{" "}
{monitoringDefinition.measurement_unit}
</li>
);
})}
</ul>
</details>
);
}
56 changes: 28 additions & 28 deletions src/components/rqaExplorer/rqaTree/ResilienceTestList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,36 +3,36 @@ import { useRef } from "react";
import { ResilienceTestDetail } from "./ResilienceTestDetail";

interface ResilienceTestListProps {
resilienceTestDefinition: ResilienceTestDefinition[];
rqaId?: string;
resilienceTestSpecifier: any;
resilienceTestDefinition: ResilienceTestDefinition[];
rqaId?: string;
resilienceTestSpecifier: any;
}

export function ResilienceTestList({
resilienceTestDefinition,
rqaId,
resilienceTestSpecifier,
resilienceTestDefinition,
rqaId,
resilienceTestSpecifier,
}: ResilienceTestListProps) {
const detailsRef = useRef(null);
return (
<details ref={detailsRef}>
<summary>
<span>Resilience Tests</span>
</summary>
<ul>
{resilienceTestDefinition.map((resilienceTest, index) => {
return (
<li key={index}>
<ResilienceTestDetail
resilienceTestDefinition={resilienceTest}
parentMenuRef={detailsRef}
rqaId={rqaId}
resilienceTestSpecifier={resilienceTestSpecifier}
/>
</li>
);
})}
</ul>
</details>
);
const detailsRef = useRef(null);
return (
<details ref={detailsRef}>
<summary>
<span>Resilience Tests</span>
</summary>
<ul>
{resilienceTestDefinition?.map((resilienceTest, index) => {
return (
<li key={index}>
<ResilienceTestDetail
resilienceTestDefinition={resilienceTest}
parentMenuRef={detailsRef}
rqaId={rqaId}
resilienceTestSpecifier={resilienceTestSpecifier}
/>
</li>
);
})}
</ul>
</details>
);
}
124 changes: 66 additions & 58 deletions src/components/rqaExplorer/rqaTree/RqaDefinition.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,69 +3,77 @@ import { useState } from "react";
import { LoadTestList } from "./LoadTestList";
import { ResilienceTestList } from "./ResilienceTestList";
import { startRQA } from "./action";
import MonitoringDefinitionList from "./MonitoringDefinitionList";

interface RqaDefinitionProps {
rqa: RuntimeQualityAnalysisDefinition;
loadTestSpecifier: any;
resilienceTestSpecifier: any;
rqa: RuntimeQualityAnalysisDefinition;
loadTestSpecifier: any;
resilienceTestSpecifier: any;
}

export function RqaDefinition({
rqa,
loadTestSpecifier,
resilienceTestSpecifier,
rqa,
loadTestSpecifier,
resilienceTestSpecifier,
}: RqaDefinitionProps) {
const [data, setData] = useState(null);
const startRQAWithRQA = startRQA.bind(null, rqa);
const [data, setData] = useState(null);
const startRQAWithRQA = startRQA.bind(null, rqa);

return (
<ul>
<li>
<LoadTestList
loadTestDefinition={rqa.runtime_quality_analysis.load_test_definition}
rqaId={rqa.id}
loadTestSpecifier={loadTestSpecifier}
/>
</li>
<li>
<ResilienceTestList
resilienceTestDefinition={
rqa.runtime_quality_analysis.resilience_definition
}
rqaId={rqa.id}
resilienceTestSpecifier={resilienceTestSpecifier}
/>
</li>
<li>
<details>
<summary>Details</summary>
<ul>
{Object.keys(rqa).map((key, i) => {
return (
key in rqa &&
typeof rqa[key] === "string" &&
key !== "name" &&
key !== "id" && (
// biome-ignore lint/suspicious/noArrayIndexKey: <explanation>
<li key={i}>
<span>
{key}: {rqa[key]}
</span>
</li>
)
);
})}{" "}
</ul>
</details>
</li>
<li>
<form action={startRQAWithRQA}>
<button type="submit" className="btn btn-sm btn-primary">
{data ? "Re-Execute" : "Execute"}
</button>
{data && <pre className="mt-2">{JSON.stringify(data, null, 2)}</pre>}
</form>
</li>
</ul>
);
return (
<ul>
<li>
<LoadTestList
loadTestDefinition={rqa.runtime_quality_analysis.load_test_definition}
rqaId={rqa.id}
loadTestSpecifier={loadTestSpecifier}
/>
</li>
<li>
<ResilienceTestList
resilienceTestDefinition={
rqa.runtime_quality_analysis.resilience_definition
}
rqaId={rqa.id}
resilienceTestSpecifier={resilienceTestSpecifier}
/>
</li>
<li>
<MonitoringDefinitionList
monitoringDefinitions={
rqa.runtime_quality_analysis.monitoring_definition
}
/>
</li>
<li>
<details>
<summary>Details</summary>
<ul>
{Object.keys(rqa).map((key, i) => {
return (
key in rqa &&
typeof rqa[key] === "string" &&
key !== "name" &&
key !== "id" && (
// biome-ignore lint/suspicious/noArrayIndexKey: <explanation>
<li key={i}>
<span>
{key}: {rqa[key]}
</span>
</li>
)
);
})}{" "}
</ul>
</details>
</li>
<li>
<form action={startRQAWithRQA}>
<button type="submit" className="btn btn-sm btn-primary">
{data ? "Re-Execute" : "Execute"}
</button>
{data && <pre className="mt-2">{JSON.stringify(data, null, 2)}</pre>}
</form>
</li>
</ul>
);
}
24 changes: 12 additions & 12 deletions src/components/rqaExplorer/rqaTree/action.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,20 @@
import type { RuntimeQualityAnalysisDefinition } from "@/types/rqa/definition/RuntimeQualityAnalysisDefinition";

const backendUrl = new URL(
"/translate",
`http://${process.env.DQTRANSLATOR_HOST}` || "http://localhost:8080",
"/translate",
`http://${process.env.DQTRANSLATOR_HOST}` || "http://localhost:8080"
);

export const startRQA = async (rqa: RuntimeQualityAnalysisDefinition) => {
const res = await fetch(`${backendUrl}/${rqa.id}`, {
method: "POST",
body: JSON.stringify(rqa),
headers: {
"Content-Type": "application/json",
},
});
console.log(rqa.runtime_quality_analysis.monitoring_definition);
const res = await fetch(`${backendUrl}/${rqa.id}`, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
});

if (!res.ok) {
throw new Error("Failed to start RQA");
}
if (!res.ok) {
throw new Error("Failed to start RQA");
}
};
8 changes: 5 additions & 3 deletions src/types/rqa/definition/RuntimeQualityAnalysis.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import type { LoadTestDefinition } from "@/types/rqa/definition/loadtest/LoadTestDefinition";
import type { ResilienceTestDefinition } from "@/types/rqa/definition/resiliencetest/ResilienceTestDefinition";
import { MonitoringDefinition } from "./monitoring/MonitoringDefinition";

export interface RuntimeQualityAnalysis {
load_test_definition: LoadTestDefinition[];
// monitoringDefinition: Set<MonitoringDefinition>;
resilience_definition: ResilienceTestDefinition[];
load_test_definition: LoadTestDefinition[];
// monitoringDefinition: Set<MonitoringDefinition>;
resilience_definition: ResilienceTestDefinition[];
monitoring_definition: MonitoringDefinition[];
}
6 changes: 3 additions & 3 deletions src/types/rqa/definition/monitoring/MonitoringDefinition.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ export interface MonitoringDefinition {
target: string;
// The name of the measurement
// Motly some business name, like "Time to submit order" or "Executed orders"
measurementName: string;
measurement_name: string;
// The unit of the measurement
measurementUnit: string;
measurement_unit: string;
// The type of the measurement
measurementType: MeasurementType;
measurement_type: MeasurementType;
}

0 comments on commit ec7038c

Please sign in to comment.