Exemplo n.º 1
0
        internal AgentComponents(
            IApmLogger logger,
            IConfigurationReader configurationReader,
            IPayloadSender payloadSender,
            IMetricsCollector metricsCollector,
            ICurrentExecutionSegmentsContainer currentExecutionSegmentsContainer,
            ICentralConfigFetcher centralConfigFetcher
            )
        {
            var tempLogger = logger ?? ConsoleLogger.LoggerOrDefault(configurationReader?.LogLevel);

            ConfigurationReader = configurationReader ?? new EnvironmentConfigurationReader(tempLogger);
            Logger  = logger ?? ConsoleLogger.LoggerOrDefault(ConfigurationReader.LogLevel);
            Service = Service.GetDefaultService(ConfigurationReader, Logger);

            var systemInfoHelper = new SystemInfoHelper(Logger);
            var system           = systemInfoHelper.ParseSystemInfo();

            ConfigStore = new ConfigStore(new ConfigSnapshotFromReader(ConfigurationReader, "local"), Logger);

            PayloadSender = payloadSender ?? new PayloadSenderV2(Logger, ConfigStore.CurrentSnapshot, Service, system);

            MetricsCollector = metricsCollector ?? new MetricsCollector(Logger, PayloadSender, ConfigurationReader);
            MetricsCollector.StartCollecting();

            CentralConfigFetcher = centralConfigFetcher ?? new CentralConfigFetcher(Logger, ConfigStore, Service);

            TracerInternal = new Tracer(Logger, Service, PayloadSender, ConfigStore,
                                        currentExecutionSegmentsContainer ?? new CurrentExecutionSegmentsContainer());
        }
Exemplo n.º 2
0
        public Span(
            string name,
            string type,
            string parentId,
            string traceId,
            Transaction enclosingTransaction,
            bool isSampled,
            IPayloadSender payloadSender,
            IApmLogger logger
            )
        {
            _start                = DateTimeOffset.UtcNow;
            _payloadSender        = payloadSender;
            _enclosingTransaction = enclosingTransaction;
            _logger               = logger?.Scoped(nameof(Span));
            Name      = name;
            Type      = type;
            IsSampled = isSampled;

            Id       = RandomGenerator.GenerateRandomBytesAsString(new byte[8]);
            ParentId = parentId;
            TraceId  = traceId;

            if (IsSampled)
            {
                // Started spans should be counted only for sampled transactions
                enclosingTransaction.SpanCount.Started++;

                // Spans are sent only for sampled transactions so it's only worth capturing stack trace for sampled spans
                StackTrace = StacktraceHelper.GenerateApmStackTrace(new StackTrace(true).GetFrames(), _logger, $"Span `{Name}'");
            }
        }
Exemplo n.º 3
0
        public Span(
            string name,
            string type,
            string parentId,
            string traceId,
            Transaction enclosingTransaction,
            bool isSampled,
            IPayloadSender payloadSender,
            IApmLogger logger
            )
        {
            _start                = DateTimeOffset.UtcNow;
            _payloadSender        = payloadSender;
            _enclosingTransaction = enclosingTransaction;
            _logger               = logger?.Scoped(nameof(Span));
            Name      = name;
            Type      = type;
            IsSampled = isSampled;

            Id       = RandomGenerator.GenerateRandomBytesAsString(new byte[8]);
            ParentId = parentId;
            TraceId  = traceId;

            // Started spans should be counted only for sampled transactions
            if (IsSampled)
            {
                enclosingTransaction.SpanCount.Started++;
            }
        }
