Ejemplo n.º 1
0
        public void RateLimitingSampler_UsesTheRateLimiter()
        {
            var maxTracesPerSecond = 3.6;
            var traceId            = new TraceId(1);
            var expectedTags       = new Dictionary <string, object> {
                { SamplerConstants.SamplerTypeTagKey, SamplerConstants.SamplerTypeRateLimiting },
                { SamplerConstants.SamplerParamTagKey, maxTracesPerSecond }
            };
            var    rateLimiter  = Substitute.For <IRateLimiter>();
            double calledWith   = 0;
            var    shouldReturn = false;

            rateLimiter.CheckCredit(Arg.Any <double>()).Returns(x => {
                calledWith = (double)x[0];
                return(shouldReturn);
            });

            var sampler   = new RateLimitingSampler(maxTracesPerSecond, rateLimiter);
            var isSampled = sampler.IsSampled(traceId, "op");

            Assert.False(isSampled.Sampled);
            Assert.Equal(1.0, calledWith);

            shouldReturn = true;
            isSampled    = sampler.IsSampled(traceId, "op");

            Assert.True(isSampled.Sampled);
            Assert.Equal(1.0, calledWith);
            Assert.Equal(expectedTags, isSampled.Tags);
        }
        public void TestTags()
        {
            RateLimitingSampler sampler = new RateLimitingSampler(123);
            var tags = sampler.Sample("operate", new TraceId(11L)).Tags;

            Assert.Equal("ratelimiting", tags["sampler.type"]);
            Assert.Equal(123.0, tags["sampler.param"]);
        }
Ejemplo n.º 3
0
        public void RateLimitingSampler_UsesDefaultRateLimiter()
        {
            var maxTracesPerSecond = 5.4;
            var sampler            = new RateLimitingSampler(maxTracesPerSecond);

            Assert.Equal(maxTracesPerSecond, sampler.MaxTracesPerSecond);
            Assert.IsType <RateLimiter>(sampler._rateLimiter);
            sampler.Dispose();
        }
Ejemplo n.º 4
0
        public void RateLimiterAllowsMaxUnitsPerInterval()
        {
            var sampler = new RateLimitingSampler(new RateLimiter(1, TimeSpan.FromDays(1)));

            Thread.Sleep(500); //give us time to init
            using (sampler)
            {
                Assert.True(sampler.Sample("op", 5));
                Assert.False(sampler.Sample("op", 5));
            }
        }
Ejemplo n.º 5
0
        public void RateLimiterSetsCorrectTags()
        {
            var rateLimiter = new RateLimiter(1, TimeSpan.FromDays(1));
            var sampler     = new RateLimitingSampler(rateLimiter);

            Thread.Sleep(20);
            using (sampler)
            {
                var sample = sampler.Sample("op", 56);
                Assert.Equal("ratelimiting", sample.Tags["sampler"]);
                Assert.Equal(rateLimiter.ToString(), sample.Tags["sampler-arg"]);
            }
        }