Example #1
0
        public DataTransportResponseStatus Send(IEnumerable <MetricWireModel> metrics)
        {
            if (!metrics.Any())
            {
                return(DataTransportResponseStatus.RequestSuccessful);
            }

            var beginTime = _lastMetricSendTime;
            var endTime   = _dateTimeStatic.UtcNow;

            if (beginTime >= endTime)
            {
                Log.ErrorFormat("The last data send timestamp ({0}) is greater than or equal to the current timestamp ({1}). The metrics in this batch will be dropped.", _lastMetricSendTime, endTime);
                _lastMetricSendTime = _dateTimeStatic.UtcNow;
                return(DataTransportResponseStatus.Discard);
            }

            var model = new MetricWireModelCollection(_configuration.AgentRunId as string, beginTime.ToUnixTimeSeconds(), endTime.ToUnixTimeSeconds(), metrics);

            var status = TrySendDataRequest("metric_data", model);

            if (status == DataTransportResponseStatus.RequestSuccessful)
            {
                _lastMetricSendTime = endTime;
            }

            return(status);
        }
Example #2
0
        public void Serialize_MatchesExpectedOutput()
        {
            var model = new MetricWireModelCollection[] { _wellformedMetricData };

            var serializedMetrics = Newtonsoft.Json.JsonConvert.SerializeObject(model);

            Assert.AreEqual(_wellformedJson, serializedMetrics);
        }
Example #3
0
        public void Setup()
        {
            Mock.Arrange(() => _metricNameService.RenameMetric(Arg.IsAny <string>())).Returns <string>(name => name);
            _connectionHandler = new ConnectionHandler(new JsonSerializer(), Mock.Create <ICollectorWireFactory>(), Mock.Create <IProcessStatic>(), Mock.Create <IDnsStatic>(),
                                                       Mock.Create <ILabelsService>(), Mock.Create <Environment>(), Mock.Create <ISystemInfo>(), Mock.Create <IAgentHealthReporter>(), Mock.Create <IEnvironment>());

            var validScopedMetric = MetricWireModel.BuildMetric(_metricNameService, "DotNet/name", "WebTransaction/DotNet/name",
                                                                MetricDataWireModel.BuildTimingData(TimeSpan.FromSeconds(3.0), TimeSpan.FromSeconds(2.0)));

            var validUnscopedMetric = MetricWireModel.BuildMetric(_metricNameService, "Custom/name", string.Empty,
                                                                  MetricDataWireModel.BuildTimingData(TimeSpan.FromSeconds(4.0), TimeSpan.FromSeconds(3.0)));

            var validMetricWireModels = new List <MetricWireModel> {
                validScopedMetric, validUnscopedMetric
            };

            _wellformedMetricData = new MetricWireModelCollection("440491846668652", 1450462672.0, 1450462710.0, validMetricWireModels);
        }