Exemplo n.º 4
0
        public MetricsCollector(IApmLogger logger, IPayloadSender payloadSender, IConfigurationReader configurationReader)
        {
            _logger        = logger.Scoped(nameof(MetricsCollector));
            _payloadSender = payloadSender;

            var interval = configurationReader.MetricsIntervalInMilliseconds;

            // ReSharper disable once CompareOfFloatsByEqualityOperator
            if (interval == 0)
            {
                _logger.Info()?.Log("Collecting metrics is disabled - the agent won't collect metrics");
                return;
            }

            MetricsProviders = new List <IMetricsProvider>
            {
                new FreeAndTotalMemoryProvider(),
                new ProcessWorkingSetAndVirtualMemoryProvider(),
                new SystemTotalCpuProvider(_logger),
                new ProcessTotalCpuTimeProvider(_logger)
            };

            _logger.Info()?.Log("Collecting metrics in {interval} milliseconds interval", interval);
            _timer          = new Timer(interval);
            _timer.Elapsed += (sender, args) => { CollectAllMetrics(); };
        }
Exemplo n.º 5
0
 public TestAgentComponents(
     TestAgentConfigurationReader reader,
     Service service = null,
     IPayloadSender payloadSender = null
     ) : base(reader.Logger, reader, service, payloadSender ?? new MockPayloadSender())
 {
 }
Exemplo n.º 6
0
        public Transaction(IApmLogger logger, string name, string type, IPayloadSender sender, string traceId = null, string parentId = null)
        {
            _logger = logger?.Scoped(nameof(Transaction));
            _sender = sender;
            _start  = DateTimeOffset.UtcNow;

            Name = name;
            Type = type;
            var idBytes = new byte[8];

            Id = RandomGenerator.GetRandomBytesAsString(idBytes);

            if (traceId == null)
            {
                idBytes = new byte[16];
                TraceId = RandomGenerator.GetRandomBytesAsString(idBytes);
            }
            else
            {
                TraceId = traceId;
            }

            ParentId  = parentId;
            SpanCount = new SpanCount();
        }
Exemplo n.º 7
0
        public MetricsCollector(IApmLogger logger, IPayloadSender payloadSender, IConfigSnapshotProvider configSnapshotProvider,
                                params IMetricsProvider[] metricsProvider
                                )
        {
            _logger                 = logger.Scoped(nameof(MetricsCollector));
            _payloadSender          = payloadSender;
            _configSnapshotProvider = configSnapshotProvider;

            var currentConfigSnapshot = configSnapshotProvider.CurrentSnapshot;

            var interval = currentConfigSnapshot.MetricsIntervalInMilliseconds;

            // ReSharper disable once CompareOfFloatsByEqualityOperator
            if (interval == 0)
            {
                _logger.Info()?.Log("Collecting metrics is disabled - the agent won't collect metrics");
                return;
            }

            MetricsProviders = new List <IMetricsProvider>();
            var disabledMetrics = configSnapshotProvider.CurrentSnapshot.DisableMetrics;

            if (metricsProvider != null)
            {
                foreach (var item in metricsProvider)
                {
                    if (item != null)
                    {
                        AddIfEnabled(item);
                    }
                }
            }

            AddIfEnabled(new ProcessTotalCpuTimeProvider(_logger));
            AddIfEnabled(new SystemTotalCpuProvider(_logger));
            AddIfEnabled(new ProcessWorkingSetAndVirtualMemoryProvider(disabledMetrics));
            AddIfEnabled(new FreeAndTotalMemoryProvider(disabledMetrics));
            try
            {
                // We saw some Exceptions in GcMetricsProvider.ctor, so we try-catch it
                AddIfEnabled(new GcMetricsProvider(_logger, disabledMetrics));
            }
            catch (Exception e)
            {
                _logger.Warning()?.LogException(e, "Failed loading {ProviderName}", nameof(GcMetricsProvider));
            }
            AddIfEnabled(new CgroupMetricsProvider(_logger, disabledMetrics));

            _logger.Info()?.Log("Collecting metrics in {interval} milliseconds interval", interval);
            _timer          = new Timer(interval);
            _timer.Elapsed += (sender, args) => { CollectAllMetrics(); };

            void AddIfEnabled(IMetricsProvider provider)
            {
                if (provider.IsEnabled(disabledMetrics))
                {
                    MetricsProviders.Add(provider);
                }
            }
        }
 internal AgentComponents(
     IMetricsCollector metricsCollector,
     IApmLogger logger = null,
     IConfigurationReader configurationReader = null,
     IPayloadSender payloadSender             = null
     ) : this(logger, configurationReader, payloadSender)
     => (MetricsCollector = metricsCollector ?? new MetricsCollector(Logger, PayloadSender, ConfigurationReader)).StartCollecting();
