protected override MetricAggregate CreateAggregate(DateTimeOffset periodEnd) { double last, min, max; lock (_updateLock) { if (!_data.HasValues) { return(null); } min = _data.Min; max = _data.Max; last = _data.Last; } last = Util.EnsureConcreteValue(last); min = Util.EnsureConcreteValue(min); max = Util.EnsureConcreteValue(max); MetricAggregate aggregate = new MetricAggregate( DataSeries?.MetricId ?? Util.NullString, MetricAggregateKinds.Gauge.Moniker); aggregate.AggregateData[MetricAggregateKinds.Gauge.DataKeys.Last] = last; aggregate.AggregateData[MetricAggregateKinds.Gauge.DataKeys.Min] = min; aggregate.AggregateData[MetricAggregateKinds.Gauge.DataKeys.Max] = max; AddInfo_Timing_Dimensions_Context(aggregate, periodEnd); return(aggregate); }
protected override MetricAggregate CreateAggregate(DateTimeOffset periodEnd) { double sum, min, max; lock (_updateLock) { sum = _sum; min = _min; max = _max; } if (_min > _max) { return(null); } sum = Util.EnsureConcreteValue(sum); min = Util.EnsureConcreteValue(min); max = Util.EnsureConcreteValue(max); MetricAggregate aggregate = new MetricAggregate( DataSeries?.MetricId ?? Util.NullString, MetricAggregateKinds.Accumulator.Moniker); aggregate.AggregateData[MetricAggregateKinds.SimpleStatistics.DataKeys.Sum] = sum; aggregate.AggregateData[MetricAggregateKinds.SimpleStatistics.DataKeys.Min] = min; aggregate.AggregateData[MetricAggregateKinds.SimpleStatistics.DataKeys.Max] = max; AddInfo_Timing_Dimensions_Context(aggregate, periodEnd); return(aggregate); }
protected override MetricAggregate CreateAggregate(DateTimeOffset periodEnd) { int count; double sum, min, max, stdDev; lock (this.updateLock) { count = this.data.Count; sum = this.data.Sum; min = 0.0; max = 0.0; stdDev = 0.0; if (count > 0) { min = this.data.Min; max = this.data.Max; if (Double.IsInfinity(this.data.SumOfSquares) || Double.IsInfinity(sum)) { stdDev = Double.NaN; } else { double mean = sum / count; double variance = (this.data.SumOfSquares / count) - (mean * mean); stdDev = Math.Sqrt(variance); } } } sum = Util.EnsureConcreteValue(sum); if (count > 0) { min = Util.EnsureConcreteValue(min); max = Util.EnsureConcreteValue(max); stdDev = Util.EnsureConcreteValue(stdDev); } MetricAggregate aggregate = new MetricAggregate( this.DataSeries?.MetricIdentifier.MetricNamespace ?? String.Empty, this.DataSeries?.MetricIdentifier.MetricId ?? Util.NullString, MetricSeriesConfigurationForMeasurement.Constants.AggregateKindMoniker); aggregate.Data[MetricSeriesConfigurationForMeasurement.Constants.AggregateKindDataKeys.Count] = count; aggregate.Data[MetricSeriesConfigurationForMeasurement.Constants.AggregateKindDataKeys.Sum] = sum; aggregate.Data[MetricSeriesConfigurationForMeasurement.Constants.AggregateKindDataKeys.Min] = min; aggregate.Data[MetricSeriesConfigurationForMeasurement.Constants.AggregateKindDataKeys.Max] = max; aggregate.Data[MetricSeriesConfigurationForMeasurement.Constants.AggregateKindDataKeys.StdDev] = stdDev; this.AddInfo_Timing_Dimensions_Context(aggregate, periodEnd); return(aggregate); }
protected override MetricAggregate CreateAggregate(DateTimeOffset periodEnd) { int count; double sum, min, max, stdDev; lock (_updateLock) { count = _data.Count; sum = _data.Sum; min = 0.0; max = 0.0; stdDev = 0.0; if (count > 0) { min = _data.Min; max = _data.Max; if (Double.IsInfinity(_data.SumOfSquares) || Double.IsInfinity(sum)) { stdDev = Double.NaN; } else { double mean = sum / count; double variance = (_data.SumOfSquares / count) - (mean * mean); stdDev = Math.Sqrt(variance); } } } sum = Util.EnsureConcreteValue(sum); if (count > 0) { min = Util.EnsureConcreteValue(min); max = Util.EnsureConcreteValue(max); stdDev = Util.EnsureConcreteValue(stdDev); } MetricAggregate aggregate = new MetricAggregate( DataSeries?.MetricId ?? Util.NullString, MetricAggregateKinds.SimpleStatistics.Moniker); aggregate.AggregateData[MetricAggregateKinds.SimpleStatistics.DataKeys.Count] = count; aggregate.AggregateData[MetricAggregateKinds.SimpleStatistics.DataKeys.Sum] = sum; aggregate.AggregateData[MetricAggregateKinds.SimpleStatistics.DataKeys.Min] = min; aggregate.AggregateData[MetricAggregateKinds.SimpleStatistics.DataKeys.Max] = max; aggregate.AggregateData[MetricAggregateKinds.SimpleStatistics.DataKeys.StdDev] = stdDev; AddInfo_Timing_Dimensions_Context(aggregate, periodEnd); return(aggregate); }
public void EnsureConcreteValue() { Assert.AreEqual(-1.7976931348623157E+308, Util.EnsureConcreteValue(Double.MinValue)); Assert.AreEqual(Double.MinValue, Util.EnsureConcreteValue(-1.7976931348623157E+308)); Assert.AreEqual(1.7976931348623157E+308, Util.EnsureConcreteValue(Double.MaxValue)); Assert.AreEqual(Double.MaxValue, Util.EnsureConcreteValue(1.7976931348623157E+308)); Assert.AreEqual(4.94065645841247E-324, Util.EnsureConcreteValue(Double.Epsilon)); Assert.AreEqual(Double.Epsilon, Util.EnsureConcreteValue(4.94065645841247E-324)); Assert.AreEqual(0.0, Util.EnsureConcreteValue(Double.NaN)); Assert.AreEqual(Double.MinValue, Util.EnsureConcreteValue(Double.NegativeInfinity)); Assert.AreEqual(Double.MaxValue, Util.EnsureConcreteValue(Double.PositiveInfinity)); }