| /** |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| import { Value } from '@/types/dashboard'; |
| import { SlowItem } from '@/types/global'; |
| |
| export interface State { |
| endpointPercent: { |
| p50: number[], |
| p75: number[], |
| p90: number[], |
| p95: number[], |
| p99: number[], |
| }; |
| endpointResponseTime: { ResponseTime: number[]; }; |
| endpointThroughput: { Throughput: number[]; }; |
| endpointSLA: { SLA: number[]; }; |
| endpointSlowEndpoint: SlowItem[]; |
| endpointTraces: SlowItem[]; |
| endpointTopology: { calls: any; nodes: any; }; |
| } |
| |
| export const initState: State = { |
| endpointPercent: { |
| p50: [], |
| p75: [], |
| p90: [], |
| p95: [], |
| p99: [], |
| }, |
| endpointResponseTime: { ResponseTime: [] }, |
| endpointThroughput: { Throughput: [] }, |
| endpointSLA: { SLA: [] }, |
| endpointSlowEndpoint: [], |
| endpointTraces: [], |
| endpointTopology: { calls: [], nodes: [] }, |
| }; |
| |
| |
| export const SetEndpoint = (state: State, params: any) => { |
| if (params && |
| params.endpointP50 && params.endpointP75 && params.endpointP90 && params.endpointP95 && params.endpointP99) { |
| state.endpointPercent.p50 = params.endpointP50.values.map((i: Value) => i.value); |
| state.endpointPercent.p75 = params.endpointP75.values.map((i: Value) => i.value); |
| state.endpointPercent.p90 = params.endpointP90.values.map((i: Value) => i.value); |
| state.endpointPercent.p95 = params.endpointP95.values.map((i: Value) => i.value); |
| state.endpointPercent.p99 = params.endpointP99.values.map((i: Value) => i.value); |
| } |
| if (params && params.endpointResponseTime) { |
| state.endpointResponseTime.ResponseTime = params.endpointResponseTime.values.map((i: Value) => i.value); |
| } |
| if (params && params.endpointThroughput) { |
| state.endpointThroughput.Throughput = params.endpointThroughput.values.map((i: Value) => i.value); |
| } |
| if (params && params.endpointSLA) { |
| state.endpointSLA.SLA = params.endpointSLA.values.map((i: Value) => i.value / 100); |
| } |
| if (params && params.endpointSlowEndpoint) { |
| state.endpointSlowEndpoint = params.endpointSlowEndpoint; |
| } |
| if (params && params.endpointTopology) { |
| state.endpointTopology.nodes = params.endpointTopology.nodes; |
| state.endpointTopology.calls = params.endpointTopology.calls.map((i: Value) => ({...i, value: 1})); |
| } |
| if (params && params.endpointTraces) { |
| state.endpointTraces = params.endpointTraces.traces.map((i: any) => ({ |
| key: i.key, |
| label: i.endpointNames[0], |
| value: i.duration, |
| traceIds: i.traceIds, |
| })); |
| } |
| }; |