Esempio n. 1
0
        private DefaultMetricsSourceImpl(
            [Parameter(typeof(DefaultMetricsSourceParameters.ContextOrTaskName))] string contextOrTaskName,
            [Parameter(typeof(DefaultMetricsSourceParameters.EvaluatorId))] string evaluatorId,
            [Parameter(typeof(DefaultMetricsSourceParameters.SourceContext))] string sourceContext,
            [Parameter(typeof(DefaultMetricsSourceParameters.RecordName))] string recordName,
            IMetricsFactory metricsFactory)
        {
            _contextOrTaskName = contextOrTaskName;
            _evaluatorId = evaluatorId;
            _sourceContext = sourceContext;
            _recordName = recordName;
            _metricsFactory = metricsFactory;

            _counters = new MutableMetricContainer<ICounter>(
                (name, desc) => metricsFactory.CreateCounter(name, desc),
                this);
            _longGauges = new MutableMetricContainer<ILongGauge>(
                (name, desc) => metricsFactory.CreateLongGauge(name, desc),
                this);
            _doubleGauges = new MutableMetricContainer<IDoubleGauge>(
                (name, desc) => metricsFactory.CreateDoubleGauge(name, desc),
                this);
            _rates = new MutableMetricContainer<IRate>(
                (name, desc) => metricsFactory.CreateRateMetric(name, desc),
                this);
        }
        private DefaultMetricsSourceImpl(
            [Parameter(typeof(DefaultMetricsSourceParameters.ContextOrTaskName))] string contextOrTaskName,
            [Parameter(typeof(DefaultMetricsSourceParameters.EvaluatorId))] string evaluatorId,
            [Parameter(typeof(DefaultMetricsSourceParameters.SourceContext))] string sourceContext,
            [Parameter(typeof(DefaultMetricsSourceParameters.RecordName))] string recordName,
            IMetricsFactory metricsFactory)
        {
            _contextOrTaskName = contextOrTaskName;
            _evaluatorId       = evaluatorId;
            _sourceContext     = sourceContext;
            _recordName        = recordName;
            _metricsFactory    = metricsFactory;

            _counters = new MutableMetricContainer <ICounter>(
                (name, desc) => metricsFactory.CreateCounter(name, desc),
                this);
            _longGauges = new MutableMetricContainer <ILongGauge>(
                (name, desc) => metricsFactory.CreateLongGauge(name, desc),
                this);
            _doubleGauges = new MutableMetricContainer <IDoubleGauge>(
                (name, desc) => metricsFactory.CreateDoubleGauge(name, desc),
                this);
            _rates = new MutableMetricContainer <IRate>(
                (name, desc) => metricsFactory.CreateRateMetric(name, desc),
                this);
        }
        public void TestGaugeMetrics()
        {
            const string    name    = "gaugetest";
            const string    desc    = "guagetestdesc";
            IMetricsFactory factory = TangFactory.GetTang().NewInjector().GetInstance <IMetricsFactory>();

            var doubleGauge = factory.CreateDoubleGauge(name, desc, 5);

            Assert.Equal(name, doubleGauge.Info.Name);
            Assert.Equal(desc, doubleGauge.Info.Description);

            MetricTestUtils.RecordBuilderForTests recordBuilder = new MetricTestUtils.RecordBuilderForTests();
            SnapshotRequest request = new SnapshotRequest(recordBuilder, false);

            doubleGauge.OnNext(request);
            recordBuilder.Validate(name, 5.0, 1e-10);
            recordBuilder.Reset();

            doubleGauge.Increment(2.2);
            doubleGauge.OnNext(request);
            recordBuilder.Validate(name, 7.2, 1e-10);
            recordBuilder.Reset();

            doubleGauge.Decrement(1);
            doubleGauge.OnNext(request);
            recordBuilder.Validate(name, 6.2, 1e-10);
            recordBuilder.Reset();

            doubleGauge.OnNext(request);
            Assert.False(recordBuilder.DoubleKeyPresent(name), "Metric is not supposed to be recorded.");

            request = new SnapshotRequest(recordBuilder, true);
            doubleGauge.OnNext(request);
            recordBuilder.Validate(name, 6.2, 1e-10);
            recordBuilder.Reset();

            request = new SnapshotRequest(recordBuilder, false);
            var longGauge = factory.CreateLongGauge(name, desc, 5);

            Assert.Equal(name, longGauge.Info.Name);
            Assert.Equal(desc, longGauge.Info.Description);

            longGauge.OnNext(request);
            recordBuilder.Validate(name, (long)5);
            recordBuilder.Reset();

            longGauge.Increment(2);
            longGauge.OnNext(request);
            recordBuilder.Validate(name, (long)7);
            recordBuilder.Reset();

            longGauge.Decrement(1);
            longGauge.OnNext(request);
            recordBuilder.Validate(name, (long)6);
            recordBuilder.Reset();

            longGauge.OnNext(request);
            Assert.False(recordBuilder.LongKeyPresent(name), "Metric is not supposed to be recorded.");

            request = new SnapshotRequest(recordBuilder, true);
            longGauge.OnNext(request);
            recordBuilder.Validate(name, (long)6);
            recordBuilder.Reset();
        }