コード例 #1
0
 public void TraceCounter(HttpTracingActivity tracing, Dictionary <string, EventCounterData> counterData)
 {
     foreach (var eventCounterData in counterData)
     {
         tracing[Counters[eventCounterData.Key]] = eventCounterData.Value.Mean;
     }
 }
コード例 #2
0
        private static void AssertConfig(HttpTracingActivity httpActivity, string serviceName)
        {
            AssertTag(httpActivity, "name", Is.EqualTo(serviceName));

            AssertTag(httpActivity, "maxConnection", Is.EqualTo(100));
            AssertTag(httpActivity, "schema", Is.EqualTo("http"));
        }
コード例 #3
0
        public void TraceEnd(HttpTracingActivity activity)
        {
            activity[RequestStart] = activity.Activity.StartTimeUtc;
            activity[RequestEnd]   = EndTime(activity.Activity);
            activity[TotalTime]    = activity.Activity.Duration;

            if (activity.HttpActivity != null)
            {
                activity[HttpRequestStart] = activity.HttpActivity.StartTimeUtc;
                activity[HttpRequestEnd]   = EndTime(activity.HttpActivity);
                activity[HttpTotalTime]    = activity.HttpActivity.Duration;

                activity[HandlerDeltaOnStart] = (activity.HttpActivity.StartTimeUtc - activity.Activity.StartTimeUtc).TotalMilliseconds;
                activity[HandlerDeltaOnEnd]   = (EndTime(activity.Activity) - EndTime(activity.HttpActivity)).TotalMilliseconds;
                activity[HandlerDelta]        = (activity.Activity.Duration - activity.HttpActivity.Duration).TotalMilliseconds;


                foreach (var httpActivityTag in activity.HttpActivity.Tags)
                {
                    activity[httpActivityTag.Key] = httpActivityTag.Value;
                }
            }

            DateTime EndTime(Activity a) => a.StartTimeUtc.Add(a.Duration);
        }
コード例 #4
0
 public void Tag(HttpTracingActivity tags)
 {
     if (Enabled && Value != null)
     {
         tags[Name] = Value.Invoke(tags);
     }
 }
コード例 #5
0
 private void AssertRequest(HttpTracingActivity httpActivity, string path)
 {
     AssertTag(httpActivity, "r.schema", Is.EqualTo("http"));
     AssertTag(httpActivity, "host", Is.EqualTo("127.0.0.1"));
     AssertTag(httpActivity, "path", Is.EqualTo(path));
     AssertTag(httpActivity, OpenTelemetryConventions.AttributeHttpMethod, Is.EqualTo("GET"));
     AssertTag(httpActivity, OpenTelemetryConventions.AttributeHttpUrl, Is.EqualTo(_server.Url(path)));
 }
コード例 #6
0
 public void EnrichException(HttpTracingActivity ctx,
                             Exception requestMessage)
 {
     foreach (var enrichment in ErrorEnrichment)
     {
         enrichment.OnException(ctx, requestMessage);
     }
 }
コード例 #7
0
 public void EnrichRequest(HttpTracingActivity ctx,
                           HttpWebRequest requestMessage)
 {
     foreach (var enrichment in  RequestEnrichment)
     {
         enrichment.OnHttpRequest(ctx, requestMessage);
     }
 }
コード例 #8
0
 public void EnrichResponse(HttpTracingActivity ctx,
                            HttpResponseMessage responseMessage)
 {
     foreach (var enrichment in  ResponseEnrichment)
     {
         enrichment.OnHttpResponse(ctx, responseMessage);
     }
 }
コード例 #9
0
 public void Trace(HttpTracingActivity tracing)
 {
     tracing[Server]          = tracing.ClientOptions.Connection?.Server.NullOr(string.Intern);
     tracing[Port]            = tracing.ClientOptions.Connection?.Port.ToString().NullOr(string.Intern);
     tracing[Schema]          = tracing.ClientOptions.Connection?.Schema.NullOr(string.Intern);
     tracing[Name]            = tracing.ClientOptions.ServiceName.NullOr(string.Intern);
     tracing[Timeout]         = tracing.ClientOptions.Timeout?.Timeout.TotalMilliseconds;
     tracing[MaxConnection]   = tracing.ClientOptions.Handler?.MaxConnection;
     tracing[LifeTimeMinutes] = tracing.ClientOptions.Handler?.HandlerLifeTimeMinutes;
 }
