Merge "Addressing Technical Debt for ONAP-XACML"
[policy/engine.git] / ONAP-XACML / src / main / java / org / onap / policy / xacml / util / MetricsUtil.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP-XACML
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20 package org.onap.policy.xacml.util;
21
22 public class MetricsUtil {
23         
24         public static class AvgLatency {
25                 private long cumLatency = 0;
26                 private long count = 0;
27                 
28                 public void compute(long latency) {
29                         cumLatency += latency;
30                         count++;
31                 }
32                 
33                 public long avg() {
34                         if (count == 0)
35                                 return 0;
36                         
37                         return cumLatency / count;
38                 }
39                 
40                 public void reset() {
41                         cumLatency = 0;
42                         count = 0;
43                 }
44         }
45
46         public static class MinLatency {
47                 private long min = Long.MAX_VALUE;
48                 
49                 public synchronized void compute(long ts) {
50                         if (ts < min)
51                                 min = ts;
52                 }
53                 
54                 public long min() {
55                         return min;
56                 }
57                 
58                 public void reset() {
59                         min = Long.MAX_VALUE;
60                 }
61         }
62
63         public static class MaxLatency {
64                 private long max = Long.MIN_VALUE;
65                 
66                 public synchronized void compute(long ts) {
67                         if (ts > max)
68                                 max = ts;
69                 }
70                 
71                 public long max() {
72                         return max;
73                 }
74                 
75                 public void reset() {
76                         max = Long.MIN_VALUE;
77                 }
78         }
79
80 }