public void SetUp() { _metricBuilder = Mock.Create <IMetricBuilder>(); _metricAggregator = Mock.Create <IMetricAggregator>(); _cpuSampleTransformer = new CpuSampleTransformer(_metricBuilder, _metricAggregator); }
public GcSampleTransformer(IMetricBuilder metricBuilder, IMetricAggregator metricAggregator) { _metricBuilder = metricBuilder; _metricAggregator = metricAggregator; _metricBuilderHandlers = new Dictionary <GCSampleType, Func <GCSampleType, float, MetricWireModel> >() { { GCSampleType.HandlesCount, CreateMetric_Gauge }, { GCSampleType.InducedCount, CreateMetric_Count }, { GCSampleType.PercentTimeInGc, CreateMetric_Percent }, { GCSampleType.Gen0Size, CreateMetric_ByteData }, { GCSampleType.Gen0Promoted, CreateMetric_ByteData }, { GCSampleType.Gen0CollectionCount, CreateMetric_Count }, { GCSampleType.Gen1Size, CreateMetric_ByteData }, { GCSampleType.Gen1Promoted, CreateMetric_ByteData }, { GCSampleType.Gen1CollectionCount, CreateMetric_Count }, { GCSampleType.Gen2Size, CreateMetric_ByteData }, { GCSampleType.Gen2Survived, CreateMetric_ByteData }, { GCSampleType.Gen2CollectionCount, CreateMetric_Count }, { GCSampleType.LOHSize, CreateMetric_ByteData }, { GCSampleType.LOHSurvived, CreateMetric_ByteData }, }; }
public void SetUp() { var configuration = Mock.Create <IConfiguration>(); Mock.Arrange(() => configuration.CollectorSendDataOnExit).Returns(true); Mock.Arrange(() => configuration.CollectorSendDataOnExitThreshold).Returns(0); _configurationAutoResponder = new ConfigurationAutoResponder(configuration); _dataTransportService = Mock.Create <IDataTransportService>(); _metricBuilder = WireModels.Utilities.GetSimpleMetricBuilder(); _agentHealthReporter = Mock.Create <IAgentHealthReporter>(); _outOfBandMetricSources = new IOutOfBandMetricSource[] { (IOutOfBandMetricSource)_agentHealthReporter }; _dnsStatic = Mock.Create <IDnsStatic>(); _processStatic = Mock.Create <IProcessStatic>(); _metricNameService = Mock.Create <IMetricNameService>(); Mock.Arrange(() => _metricNameService.RenameMetric(Arg.IsAny <string>())).Returns <string>(name => name); var scheduler = Mock.Create <IScheduler>(); Mock.Arrange(() => scheduler.ExecuteEvery(Arg.IsAny <Action>(), Arg.IsAny <TimeSpan>(), Arg.IsAny <TimeSpan?>())) .DoInstead <Action, TimeSpan, TimeSpan?>((action, harvestCycle, __) => { _harvestAction = action; _harvestCycle = harvestCycle; }); _metricAggregator = new MetricAggregator(_dataTransportService, _metricBuilder, _metricNameService, _outOfBandMetricSources, _processStatic, scheduler); EventBus <AgentConnectedEvent> .Publish(new AgentConnectedEvent()); }
public void SetUp() { _localConfig = new configuration(); _localConfig.distributedTracing.enabled = true; _serverConfig = new ServerConfiguration(); _runTimeConfig = new RunTimeConfiguration(); _defaultConfig = new TestableDefaultConfiguration(Mock.Create <IEnvironment>(), _localConfig, _serverConfig, _runTimeConfig, new SecurityPoliciesConfiguration(), Mock.Create <IProcessStatic>(), Mock.Create <IHttpRuntimeStatic>(), Mock.Create <IConfigurationManagerStatic>(), Mock.Create <IDnsStatic>()); _transactionMetricNameMaker = Mock.Create <ITransactionMetricNameMaker>(); Mock.Arrange(() => _transactionMetricNameMaker.GetTransactionMetricName(Arg.Matches <ITransactionName>(txName => txName.IsWeb))) .Returns(new TransactionMetricName("WebTransaction", "TransactionName")); Mock.Arrange(() => _transactionMetricNameMaker.GetTransactionMetricName(Arg.Matches <ITransactionName>(txName => !txName.IsWeb))).Returns(new TransactionMetricName("OtherTransaction", "TransactionName")); _transactionSegmentState = Mock.Create <ITransactionSegmentState>(); Mock.Arrange(() => _transactionSegmentState.GetRelativeTime()).Returns(() => TimeSpan.Zero); Mock.Arrange(() => _transactionSegmentState.AttribDefs).Returns(() => new AttributeDefinitions(new AttributeFilter(new AttributeFilter.Settings()))); _segmentTreeMaker = Mock.Create <ISegmentTreeMaker>(); _metricNameService = Mock.Create <IMetricNameService>(); _metricBuilder = Mock.Create <IMetricBuilder>(); _metricAggregator = Mock.Create <IMetricAggregator>(); _configurationService = Mock.Create <IConfigurationService>(); Mock.Arrange(() => _configurationService.Configuration).Returns(_defaultConfig); _transactionTraceAggregator = Mock.Create <ITransactionTraceAggregator>(); _transactionTraceMaker = Mock.Create <ITransactionTraceMaker>(); _transactionEventAggregator = Mock.Create <ITransactionEventAggregator>(); _transactionEventMaker = Mock.Create <ITransactionEventMaker>(); _transactionAttributeMaker = Mock.Create <ITransactionAttributeMaker>(); _errorTraceAggregator = Mock.Create <IErrorTraceAggregator>(); _errorTraceMaker = Mock.Create <IErrorTraceMaker>(); _errorEventAggregator = Mock.Create <IErrorEventAggregator>(); _errorEventMaker = Mock.Create <IErrorEventMaker>(); _sqlTraceAggregator = Mock.Create <ISqlTraceAggregator>(); _sqlTraceMaker = Mock.Create <ISqlTraceMaker>(); _spanEventAggregator = Mock.Create <ISpanEventAggregator>(); Mock.Arrange(() => _spanEventAggregator.IsServiceEnabled).Returns(() => _defaultConfig != null && _defaultConfig.SpanEventsEnabled && _defaultConfig.SpanEventsMaxSamplesStored > 0 && _defaultConfig.DistributedTracingEnabled); Mock.Arrange(() => _spanEventAggregator.IsServiceAvailable).Returns(() => _defaultConfig != null && _defaultConfig.SpanEventsEnabled && _defaultConfig.SpanEventsMaxSamplesStored > 0 && _defaultConfig.DistributedTracingEnabled); _spanEventAggregatorInfiniteTracing = Mock.Create <ISpanEventAggregatorInfiniteTracing>(); Mock.Arrange(() => _spanEventAggregatorInfiniteTracing.IsServiceEnabled).Returns(() => !string.IsNullOrWhiteSpace(_defaultConfig?.InfiniteTracingTraceObserverHost)); Mock.Arrange(() => _spanEventAggregatorInfiniteTracing.IsServiceAvailable).Returns(() => !string.IsNullOrWhiteSpace(_defaultConfig?.InfiniteTracingTraceObserverHost)); _spanEventMaker = Mock.Create <ISpanEventMaker>(); _customEventAggregator = Mock.Create <ICustomEventAggregator>(); _errorService = Mock.Create <IErrorService>(); _attribDefSvc = new AttributeDefinitionService((f) => new AttributeDefinitions(f)); _agentTimerService = Mock.Create <IAgentTimerService>(); _transactionTransformer = new TransactionTransformer(_transactionMetricNameMaker, _segmentTreeMaker, _metricNameService, _metricAggregator, _configurationService, _transactionTraceAggregator, _transactionTraceMaker, _transactionEventAggregator, _transactionEventMaker, _transactionAttributeMaker, _errorTraceAggregator, _errorTraceMaker, _errorEventAggregator, _errorEventMaker, _sqlTraceAggregator, _sqlTraceMaker, _spanEventAggregator, _spanEventMaker, _agentTimerService, Mock.Create <IAdaptiveSampler>(), _errorService, _spanEventAggregatorInfiniteTracing); _customEventTransformer = new CustomEventTransformer(_configurationService, _customEventAggregator, _attribDefSvc); }
public CATSupportabilityMetricCounters(IMetricBuilder metricBuilder) { _metricBuilder = metricBuilder; _counters = Enum.GetValues(typeof(CATSupportabilityCondition)) .Cast <CATSupportabilityCondition>() .ToDictionary(x => x, x => new InterlockedCounter()); }
public void SetUp() { var metricNameService = new MetricNameService(); _metricBuilder = new MetricBuilder(metricNameService); _metricAggregator = Mock.Create <IMetricAggregator>(); _threadStatsTransformer = new ThreadStatsSampleTransformer(_metricBuilder, _metricAggregator); }
public AgentApiImplementation(ITransactionService transactionService, ICustomEventTransformer customEventTransformer, IMetricBuilder metricBuilder, IMetricAggregator metricAggregator, ICustomErrorDataTransformer customErrorDataTransformer, IBrowserMonitoringPrereqChecker browserMonitoringPrereqChecker, IBrowserMonitoringScriptMaker browserMonitoringScriptMaker, IConfigurationService configurationService, IAgent agent, ITracePriorityManager tracePriorityManager, IApiSupportabilityMetricCounters apiSupportabilityMetricCounters, IErrorService errorService) { _transactionService = transactionService; _customEventTransformer = customEventTransformer; _metricBuilder = metricBuilder; _metricAggregator = metricAggregator; _customErrorDataTransformer = customErrorDataTransformer; _browserMonitoringPrereqChecker = browserMonitoringPrereqChecker; _browserMonitoringScriptMaker = browserMonitoringScriptMaker; _configurationService = configurationService; _agent = agent; _agentBridgeApi = new AgentBridgeApi(_agent, apiSupportabilityMetricCounters, _configurationService); _tracePriorityManager = tracePriorityManager; _errorService = errorService; }
public MetricAggregator(IDataTransportService dataTransportService, IMetricBuilder metricBuilder, IMetricNameService metricNameService, IEnumerable <IOutOfBandMetricSource> outOfBandMetricSources, IProcessStatic processStatic, IScheduler scheduler) : base(dataTransportService, scheduler, processStatic) { _metricBuilder = metricBuilder; _metricNameService = metricNameService; _outOfBandMetricSources = outOfBandMetricSources; foreach (var source in outOfBandMetricSources) { if (source != null) { source.RegisterPublishMetricHandler(Collect); } } _metricStatsEngineQueue = CreateMetricStatsEngineQueue(); }
public AgentHealthReporter(IMetricBuilder metricBuilder, IScheduler scheduler, IDnsStatic dnsStatic) { _metricBuilder = metricBuilder; _dnsStatic = dnsStatic; _scheduler = scheduler; _scheduler.ExecuteEvery(LogRecurringLogs, _timeBetweenExecutions); var agentHealthEvents = Enum.GetValues(typeof(AgentHealthEvent)) as AgentHealthEvent[]; foreach (var agentHealthEvent in agentHealthEvents) { _agentHealthEventCounters[agentHealthEvent] = new InterlockedCounter(); } _payloadCreateSuccessCounter = new InterlockedCounter(); _payloadAcceptSuccessCounter = new InterlockedCounter(); _traceContextAcceptSuccessCounter = new InterlockedCounter(); _traceContextCreateSuccessCounter = new InterlockedCounter(); }
public void Setup() { var metricNameService = new MetricNameService(); _metricBuilder = new MetricBuilder(metricNameService); _metricAggregator = Mock.Create <IMetricAggregator>(); _transformer = new GcSampleTransformer(_metricBuilder, _metricAggregator); //Build example sample data var sampleValue = 0f; _sampleData = new Dictionary <GCSampleType, float>(); foreach (var val in Enum.GetValues(typeof(GCSampleType))) { _sampleData.Add((GCSampleType)val, sampleValue++); } _sampleTypes = _sampleData.Keys.ToArray(); _sampleTypesCount = _sampleTypes.Length; }
private TMetadata ReadMetricMetadata(BinaryReader reader, IMetricBuilder <TMetadata> metricBuilder, ushort version, int maxMetricStringsLength, int maxMetricNamespaceStringsLength) { var metricNamespace = string.Empty; // In versions 0-2 Metric Namespace was part of the Metric data, from version 3 it became a part of Metric Metadata if (version >= 3) { metricNamespace = this.ReadStringByIndex(reader); if (metricNamespace.Length > maxMetricNamespaceStringsLength) { throw new MetricSerializationException($"Namespace string in the packet exceeds preconfigured length. Packet is corrupted. MaxLength:{maxMetricNamespaceStringsLength}, Value:{metricNamespace}.", null); } } var metricName = this.ReadStringByIndex(reader); if (metricName.Length > maxMetricStringsLength) { throw new MetricSerializationException($"Metric name string in the packet exceeds preconfigured length. Packet is corrupted. MaxLength:{maxMetricStringsLength}, Value:{metricName}.", null); } var count = SerializationUtils.ReadUInt32FromBase128(reader); var dimensionNames = new List <string>((int)count); for (var i = 0; i < count; ++i) { var dimensionName = this.ReadStringByIndex(reader); if (dimensionName.Length > maxMetricStringsLength) { throw new MetricSerializationException($"Dimension name string in the packet exceeds preconfigured length. Packet is corrupted. MaxLength:{maxMetricStringsLength}, Value:{dimensionName}.", null); } dimensionNames.Add(dimensionName); } return(metricBuilder.CreateMetadata(metricNamespace, metricName, dimensionNames)); }
public void SetUp() { _metricBuilder = GetSimpleMetricBuilder(); }
public ApiSupportabilityMetricCounters(IMetricBuilder metricBuilder) { _metricBuilder = metricBuilder; }
/// <summary> /// Deserializes counter (metric) data from the stream and adds all objects to provided collection. /// </summary> /// <param name="stream">Stream from which data should be deserialized. Stream should be readable and provide randon access.</param> /// <param name="metricBuilder">An object responsible for creation and further consumption of deserialized data.</param> /// <param name="maxMetricStringsLength">Maximum length of strings, which represent metric name, dimension names and values.</param> /// <param name="maxMetricNamespaceStringsLength">Maximum length of metric namespace string.</param> /// <param name="maxMetricDimensionValueStringsLength">Maximum length of metric dimension value string.</param> public void Deserialize(Stream stream, IMetricBuilder <TMetadata> metricBuilder, int maxMetricStringsLength, int maxMetricNamespaceStringsLength, int maxMetricDimensionValueStringsLength) { if (!stream.CanRead || !stream.CanSeek) { throw new ArgumentException(@"Stream should be readable and provide random access.", nameof(stream)); } try { using (var reader = new NoCloseBinaryReader(stream, Encoding.UTF8)) { var startStreamPosition = stream.Position; // Read version and type serializers info var version = reader.ReadUInt16(); if (version > MaxVersion) { throw new VersionNotSupportedMetricSerializationException( string.Format( CultureInfo.InvariantCulture, "Version is not supported. Read version:{0}, Max version:{1}.", version, MaxVersion)); } if (version >= 5) { // Read CRC. CRC check is done in upper layers. reader.ReadUInt32(); } if (reader.ReadUInt32() != TypeSerializerFlags) { throw new VersionNotSupportedMetricSerializationException("Type serializers not supported."); } metricBuilder.SetSerializationVersion(version); // Read strings var deserializerDataPosition = stream.Position; stream.Position += sizeof(long); stream.Position = startStreamPosition + reader.ReadInt64(); var count = SerializationUtils.ReadUInt32FromBase128(reader); for (uint i = 0; i < count; ++i) { this.stringsDictionary.Add(reader.ReadString()); } // Read metrics metadata stream.Position = deserializerDataPosition; stream.Position = startStreamPosition + reader.ReadInt64(); count = SerializationUtils.ReadUInt32FromBase128(reader); for (uint i = 0; i < count; ++i) { this.metadataDictionary.Add(this.ReadMetricMetadata(reader, metricBuilder, version, maxMetricStringsLength, maxMetricNamespaceStringsLength)); } // Read metrics data stream.Position = deserializerDataPosition + (2 * sizeof(long)); this.ReadMetricsData(reader, metricBuilder, version, maxMetricStringsLength, maxMetricNamespaceStringsLength, maxMetricDimensionValueStringsLength); } } catch (IOException ioException) { throw new MetricSerializationException("Failed to deserialize data. Problem with input stream.", ioException); } catch (Exception exception) { throw new MetricSerializationException("Failed to deserialize data. Likely the incoming stream contains corrupted data.", exception); } finally { this.metadataDictionary.Clear(); this.stringsDictionary.Clear(); this.histogramBuffer.Clear(); } }
public MemorySampleTransformer(IMetricBuilder metricBuilder, IMetricAggregator metricAggregator, AgentInstallConfiguration.IsWindowsDelegate getIsWindows) { _metricBuilder = metricBuilder; _metricAggregator = metricAggregator; _isWindows = getIsWindows(); }
public void SetUp() { _metricNameService = Mock.Create <IMetricNameService>(); Mock.Arrange(() => _metricNameService.RenameMetric(Arg.IsAny <string>())).Returns <string>(name => name); _metricBuilder = new MetricWireModel.MetricBuilder(_metricNameService); }
public CacheStatsReporter(IMetricBuilder metricBuilder) { _metricBuilder = metricBuilder; }
public CpuSampleTransformer(IMetricBuilder metricBuilder, IMetricAggregator metricAggregator) { MetricBuilder = metricBuilder; _metricAggregator = metricAggregator; }
public void CreateMetric(IMetricBuilder metricBuilder) { MetricBuilder.TryBuildSimpleSegmentMetric("test_metric", TimeSpan.FromSeconds(3), TimeSpan.FromSeconds(1), txStats); }
public void SetUp() { _metricBuilder = new MetricWireModel.MetricBuilder(new MetricNameService()); _metricAggregator = Mock.Create <IMetricAggregator>(); }
private void ReadMetricsData(BinaryReader reader, IMetricBuilder <TMetadata> metricBuilder, ushort version, int maxMetricStringsLength, int maxMetricNamespaceStringsLength, int maxMetricDimensionValueStringsLength) { long packetTime = 0; if (version >= 5) { packetTime = (long)SerializationUtils.ReadUInt64FromBase128(reader); } // Versions before 2 used variable number of bytes to write number of serialized metrics data. // From version 2 passing IEnumerable<IReadOnlyMetric> is supported, thus number of metrics data // is unknown beforehand and we cannot use variable number anymore. Thus fixed 4 bytes uint is used. var count = version >= 2 ? reader.ReadUInt32() : SerializationUtils.ReadUInt32FromBase128(reader); for (var i = 0; i < count; ++i) { metricBuilder.BeginMetricCreation(); var metadata = this.ReadMetricMetadataByIndex(reader); metricBuilder.AssignMetadata(metadata); // In versions 0-2 Monitoring Account and Metric Namespace was part of the Metric data // From version 3 Monitoring Account is removed and Metric Namespace became a part of Metric Metadata if (version < 3) { var monitoringAccount = this.ReadStringByIndex(reader); if (monitoringAccount.Length > maxMetricStringsLength) { throw new MetricSerializationException($"Monitoring account string in the packet exceeds preconfigured length. Packet is corrupted. MaxLength:{maxMetricStringsLength}, Value:{monitoringAccount}.", null); } var metricNamespace = this.ReadStringByIndex(reader); if (metricNamespace.Length > maxMetricNamespaceStringsLength) { throw new MetricSerializationException($"Namespace string in the packet exceeds preconfigured length. Packet is corrupted. MaxLength:{maxMetricNamespaceStringsLength}, Value:{metricNamespace}.", null); } metricBuilder.AssignMonitoringAccount(monitoringAccount); metricBuilder.AssignNamespace(metricNamespace); } if (version == 0) { // Skip event id this.ReadStringByIndex(reader); } if (version >= 5) { var timeInTicks = (packetTime - SerializationUtils.ReadInt64FromBase128(reader)) * SerializationUtils.OneMinuteInterval; metricBuilder.AssignTimeUtc(new DateTime(timeInTicks, DateTimeKind.Utc)); } else { metricBuilder.AssignTimeUtc(new DateTime((long)SerializationUtils.ReadUInt64FromBase128(reader), DateTimeKind.Utc)); } for (var j = 0; j < metadata.DimensionsCount; ++j) { var dimensionValue = this.ReadStringByIndex(reader); if (dimensionValue.Length > maxMetricDimensionValueStringsLength) { throw new MetricSerializationException($"Dimension value string in the packet exceeds preconfigured length. Packet is corrupted. MaxLength:{maxMetricDimensionValueStringsLength}, Value:{dimensionValue}.", null); } metricBuilder.AddDimensionValue(dimensionValue); } var samplingTypes = (SamplingTypes)SerializationUtils.ReadUInt32FromBase128(reader); metricBuilder.AssignSamplingTypes(samplingTypes); if ((samplingTypes & SamplingTypes.Min) != 0) { metricBuilder.AssignMin(SerializationUtils.ReadUInt64FromBase128(reader)); } if ((samplingTypes & SamplingTypes.Max) != 0) { metricBuilder.AssignMax(SerializationUtils.ReadUInt64FromBase128(reader)); } if ((samplingTypes & SamplingTypes.Sum) != 0) { metricBuilder.AssignSum(SerializationUtils.ReadUInt64FromBase128(reader)); } if ((samplingTypes & SamplingTypes.Count) != 0) { metricBuilder.AssignCount(SerializationUtils.ReadUInt32FromBase128(reader)); } if ((samplingTypes & SamplingTypes.SumOfSquareDiffFromMean) != 0) { var sumOfSquareDiffFromMean = reader.ReadDouble(); metricBuilder.AssignSumOfSquareDiffFromMean(sumOfSquareDiffFromMean); } if ((samplingTypes & SamplingTypes.Histogram) != 0) { metricBuilder.AssignHistogram(this.ReadHistogram(reader, version)); } if ((samplingTypes & SamplingTypes.HyperLogLogSketch) != 0) { var sizeOfHyperLogLogSketches = reader.ReadInt32(); metricBuilder.AssignHyperLogLogSketch(reader, sizeOfHyperLogLogSketches); } metricBuilder.EndMetricCreation(); } }
public ThreadStatsSampleTransformer(IMetricBuilder metricBuilder, IMetricAggregator metricAggregator) { _metricBuilder = metricBuilder; _metricAggregator = metricAggregator; }