Exemplo n.º 9
0
 public Tracer(IApmLogger logger, Service service, IPayloadSender payloadSender, IConfigurationReader configurationReader)
 {
     _logger  = logger?.Scoped(nameof(Tracer));
     _service = service;
     _sender  = payloadSender;
     Sampler  = new Sampler(configurationReader.TransactionSampleRate);
 }
Exemplo n.º 10
0
 public AgentComponents(
     IApmLogger logger = null,
     IConfigurationReader configurationReader = null,
     IPayloadSender payloadSender             = null
     ) : this(logger, configurationReader, payloadSender, null, null, null, null)
 {
 }
        internal AgentComponents(
            IApmLogger logger,
            IConfigurationReader configurationReader,
            IPayloadSender payloadSender,
            IMetricsCollector metricsCollector,
            ICurrentExecutionSegmentsContainer currentExecutionSegmentsContainer
            )
        {
            var tempLogger = logger ?? ConsoleLogger.LoggerOrDefault(configurationReader?.LogLevel);

            ConfigurationReader = configurationReader ?? new EnvironmentConfigurationReader(tempLogger);
            Logger  = logger ?? ConsoleLogger.LoggerOrDefault(ConfigurationReader.LogLevel);
            Service = Service.GetDefaultService(ConfigurationReader, Logger);

            var systemInfoHelper = new SystemInfoHelper(Logger);
            var system           = systemInfoHelper.ReadContainerId(Logger);

            PayloadSender = payloadSender ?? new PayloadSenderV2(Logger, ConfigurationReader, Service, system);

            MetricsCollector = metricsCollector ?? new MetricsCollector(Logger, PayloadSender, ConfigurationReader);
            MetricsCollector.StartCollecting();

            TracerInternal = new Tracer(Logger, Service, PayloadSender, ConfigurationReader,
                                        currentExecutionSegmentsContainer ?? new CurrentExecutionSegmentsContainer(Logger));
        }
Exemplo n.º 12
0
 public AsyncQueueDispatcher(IPayloadSender payloadSender, IInternalLogger logger = null)
 {
     _payloadSender           = payloadSender ?? throw new ArgumentNullException(nameof(payloadSender));
     _logger                  = logger;
     _queue                   = new ConcurrentQueue <IPayload>();
     _cancellationTokenSource = new CancellationTokenSource();
     _eventSlim               = new ManualResetEventSlim(false, spinCount: 1);
 }
Exemplo n.º 13
0
        internal Transaction(
            IApmLogger logger,
            string name,
            string type,
            Sampler sampler,
            DistributedTracingData distributedTracingData,
            IPayloadSender sender,
            IConfigurationReader configurationReader
            )
        {
            Timestamp = TimeUtils.TimestampNow();
            var idBytes = new byte[8];

            Id      = RandomGenerator.GenerateRandomBytesAsString(idBytes);
            _logger = logger?.Scoped($"{nameof(Transaction)}.{Id}");

            _sender = sender;
            _configurationReader = configurationReader;

            Name          = name;
            HasCustomName = false;
            Type          = type;

            var isSamplingFromDistributedTracingData = false;

            if (distributedTracingData == null)
            {
                var traceIdBytes = new byte[16];
                TraceId   = RandomGenerator.GenerateRandomBytesAsString(traceIdBytes);
                IsSampled = sampler.DecideIfToSample(idBytes);
            }
            else
            {
                TraceId   = distributedTracingData.TraceId;
                ParentId  = distributedTracingData.ParentId;
                IsSampled = distributedTracingData.FlagRecorded;
                isSamplingFromDistributedTracingData = true;
            }

            SpanCount = new SpanCount();

            if (isSamplingFromDistributedTracingData)
            {
                _logger.Trace()
                ?.Log("New Transaction instance created: {Transaction}. " +
                      "IsSampled ({IsSampled}) is based on incoming distributed tracing data ({DistributedTracingData})." +
                      " Start time: {Time} (as timestamp: {Timestamp})",
                      this, IsSampled, distributedTracingData, TimeUtils.FormatTimestampForLog(Timestamp), Timestamp);
            }
            else
            {
                _logger.Trace()
                ?.Log("New Transaction instance created: {Transaction}. " +
                      "IsSampled ({IsSampled}) is based on the given sampler ({Sampler})." +
                      " Start time: {Time} (as timestamp: {Timestamp})",
                      this, IsSampled, sampler, TimeUtils.FormatTimestampForLog(Timestamp), Timestamp);
            }
        }
