func NewStatsTrackerWithTimeProvider(timeFrame time.Duration, bucketSize time.Duration, timeProvider timeProvider) *StatsTracker {
	return &StatsTracker{
		aggregatedAvgPoints:  make([]*taggedPoint, 0),
		aggregatedPeakPoints: make([]*taggedPoint, 0),
		timeFrame:            int64(timeFrame),
		bucketFrame:          int64(bucketSize),
		timeProvider:         timeProvider,
		lock:                 &sync.Mutex{},
	}
}
// NewStatsTrackerWithTimeProvider Creates a new StatsTracker instance with a time provider closure (mostly for testing)
NewStatsTrackerWithTimeProvider Creates a new StatsTracker instance with a time provider closure (mostly for testing)
// NewStatsTrackerWithTimeProvider Creates a new StatsTracker instance with a time provider closure ( mostly for testing )
func NewStatsTrackerWithTimeProvider(timeFrame time.Duration, bucketSize time.Duration, timeProvider timeProvider) *StatsTracker {
	return &StatsTracker{
		aggregatedAvgPoints:  make([]*taggedPoint, 0),
		aggregatedPeakPoints: make([]*taggedPoint, 0),
		timeFrame:            int64(timeFrame),
		bucketFrame:          int64(bucketSize),
		timeProvider:         timeProvider,
		lock:                 &sync.Mutex{},
	}
}
func NewStatsTrackerWithTimeProvider ( timeFrame time . Duration , bucketSize time . Duration , timeProvider timeProvider ) * StatsTracker { return & StatsTracker { aggregatedAvgPoints : make ( [ ] * taggedPoint , 0 ) , aggregatedPeakPoints : make ( [ ] * taggedPoint , 0 ) , timeFrame : int64 ( timeFrame ) , bucketFrame : int64 ( bucketSize ) , timeProvider : timeProvider , lock : & sync . Mutex { } , } }
NewStatsTrackerWithTimeProvider Creates a new StatsTracker instance with a time provider closure (mostly for testing)
NewStatsTrackerWithTimeProvider Creates a new StatsTracker instance with a time provider closure ( mostly for testing )