private static MonitorBase GenerateTelemetryData(Activity activity) { var telemetryType = activity.GetTelemetryType(); var activityType = activity.TagObjects.ToAzureMonitorTags(out var partBTags, out var PartCTags); MonitorBase telemetry = new MonitorBase { BaseType = Telemetry_Base_Type_Mapping[telemetryType] }; if (telemetryType == TelemetryType.Request) { var url = activity.Kind == ActivityKind.Server ? HttpHelper.GetUrl(partBTags) : GetMessagingUrl(partBTags); var statusCode = HttpHelper.GetHttpStatusCode(partBTags); var success = HttpHelper.GetSuccessFromHttpStatusCode(statusCode); var request = new RequestData(2, activity.Context.SpanId.ToHexString(), activity.Duration.ToString("c", CultureInfo.InvariantCulture), success, statusCode) { Name = activity.DisplayName, Url = url, // TODO: Handle request.source. }; // TODO: Handle activity.TagObjects, extract well-known tags AddPropertiesToTelemetry(request.Properties, PartCTags); telemetry.BaseData = request; } else if (telemetryType == TelemetryType.Dependency) { var dependency = new RemoteDependencyData(2, activity.DisplayName, activity.Duration.ToString("c", CultureInfo.InvariantCulture)) { Id = activity.Context.SpanId.ToHexString() }; // TODO: Handle activity.TagObjects // ExtractPropertiesFromTags(dependency.Properties, activity.Tags); if (activityType == PartBType.Http) { dependency.Data = HttpHelper.GetUrl(partBTags); dependency.Type = "HTTP"; // TODO: Parse for storage / SB. var statusCode = HttpHelper.GetHttpStatusCode(partBTags); dependency.ResultCode = statusCode; dependency.Success = HttpHelper.GetSuccessFromHttpStatusCode(statusCode); } // TODO: Handle dependency.target. AddPropertiesToTelemetry(dependency.Properties, PartCTags); telemetry.BaseData = dependency; } return(telemetry); }
public void GetHttpStatusCode_Success() { Assert.Equal("200", HttpHelper.GetHttpStatusCode(new Dictionary <string, string> { [SemanticConventions.AttributeHttpStatusCode] = "200" })); Assert.Equal("Ok", HttpHelper.GetHttpStatusCode(new Dictionary <string, string> { [SemanticConventions.AttributeHttpStatusCode] = "Ok" })); Assert.Equal("500", HttpHelper.GetHttpStatusCode(new Dictionary <string, string> { [SemanticConventions.AttributeHttpStatusCode] = "500" })); Assert.Null(HttpHelper.GetHttpStatusCode(new Dictionary <string, string> { [SemanticConventions.AttributeHttpStatusCode] = null })); }
public void GetHttpStatusCode_Failure() { Assert.Equal("0", HttpHelper.GetHttpStatusCode(null)); Assert.Equal("0", HttpHelper.GetHttpStatusCode(new Dictionary <string, string>())); }