Exemplo n.º 14
0
 public Transaction(AbstractLogger logger, string name, string type, IPayloadSender sender)
 {
     _logger = logger;
     _sender = sender;
     Start   = DateTimeOffset.UtcNow;
     Name    = name;
     Type    = type;
     Id      = Guid.NewGuid();
 }
Exemplo n.º 15
0
 public TestAgentComponents(AbstractLogger logger, string serverUrls = null, Service service = null,
                            IPayloadSender payloadSender             = null
                            )
     : this(new TestAgentConfigurationReader(logger,
                                             logLevel : logger.LogLevel.ToString(),
                                             serverUrls : serverUrls
                                             ), service, payloadSender)
 {
 }
Exemplo n.º 16
0
 public Transaction(IApmLogger logger, string name, string type, IPayloadSender sender)
 {
     _logger = logger?.Scoped(nameof(Transaction));
     _sender = sender;
     Start   = DateTimeOffset.UtcNow;
     Name    = name;
     Type    = type;
     Id      = Guid.NewGuid();
 }
Exemplo n.º 17
0
        public Span(
            string name,
            string type,
            string parentId,
            string traceId,
            Transaction enclosingTransaction,
            IPayloadSender payloadSender,
            IApmLogger logger,
            ICurrentExecutionSegmentsContainer currentExecutionSegmentsContainer,
            Span parentSpan = null,
            InstrumentationFlag instrumentationFlag = InstrumentationFlag.None,
            bool captureStackTraceOnStart           = false
            )
        {
            InstrumentationFlag = instrumentationFlag;
            Timestamp           = TimeUtils.TimestampNow();
            Id      = RandomGenerator.GenerateRandomBytesAsString(new byte[8]);
            _logger = logger?.Scoped($"{nameof(Span)}.{Id}");

            _payloadSender = payloadSender;
            _currentExecutionSegmentsContainer = currentExecutionSegmentsContainer;
            _parentSpan           = parentSpan;
            _enclosingTransaction = enclosingTransaction;
            Name = name;
            Type = type;

            ParentId = parentId;
            TraceId  = traceId;

            if (IsSampled)
            {
                // Started and dropped spans should be counted only for sampled transactions
                if (enclosingTransaction.SpanCount.IncrementTotal() > ConfigSnapshot.TransactionMaxSpans &&
                    ConfigSnapshot.TransactionMaxSpans >= 0)
                {
                    _isDropped = true;
                    enclosingTransaction.SpanCount.IncrementDropped();
                }
                else
                {
                    enclosingTransaction.SpanCount.IncrementStarted();

                    if (captureStackTraceOnStart)
                    {
                        _stackFrames = new EnhancedStackTrace(new StackTrace(true)).GetFrames();
                    }
                }
            }

            _currentExecutionSegmentsContainer.CurrentSpan = this;

            _logger.Trace()
            ?.Log("New Span instance created: {Span}. Start time: {Time} (as timestamp: {Timestamp}). Parent span: {Span}",
                  this, TimeUtils.FormatTimestampForLog(Timestamp), Timestamp, _parentSpan);
        }
 public AgentComponents(
     AbstractLogger logger = null,
     IConfigurationReader configurationReader = null,
     Service service = null,
     IPayloadSender payloadSender = null)
 {
     Logger = logger ?? ConsoleLogger.Instance;
     ConfigurationReader = configurationReader ?? new EnvironmentConfigurationReader(Logger);
     Service             = service ?? Service.GetDefaultService(ConfigurationReader);
     PayloadSender       = payloadSender ?? new PayloadSender(Logger, ConfigurationReader);
     Tracer = new Tracer(Logger, Service, PayloadSender);
 }
