xref: /aosp_15_r20/external/grpc-grpc-java/services/src/main/java/io/grpc/services/MetricReport.java (revision e07d83d3ffcef9ecfc9f7f475418ec639ff0e5fe)
1 /*
2  * Copyright 2022 The gRPC Authors
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package io.grpc.services;
18 
19 import static com.google.common.base.Preconditions.checkNotNull;
20 
21 import com.google.common.base.MoreObjects;
22 import io.grpc.ExperimentalApi;
23 import java.util.Map;
24 
25 /**
26  * A gRPC object of orca load report. LB policies listening at per-rpc or oob orca load reports
27  * will be notified of the metrics data in this data format.
28  */
29 @ExperimentalApi("https://github.com/grpc/grpc-java/issues/9381")
30 public final class MetricReport {
31   private double cpuUtilization;
32   private double applicationUtilization;
33   private double memoryUtilization;
34   private double qps;
35   private double eps;
36   private Map<String, Double> requestCostMetrics;
37   private Map<String, Double> utilizationMetrics;
38 
MetricReport(double cpuUtilization, double applicationUtilization, double memoryUtilization, double qps, double eps, Map<String, Double> requestCostMetrics, Map<String, Double> utilizationMetrics)39   MetricReport(double cpuUtilization, double applicationUtilization, double memoryUtilization,
40       double qps, double eps, Map<String, Double> requestCostMetrics,
41       Map<String, Double> utilizationMetrics) {
42     this.cpuUtilization = cpuUtilization;
43     this.applicationUtilization = applicationUtilization;
44     this.memoryUtilization = memoryUtilization;
45     this.qps = qps;
46     this.eps = eps;
47     this.requestCostMetrics = checkNotNull(requestCostMetrics, "requestCostMetrics");
48     this.utilizationMetrics = checkNotNull(utilizationMetrics, "utilizationMetrics");
49   }
50 
getCpuUtilization()51   public double getCpuUtilization() {
52     return cpuUtilization;
53   }
54 
getApplicationUtilization()55   public double getApplicationUtilization() {
56     return applicationUtilization;
57   }
58 
getMemoryUtilization()59   public double getMemoryUtilization() {
60     return memoryUtilization;
61   }
62 
getRequestCostMetrics()63   public Map<String, Double> getRequestCostMetrics() {
64     return requestCostMetrics;
65   }
66 
getUtilizationMetrics()67   public Map<String, Double> getUtilizationMetrics() {
68     return utilizationMetrics;
69   }
70 
getQps()71   public double getQps() {
72     return qps;
73   }
74 
getEps()75   public double getEps() {
76     return eps;
77   }
78 
79   @Override
toString()80   public String toString() {
81     return MoreObjects.toStringHelper(this)
82         .add("cpuUtilization", cpuUtilization)
83         .add("applicationUtilization", applicationUtilization)
84         .add("memoryUtilization", memoryUtilization)
85         .add("requestCost", requestCostMetrics)
86         .add("utilization", utilizationMetrics)
87         .add("qps", qps)
88         .add("eps", eps)
89         .toString();
90   }
91 }
92