Exemple #1
0
        public IApdexMetric RunSamplesForApdexCalculation(
            double apdexTSeconds,
            int satisifedRequests,
            int toleratingRequests,
            int frustratingRequest,
            TestSamplePreference testSamplePreference)
        {
            var maxSatifiedDurationMilliseconds   = (int)(apdexTSeconds * 1000);
            var minToleratedDurationMilliseconds  = maxSatifiedDurationMilliseconds + 1;
            var maxToleratedDurationMilliseconds  = 4 * (int)(apdexTSeconds * 1000);
            var minFrustratedDurationMilliseconds = maxToleratedDurationMilliseconds + 1;
            var clock  = new TestClock();
            var random = new Random();

            var satisfiedRequestsDurations  = Enumerable.Range(1, satisifedRequests).Select(x => random.Next(1, maxSatifiedDurationMilliseconds));
            var toleratingRequestsDurations =
                Enumerable.Range(1, toleratingRequests).Select(x => random.Next(minToleratedDurationMilliseconds, maxToleratedDurationMilliseconds));
            var frustratingRequestsDurations =
                Enumerable.Range(1, frustratingRequest)
                .Select(x => random.Next(minFrustratedDurationMilliseconds, minFrustratedDurationMilliseconds * 2));

            var reservoir = new Lazy <IReservoir>(() => new DefaultForwardDecayingReservoir());

            var apdexMetric = new DefaultApdexMetric(reservoir, apdexTSeconds, clock, false);

            if (testSamplePreference == TestSamplePreference.Satisified)
            {
                RunSamples(satisfiedRequestsDurations, apdexMetric, clock);
                RunSamples(toleratingRequestsDurations, apdexMetric, clock);
                RunSamples(frustratingRequestsDurations, apdexMetric, clock);
            }
            else if (testSamplePreference == TestSamplePreference.Frustrating)
            {
                RunSamples(frustratingRequestsDurations, apdexMetric, clock);
                RunSamples(toleratingRequestsDurations, apdexMetric, clock);
                RunSamples(satisfiedRequestsDurations, apdexMetric, clock);
            }
            else
            {
                RunSamples(toleratingRequestsDurations, apdexMetric, clock);
                RunSamples(frustratingRequestsDurations, apdexMetric, clock);
                RunSamples(satisfiedRequestsDurations, apdexMetric, clock);
            }

            return(apdexMetric);
        }
Exemple #2
0
        public IApdexMetric RunSamplesForApdexCalculation(double apdexTSeconds, int satisifedRequests,
                                                          int toleratingRequests, int frustratingRequest, TestSamplePreference testSamplePreference)
        {
            var       maxSatifiedDurationMilliseconds   = (int)(apdexTSeconds * 1000);
            var       minToleratedDurationMilliseconds  = maxSatifiedDurationMilliseconds + 1;
            var       maxToleratedDurationMilliseconds  = 4 * (int)(apdexTSeconds * 1000);
            var       minFrustratedDurationMilliseconds = maxToleratedDurationMilliseconds + 1;
            const int sampleSize = 1024;
            var       clock      = new TestClock();
            var       random     = new Random();

            var satisfiedRequestsDurations  = Enumerable.Range(1, satisifedRequests).Select(x => random.Next(1, maxSatifiedDurationMilliseconds));
            var toleratingRequestsDurations =
                Enumerable.Range(1, toleratingRequests).Select(x => random.Next(minToleratedDurationMilliseconds, maxToleratedDurationMilliseconds));
            var frustratingRequestsDurations =
                Enumerable.Range(1, frustratingRequest)
                .Select(x => random.Next(minFrustratedDurationMilliseconds, minFrustratedDurationMilliseconds * 2));


            var apdexMetric = new ApdexMetric(SamplingType.ExponentiallyDecaying, sampleSize,
                                              Constants.ReservoirSampling.DefaultExponentialDecayFactor, clock, apdexTSeconds);

            if (testSamplePreference == TestSamplePreference.Satisified)
            {
                RunSamples(satisfiedRequestsDurations, apdexMetric, clock);
                RunSamples(toleratingRequestsDurations, apdexMetric, clock);
                RunSamples(frustratingRequestsDurations, apdexMetric, clock);
            }
            else if (testSamplePreference == TestSamplePreference.Frustrating)
            {
                RunSamples(frustratingRequestsDurations, apdexMetric, clock);
                RunSamples(toleratingRequestsDurations, apdexMetric, clock);
                RunSamples(satisfiedRequestsDurations, apdexMetric, clock);
            }
            else
            {
                RunSamples(toleratingRequestsDurations, apdexMetric, clock);
                RunSamples(frustratingRequestsDurations, apdexMetric, clock);
                RunSamples(satisfiedRequestsDurations, apdexMetric, clock);
            }


            return(apdexMetric);
        }