Exemplo n.º 19
0
        internal AgentComponents(
            IApmLogger logger,
            IConfigurationReader configurationReader,
            IPayloadSender payloadSender,
            IMetricsCollector metricsCollector,
            ICurrentExecutionSegmentsContainer currentExecutionSegmentsContainer,
            ICentralConfigFetcher centralConfigFetcher,
            IApmServerInfo apmServerInfo,
            BreakdownMetricsProvider breakdownMetricsProvider = null
            )
        {
            try
            {
                var tempLogger = logger ?? ConsoleLogger.LoggerOrDefault(configurationReader?.LogLevel);
                ConfigurationReader = configurationReader ?? new EnvironmentConfigurationReader(tempLogger);
                Logger  = logger ?? ConsoleLogger.LoggerOrDefault(ConfigurationReader.LogLevel);
                Service = Service.GetDefaultService(ConfigurationReader, Logger);

                var systemInfoHelper = new SystemInfoHelper(Logger);
                var system           = systemInfoHelper.ParseSystemInfo(ConfigurationReader.HostName);

                ConfigStore = new ConfigStore(new ConfigSnapshotFromReader(ConfigurationReader, "local"), Logger);

                ApmServerInfo = apmServerInfo ?? new ApmServerInfo();

                PayloadSender = payloadSender
                                ?? new PayloadSenderV2(Logger, ConfigStore.CurrentSnapshot, Service, system, ApmServerInfo,
                                                       isEnabled: ConfigurationReader.Enabled);

                HttpTraceConfiguration = new HttpTraceConfiguration();

                if (ConfigurationReader.Enabled)
                {
                    breakdownMetricsProvider ??= new BreakdownMetricsProvider(Logger);

                    CentralConfigFetcher = centralConfigFetcher ?? new CentralConfigFetcher(Logger, ConfigStore, Service);
                    MetricsCollector     = metricsCollector ?? new MetricsCollector(Logger, PayloadSender, ConfigStore, breakdownMetricsProvider);
                    MetricsCollector.StartCollecting();
                }
                else
                {
                    Logger.Info()?.Log("The Elastic APM .NET Agent is disabled - the agent won't capture traces and metrics.");
                }

                TracerInternal = new Tracer(Logger, Service, PayloadSender, ConfigStore,
                                            currentExecutionSegmentsContainer ?? new CurrentExecutionSegmentsContainer(), ApmServerInfo, breakdownMetricsProvider);
            }
            catch (Exception e)
            {
                Logger.Error()?.LogException(e, "Failed initializing agent.");
            }
        }
Exemplo n.º 20
0
 public TestAgentComponents(
     string logLevel              = "Debug",
     string serverUrls            = null,
     Service service              = null,
     IPayloadSender payloadSender = null
     )
     : this(new TestAgentConfigurationReader(
                new TestLogger(AbstractConfigurationReader.ParseLogLevel(logLevel)),
                logLevel : logLevel,
                serverUrls : serverUrls
                ), service, payloadSender)
 {
 }
Exemplo n.º 21
0
        public Span(string name, string type, Transaction transaction, IPayloadSender payloadSender, IApmLogger logger)
        {
            _start         = DateTimeOffset.UtcNow;
            _payloadSender = payloadSender;
            _logger        = logger?.Scoped(nameof(Span));
            Name           = name;
            Type           = type;

            Id            = RandomGenerator.GetRandomBytesAsString(new byte[8]);
            ParentId      = transaction.Id;
            TransactionId = transaction.Id;
            TraceId       = transaction.TraceId;
        }
