private void Initialize(string instrumentationKey) { this.configuration = new TelemetryConfiguration(); this.configuration.TelemetryInitializers.Add(new OperationCorrelationTelemetryInitializer()); this.sendItems = new List <ITelemetry>(); this.configuration.TelemetryChannel = new StubTelemetryChannel { OnSend = item => this.sendItems.Add(item) }; this.configuration.InstrumentationKey = instrumentationKey; this.httpProcessingProfiler = new ProfilerHttpProcessing( this.configuration, null, new ObjectInstanceBasedOperationHolder(), true /*setCorrelationHeaders*/, new List <string>(), RandomAppIdEndpoint); var correlationIdLookupHelper = new CorrelationIdLookupHelper((string ikey) => { // Pretend App Id is the same as Ikey var tcs = new TaskCompletionSource <string>(); tcs.SetResult(ikey); return(tcs.Task); }); this.httpProcessingProfiler.OverrideCorrelationIdLookupHelper(correlationIdLookupHelper); this.ex = new Exception(); }
public void RddTestHttpProcessingProfilerOnBeginSkipsAddingSourceHeaderPerConfig() { string hostnamepart = "partofhostname"; string url = string.Format(CultureInfo.InvariantCulture, "http://hostnamestart{0}hostnameend.com/path/to/something?param=1", hostnamepart); var request = WebRequest.Create(new Uri(url)); Assert.IsNull(request.Headers[RequestResponseHeaders.RequestContextHeader]); Assert.AreEqual(0, request.Headers.Keys.Cast <string>().Where((x) => { return(x.StartsWith("x-ms-", StringComparison.OrdinalIgnoreCase)); }).Count()); var httpProcessingProfiler = new ProfilerHttpProcessing(this.configuration, null, new ObjectInstanceBasedOperationHolder(), /*setCorrelationHeaders*/ false, new List <string>(), RandomAppIdEndpoint); httpProcessingProfiler.OnBeginForGetResponse(request); Assert.IsNull(request.Headers[RequestResponseHeaders.RequestContextHeader]); Assert.AreEqual(0, request.Headers.Keys.Cast <string>().Where((x) => { return(x.StartsWith("x-ms-", StringComparison.OrdinalIgnoreCase)); }).Count()); ICollection <string> exclusionList = new SanitizedHostList() { "randomstringtoexclude", hostnamepart }; httpProcessingProfiler = new ProfilerHttpProcessing(this.configuration, null, new ObjectInstanceBasedOperationHolder(), /*setCorrelationHeaders*/ true, exclusionList, RandomAppIdEndpoint); httpProcessingProfiler.OnBeginForGetResponse(request); Assert.IsNull(request.Headers[RequestResponseHeaders.RequestContextHeader]); Assert.AreEqual(0, request.Headers.Keys.Cast <string>().Where((x) => { return(x.StartsWith("x-ms-", StringComparison.OrdinalIgnoreCase)); }).Count()); }
public void TestInitialize() { this.configuration = new TelemetryConfiguration(); this.sendItems = new List<ITelemetry>(); this.configuration.TelemetryChannel = new StubTelemetryChannel { OnSend = item => this.sendItems.Add(item) }; this.configuration.InstrumentationKey = Guid.NewGuid().ToString(); this.httpProcessingProfiler = new ProfilerHttpProcessing(this.configuration, null, new ObjectInstanceBasedOperationHolder()); this.ex = new Exception(); }
public void TestInitialize() { this.configuration = new TelemetryConfiguration(); this.sendItems = new List <ITelemetry>(); this.configuration.TelemetryChannel = new StubTelemetryChannel { OnSend = item => this.sendItems.Add(item) }; this.configuration.InstrumentationKey = Guid.NewGuid().ToString(); this.httpProcessingProfiler = new ProfilerHttpProcessing(this.configuration, null, new ObjectInstanceBasedOperationHolder()); this.ex = new Exception(); }
private void Initialize(string instrumentationKey) { this.configuration = new TelemetryConfiguration(); this.configuration.TelemetryInitializers.Add(new OperationCorrelationTelemetryInitializer()); this.sendItems = new List <ITelemetry>(); this.configuration.TelemetryChannel = new StubTelemetryChannel { OnSend = item => this.sendItems.Add(item) }; this.configuration.InstrumentationKey = instrumentationKey; this.httpProcessingProfiler = new ProfilerHttpProcessing(this.configuration, null, new ObjectInstanceBasedOperationHolder(), /*setCorrelationHeaders*/ true, new List <string>()); this.ex = new Exception(); }
public void RddTestHttpProcessingProfilerOnBeginSkipsAddingSourceHeaderPerConfig() { string hostnamepart = "partofhostname"; string url = string.Format(CultureInfo.InvariantCulture, "http://hostnamestart{0}hostnameend.com/path/to/something?param=1", hostnamepart); var request = WebRequest.Create(new Uri(url)); Assert.IsNull(request.Headers[RequestResponseHeaders.SourceInstrumentationKeyHeader]); var httpProcessingProfiler = new ProfilerHttpProcessing(this.configuration, null, new ObjectInstanceBasedOperationHolder(), /*setCorrelationHeaders*/ false, new List <string>()); httpProcessingProfiler.OnBeginForGetResponse(request); Assert.IsNull(request.Headers[RequestResponseHeaders.SourceInstrumentationKeyHeader]); ICollection <string> exclusionList = new SanitizedHostList() { "randomstringtoexclude", hostnamepart }; httpProcessingProfiler = new ProfilerHttpProcessing(this.configuration, null, new ObjectInstanceBasedOperationHolder(), /*setCorrelationHeaders*/ true, exclusionList); httpProcessingProfiler.OnBeginForGetResponse(request); Assert.IsNull(request.Headers[RequestResponseHeaders.SourceInstrumentationKeyHeader]); }
internal static void DecorateProfilerForHttp(ref ProfilerHttpProcessing httpCallbacks) { // Decorates Http GetResponse, 0 params Functions.Decorate( "System", "System.dll", "System.Net.HttpWebRequest.GetResponse", httpCallbacks.OnBeginForGetResponse, httpCallbacks.OnEndForGetResponse, httpCallbacks.OnExceptionForGetResponse, isStatic: false); // Decorates Http GetRequestStream, 1 param Functions.Decorate( "System", "System.dll", "System.Net.HttpWebRequest.GetRequestStream", httpCallbacks.OnBeginForGetRequestStream, null, httpCallbacks.OnExceptionForGetRequestStream, isStatic: false); // Decorates Http BeginGetResponse, 2 params Functions.Decorate( "System", "System.dll", "System.Net.HttpWebRequest.BeginGetResponse", httpCallbacks.OnBeginForBeginGetResponse, null, null, isStatic: false); // Decorates Http EndGetResponse, 1 param Functions.Decorate( "System", "System.dll", "System.Net.HttpWebRequest.EndGetResponse", null, httpCallbacks.OnEndForEndGetResponse, httpCallbacks.OnExceptionForEndGetResponse, isStatic: false); // Decorates Http BeginGetRequestStream Functions.Decorate( "System", "System.dll", "System.Net.HttpWebRequest.BeginGetRequestStream", httpCallbacks.OnBeginForBeginGetRequestStream, null, null, isStatic: false); // Decorates Http EndGetRequestStream, 2 params Functions.Decorate( "System", "System.dll", "System.Net.HttpWebRequest.EndGetRequestStream", null, null, httpCallbacks.OnExceptionForEndGetRequestStream, isStatic: false); }
internal virtual void InitializeForRuntimeProfiler() { // initialize instrumentation extension var extensionBaseDirectory = string.IsNullOrWhiteSpace(AppDomain.CurrentDomain.RelativeSearchPath) ? AppDomain.CurrentDomain.BaseDirectory : AppDomain.CurrentDomain.RelativeSearchPath; DependencyCollectorEventSource.Log.RemoteDependencyModuleInformation("extesionBaseDirectrory is " + extensionBaseDirectory); Decorator.InitializeExtension(extensionBaseDirectory); // obtain agent version var agentVersion = Decorator.GetAgentVersion(); DependencyCollectorEventSource.Log.RemoteDependencyModuleInformation("AgentVersion is " + agentVersion); this.httpProcessing = new ProfilerHttpProcessing(this.telemetryConfiguration, agentVersion, DependencyTableStore.Instance.WebRequestConditionalHolder, this.SetComponentCorrelationHttpHeaders, this.ExcludeComponentCorrelationHttpHeadersOnDomains); this.sqlProcessing = new ProfilerSqlProcessing(this.telemetryConfiguration, agentVersion, DependencyTableStore.Instance.SqlRequestConditionalHolder); ProfilerRuntimeInstrumentation.DecorateProfilerForHttp(ref this.httpProcessing); ProfilerRuntimeInstrumentation.DecorateProfilerForSql(ref this.sqlProcessing); }
internal static void DecorateProfilerForHttp(ref ProfilerHttpProcessing httpCallbacks) { // Decorates Http GetResponse Decorator.Decorate( "System", "System.dll", "System.Net.HttpWebRequest.GetResponse", 0, httpCallbacks.OnBeginForGetResponse, httpCallbacks.OnEndForGetResponse, httpCallbacks.OnExceptionForGetResponse); // Decorates Http GetRequestStream Decorator.Decorate( "System", "System.dll", "System.Net.HttpWebRequest.GetRequestStream", 1, httpCallbacks.OnBeginForGetRequestStream, null, httpCallbacks.OnExceptionForGetRequestStream); // Decorates Http BeginGetResponse Decorator.Decorate( "System", "System.dll", "System.Net.HttpWebRequest.BeginGetResponse", 2, httpCallbacks.OnBeginForBeginGetResponse, null, null); // Decorates Http EndGetResponse Decorator.Decorate( "System", "System.dll", "System.Net.HttpWebRequest.EndGetResponse", 1, null, httpCallbacks.OnEndForEndGetResponse, httpCallbacks.OnExceptionForEndGetResponse); // Decorates Http BeginGetRequestStream Decorator.Decorate( "System", "System.dll", "System.Net.HttpWebRequest.BeginGetRequestStream", 2, httpCallbacks.OnBeginForBeginGetRequestStream, null, null); // Decorates Http EndGetRequestStream Decorator.Decorate( "System", "System.dll", "System.Net.HttpWebRequest.EndGetRequestStream", 2, null, null, httpCallbacks.OnExceptionForEndGetRequestStream); }
internal static void DecorateProfilerForHttp(ref ProfilerHttpProcessing httpCallbacks) { // Decorates Http GetResponse, 0 params Functions.Decorate( "System", "System.dll", "System.Net.HttpWebRequest.GetResponse", httpCallbacks.OnBeginForGetResponse, httpCallbacks.OnEndForGetResponse, httpCallbacks.OnExceptionForGetResponse, isStatic: false); // Decorates Http GetRequestStream, 1 param Functions.Decorate( "System", "System.dll", "System.Net.HttpWebRequest.GetRequestStream", httpCallbacks.OnBeginForGetRequestStream, null, httpCallbacks.OnExceptionForGetRequestStream, isStatic: false); // Decorates Http BeginGetResponse, 2 params Functions.Decorate( "System", "System.dll", "System.Net.HttpWebRequest.BeginGetResponse", httpCallbacks.OnBeginForBeginGetResponse, null, null, isStatic: false); // Decorates Http EndGetResponse, 1 param Functions.Decorate( "System", "System.dll", "System.Net.HttpWebRequest.EndGetResponse", null, httpCallbacks.OnEndForEndGetResponse, httpCallbacks.OnExceptionForEndGetResponse, isStatic: false); // Decorates Http BeginGetRequestStream Functions.Decorate( "System", "System.dll", "System.Net.HttpWebRequest.BeginGetRequestStream", httpCallbacks.OnBeginForBeginGetRequestStream, null, null, isStatic: false); // Decorates Http EndGetRequestStream, 2 params Functions.Decorate( "System", "System.dll", "System.Net.HttpWebRequest.EndGetRequestStream", null, null, httpCallbacks.OnExceptionForEndGetRequestStream, isStatic: false); }
internal static void DecorateProfilerForHttp(ref ProfilerHttpProcessing httpCallbacks) { // Decorates Http GetResponse Decorator.Decorate( "System", "System.dll", "System.Net.HttpWebRequest.GetResponse", 0, httpCallbacks.OnBeginForGetResponse, httpCallbacks.OnEndForGetResponse, httpCallbacks.OnExceptionForGetResponse); // Decorates Http GetRequestStream Decorator.Decorate( "System", "System.dll", "System.Net.HttpWebRequest.GetRequestStream", 1, httpCallbacks.OnBeginForGetRequestStream, null, httpCallbacks.OnExceptionForGetRequestStream); // Decorates Http BeginGetResponse Decorator.Decorate( "System", "System.dll", "System.Net.HttpWebRequest.BeginGetResponse", 2, httpCallbacks.OnBeginForBeginGetResponse, null, null); // Decorates Http EndGetResponse Decorator.Decorate( "System", "System.dll", "System.Net.HttpWebRequest.EndGetResponse", 1, null, httpCallbacks.OnEndForEndGetResponse, httpCallbacks.OnExceptionForEndGetResponse); // Decorates Http BeginGetRequestStream Decorator.Decorate( "System", "System.dll", "System.Net.HttpWebRequest.BeginGetRequestStream", 2, httpCallbacks.OnBeginForBeginGetRequestStream, null, null); // Decorates Http EndGetRequestStream Decorator.Decorate( "System", "System.dll", "System.Net.HttpWebRequest.EndGetRequestStream", 2, null, null, httpCallbacks.OnExceptionForEndGetRequestStream); }
public void RddTestHttpProcessingProfilerOnBeginSkipsAddingSourceHeaderPerConfig() { string hostnamepart = "partofhostname"; string url = string.Format(CultureInfo.InvariantCulture, "http://hostnamestart{0}hostnameend.com/path/to/something?param=1", hostnamepart); var request = WebRequest.Create(new Uri(url)); Assert.IsNull(request.Headers[RequestResponseHeaders.SourceInstrumentationKeyHeader]); var httpProcessingProfiler = new ProfilerHttpProcessing(this.configuration, null, new ObjectInstanceBasedOperationHolder(), /*setCorrelationHeaders*/ false, new List<string>()); httpProcessingProfiler.OnBeginForGetResponse(request); Assert.IsNull(request.Headers[RequestResponseHeaders.SourceInstrumentationKeyHeader]); ICollection<string> exclusionList = new SanitizedHostList() { "randomstringtoexclude", hostnamepart }; httpProcessingProfiler = new ProfilerHttpProcessing(this.configuration, null, new ObjectInstanceBasedOperationHolder(), /*setCorrelationHeaders*/ true, exclusionList); httpProcessingProfiler.OnBeginForGetResponse(request); Assert.IsNull(request.Headers[RequestResponseHeaders.SourceInstrumentationKeyHeader]); }