コード例 #10
0
 public void Trace(HttpTracingActivity tracing, HttpRequestMessage request)
 {
     tracing[Method]        = request.Method.ToString();
     tracing[Url]           = request.RequestUri?.AbsoluteUri.NullOr(string.Intern);
     tracing[Schema]        = request.RequestUri?.Scheme.NullOr(string.Intern);
     tracing[Host]          = request.RequestUri?.Host.NullOr(string.Intern);
     tracing[RequestPath]   = request.RequestUri?.AbsolutePath.NullOr(string.Intern);
     tracing[RequestLength] = request.Content?.Headers.ContentLength;
     tracing[Port]          = request.RequestUri?.Port;
 }
コード例 #11
0
        private void AssertConnection(HttpTracingActivity httpActivity)
        {
#if NETFRAMEWORK
            AssertTag(httpActivity, "connection.count", Is.GreaterThanOrEqualTo(1));
            AssertTag(httpActivity, "connection.limit", Is.GreaterThanOrEqualTo(100));
            AssertTag(httpActivity, "connection.timeout", Is.GreaterThanOrEqualTo(-1));
            AssertTag(httpActivity, "connection.idleSince", Is.Not.Null);
            AssertTag(httpActivity, "connection.maxIdleTime", Is.GreaterThanOrEqualTo(100000));
            AssertTag(httpActivity, "connection.useNagle", Is.True);
#endif
        }
コード例 #12
0
 private void TraceWebRequest(HttpTracingActivity tracing, HttpWebRequest request)
 {
     tracing[Method]        = request.Method;
     tracing[Url]           = request.RequestUri?.AbsoluteUri.NullOr(string.Intern);
     tracing[Schema]        = request.RequestUri?.Scheme.NullOr(string.Intern);
     tracing[Host]          = request.RequestUri?.Host.NullOr(string.Intern);
     tracing[RequestPath]   = request.RequestUri?.AbsolutePath.NullOr(string.Intern);
     tracing[Port]          = request.RequestUri?.Port;
     tracing[RequestLength] = request.ContentLength;
     tracing[RequestLength] = request.Connection;
 }
コード例 #13
0
 public void Trace(HttpTracingActivity activity, Exception exception)
 {
     activity[Type]       = exception.GetType();
     activity[Error]      = exception.Message;
     activity[StackTrace] = exception.StackTrace;
     if (exception.InnerException != null)
     {
         activity[InnerError]      = exception.InnerException.Message;
         activity[InnerType]       = exception.InnerException.GetType();
         activity[InnerStackTrace] = exception.InnerException.StackTrace;
     }
 }
コード例 #14
0
ファイル: TcpTracer.cs プロジェクト: dinavinter/Http.Options
 public void Trace(HttpTracingActivity activity)
 {
     if (Enabled)
     {
         foreach (var tracingTag in
                  ConnectionState
                  .Append(AllConnections)
                  .Append(TotalConnection))
         {
             tracingTag.Tag(activity);
         }
     }
 }
コード例 #15
0
        public void Trace(HttpTracingActivity tracing, HttpWebRequest request)
        {
            var servicePoint = request.ServicePoint;

            tracing[Count]              = servicePoint.CurrentConnections;
            tracing[ConnectionsLimit]   = servicePoint.ConnectionLimit;
            tracing[ConnectionsTimeout] = servicePoint.ConnectionLeaseTimeout;
            tracing[IdleSince]          = servicePoint.IdleSince;
            tracing[MaxIdleTime]        = servicePoint.MaxIdleTime;
            tracing[ReceiveBufferSize]  = servicePoint.ReceiveBufferSize;
            tracing[UseNagleAlgorithm]  = servicePoint.UseNagleAlgorithm;
            tracing[ConnectionId]       = request.Connection;
            tracing[ConnectionGroup]    = request.ConnectionGroupName;
        }
