コード例 #1
0
        public void VerifyConnectionString_CorrectlySetsDefaultEndpoint()
        {
            var testIkey = "test_ikey";

            var exporter = new AzureMonitorTraceExporter(new AzureMonitorExporterOptions {
                ConnectionString = $"InstrumentationKey={testIkey};"
            });

            GetInternalFields(exporter, out string ikey, out string endpoint);
            Assert.Equal(testIkey, ikey);
            Assert.Equal(ConnectionString.Constants.DefaultIngestionEndpoint, endpoint);
        }
コード例 #2
0
        public void VerifyConnectionString_CorrectlySetsEndpoint()
        {
            var testIkey     = "test_ikey";
            var testEndpoint = "https://www.bing.com/";

            var exporter = new AzureMonitorTraceExporter(new AzureMonitorExporterOptions {
                ConnectionString = $"InstrumentationKey={testIkey};IngestionEndpoint={testEndpoint}"
            });

            GetInternalFields(exporter, out string ikey, out string endpoint);
            Assert.Equal(testIkey, ikey);
            Assert.Equal(testEndpoint, endpoint);
        }
コード例 #3
0
        /// <summary>
        /// Registers an Azure Monitor trace exporter that will receive <see cref="System.Diagnostics.Activity"/> instances.
        /// </summary>
        /// <param name="builder"><see cref="TracerProviderBuilder"/> builder to use.</param>
        /// <param name="configure">Exporter configuration options.</param>
        /// <param name="processorConfigure">Activity processor configuration.</param>
        /// <returns>The instance of <see cref="TracerProviderBuilder"/> to chain the calls.</returns>
        public static TracerProviderBuilder UseAzureMonitorTraceExporter(this TracerProviderBuilder builder, Action <AzureMonitorExporterOptions> configure = null, Action <ActivityProcessorPipelineBuilder> processorConfigure = null)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            return(builder.AddProcessorPipeline(pipeline =>
            {
                var options = new AzureMonitorExporterOptions();
                configure?.Invoke(options);

                var exporter = new AzureMonitorTraceExporter(options);
                processorConfigure?.Invoke(pipeline);
                pipeline.SetExporter(exporter);
            }));
        }
コード例 #4
0
        private void GetInternalFields(AzureMonitorTraceExporter exporter, out string ikey, out string endpoint)
        {
            // TODO: NEED A BETTER APPROACH FOR TESTING. WE DECIDED AGAINST MAKING FIELDS "internal".
            // instrumentationKey: AzureMonitorTraceExporter.AzureMonitorTransmitter.instrumentationKey
            // endpoint: AzureMonitorTraceExporter.AzureMonitorTransmitter.ServiceRestClient.endpoint

            var transmitter = typeof(AzureMonitorTraceExporter)
                              .GetField("AzureMonitorTransmitter", BindingFlags.Instance | BindingFlags.NonPublic)
                              .GetValue(exporter);

            ikey = typeof(AzureMonitorTransmitter)
                   .GetField("instrumentationKey", BindingFlags.Instance | BindingFlags.NonPublic)
                   .GetValue(transmitter)
                   .ToString();

            var serviceRestClient = typeof(AzureMonitorTransmitter)
                                    .GetField("applicationInsightsRestClient", BindingFlags.Instance | BindingFlags.NonPublic)
                                    .GetValue(transmitter);

            endpoint = typeof(ApplicationInsightsRestClient)
                       .GetField("host", BindingFlags.Instance | BindingFlags.NonPublic)
                       .GetValue(serviceRestClient)
                       .ToString();
        }