Exemplo n.º 22
0
 public TestAgentComponents(
     IApmLogger logger = null,
     TestAgentConfigurationReader configurationReader = null,
     IPayloadSender payloadSender = null,
     ICurrentExecutionSegmentsContainer currentExecutionSegmentsContainer = null
     ) : base(
         logger ?? new NoopLogger(),
         configurationReader ?? new TestAgentConfigurationReader(logger ?? new NoopLogger()),
         payloadSender ?? new MockPayloadSender(),
         new FakeMetricsCollector(),
         currentExecutionSegmentsContainer)
 {
 }
Exemplo n.º 23
0
        internal Transaction(
            IApmLogger logger,
            string name,
            string type,
            Sampler sampler,
            DistributedTracingData distributedTracingData,
            IPayloadSender sender
            )
        {
            _logger = logger?.Scoped(nameof(Transaction));
            _sender = sender;
            _start  = DateTimeOffset.UtcNow;

            Name          = name;
            HasCustomName = false;
            Type          = type;
            var idBytes = new byte[8];

            Id = RandomGenerator.GenerateRandomBytesAsString(idBytes);

            var isSamplingFromDistributedTracingData = false;

            if (distributedTracingData == null)
            {
                var traceIdBytes = new byte[16];
                TraceId   = RandomGenerator.GenerateRandomBytesAsString(traceIdBytes);
                IsSampled = sampler.DecideIfToSample(idBytes);
            }
            else
            {
                TraceId   = distributedTracingData.TraceId;
                ParentId  = distributedTracingData.ParentId;
                IsSampled = distributedTracingData.FlagRecorded;
                isSamplingFromDistributedTracingData = true;
            }

            SpanCount = new SpanCount();

            if (isSamplingFromDistributedTracingData)
            {
                _logger.Trace()?.Log("New Transaction instance created: {Transaction}. " +
                                     "IsSampled ({IsSampled}) is based on incoming distributed tracing data ({DistributedTracingData})",
                                     this, IsSampled, distributedTracingData);
            }
            else
            {
                _logger.Trace()?.Log("New Transaction instance created: {Transaction}. " +
                                     "IsSampled ({IsSampled}) is based on the given sampler ({Sampler})",
                                     this, IsSampled, sampler);
            }
        }
Exemplo n.º 24
0
        public ProtocolAdapter(RequestHandler requestHandler, IRequestManager requestManager, IPayloadSender payloadSender, IPayloadReceiver payloadReceiver, object handlerContext = null)
        {
            _requestHandler  = requestHandler;
            _handlerContext  = handlerContext;
            _requestManager  = requestManager;
            _payloadSender   = payloadSender;
            _payloadReceiver = payloadReceiver;

            _sendOperations   = new SendOperations(_payloadSender);
            _streamManager    = new StreamManager(OnCancelStream);
            _assemblerManager = new PayloadAssemblerManager(_streamManager, OnReceiveRequestAsync, OnReceiveResponseAsync);

            _payloadReceiver.Subscribe(_assemblerManager.GetPayloadStream, _assemblerManager.OnReceive);
        }
Exemplo n.º 25
0
 public Tracer(
     IApmLogger logger,
     Service service,
     IPayloadSender payloadSender,
     IConfigSnapshotProvider configProvider,
     ICurrentExecutionSegmentsContainer currentExecutionSegmentsContainer
     )
 {
     _logger         = logger?.Scoped(nameof(Tracer));
     _service        = service;
     _sender         = payloadSender.ThrowIfArgumentNull(nameof(payloadSender));
     _configProvider = configProvider.ThrowIfArgumentNull(nameof(configProvider));
     CurrentExecutionSegmentsContainer = currentExecutionSegmentsContainer.ThrowIfArgumentNull(nameof(currentExecutionSegmentsContainer));
 }
