Example #1
0
        public void AdaptiveSampler_CheckMaxTelemetry_OutOfBound()
        {
            AdaptiveSampler sampler = new AdaptiveSampler(-5, 0.5);

            sampler.CheckMaxTelemetryItemsPerSecond(-5);
            Assert.Equal(0, sampler.GetMaxTelemetryItemsPerSecond());
        }
Example #2
0
        public void AdaptiveSampler_CheckNewProbability_Adjusted()
        {
            double             oldProbability    = 0.5;
            int                maxSamplesAllowed = 10; // should stay at 0.5
            SamplingParameters parameters        = new SamplingParameters(this.parent, this.traceId, "test", this.activityKindServer, null, null);
            AdaptiveSampler    sampler           = new AdaptiveSampler(maxSamplesAllowed, oldProbability);

            // run for 200 seconds to let adaptive sampling adjust
            for (int i = 0; i < 200; i++)
            {
                // send 20 events each second
                int events = 20;
                for (int j = 0; j < events; j++)
                {
                    sampler.ShouldSample(parameters);
                    Thread.Sleep(1000 / events);
                }
            }

            // probability should be around (10/20) 0.5
            double expectedProbability = 0.5;

            Assert.True(expectedProbability - 0.1 <= sampler.ProbSampler.GetProbability() && sampler.ProbSampler.GetProbability() <= expectedProbability + 0.2);

            // max increases, so probability should increase to around 1
            sampler.CheckMaxTelemetryItemsPerSecond(40);

            // run for 200 seconds to let adaptive sampling adjust
            for (int i = 0; i < 200; i++)
            {
                // send 20 events each second
                int events = 20;
                for (int j = 0; j < events; j++)
                {
                    sampler.ShouldSample(parameters);
                    Thread.Sleep(1000 / events);
                }
            }

            expectedProbability = 1;
            Assert.Equal(expectedProbability, sampler.ProbSampler.GetProbability());
            Assert.True(expectedProbability - 0.1 <= sampler.ProbSampler.GetProbability() && sampler.ProbSampler.GetProbability() <= expectedProbability + 0.2);
        }