(ctx context.Context, start, end time.Time, groupBy string, limit int, wheres []monitor.MonWhereItem)
| 296 | } |
| 297 | |
| 298 | func (e *executor) CommonStatistics(ctx context.Context, start, end time.Time, groupBy string, limit int, wheres []monitor.MonWhereItem) (map[string]monitor.MonCommonData, error) { |
| 299 | filters := formatFilter(wheres) |
| 300 | newStartTime, _, _, bucket := getTimeIntervalAndBucket(start, end) |
| 301 | |
| 302 | statisticsConf := []*flux.StatisticsFilterConf{ |
| 303 | { |
| 304 | Measurement: "request", |
| 305 | AggregateFn: "sum()", |
| 306 | Fields: []string{"total", "success", "timing", "request"}, |
| 307 | }, |
| 308 | { |
| 309 | Measurement: "proxy", |
| 310 | AggregateFn: "sum()", |
| 311 | Fields: []string{"p_total", "p_success"}, |
| 312 | }, |
| 313 | { |
| 314 | Measurement: "request", |
| 315 | AggregateFn: "max()", |
| 316 | Fields: []string{"timing_max", "request_max"}, |
| 317 | }, { |
| 318 | Measurement: "request", |
| 319 | AggregateFn: "min()", |
| 320 | Fields: []string{"timing_min", "request_min"}, |
| 321 | }, |
| 322 | } |
| 323 | |
| 324 | results, err := e.fluxQuery.CommonStatistics(ctx, e.openApi, newStartTime, end, bucket, groupBy, filters, statisticsConf, limit) |
| 325 | if err != nil { |
| 326 | return nil, err |
| 327 | } |
| 328 | resultMap := make(map[string]monitor.MonCommonData) |
| 329 | for key, result := range results { |
| 330 | |
| 331 | requestRate := 0.0 |
| 332 | if result.Total == 0 { |
| 333 | requestRate = 0.0 |
| 334 | } else { |
| 335 | requestRate = FormatFloat64(float64(result.Success)/float64(result.Total), 4) |
| 336 | } |
| 337 | |
| 338 | proxyRate := 0.0 |
| 339 | if result.ProxyTotal == 0 { |
| 340 | proxyRate = 0.0 |
| 341 | } else { |
| 342 | proxyRate = FormatFloat64(float64(result.ProxySuccess)/float64(result.ProxyTotal), 4) |
| 343 | } |
| 344 | |
| 345 | monCommonData := monitor.MonCommonData{ |
| 346 | ID: key, |
| 347 | RequestTotal: result.Total, |
| 348 | RequestSuccess: result.Success, |
| 349 | RequestRate: requestRate, |
| 350 | ProxyTotal: result.ProxyTotal, |
| 351 | ProxySuccess: result.ProxySuccess, |
| 352 | ProxyRate: proxyRate, |
| 353 | StatusFail: result.Total - result.Success, |
| 354 | AvgResp: float64(result.TotalTiming) / float64(result.Total), |
| 355 | MaxResp: result.MaxTiming, |
nothing calls this directly
no test coverage detected