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); }
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); }