Exemplo n.º 26
0
        public AgentComponents(
            IApmLogger logger = null,
            IConfigurationReader configurationReader = null,
            IPayloadSender payloadSender             = null
            )
        {
            Logger = logger ?? ConsoleLogger.LoggerOrDefault(configurationReader?.LogLevel);
            ConfigurationReader = configurationReader ?? new EnvironmentConfigurationReader(Logger);

            Service = Service.GetDefaultService(ConfigurationReader);

            PayloadSender        = payloadSender ?? new PayloadSenderV2(Logger, ConfigurationReader, Service);
            TracerInternal       = new Tracer(Logger, Service, PayloadSender, ConfigurationReader);
            TransactionContainer = new TransactionContainer();
        }
Exemplo n.º 27
0
 public Tracer(
     IApmLogger logger,
     Service service,
     IPayloadSender payloadSender,
     IConfigurationReader configurationReader,
     ICurrentExecutionSegmentsContainer currentExecutionSegmentsContainer
     )
 {
     _logger              = logger?.Scoped(nameof(Tracer));
     _service             = service;
     _sender              = payloadSender.ThrowIfArgumentNull(nameof(payloadSender));
     _configurationReader = configurationReader.ThrowIfArgumentNull(nameof(configurationReader));
     Sampler              = new Sampler(configurationReader.TransactionSampleRate);
     CurrentExecutionSegmentsContainer = currentExecutionSegmentsContainer.ThrowIfArgumentNull(nameof(currentExecutionSegmentsContainer));
 }
Exemplo n.º 28
0
 public TestAgentComponents(
     IApmLogger logger            = null,
     IConfigSnapshot config       = null,
     IPayloadSender payloadSender = null,
     ICurrentExecutionSegmentsContainer currentExecutionSegmentsContainer = null,
     ICentralConfigFetcher centralConfigFetcher = null
     ) : base(
         logger ?? new NoopLogger(),
         config ?? new MockConfigSnapshot(logger ?? new NoopLogger()),
         payloadSender ?? new MockPayloadSender(),
         new FakeMetricsCollector(),
         currentExecutionSegmentsContainer,
         centralConfigFetcher ?? new NoopCentralConfigFetcher()
         )
 {
 }
Exemplo n.º 29
0
        /// <summary>
        /// Initializes a new instance of the <see cref="WebSocketServer"/> class.
        /// Throws <see cref="ArgumentNullException"/> on null arguments.
        /// </summary>
        /// <param name="socket">The <see cref="WebSocket"/> of the underlying connection for this server to be built on top of.</param>
        /// <param name="requestHandler">A <see cref="RequestHandler"/> to process incoming messages received by this server.</param>
        public WebSocketServer(WebSocket socket, RequestHandler requestHandler)
        {
            if (socket == null)
            {
                throw new ArgumentNullException(nameof(socket));
            }

            _websocketTransport     = new WebSocketTransport(socket);
            _requestHandler         = requestHandler ?? throw new ArgumentNullException(nameof(requestHandler));
            _requestManager         = new RequestManager();
            _sender                 = new PayloadSender();
            _sender.Disconnected   += OnConnectionDisconnected;
            _receiver               = new PayloadReceiver();
            _receiver.Disconnected += OnConnectionDisconnected;
            _protocolAdapter        = new ProtocolAdapter(_requestHandler, _requestManager, _sender, _receiver);
        }
Exemplo n.º 30
0
 public TestAgentComponents(
     string logLevel              = "Debug",
     string serverUrls            = null,
     string secretToken           = null,
     string captureHeaders        = null,
     IPayloadSender payloadSender = null
     )
     : this(new TestAgentConfigurationReader(
                new TestLogger(ParseWithoutLogging(logLevel)),
                serverUrls : serverUrls,
                secretToken : secretToken,
                captureHeaders : captureHeaders,
                logLevel : logLevel
                ), payloadSender)
 {
 }