コード例 #1
0
        public void Random_numbers_are_spread_uniformly(int seed, int measurementsCount, int range, bool log)
        {
            var reservoir = new UniformHistogramReservoir();
            var random    = new Random(seed);

            for (var i = 0; i < measurementsCount; i++)
            {
                reservoir.Add(random.Next(range));
            }

            var snapshot = reservoir.GetSnapshot();

            var maxError = range * 0.05;

            snapshot.MeasurementsCount.Should().Be(measurementsCount);
            AssertQuantile(snapshot, 0, range, maxError, log);
            AssertQuantile(snapshot, 0.25, range, maxError, log);
            AssertQuantile(snapshot, 0.50, range, maxError, log);
            AssertQuantile(snapshot, 0.75, range, maxError, log);
            AssertQuantile(snapshot, 0.90, range, maxError, log);
            AssertQuantile(snapshot, 0.95, range, maxError, log);
            AssertQuantile(snapshot, 0.99, range, maxError, log);
            AssertQuantile(snapshot, 0.999, range, maxError, log);
            AssertQuantile(snapshot, 1, range, maxError, log);
        }
コード例 #2
0
        public void Snapshot_should_contain_measurementCount_values_if_it_is_less_than_buckets_count()
        {
            var reservoir = new UniformHistogramReservoir();

            for (var i = 0; i < 10; i++)
            {
                reservoir.Add(i);
            }

            var snapshot = reservoir.GetSnapshot();

            snapshot.Sample.Count.Should().Be(10);
        }
コード例 #3
0
ファイル: Meter.cs プロジェクト: vostok/airlock.consumer
 public Meter()
 {
     histogram = new UniformHistogramReservoir();
 }