示例#1
0
        public void TestAdd()
        {
            var longHistogram = new LongHistogram(HighestTrackableValue, NumberOfSignificantValueDigits);
            var other         = new LongHistogram(HighestTrackableValue, NumberOfSignificantValueDigits);

            longHistogram.RecordValue(TestValueLevel);
            longHistogram.RecordValue(TestValueLevel * 1000);
            other.RecordValue(TestValueLevel);
            other.RecordValue(TestValueLevel * 1000);
            longHistogram.Add(other);
            Assert.AreEqual(2L, longHistogram.GetCountAtValue(TestValueLevel));
            Assert.AreEqual(2L, longHistogram.GetCountAtValue(TestValueLevel * 1000));
            Assert.AreEqual(4L, longHistogram.TotalCount);

            var biggerOther = new LongHistogram(HighestTrackableValue * 2, NumberOfSignificantValueDigits);

            biggerOther.RecordValue(TestValueLevel);
            biggerOther.RecordValue(TestValueLevel * 1000);

            // Adding the smaller histogram to the bigger one should work:
            biggerOther.Add(longHistogram);
            Assert.AreEqual(3L, biggerOther.GetCountAtValue(TestValueLevel));
            Assert.AreEqual(3L, biggerOther.GetCountAtValue(TestValueLevel * 1000));
            Assert.AreEqual(6L, biggerOther.TotalCount);

            // But trying to add a larger histogram into a smaller one should throw an AIOOB:
            Assert.Throws <ArgumentOutOfRangeException>(() => { longHistogram.Add(biggerOther); });
        }
 public void TestGetCountAtValue()
 {
     Assert.AreEqual(0, RawHistogram.GetCountBetweenValues(10000L, 10010L), "Count of raw values at 10 msec is 0");
     Assert.AreEqual(1, LongHistogram.GetCountBetweenValues(10000L, 10010L), "Count of values at 10 msec is 0");
     Assert.AreEqual(10000, RawHistogram.GetCountAtValue(1000L), "Count of raw values at 1 msec is 10,000");
     Assert.AreEqual(10000, LongHistogram.GetCountAtValue(1000L), "Count of values at 1 msec is 10,000");
 }
示例#3
0
 public void TestRecordValue()
 {
     var longHistogram = new LongHistogram(HighestTrackableValue, NumberOfSignificantValueDigits);
     longHistogram.RecordValue(TestValueLevel);
     Assert.AreEqual(1L, longHistogram.GetCountAtValue(TestValueLevel));
     Assert.AreEqual(1L, longHistogram.TotalCount);
 }
示例#4
0
        public void TestRecordValue()
        {
            var longHistogram = new LongHistogram(HighestTrackableValue, NumberOfSignificantValueDigits);

            longHistogram.RecordValue(TestValueLevel);
            Assert.AreEqual(1L, longHistogram.GetCountAtValue(TestValueLevel));
            Assert.AreEqual(1L, longHistogram.TotalCount);
        }
示例#5
0
 public void TestRecordValueWithExpectedInterval()
 {
     var longHistogram = new LongHistogram(HighestTrackableValue, NumberOfSignificantValueDigits);
     longHistogram.RecordValueWithExpectedInterval(TestValueLevel, TestValueLevel / 4);
     var rawHistogram = new LongHistogram(HighestTrackableValue, NumberOfSignificantValueDigits);
     rawHistogram.RecordValue(TestValueLevel);
     // The data will include corrected samples:
     Assert.AreEqual(1L, longHistogram.GetCountAtValue((TestValueLevel * 1) / 4));
     Assert.AreEqual(1L, longHistogram.GetCountAtValue((TestValueLevel * 2) / 4));
     Assert.AreEqual(1L, longHistogram.GetCountAtValue((TestValueLevel * 3) / 4));
     Assert.AreEqual(1L, longHistogram.GetCountAtValue((TestValueLevel * 4) / 4));
     Assert.AreEqual(4L, longHistogram.TotalCount);
     // But the raw data will not:
     Assert.AreEqual(0L, rawHistogram.GetCountAtValue((TestValueLevel * 1) / 4));
     Assert.AreEqual(0L, rawHistogram.GetCountAtValue((TestValueLevel * 2) / 4));
     Assert.AreEqual(0L, rawHistogram.GetCountAtValue((TestValueLevel * 3) / 4));
     Assert.AreEqual(1L, rawHistogram.GetCountAtValue((TestValueLevel * 4) / 4));
     Assert.AreEqual(1L, rawHistogram.TotalCount);
 }
