com.gemstone.gemfire.management.internal.beans.MetricsCalculator Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of gemfire-core Show documentation
Show all versions of gemfire-core Show documentation
SnappyData store based off Pivotal GemFireXD
The newest version!
/*
* Copyright (c) 2010-2015 Pivotal Software, Inc. All rights reserved.
*
* Licensed 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. See accompanying
* LICENSE file.
*/
package com.gemstone.gemfire.management.internal.beans;
import java.util.concurrent.TimeUnit;
import com.gemstone.gemfire.management.internal.ManagementConstants;
/**
* This is a utility class to calculate various type of Metrics out of raw stats
*
* @author rishim
*
*/
public class MetricsCalculator {
private static TimeUnit milliSeconds = TimeUnit.MILLISECONDS;
private static long toSeconds(long fromTime, long toTime) {
return milliSeconds.toSeconds((toTime - fromTime));
}
public static float getRate(int Xn, int Xn1, long fromTime, long toTime) {
float tempXn = Xn;
float tempXn1 = Xn1;
long secondsFactor;
if(fromTime == 0){
secondsFactor = 0;
}else{
secondsFactor = toSeconds(fromTime,toTime);
}
float num = (tempXn1 - tempXn) / ((secondsFactor == 0) ? 1 : secondsFactor);
return Round(num, 3);
// return num;
}
public static float getRate(long Xn, long Xn1, long fromTime, long toTime) {
float tempXn = Xn;
float tempXn1 = Xn1;
long secondsFactor;
if(fromTime == 0){
secondsFactor = 0;
}else{
secondsFactor = toSeconds(fromTime,toTime);
}
float num = (tempXn1 - tempXn) /((secondsFactor == 0) ? 1 : secondsFactor);
return Round(num, 3);
// return num;
}
public static long getLatency(int Xn, int Xn1, long XNTime, long XN1Time) {
if ((Xn1 - Xn) != 0) {
return (XN1Time -XNTime) / (Xn1 - Xn);
}
return 0;
}
public static long getLatency(long Xn, long Xn1, long XNTime, long XN1Time) {
if ((Xn1 - Xn) != 0) {
return (XN1Time -XNTime) / (Xn1 - Xn);
}
return 0;
}
public static long getAverageLatency(int Xn, long XNTime) {
if (Xn != 0 && XNTime != 0) {
return XNTime / Xn;
}
return 0;
}
public static long getAverageLatency(long Xn, long XNTime) {
if (Xn != 0 && XNTime != 0) {
return XNTime / Xn;
}
return 0;
}
// Overloaded getAverage Methods //
public static int getAverage(int totalNumber, int size) {
if (totalNumber != 0 && size != 0) {
return totalNumber / size;
}
return 0;
}
public static long getAverage(long totalNumber, int size) {
if (totalNumber != 0 && size != 0) {
return totalNumber / size;
}
return 0;
}
public static float getAverage(float totalNumber, int size) {
if (totalNumber != 0 && size != 0) {
return totalNumber / size;
}
return 0;
}
public static double getAverage(double totalNumber, int size) {
if (totalNumber != 0 && size != 0) {
return totalNumber / size;
}
return 0;
}
public static float Round(float Rval, int Rpl) {
float p = (float) Math.pow(10, Rpl);
Rval = Rval * p;
float tmp = Math.round(Rval);
return (float) tmp / p;
}
}