コード例 #16
0
        public async Task HttpTracing_SanityTest()
        {
            var serviceName = "service";
            var client      = _factory.CreateClient(serviceName);

            var timing = await Time(() => client.GetAsync("/delay/200ms"));

            HttpTracingActivity tracingCtx = LastActivity(serviceName);

            Assert.NotNull(tracingCtx);
            Assert.Multiple(() =>
            {
                timing.AssertTime(tracingCtx);
                AssertConfig(tracingCtx, serviceName);
                AssertRequest(tracingCtx, "/delay/200ms");
                AssertResponse(tracingCtx, 200);
                AssertConnection(tracingCtx);
            });
        }
コード例 #17
0
            public void AssertTime(HttpTracingActivity httpActivity)
            {
                // Assert.That(httpActivity.Timestamp, Is.EqualTo(Timestamp).Within(20000),
                //     $"timestamp differ by {Timestamp - httpActivity.Timestamp}");
                Assert.That(httpActivity.StartTime, Is.EqualTo(StartDate).Within(20).Milliseconds, "startTime");
                Assert.That(httpActivity.EndTime, Is.EqualTo(EndTime).Within(20).Milliseconds, "endTime");
                Assert.That(httpActivity.TotalTime, Is.EqualTo(Stopwatch.Elapsed).Within(300).Milliseconds,
                            "totalTime");


                AssertTag(httpActivity, "timestamp", Is.EqualTo(httpActivity.Timestamp));
                AssertTag(httpActivity, "time.start", Is.EqualTo(httpActivity.Activity.StartTimeUtc));
                AssertTag(httpActivity, "time.end",
                          Is.EqualTo(httpActivity.Activity.StartTimeUtc.Add(httpActivity.Activity.Duration)));
                AssertTag(httpActivity, "time.duration", Is.EqualTo(httpActivity.Activity.Duration));

                AssertTag(httpActivity, "time.http.start", Is.EqualTo(httpActivity.HttpActivity.StartTimeUtc));
                AssertTag(httpActivity, "time.http.end",
                          Is.EqualTo(httpActivity.HttpActivity.StartTimeUtc.Add(httpActivity.HttpActivity.Duration)));
                AssertTag(httpActivity, "time.http.duration", Is.EqualTo(httpActivity.HttpActivity.Duration));
            }
コード例 #18
0
 public void TraceWebResponse(HttpTracingActivity activity, HttpWebResponse httpResponseMessage)
 {
     activity[ContentLength]  = httpResponseMessage.ContentLength;
     activity[HttpStatusCode] = (int)httpResponseMessage.StatusCode;
 }
コード例 #19
0
 public void OnHttpRequest(HttpTracingActivity activity, HttpRequestMessage request)
 {
     _onRequest?.Invoke(activity, request);
 }
コード例 #20
0
 public void OnHttpResponse(HttpTracingActivity activity, HttpWebResponse response)
 {
     _onWebResponse?.Invoke(activity, response);
 }
コード例 #21
0
 public void OnHttpResponse(HttpTracingActivity activity, HttpResponseMessage response)
 {
     _onResponse?.Invoke(activity, response);
 }
コード例 #22
0
 public void OnHttpRequest(HttpTracingActivity activity, HttpWebRequest request)
 {
     _onWebRequest?.Invoke(activity, request);
 }
コード例 #23
0
 public void Export(HttpTracingActivity activity)
 {
     _tracingActivityExporter(activity);
 }
コード例 #24
0
 public void OnException(HttpTracingActivity activity, Exception exception)
 {
     _onException?.Invoke(activity, exception);
 }
コード例 #25
0
        public void TraceStart(HttpTracingActivity activity)
        {
            activity[CorrelationsId] = activity.CorrelationId;

            activity[Timestamp] = activity.Timestamp;
        }
コード例 #26
0
 private static void AssertResponse(HttpTracingActivity httpActivity, int statusCode)
 {
     AssertTag(httpActivity, OpenTelemetryConventions.AttributeHttpStatusCode, Is.EqualTo(statusCode));
 }
コード例 #27
0
 private static void AssertTag(HttpTracingActivity activity, string name, IConstraint constraint)
 {
     activity.Tags.TryGetValue(name, out var tag);
     Assert.That(tag, constraint, name);
 }