示例#6
0
        public void TestRecordValueWithExpectedInterval()
        {
            var longHistogram = new LongHistogram(HighestTrackableValue, NumberOfSignificantValueDigits);

            longHistogram.RecordValueWithExpectedInterval(TestValueLevel, TestValueLevel / 4);
            var rawHistogram = new LongHistogram(HighestTrackableValue, NumberOfSignificantValueDigits);

            rawHistogram.RecordValue(TestValueLevel);
            // The data will include corrected samples:
            Assert.AreEqual(1L, longHistogram.GetCountAtValue((TestValueLevel * 1) / 4));
            Assert.AreEqual(1L, longHistogram.GetCountAtValue((TestValueLevel * 2) / 4));
            Assert.AreEqual(1L, longHistogram.GetCountAtValue((TestValueLevel * 3) / 4));
            Assert.AreEqual(1L, longHistogram.GetCountAtValue((TestValueLevel * 4) / 4));
            Assert.AreEqual(4L, longHistogram.TotalCount);
            // But the raw data will not:
            Assert.AreEqual(0L, rawHistogram.GetCountAtValue((TestValueLevel * 1) / 4));
            Assert.AreEqual(0L, rawHistogram.GetCountAtValue((TestValueLevel * 2) / 4));
            Assert.AreEqual(0L, rawHistogram.GetCountAtValue((TestValueLevel * 3) / 4));
            Assert.AreEqual(1L, rawHistogram.GetCountAtValue((TestValueLevel * 4) / 4));
            Assert.AreEqual(1L, rawHistogram.TotalCount);
        }
示例#7
0
        public void RecordValueWithExpectedInterval()
        {
            var TestValueLevel = 4L;
            var recorder       = Create(DefautltLowestDiscernibleValue, DefaultHighestTrackableValue, DefaultSignificantFigures);
            var valueHistogram = new LongHistogram(DefaultHighestTrackableValue, DefaultSignificantFigures);

            recorder.RecordValueWithExpectedInterval(TestValueLevel, TestValueLevel / 4);
            valueHistogram.RecordValue(TestValueLevel);

            var intervalHistogram = recorder.GetIntervalHistogram();

            // The data will include corrected samples:
            Assert.AreEqual(1L, intervalHistogram.GetCountAtValue((TestValueLevel * 1) / 4));
            Assert.AreEqual(1L, intervalHistogram.GetCountAtValue((TestValueLevel * 2) / 4));
            Assert.AreEqual(1L, intervalHistogram.GetCountAtValue((TestValueLevel * 3) / 4));
            Assert.AreEqual(1L, intervalHistogram.GetCountAtValue((TestValueLevel * 4) / 4));
            Assert.AreEqual(4L, intervalHistogram.TotalCount);
            // But the raw data will not:
            Assert.AreEqual(0L, valueHistogram.GetCountAtValue((TestValueLevel * 1) / 4));
            Assert.AreEqual(0L, valueHistogram.GetCountAtValue((TestValueLevel * 2) / 4));
            Assert.AreEqual(0L, valueHistogram.GetCountAtValue((TestValueLevel * 3) / 4));
            Assert.AreEqual(1L, valueHistogram.GetCountAtValue((TestValueLevel * 4) / 4));
            Assert.AreEqual(1L, valueHistogram.TotalCount);
        }
示例#8
0
        public void GetIntervalHistogramInto_copies_data_over_provided_Histogram()
        {
            var originalStart   = DateTime.Today.AddDays(-1).MillisecondsSinceUnixEpoch();
            var originalEnd     = DateTime.Today.MillisecondsSinceUnixEpoch();
            var targetHistogram = new LongHistogram(DefautltLowestDiscernibleValue, DefaultHighestTrackableValue, DefaultSignificantFigures);

            targetHistogram.StartTimeStamp = originalStart;
            targetHistogram.RecordValue(1);
            targetHistogram.RecordValue(10);
            targetHistogram.RecordValue(100);
            targetHistogram.EndTimeStamp = originalEnd;


            Assert.AreEqual(3, targetHistogram.TotalCount);
            Assert.AreEqual(1, targetHistogram.GetCountAtValue(1));
            Assert.AreEqual(1, targetHistogram.GetCountAtValue(10));
            Assert.AreEqual(1, targetHistogram.GetCountAtValue(100));

            var recorder = Create(DefautltLowestDiscernibleValue, DefaultHighestTrackableValue, DefaultSignificantFigures);

            recorder.RecordValue(1000);
            recorder.RecordValue(10000);
            recorder.RecordValue(100000);

            recorder.GetIntervalHistogramInto(targetHistogram);

            Assert.AreEqual(3, targetHistogram.TotalCount);
            Assert.AreEqual(0, targetHistogram.GetCountAtValue(1));
            Assert.AreEqual(0, targetHistogram.GetCountAtValue(10));
            Assert.AreEqual(0, targetHistogram.GetCountAtValue(100));
            Assert.AreEqual(1, targetHistogram.GetCountAtValue(1000));
            Assert.AreEqual(1, targetHistogram.GetCountAtValue(10000));
            Assert.AreEqual(1, targetHistogram.GetCountAtValue(100000));
            Assert.AreNotEqual(originalStart, targetHistogram.StartTimeStamp);
            Assert.AreNotEqual(originalEnd, targetHistogram.EndTimeStamp);
        }
