public void can_add_apdex_values() { var clock = new TestClock(); var apdex = new DefaultApdexMetric(_defaultReservoir, clock, true); apdex.Track(10000); var values = new Dictionary <string, object>(); apdex.Value.AddApdexValues(values); values.Keys.Should().Contain("samples"); values.Keys.Should().Contain("score"); values.Keys.Should().Contain("satisfied"); values.Keys.Should().Contain("tolerating"); values.Keys.Should().Contain("frustrating"); }
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 void can_report_apdex() { var metricsMock = new Mock <IMetrics>(); var clock = new TestClock(); var gauge = new DefaultApdexMetric(_defaultReservoir, clock, false); var apdexValueSource = new ApdexValueSource( "test apdex", ConstantValue.Provider(gauge.Value), MetricTags.Empty, false); var payloadBuilder = new LineProtocolPayloadBuilder(); var reporter = CreateReporter(payloadBuilder); reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", apdexValueSource); payloadBuilder.PayloadFormatted().Should().Be("test__test_apdex samples=0i,score=0,satisfied=0i,tolerating=0i,frustrating=0i\n"); }
public void Can_report_apdex_with_tags_when_multidimensional() { // Arrange var expected = "test__test_apdex,host=server1,env=staging,anothertag=thevalue,mtype=apdex,unit=result samples=0i,score=0,satisfied=0i,tolerating=0i,frustrating=0i 1483232461000000000\n"; var clock = new TestClock(); var apdex = new DefaultApdexMetric(_defaultReservoir, clock, false); var apdexValueSource = new ApdexValueSource( "test apdex" + MultidimensionalMetricNameSuffix, ConstantValue.Provider(apdex.Value), MetricTags.Concat(_tags, new MetricTags("anothertag", "thevalue"))); // Act var valueSource = CreateValueSource("test", apdexScores: apdexValueSource); // Assert AssertExpectedLineProtocolString(new MetricsDataValueSource(_timestamp, new[] { valueSource }), expected); }
public void Can_report_apdex_with_tags_when_multidimensional() { // Arrange var expected = "env.staging.apdex.test.test_apdex.host.server1.anothertag.thevalue.Samples 0 1483232461\nenv.staging.apdex.test.test_apdex.host.server1.anothertag.thevalue.Score 0.00 1483232461\nenv.staging.apdex.test.test_apdex.host.server1.anothertag.thevalue.Satisfied 0 1483232461\nenv.staging.apdex.test.test_apdex.host.server1.anothertag.thevalue.Tolerating 0 1483232461\nenv.staging.apdex.test.test_apdex.host.server1.anothertag.thevalue.Frustrating 0 1483232461\n"; var clock = new TestClock(); var apdex = new DefaultApdexMetric(_defaultReservoir, clock, false); var apdexValueSource = new ApdexValueSource( "test apdex" + MultidimensionalMetricNameSuffix, ConstantValue.Provider(apdex.Value), MetricTags.Concat(_tags, new MetricTags("anothertag", "thevalue"))); // Act var valueSource = CreateValueSource("test", apdexScores: apdexValueSource); // Assert AssertExpectedLineProtocolString(new MetricsDataValueSource(_timestamp, new[] { valueSource }), expected); }
public async Task Can_report_apdex_with_tags() { // Arrange var expected = "{\"series\":[{\"metric\":\"test.test_apdex.apdex.samples\",\"points\":[[1483232461,0]],\"type\":\"gauge\",\"tags\":[\"key1:value1\",\"key2:value2\",\"unit:result\"]},{\"metric\":\"test.test_apdex.apdex.score\",\"points\":[[1483232461,0]],\"type\":\"gauge\",\"tags\":[\"key1:value1\",\"key2:value2\",\"unit:result\"]},{\"metric\":\"test.test_apdex.apdex.satisfied\",\"points\":[[1483232461,0]],\"type\":\"gauge\",\"tags\":[\"key1:value1\",\"key2:value2\",\"unit:result\"]},{\"metric\":\"test.test_apdex.apdex.tolerating\",\"points\":[[1483232461,0]],\"type\":\"gauge\",\"tags\":[\"key1:value1\",\"key2:value2\",\"unit:result\"]},{\"metric\":\"test.test_apdex.apdex.frustrating\",\"points\":[[1483232461,0]],\"type\":\"gauge\",\"tags\":[\"key1:value1\",\"key2:value2\",\"unit:result\"]}]}"; var clock = new TestClock(); var apdex = new DefaultApdexMetric(_defaultReservoir, clock, false); var apdexValueSource = new ApdexValueSource( "test apdex", ConstantValue.Provider(apdex.Value), new MetricTags(new[] { "key1", "key2" }, new[] { "value1", "value2" })); // Act var valueSource = CreateValueSource("test", apdexScores: apdexValueSource); // Assert await AssertExpectedLineProtocolString(new MetricsDataValueSource(_timestamp, new[] { valueSource }), FlushInterval, expected); }
public async Task Can_report_apdex() { // Arrange var expected = "apdex.test.test_apdex.Samples 0 1483232461\napdex.test.test_apdex.Score 0.00 1483232461\napdex.test.test_apdex.Satisfied 0 1483232461\napdex.test.test_apdex.Tolerating 0 1483232461\napdex.test.test_apdex.Frustrating 0 1483232461\n"; var clock = new TestClock(); var apdex = new DefaultApdexMetric(_defaultReservoir, clock, false); var apdexValueSource = new ApdexValueSource( "test apdex", ConstantValue.Provider(apdex.Value), MetricTags.Empty); // Act var valueSource = CreateValueSource("test", apdexScores: apdexValueSource); // Assert await AssertExpectedLineProtocolString(new MetricsDataValueSource(_timestamp, new[] { valueSource }), expected); }
public void Can_report_apdex_with_tags() { // Arrange var expected = "test__test_apdex,key1=value1,key2=value2,mtype=apdex,unit=result samples=0i,score=0,satisfied=0i,tolerating=0i,frustrating=0i 1483232461000000000\n"; var clock = new TestClock(); var apdex = new DefaultApdexMetric(_defaultReservoir, clock, false); var apdexValueSource = new ApdexValueSource( "test apdex", ConstantValue.Provider(apdex.Value), new MetricTags(new[] { "key1", "key2" }, new[] { "value1", "value2" })); // Act var valueSource = CreateValueSource("test", apdexScores: apdexValueSource); // Assert AssertExpectedLineProtocolString(new MetricsDataValueSource(_timestamp, new[] { valueSource }), expected); }
public async Task Can_report_apdex_with_tags_when_multidimensional() { // Arrange var expected = "{\"series\":[{\"metric\":\"test.test_apdex.apdex.samples\",\"points\":[[1483232461,0]],\"type\":\"gauge\",\"tags\":[\"host:server1\",\"env:staging\",\"anothertag:thevalue\",\"unit:result\"]},{\"metric\":\"test.test_apdex.apdex.score\",\"points\":[[1483232461,0]],\"type\":\"gauge\",\"tags\":[\"host:server1\",\"env:staging\",\"anothertag:thevalue\",\"unit:result\"]},{\"metric\":\"test.test_apdex.apdex.satisfied\",\"points\":[[1483232461,0]],\"type\":\"gauge\",\"tags\":[\"host:server1\",\"env:staging\",\"anothertag:thevalue\",\"unit:result\"]},{\"metric\":\"test.test_apdex.apdex.tolerating\",\"points\":[[1483232461,0]],\"type\":\"gauge\",\"tags\":[\"host:server1\",\"env:staging\",\"anothertag:thevalue\",\"unit:result\"]},{\"metric\":\"test.test_apdex.apdex.frustrating\",\"points\":[[1483232461,0]],\"type\":\"gauge\",\"tags\":[\"host:server1\",\"env:staging\",\"anothertag:thevalue\",\"unit:result\"]}]}"; var clock = new TestClock(); var apdex = new DefaultApdexMetric(_defaultReservoir, clock, false); var apdexValueSource = new ApdexValueSource( "test apdex" + MultidimensionalMetricNameSuffix, ConstantValue.Provider(apdex.Value), MetricTags.Concat(_tags, new MetricTags("anothertag", "thevalue"))); // Act var valueSource = CreateValueSource("test", apdexScores: apdexValueSource); // Assert await AssertExpectedLineProtocolString(new MetricsDataValueSource(_timestamp, new[] { valueSource }), FlushInterval, expected); }
public void Can_report_apdex_with_tags() { // Arrange var expected = "apdex.test.test_apdex.key1.value1.key2.value2.Samples 0 1483232461\napdex.test.test_apdex.key1.value1.key2.value2.Score 0.00 1483232461\napdex.test.test_apdex.key1.value1.key2.value2.Satisfied 0 1483232461\napdex.test.test_apdex.key1.value1.key2.value2.Tolerating 0 1483232461\napdex.test.test_apdex.key1.value1.key2.value2.Frustrating 0 1483232461\n"; var clock = new TestClock(); var apdex = new DefaultApdexMetric(_defaultReservoir, clock, false); var apdexValueSource = new ApdexValueSource( "test apdex", ConstantValue.Provider(apdex.Value), new MetricTags(new[] { "key1", "key2" }, new[] { "value1", "value2" })); // Act var valueSource = CreateValueSource("test", apdexScores: apdexValueSource); // Assert AssertExpectedLineProtocolString(new MetricsDataValueSource(_timestamp, new[] { valueSource }), expected); }
public void can_report_apdex() { var metricsMock = new Mock <IMetrics>(); var clock = new TestClock(); var gauge = new DefaultApdexMetric(_defaultReservoir, clock, false); var apdexValueSource = new ApdexValueSource( "test apdex", ConstantValue.Provider(gauge.Value), MetricTags.Empty, false); var payloadBuilder = new GraphitePayloadBuilder(_settings.GraphiteSettings.MetricNameFormatter, _settings.DataKeys, Origin); var reporter = CreateReporter(payloadBuilder); reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", apdexValueSource); payloadBuilder.PayloadFormatted().Should().Be("apdex.test.test_apdex.Samples 0 0\napdex.test.test_apdex.Score 0.00 0\napdex.test.test_apdex.Satisfied 0 0\napdex.test.test_apdex.Tolerating 0 0\napdex.test.test_apdex.Frustrating 0 0\n"); }
public void can_report_apdex() { var metricsMock = new Mock <IMetrics>(); var clock = new TestClock(); var gauge = new DefaultApdexMetric(_defaultReservoir, clock, false); var apdexValueSource = new ApdexValueSource( "test apdex", ConstantValue.Provider(gauge.Value), MetricTags.Empty, false); var items = CreateReporterAndPayloadBuilder(); items.Item1.StartReportRun(metricsMock.Object); items.Item1.ReportMetric("test", apdexValueSource); items.Item2.PayloadFormatted(). Should(). Be("test__test_apdex mtype=apdex unit=result samples=0i score=0 satisfied=0i tolerating=0i frustrating=0i" + Environment.NewLine); }
public void can_report_apdex() { var expected = StringReporterSamples.Apdex.ExtractStringReporterSampleFromResourceFile(); var sr = new StringReporter(); var clock = new TestClock(); var reservoir = new Lazy <IReservoir>( () => new DefaultForwardDecayingReservoir( Constants.ReservoirSampling.DefaultSampleSize, Constants.ReservoirSampling.DefaultExponentialDecayFactor, clock, new TestTaskScheduler(clock))); var metric = new DefaultApdexMetric(new ApdexProvider(reservoir, Constants.ReservoirSampling.DefaultApdexTSeconds), clock, true); metric.Track(1000); sr.ReportMetric("test", new ApdexValueSource("apdex_name", metric, MetricTags.None)); AssertReportResult(sr.Result, expected); }
public void can_report_apdex__when_multidimensional() { var metricsMock = new Mock <IMetrics>(); var clock = new TestClock(); var gauge = new DefaultApdexMetric(_defaultReservoir, clock, false); var apdexValueSource = new ApdexValueSource( "test apdex" + MultidimensionalMetricNameSuffix, ConstantValue.Provider(gauge.Value), _tags, resetOnReporting: false); var items = CreateReporterAndPayloadBuilder(); items.Item1.StartReportRun(metricsMock.Object); items.Item1.ReportMetric("test", apdexValueSource); items.Item2.PayloadFormatted(). Should(). Be("test__test_apdex host=server1 env=staging mtype=apdex unit=result samples=0i score=0 satisfied=0i tolerating=0i frustrating=0i" + Environment.NewLine); }
public void can_report_apdex__when_multidimensional() { var metricsMock = new Mock <IMetrics>(); var clock = new TestClock(); var gauge = new DefaultApdexMetric(_defaultReservoir, clock, false); var apdexValueSource = new ApdexValueSource( "test apdex" + MultidimensionalMetricNameSuffix, ConstantValue.Provider(gauge.Value), _tags, resetOnReporting: false); var payloadBuilder = new LineProtocolPayloadBuilder(); var reporter = CreateReporter(payloadBuilder); reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", apdexValueSource); payloadBuilder.PayloadFormatted(). Should(). Be("test__test_apdex,host=server1,env=staging samples=0i,score=0,satisfied=0i,tolerating=0i,frustrating=0i\n"); }
public void can_report_apdex_with_tags() { var metricsMock = new Mock <IMetrics>(); var clock = new TestClock(); var gauge = new DefaultApdexMetric(_defaultReservoir, clock, false); var apdexValueSource = new ApdexValueSource( "test apdex", ConstantValue.Provider(gauge.Value), new MetricTags(new[] { "key1", "key2" }, new[] { "value1", "value2" }), false); var payloadBuilder = new LineProtocolPayloadBuilder(_settings.DataKeys, _settings.MetricNameFormatter); var reporter = CreateReporter(payloadBuilder); reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", apdexValueSource); payloadBuilder.PayloadFormatted(false). Should(). Be("test__test_apdex,key1=value1,key2=value2,mtype=apdex,unit=result samples=0i,score=0,satisfied=0i,tolerating=0i,frustrating=0i\n"); }
public void can_report_apdex_with_tags() { var metricsMock = new Mock <IMetrics>(); var clock = new TestClock(); var gauge = new DefaultApdexMetric(_defaultReservoir, clock, false); var apdexValueSource = new ApdexValueSource( "test apdex", ConstantValue.Provider(gauge.Value), new MetricTags(new[] { "key1", "key2" }, new[] { "value1", "value2" }), false); var payloadBuilder = new TestPayloadBuilder(); var reporter = CreateReporter(payloadBuilder); reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", apdexValueSource); payloadBuilder.PayloadFormatted(). Should(). Be("test__test_apdex key1=value1 key2=value2 mtype=apdex samples=0i score=0 satisfied=0i tolerating=0i frustrating=0i" + Environment.NewLine); }
public void can_report_apdex_with_tags_when_multidimensional() { var metricsMock = new Mock <IMetrics>(); var clock = new TestClock(); var gauge = new DefaultApdexMetric(_defaultReservoir, clock, false); var apdexValueSource = new ApdexValueSource( "test apdex" + MultidimensionalMetricNameSuffix, ConstantValue.Provider(gauge.Value), MetricTags.Concat(_tags, new MetricTags("anothertag", "thevalue")), resetOnReporting: false); var payloadBuilder = new LineProtocolPayloadBuilder(_settings.DataKeys, _settings.MetricNameFormatter); var reporter = CreateReporter(payloadBuilder); reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", apdexValueSource); payloadBuilder.PayloadFormatted(false). Should(). Be( "test__test_apdex,host=server1,env=staging,anothertag=thevalue,mtype=apdex,unit=result samples=0i,score=0,satisfied=0i,tolerating=0i,frustrating=0i\n"); }
public void can_report_apdex__when_multidimensional() { var metricsMock = new Mock <IMetrics>(); var clock = new TestClock(); var gauge = new DefaultApdexMetric(_defaultReservoir, clock, false); var apdexValueSource = new ApdexValueSource( "test apdex" + MultidimensionalMetricNameSuffix, ConstantValue.Provider(gauge.Value), _tags, resetOnReporting: false); var payloadBuilder = new GraphitePayloadBuilder(_settings.GraphiteSettings.MetricNameFormatter, _settings.DataKeys, Origin); var reporter = CreateReporter(payloadBuilder); reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", apdexValueSource); payloadBuilder.PayloadFormatted(). Should(). Be("env.staging.apdex.test.test_apdex.host.server1.Samples 0 0\nenv.staging.apdex.test.test_apdex.host.server1.Score 0.00 0\nenv.staging.apdex.test.test_apdex.host.server1.Satisfied 0 0\nenv.staging.apdex.test.test_apdex.host.server1.Tolerating 0 0\nenv.staging.apdex.test.test_apdex.host.server1.Frustrating 0 0\n"); }
public void can_report_apdex_with_tags_when_multidimensional() { var metricsMock = new Mock <IMetrics>(); var clock = new TestClock(); var gauge = new DefaultApdexMetric(_defaultReservoir, clock, false); var apdexValueSource = new ApdexValueSource( "test apdex" + MultidimensionalMetricNameSuffix, ConstantValue.Provider(gauge.Value), MetricTags.Concat(_tags, new MetricTags("anothertag", "thevalue")), resetOnReporting: false); var payloadBuilder = new TestPayloadBuilder(); var reporter = CreateReporter(payloadBuilder); reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", apdexValueSource); payloadBuilder.PayloadFormatted(). Should(). Be( "test__test_apdex host=server1 env=staging anothertag=thevalue mtype=apdex samples=0i score=0 satisfied=0i tolerating=0i frustrating=0i" + Environment.NewLine); }
public async Task Can_report_apdex__when_multidimensional() { // Arrange var expected = "test.test_apdex.apdex.samples:0|c|#host:server1,env:staging,unit:result,timestamp:1483232461\n" + "test.test_apdex.apdex.score:0|g|#host:server1,env:staging,unit:result,timestamp:1483232461\n" + "test.test_apdex.apdex.satisfied:0|c|#host:server1,env:staging,unit:result,timestamp:1483232461\n" + "test.test_apdex.apdex.tolerating:0|c|#host:server1,env:staging,unit:result,timestamp:1483232461\n" + "test.test_apdex.apdex.frustrating:0|c|#host:server1,env:staging,unit:result,timestamp:1483232461"; var clock = new TestClock(); var apdex = new DefaultApdexMetric(_defaultReservoir, clock, false); var apdexValueSource = new ApdexValueSource( "test apdex" + MultidimensionalMetricNameSuffix, ConstantValue.Provider(apdex.Value), _tags); // Act var valueSource = CreateValueSource("test", apdexScores: apdexValueSource); // Assert await AssertExpectedLineProtocolString(new MetricsDataValueSource(_timestamp, new[] { valueSource }), expected); }
public async Task Can_report_apdex_with_tags() { // Arrange var expected = "test.test_apdex.apdex.samples:0|c|#key1:value1,key2:value2,unit:result,timestamp:1483232461\n" + "test.test_apdex.apdex.score:0|g|#key1:value1,key2:value2,unit:result,timestamp:1483232461\n" + "test.test_apdex.apdex.satisfied:0|c|#key1:value1,key2:value2,unit:result,timestamp:1483232461\n" + "test.test_apdex.apdex.tolerating:0|c|#key1:value1,key2:value2,unit:result,timestamp:1483232461\n" + "test.test_apdex.apdex.frustrating:0|c|#key1:value1,key2:value2,unit:result,timestamp:1483232461"; var clock = new TestClock(); var apdex = new DefaultApdexMetric(_defaultReservoir, clock, false); var apdexValueSource = new ApdexValueSource( "test apdex", ConstantValue.Provider(apdex.Value), new MetricTags(new[] { "key1", "key2" }, new[] { "value1", "value2" })); // Act var valueSource = CreateValueSource("test", apdexScores: apdexValueSource); // Assert await AssertExpectedLineProtocolString(new MetricsDataValueSource(_timestamp, new[] { valueSource }), expected); }
public async Task Can_report_apdex_with_tags_when_multidimensional() { // Arrange var expected = "test.test_apdex.apdex.samples:0|c\n" + "test.test_apdex.apdex.score:0|g\n" + "test.test_apdex.apdex.satisfied:0|c\n" + "test.test_apdex.apdex.tolerating:0|c\n" + "test.test_apdex.apdex.frustrating:0|c"; var clock = new TestClock(); var apdex = new DefaultApdexMetric(_defaultReservoir, clock, false); var apdexValueSource = new ApdexValueSource( "test apdex" + MultidimensionalMetricNameSuffix, ConstantValue.Provider(apdex.Value), MetricTags.Concat(_tags, new MetricTags("anothertag", "thevalue"))); // Act var valueSource = CreateValueSource("test", apdexScores: apdexValueSource); // Assert await AssertExpectedLineProtocolString(new MetricsDataValueSource(_timestamp, new[] { valueSource }), expected); }
public void Apdex_score_should_be_between_zero_and_one() { const double apdexTSeconds = 0.5; const int fromMilliSeconds = 20; const int toMilliSeconds = 5000; var random = new Random(); var clock = new TestClock(); IApdexMetric apdexMetric = new DefaultApdexMetric(new DefaultForwardDecayingReservoir(), apdexTSeconds, clock, false); foreach (var unused in Enumerable.Range(0, 1000)) { using (apdexMetric.NewContext()) { clock.Advance(TimeUnit.Milliseconds, random.Next(fromMilliSeconds, toMilliSeconds)); } } var score = apdexMetric.GetValue().Score; score.Should().BeGreaterOrEqualTo(0); score.Should().BeLessOrEqualTo(1); }
public ApdexMetricTests() { var reservoir = new Lazy <IReservoir>(() => new DefaultForwardDecayingReservoir()); _apdex = new DefaultApdexMetric(reservoir, Constants.ReservoirSampling.DefaultApdexTSeconds, _clock, false); }
public ApdexMetricTests() { _apdex = new DefaultApdexMetric(new DefaultForwardDecayingReservoir(), AppMetricsReservoirSamplingConstants.DefaultApdexTSeconds, _clock, false); }