示例#9
0
        public void TestAdd()
        {
            var longHistogram = new LongHistogram(HighestTrackableValue, NumberOfSignificantValueDigits);
            var other = new LongHistogram(HighestTrackableValue, NumberOfSignificantValueDigits);
            longHistogram.RecordValue(TestValueLevel);
            longHistogram.RecordValue(TestValueLevel * 1000);
            other.RecordValue(TestValueLevel);
            other.RecordValue(TestValueLevel * 1000);
            longHistogram.Add(other);
            Assert.AreEqual(2L, longHistogram.GetCountAtValue(TestValueLevel));
            Assert.AreEqual(2L, longHistogram.GetCountAtValue(TestValueLevel * 1000));
            Assert.AreEqual(4L, longHistogram.TotalCount);

            var biggerOther = new LongHistogram(HighestTrackableValue * 2, NumberOfSignificantValueDigits);
            biggerOther.RecordValue(TestValueLevel);
            biggerOther.RecordValue(TestValueLevel * 1000);

            // Adding the smaller histogram to the bigger one should work:
            biggerOther.Add(longHistogram);
            Assert.AreEqual(3L, biggerOther.GetCountAtValue(TestValueLevel));
            Assert.AreEqual(3L, biggerOther.GetCountAtValue(TestValueLevel * 1000));
            Assert.AreEqual(6L, biggerOther.TotalCount);

            // But trying to add a larger histogram into a smaller one should throw an AIOOB:
            Assert.Throws<ArgumentOutOfRangeException>(() => { longHistogram.Add(biggerOther); });
        }
        public void GetIntervalHistogramInto_copies_data_over_provided_Histogram()
        {
            var originalStart = DateTime.Today.AddDays(-1).MillisecondsSinceUnixEpoch();
            var originalEnd = DateTime.Today.MillisecondsSinceUnixEpoch();
            var targetHistogram = new LongHistogram(1, HighestTrackableValue, 3);
            targetHistogram.StartTimeStamp = originalStart;
            targetHistogram.RecordValue(1);
            targetHistogram.RecordValue(10);
            targetHistogram.RecordValue(100);
            targetHistogram.EndTimeStamp = originalEnd;


            Assert.AreEqual(3, targetHistogram.TotalCount);
            Assert.AreEqual(1, targetHistogram.GetCountAtValue(1));
            Assert.AreEqual(1, targetHistogram.GetCountAtValue(10));
            Assert.AreEqual(1, targetHistogram.GetCountAtValue(100));

            var recorder = new Recorder(1, HighestTrackableValue, NumberOfSignificantValueDigits, (id, lowest, highest, sf) => new LongHistogram(id, lowest, highest, sf));
            recorder.RecordValue(1000);
            recorder.RecordValue(10000);
            recorder.RecordValue(100000);
            
            recorder.GetIntervalHistogramInto(targetHistogram);
            
            Assert.AreEqual(3, targetHistogram.TotalCount);
            Assert.AreEqual(0, targetHistogram.GetCountAtValue(1));
            Assert.AreEqual(0, targetHistogram.GetCountAtValue(10));
            Assert.AreEqual(0, targetHistogram.GetCountAtValue(100));
            Assert.AreEqual(1, targetHistogram.GetCountAtValue(1000));
            Assert.AreEqual(1, targetHistogram.GetCountAtValue(10000));
            Assert.AreEqual(1, targetHistogram.GetCountAtValue(100000));
            Assert.AreNotEqual(originalStart, targetHistogram.StartTimeStamp);
            Assert.AreNotEqual(originalEnd, targetHistogram.EndTimeStamp);
        }
        public void RecordValueWithExpectedInterval()
        {
            var TestValueLevel = 4L;
            var recorder = new Recorder(1, HighestTrackableValue, NumberOfSignificantValueDigits, (id, lowest, highest, sf) => new LongHistogram(id, lowest, highest, sf));
            var valueHistogram = new LongHistogram(HighestTrackableValue, NumberOfSignificantValueDigits);

            recorder.RecordValueWithExpectedInterval(TestValueLevel, TestValueLevel / 4);
            valueHistogram.RecordValue(TestValueLevel);

            var intervalHistogram = recorder.GetIntervalHistogram();
            // The data will include corrected samples:
            Assert.AreEqual(1L, intervalHistogram.GetCountAtValue((TestValueLevel * 1) / 4));
            Assert.AreEqual(1L, intervalHistogram.GetCountAtValue((TestValueLevel * 2) / 4));
            Assert.AreEqual(1L, intervalHistogram.GetCountAtValue((TestValueLevel * 3) / 4));
            Assert.AreEqual(1L, intervalHistogram.GetCountAtValue((TestValueLevel * 4) / 4));
            Assert.AreEqual(4L, intervalHistogram.TotalCount);
            // But the raw data will not:
            Assert.AreEqual(0L, valueHistogram.GetCountAtValue((TestValueLevel * 1) / 4));
            Assert.AreEqual(0L, valueHistogram.GetCountAtValue((TestValueLevel * 2) / 4));
            Assert.AreEqual(0L, valueHistogram.GetCountAtValue((TestValueLevel * 3) / 4));
            Assert.AreEqual(1L, valueHistogram.GetCountAtValue((TestValueLevel * 4) / 4));
            Assert.AreEqual(1L, valueHistogram.TotalCount);
        }
        public void GetIntervalHistogramInto_copies_data_over_provided_Histogram()
        {
            var originalStart = DateTime.Today.AddDays(-1).MillisecondsSinceUnixEpoch();
            var originalEnd = DateTime.Today.MillisecondsSinceUnixEpoch();
            var targetHistogram = new LongHistogram(DefautltLowestDiscernibleValue, DefaultHighestTrackableValue, DefaultSignificantFigures);
            targetHistogram.StartTimeStamp = originalStart;
            targetHistogram.RecordValue(1);
            targetHistogram.RecordValue(10);
            targetHistogram.RecordValue(100);
            targetHistogram.EndTimeStamp = originalEnd;


            Assert.AreEqual(3, targetHistogram.TotalCount);
            Assert.AreEqual(1, targetHistogram.GetCountAtValue(1));
            Assert.AreEqual(1, targetHistogram.GetCountAtValue(10));
            Assert.AreEqual(1, targetHistogram.GetCountAtValue(100));

            var recorder = Create(DefautltLowestDiscernibleValue, DefaultHighestTrackableValue, DefaultSignificantFigures);
            recorder.RecordValue(1000);
            recorder.RecordValue(10000);
            recorder.RecordValue(100000);
            
            recorder.GetIntervalHistogramInto(targetHistogram);
            
            Assert.AreEqual(3, targetHistogram.TotalCount);
            Assert.AreEqual(0, targetHistogram.GetCountAtValue(1));
            Assert.AreEqual(0, targetHistogram.GetCountAtValue(10));
            Assert.AreEqual(0, targetHistogram.GetCountAtValue(100));
            Assert.AreEqual(1, targetHistogram.GetCountAtValue(1000));
            Assert.AreEqual(1, targetHistogram.GetCountAtValue(10000));
            Assert.AreEqual(1, targetHistogram.GetCountAtValue(100000));
            Assert.AreNotEqual(originalStart, targetHistogram.StartTimeStamp);
            Assert.AreNotEqual(originalEnd, targetHistogram.EndTimeStamp);
        }
        public void RecordValueWithExpectedInterval()
        {
            var TestValueLevel = 4L;
            var recorder = Create(DefautltLowestDiscernibleValue, DefaultHighestTrackableValue, DefaultSignificantFigures);
            var valueHistogram = new LongHistogram(DefaultHighestTrackableValue, DefaultSignificantFigures);

            recorder.RecordValueWithExpectedInterval(TestValueLevel, TestValueLevel / 4);
            valueHistogram.RecordValue(TestValueLevel);

            var intervalHistogram = recorder.GetIntervalHistogram();
            // The data will include corrected samples:
            Assert.AreEqual(1L, intervalHistogram.GetCountAtValue((TestValueLevel * 1) / 4));
            Assert.AreEqual(1L, intervalHistogram.GetCountAtValue((TestValueLevel * 2) / 4));
            Assert.AreEqual(1L, intervalHistogram.GetCountAtValue((TestValueLevel * 3) / 4));
            Assert.AreEqual(1L, intervalHistogram.GetCountAtValue((TestValueLevel * 4) / 4));
            Assert.AreEqual(4L, intervalHistogram.TotalCount);
            // But the raw data will not:
            Assert.AreEqual(0L, valueHistogram.GetCountAtValue((TestValueLevel * 1) / 4));
            Assert.AreEqual(0L, valueHistogram.GetCountAtValue((TestValueLevel * 2) / 4));
            Assert.AreEqual(0L, valueHistogram.GetCountAtValue((TestValueLevel * 3) / 4));
            Assert.AreEqual(1L, valueHistogram.GetCountAtValue((TestValueLevel * 4) / 4));
            Assert.AreEqual(1L, valueHistogram.TotalCount);
        }