Move advanced span creation options to new class to simply API (#304)
* Move advanced span creation options to new class to simply API * docs * fix tests
This commit is contained in:
parent
83be8c1a24
commit
bf0e3df820
|
|
@ -54,65 +54,31 @@ namespace LoggingTracer
|
|||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public ISpan StartRootSpan(string operationName, SpanKind kind, DateTimeOffset startTimestamp, Func<IEnumerable<Link>> linksGetter)
|
||||
public ISpan StartRootSpan(string operationName, SpanKind kind, SpanCreationOptions options)
|
||||
{
|
||||
Logger.Log($"{this.prefix}.StartRootSpan({operationName}, {kind}, {startTimestamp:o}, {linksGetter})");
|
||||
Logger.Log($"{this.prefix}.StartRootSpan({operationName}, {kind}, {options.StartTimestamp:o}, {options.LinksFactory}, {options.Links})");
|
||||
return new LoggingSpan(operationName, kind);
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public ISpan StartRootSpan(string operationName, SpanKind kind, DateTimeOffset startTimestamp, IEnumerable<Link> links)
|
||||
public ISpan StartSpan(string operationName, SpanKind kind, SpanCreationOptions options)
|
||||
{
|
||||
Logger.Log($"{this.prefix}.StartRootSpan({operationName}, {kind}, {startTimestamp:o}, {links})");
|
||||
Logger.Log($"{this.prefix}.StartSpan({operationName}, {kind}, {options.StartTimestamp:o}, {options.LinksFactory}, {options.Links})");
|
||||
return new LoggingSpan(operationName, kind);
|
||||
}
|
||||
|
||||
|
||||
/// <inheritdoc/>
|
||||
public ISpan StartSpan(string operationName, ISpan parent, SpanKind kind, SpanCreationOptions options)
|
||||
{
|
||||
Logger.Log($"{this.prefix}.StartSpan({operationName}, {parent.GetType().Name}, {kind}, {options.StartTimestamp:o}, {options.LinksFactory}, {options.Links})");
|
||||
return new LoggingSpan(operationName, kind);
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public ISpan StartSpan(string operationName, SpanKind kind, DateTimeOffset startTimestamp, Func<IEnumerable<Link>> linksGetter)
|
||||
public ISpan StartSpan(string operationName, in SpanContext parent, SpanKind kind, SpanCreationOptions options)
|
||||
{
|
||||
Logger.Log($"{this.prefix}.StartSpan({operationName}, {kind}, {startTimestamp:o}, {linksGetter})");
|
||||
return new LoggingSpan(operationName, kind);
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public ISpan StartSpan(string operationName, SpanKind kind, DateTimeOffset startTimestamp, IEnumerable<Link> links)
|
||||
{
|
||||
Logger.Log($"{this.prefix}.StartSpan({operationName}, {kind}, {startTimestamp:o}, {links})");
|
||||
return new LoggingSpan(operationName, kind);
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public ISpan StartSpan(string operationName, ISpan parent, SpanKind kind, DateTimeOffset startTimestamp, Func<IEnumerable<Link>> linksGetter)
|
||||
{
|
||||
Logger.Log($"{this.prefix}.StartSpan({operationName}, {parent.GetType().Name}, {kind} {startTimestamp:o}, {linksGetter})");
|
||||
return new LoggingSpan(operationName, kind);
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public ISpan StartSpan(string operationName, ISpan parent, SpanKind kind, DateTimeOffset startTimestamp, IEnumerable<Link> links)
|
||||
{
|
||||
Logger.Log($"{this.prefix}.StartSpan({operationName}, {parent.GetType().Name}, {kind} {startTimestamp:o}, {links})");
|
||||
return new LoggingSpan(operationName, kind);
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public ISpan StartSpan(string operationName, in SpanContext parent, SpanKind kind, DateTimeOffset startTimestamp, Func<IEnumerable<Link>> linksGetter)
|
||||
{
|
||||
Logger.Log($"{this.prefix}.StartSpan({operationName}, {parent.GetType().Name}, {kind}, {startTimestamp:o}, {linksGetter})");
|
||||
return new LoggingSpan(operationName, kind);
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public ISpan StartSpan(string operationName, in SpanContext parent, SpanKind kind, DateTimeOffset startTimestamp, IEnumerable<Link> links)
|
||||
{
|
||||
Logger.Log($"{this.prefix}.StartSpan({operationName}, {parent.GetType().Name}, {kind}, {startTimestamp:o}, {links})");
|
||||
return new LoggingSpan(operationName, kind);
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public ISpan StartSpanFromActivity(string operationName, Activity activity, SpanKind kind, Func<IEnumerable<Link>> linksGetter)
|
||||
{
|
||||
Logger.Log($"{this.prefix}.StartSpanFromActivity({operationName}, {activity.OperationName}, {kind}, {linksGetter})");
|
||||
Logger.Log($"{this.prefix}.StartSpan({operationName}, {parent.GetType().Name}, {kind}, {options.StartTimestamp:o}, {options.LinksFactory}, {options.Links})");
|
||||
return new LoggingSpan(operationName, kind);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@
|
|||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// </copyright>
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
|
|
@ -50,101 +51,45 @@ namespace OpenTelemetry.Trace
|
|||
// TODO: add sampling hints
|
||||
|
||||
/// <summary>
|
||||
/// Creates root span.
|
||||
/// Starts root span.
|
||||
/// </summary>
|
||||
/// <param name="operationName">Span name.</param>
|
||||
/// <param name="kind">Kind.</param>
|
||||
/// <param name="startTimestamp">Start timestamp.</param>
|
||||
/// <param name="linksGetter">Func to retrieve the Links collection.</param>
|
||||
/// <param name="options">Advanced span creation options.</param>
|
||||
/// <returns>Span instance.</returns>
|
||||
ISpan StartRootSpan(string operationName, SpanKind kind, DateTimeOffset startTimestamp, Func<IEnumerable<Link>> linksGetter);
|
||||
ISpan StartRootSpan(string operationName, SpanKind kind, SpanCreationOptions options);
|
||||
|
||||
/// <summary>
|
||||
/// Creates root span.
|
||||
/// Starts span. If there is active current span, it becomes a parent for returned span.
|
||||
/// </summary>
|
||||
/// <param name="operationName">Span name.</param>
|
||||
/// <param name="kind">Kind.</param>
|
||||
/// <param name="startTimestamp">Start timestamp.</param>
|
||||
/// <param name="links">collection.</param>
|
||||
/// <param name="options">Advanced span creation options.</param>
|
||||
/// <returns>Span instance.</returns>
|
||||
ISpan StartRootSpan(string operationName, SpanKind kind, DateTimeOffset startTimestamp, IEnumerable<Link> links);
|
||||
ISpan StartSpan(string operationName, SpanKind kind, SpanCreationOptions options);
|
||||
|
||||
/// <summary>
|
||||
/// Creates span. If there is active current span, it becomes a parent for returned span.
|
||||
/// </summary>
|
||||
/// <param name="operationName">Span name.</param>
|
||||
/// <param name="kind">Kind.</param>
|
||||
/// <param name="startTimestamp">Start timestamp.</param>
|
||||
/// <param name="linksGetter">Func to retrieve the Links collection.</param>
|
||||
/// <returns>Span instance.</returns>
|
||||
ISpan StartSpan(string operationName, SpanKind kind, DateTimeOffset startTimestamp, Func<IEnumerable<Link>> linksGetter);
|
||||
|
||||
/// <summary>
|
||||
/// Creates span. If there is active current span, it becomes a parent for returned span.
|
||||
/// </summary>
|
||||
/// <param name="operationName">Span name.</param>
|
||||
/// <param name="kind">Kind.</param>
|
||||
/// <param name="startTimestamp">Start timestamp.</param>
|
||||
/// <param name="links">Links collection.</param>
|
||||
/// <returns>Span instance.</returns>
|
||||
ISpan StartSpan(string operationName, SpanKind kind, DateTimeOffset startTimestamp, IEnumerable<Link> links);
|
||||
|
||||
/// <summary>
|
||||
/// Creates span.
|
||||
/// Starts span.
|
||||
/// </summary>
|
||||
/// <param name="operationName">Span name.</param>
|
||||
/// <param name="parent">Parent for new span.</param>
|
||||
/// <param name="kind">Kind.</param>
|
||||
/// <param name="startTimestamp">Start timestamp.</param>
|
||||
/// <param name="linksGetter">Func to retrieve the Links collection.</param>
|
||||
/// <param name="options">Advanced span creation options.</param>
|
||||
/// <returns>Span instance.</returns>
|
||||
ISpan StartSpan(string operationName, ISpan parent, SpanKind kind, DateTimeOffset startTimestamp, Func<IEnumerable<Link>> linksGetter);
|
||||
ISpan StartSpan(string operationName, ISpan parent, SpanKind kind, SpanCreationOptions options);
|
||||
|
||||
/// <summary>
|
||||
/// Creates span.
|
||||
/// Starts span.
|
||||
/// </summary>
|
||||
/// <param name="operationName">Span name.</param>
|
||||
/// <param name="parent">Parent for new span.</param>
|
||||
/// <param name="kind">Kind.</param>
|
||||
/// <param name="startTimestamp">Start timestamp.</param>
|
||||
/// <param name="links">Links collection.</param>
|
||||
/// <param name="options">Advanced span creation options.</param>
|
||||
/// <returns>Span instance.</returns>
|
||||
ISpan StartSpan(string operationName, ISpan parent, SpanKind kind, DateTimeOffset startTimestamp, IEnumerable<Link> links);
|
||||
ISpan StartSpan(string operationName, in SpanContext parent, SpanKind kind, SpanCreationOptions options);
|
||||
|
||||
/// <summary>
|
||||
/// Creates span.
|
||||
/// </summary>
|
||||
/// <param name="operationName">Span name.</param>
|
||||
/// <param name="parent">Parent for new span.</param>
|
||||
/// <param name="kind">Kind.</param>
|
||||
/// <param name="startTimestamp">Start timestamp.</param>
|
||||
/// <param name="linksGetter">Func to retrieve the Links collection.</param>
|
||||
/// <returns>Span instance.</returns>
|
||||
ISpan StartSpan(string operationName, in SpanContext parent, SpanKind kind, DateTimeOffset startTimestamp, Func<IEnumerable<Link>> linksGetter);
|
||||
|
||||
/// <summary>
|
||||
/// Creates span.
|
||||
/// </summary>
|
||||
/// <param name="operationName">Span name.</param>
|
||||
/// <param name="parent">Parent for new span.</param>
|
||||
/// <param name="kind">Kind.</param>
|
||||
/// <param name="startTimestamp">Start timestamp.</param>
|
||||
/// <param name="links">collection.</param>
|
||||
/// <returns>Span instance.</returns>
|
||||
ISpan StartSpan(string operationName, in SpanContext parent, SpanKind kind, DateTimeOffset startTimestamp, IEnumerable<Link> links);
|
||||
|
||||
/// <summary>
|
||||
/// Creates span from auto-collected System.Diagnostics.Activity.
|
||||
/// </summary>
|
||||
/// <param name="operationName">Span name.</param>
|
||||
/// <param name="activity">Activity instance to create span from.</param>
|
||||
/// <param name="kind">Kind.</param>
|
||||
/// <param name="linksGetter">Func to retrieve the Links collection.</param>
|
||||
/// <returns>Span instance.</returns>
|
||||
ISpan StartSpanFromActivity(string operationName, Activity activity, SpanKind kind, Func<IEnumerable<Link>> linksGetter);
|
||||
|
||||
/// <summary>
|
||||
/// Creates span from auto-collected System.Diagnostics.Activity.
|
||||
/// Starts span from auto-collected <see cref="Activity"/>.
|
||||
/// </summary>
|
||||
/// <param name="operationName">Span name.</param>
|
||||
/// <param name="activity">Activity instance to create span from.</param>
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@
|
|||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// </copyright>
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
|
|
@ -47,104 +48,44 @@ namespace OpenTelemetry.Trace
|
|||
return this.realTracer != null ? this.realTracer.WithSpan(span) : NoopScope;
|
||||
}
|
||||
|
||||
public ISpan StartRootSpan(string operationName, SpanKind kind, DateTimeOffset startTimestamp, Func<IEnumerable<Link>> linksGetter)
|
||||
public ISpan StartRootSpan(string operationName, SpanKind kind, SpanCreationOptions options)
|
||||
{
|
||||
if (operationName == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(operationName));
|
||||
}
|
||||
|
||||
return this.realTracer != null ? this.realTracer.StartRootSpan(operationName, kind, startTimestamp, linksGetter) : BlankSpan.Instance;
|
||||
return this.realTracer != null ? this.realTracer.StartRootSpan(operationName, kind, options) : BlankSpan.Instance;
|
||||
}
|
||||
|
||||
public ISpan StartRootSpan(string operationName, SpanKind kind, DateTimeOffset startTimestamp, IEnumerable<Link> links)
|
||||
public ISpan StartSpan(string operationName, SpanKind kind, SpanCreationOptions options)
|
||||
{
|
||||
if (operationName == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(operationName));
|
||||
}
|
||||
|
||||
return this.realTracer != null ? this.realTracer.StartRootSpan(operationName, kind, startTimestamp, links) : BlankSpan.Instance;
|
||||
return this.realTracer != null ? this.realTracer.StartSpan(operationName, kind, options) : BlankSpan.Instance;
|
||||
}
|
||||
|
||||
public ISpan StartSpan(string operationName, SpanKind kind, DateTimeOffset startTimestamp, Func<IEnumerable<Link>> linksGetter)
|
||||
public ISpan StartSpan(string operationName, ISpan parent, SpanKind kind, SpanCreationOptions options)
|
||||
{
|
||||
if (operationName == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(operationName));
|
||||
}
|
||||
|
||||
return this.realTracer != null ? this.realTracer.StartSpan(operationName, kind, startTimestamp, linksGetter) : BlankSpan.Instance;
|
||||
return this.realTracer != null ? this.realTracer.StartSpan(operationName, parent, kind, options) : BlankSpan.Instance;
|
||||
}
|
||||
|
||||
public ISpan StartSpan(string operationName, SpanKind kind, DateTimeOffset startTimestamp, IEnumerable<Link> links)
|
||||
public ISpan StartSpan(string operationName, in SpanContext parent, SpanKind kind, SpanCreationOptions options)
|
||||
{
|
||||
if (operationName == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(operationName));
|
||||
}
|
||||
|
||||
return this.realTracer != null ? this.realTracer.StartSpan(operationName, kind, startTimestamp, links) : BlankSpan.Instance;
|
||||
}
|
||||
|
||||
public ISpan StartSpan(string operationName, ISpan parent, SpanKind kind, DateTimeOffset startTimestamp, Func<IEnumerable<Link>> linksGetter)
|
||||
{
|
||||
if (operationName == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(operationName));
|
||||
}
|
||||
|
||||
return this.realTracer != null ? this.realTracer.StartSpan(operationName, parent, kind, startTimestamp, linksGetter) : BlankSpan.Instance;
|
||||
}
|
||||
|
||||
public ISpan StartSpan(string operationName, ISpan parent, SpanKind kind, DateTimeOffset startTimestamp, IEnumerable<Link> links)
|
||||
{
|
||||
if (operationName == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(operationName));
|
||||
}
|
||||
|
||||
return this.realTracer != null ? this.realTracer.StartSpan(operationName, parent, kind, startTimestamp, links) : BlankSpan.Instance;
|
||||
}
|
||||
|
||||
public ISpan StartSpan(string operationName, in SpanContext parent, SpanKind kind, DateTimeOffset startTimestamp, Func<IEnumerable<Link>> linksGetter)
|
||||
{
|
||||
if (operationName == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(operationName));
|
||||
}
|
||||
|
||||
return this.realTracer != null ? this.realTracer.StartSpan(operationName, parent, kind, startTimestamp, linksGetter) : BlankSpan.Instance;
|
||||
}
|
||||
|
||||
public ISpan StartSpan(string operationName, in SpanContext parent, SpanKind kind, DateTimeOffset startTimestamp, IEnumerable<Link> links)
|
||||
{
|
||||
if (operationName == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(operationName));
|
||||
}
|
||||
|
||||
return this.realTracer != null ? this.realTracer.StartSpan(operationName, parent, kind, startTimestamp, links) : BlankSpan.Instance;
|
||||
}
|
||||
|
||||
public ISpan StartSpanFromActivity(string operationName, Activity activity, SpanKind kind, Func<IEnumerable<Link>> linksGetter)
|
||||
{
|
||||
if (operationName == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(operationName));
|
||||
}
|
||||
|
||||
if (activity == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(activity));
|
||||
}
|
||||
|
||||
if (activity.IdFormat != ActivityIdFormat.W3C)
|
||||
{
|
||||
throw new ArgumentException("Current Activity is not in W3C format");
|
||||
}
|
||||
|
||||
return this.realTracer != null ? this.realTracer.StartSpanFromActivity(operationName, activity, kind, linksGetter) : BlankSpan.Instance;
|
||||
return this.realTracer != null ? this.realTracer.StartSpan(operationName, parent, kind, options) : BlankSpan.Instance;
|
||||
}
|
||||
|
||||
public ISpan StartSpanFromActivity(string operationName, Activity activity, SpanKind kind, IEnumerable<Link> links)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,44 @@
|
|||
// <copyright file="SpanCreationOptions.cs" company="OpenTelemetry Authors">
|
||||
// Copyright 2018, OpenTelemetry Authors
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// </copyright>
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace OpenTelemetry.Trace
|
||||
{
|
||||
/// <summary>
|
||||
/// Span creation options for advanced scenarios.
|
||||
/// </summary>
|
||||
public class SpanCreationOptions
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets or sets explicit span start timestamp.
|
||||
/// Use it when span has started in the past and created later.
|
||||
/// </summary>
|
||||
public DateTimeOffset StartTimestamp { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets list of <see cref="Link"/>.
|
||||
/// </summary>
|
||||
public IEnumerable<Link> Links { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets Links factory. Use it to deserialize list of <see cref="Link"/> lazily
|
||||
/// when application configures OpenTelemetry implementation that supports links.
|
||||
/// </summary>
|
||||
public Func<IEnumerable<Link>> LinksFactory { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -14,8 +14,6 @@
|
|||
// limitations under the License.
|
||||
// </copyright>
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace OpenTelemetry.Trace
|
||||
|
|
@ -23,18 +21,18 @@ namespace OpenTelemetry.Trace
|
|||
public static class TracerExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// Creates root span.
|
||||
/// Starts root span.
|
||||
/// </summary>
|
||||
/// <param name="tracer">Tracer instance.</param>
|
||||
/// <param name="operationName">Span name.</param>
|
||||
/// <returns>Span instance.</returns>
|
||||
public static ISpan StartRootSpan(this ITracer tracer, string operationName)
|
||||
{
|
||||
return tracer.StartRootSpan(operationName, SpanKind.Internal, default, null as Func<IEnumerable<Link>>);
|
||||
return tracer.StartRootSpan(operationName, SpanKind.Internal, null);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates root span.
|
||||
/// Starts root span.
|
||||
/// </summary>
|
||||
/// <param name="tracer">Tracer instance.</param>
|
||||
/// <param name="operationName">Span name.</param>
|
||||
|
|
@ -42,35 +40,22 @@ namespace OpenTelemetry.Trace
|
|||
/// <returns>Span instance.</returns>
|
||||
public static ISpan StartRootSpan(this ITracer tracer, string operationName, SpanKind kind)
|
||||
{
|
||||
return tracer.StartRootSpan(operationName, kind, default, null as Func<IEnumerable<Link>>);
|
||||
return tracer.StartRootSpan(operationName, kind, null);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates root span.
|
||||
/// </summary>
|
||||
/// <param name="tracer">Tracer instance.</param>
|
||||
/// <param name="operationName">Span name.</param>
|
||||
/// <param name="kind">Kind.</param>
|
||||
/// <param name="startTimestamp">Start timestamp.</param>
|
||||
/// <returns>Span instance.</returns>
|
||||
public static ISpan StartRootSpan(this ITracer tracer, string operationName, SpanKind kind, DateTimeOffset startTimestamp)
|
||||
{
|
||||
return tracer.StartRootSpan(operationName, kind, startTimestamp, null as Func<IEnumerable<Link>>);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates span. If there is active current span, it becomes a parent for returned span.
|
||||
/// Starts span. If there is active current span, it becomes a parent for returned span.
|
||||
/// </summary>
|
||||
/// <param name="tracer">Tracer instance.</param>
|
||||
/// <param name="operationName">Span name.</param>
|
||||
/// <returns>Span instance.</returns>
|
||||
public static ISpan StartSpan(this ITracer tracer, string operationName)
|
||||
{
|
||||
return tracer.StartSpan(operationName, SpanKind.Internal, default, null as Func<IEnumerable<Link>>);
|
||||
return tracer.StartSpan(operationName, SpanKind.Internal, null);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates span. If there is active current span, it becomes a parent for returned span.
|
||||
/// Starts span. If there is active current span, it becomes a parent for returned span.
|
||||
/// </summary>
|
||||
/// <param name="tracer">Tracer instance.</param>
|
||||
/// <param name="operationName">Span name.</param>
|
||||
|
|
@ -78,24 +63,11 @@ namespace OpenTelemetry.Trace
|
|||
/// <returns>Span instance.</returns>
|
||||
public static ISpan StartSpan(this ITracer tracer, string operationName, SpanKind kind)
|
||||
{
|
||||
return tracer.StartSpan(operationName, kind, default, null as Func<IEnumerable<Link>>);
|
||||
return tracer.StartSpan(operationName, kind, null);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates span. If there is active current span, it becomes a parent for returned span.
|
||||
/// </summary>
|
||||
/// <param name="tracer">Tracer instance.</param>
|
||||
/// <param name="operationName">Span name.</param>
|
||||
/// <param name="kind">Kind.</param>
|
||||
/// <param name="startTimestamp">Start timestamp.</param>
|
||||
/// <returns>Span instance.</returns>
|
||||
public static ISpan StartSpan(this ITracer tracer, string operationName, SpanKind kind, DateTimeOffset startTimestamp)
|
||||
{
|
||||
return tracer.StartSpan(operationName, kind, startTimestamp, null as Func<IEnumerable<Link>>);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates span.
|
||||
/// Starts span.
|
||||
/// </summary>
|
||||
/// <param name="tracer">Tracer instance.</param>
|
||||
/// <param name="operationName">Span name.</param>
|
||||
|
|
@ -103,11 +75,11 @@ namespace OpenTelemetry.Trace
|
|||
/// <returns>Span instance.</returns>
|
||||
public static ISpan StartSpan(this ITracer tracer, string operationName, ISpan parent)
|
||||
{
|
||||
return tracer.StartSpan(operationName, parent, SpanKind.Internal, default, null as Func<IEnumerable<Link>>);
|
||||
return tracer.StartSpan(operationName, parent, SpanKind.Internal, null);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates span.
|
||||
/// Starts span.
|
||||
/// </summary>
|
||||
/// <param name="tracer">Tracer instance.</param>
|
||||
/// <param name="operationName">Span name.</param>
|
||||
|
|
@ -116,25 +88,11 @@ namespace OpenTelemetry.Trace
|
|||
/// <returns>Span instance.</returns>
|
||||
public static ISpan StartSpan(this ITracer tracer, string operationName, ISpan parent, SpanKind kind)
|
||||
{
|
||||
return tracer.StartSpan(operationName, parent, kind, default, null as Func<IEnumerable<Link>>);
|
||||
return tracer.StartSpan(operationName, parent, kind, null);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates span.
|
||||
/// </summary>
|
||||
/// <param name="tracer">Tracer instance.</param>
|
||||
/// <param name="operationName">Span name.</param>
|
||||
/// <param name="parent">Parent for new span.</param>
|
||||
/// <param name="kind">Kind.</param>
|
||||
/// <param name="startTimestamp">Start timestamp.</param>
|
||||
/// <returns>Span instance.</returns>
|
||||
public static ISpan StartSpan(this ITracer tracer, string operationName, ISpan parent, SpanKind kind, DateTimeOffset startTimestamp)
|
||||
{
|
||||
return tracer.StartSpan(operationName, parent, kind, startTimestamp, null as Func<IEnumerable<Link>>);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates span.
|
||||
/// Starts span.
|
||||
/// </summary>
|
||||
/// <param name="tracer">Tracer instance.</param>
|
||||
/// <param name="operationName">Span name.</param>
|
||||
|
|
@ -142,11 +100,11 @@ namespace OpenTelemetry.Trace
|
|||
/// <returns>Span instance.</returns>
|
||||
public static ISpan StartSpan(this ITracer tracer, string operationName, in SpanContext parent)
|
||||
{
|
||||
return tracer.StartSpan(operationName, parent, SpanKind.Internal, default, null as Func<IEnumerable<Link>>);
|
||||
return tracer.StartSpan(operationName, parent, SpanKind.Internal, null);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates span.
|
||||
/// Starts span.
|
||||
/// </summary>
|
||||
/// <param name="tracer">Tracer instance.</param>
|
||||
/// <param name="operationName">Span name.</param>
|
||||
|
|
@ -155,25 +113,11 @@ namespace OpenTelemetry.Trace
|
|||
/// <returns>Span instance.</returns>
|
||||
public static ISpan StartSpan(this ITracer tracer, string operationName, in SpanContext parent, SpanKind kind)
|
||||
{
|
||||
return tracer.StartSpan(operationName, parent, kind, default, null as Func<IEnumerable<Link>>);
|
||||
return tracer.StartSpan(operationName, parent, kind, null);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates span.
|
||||
/// </summary>
|
||||
/// <param name="tracer">Tracer instance.</param>
|
||||
/// <param name="operationName">Span name.</param>
|
||||
/// <param name="parent">Parent for new span.</param>
|
||||
/// <param name="kind">Kind.</param>
|
||||
/// <param name="startTimestamp">Start timestamp.</param>
|
||||
/// <returns>Span instance.</returns>
|
||||
public static ISpan StartSpan(this ITracer tracer, string operationName, in SpanContext parent, SpanKind kind, DateTimeOffset startTimestamp)
|
||||
{
|
||||
return tracer.StartSpan(operationName, parent, kind, startTimestamp, null as Func<IEnumerable<Link>>);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates span from auto-collected System.Diagnostics.Activity.
|
||||
/// Starts span from auto-collected <see cref="Activity"/>.
|
||||
/// </summary>
|
||||
/// <param name="tracer">Tracer instance.</param>
|
||||
/// <param name="operationName">Span name.</param>
|
||||
|
|
@ -181,11 +125,11 @@ namespace OpenTelemetry.Trace
|
|||
/// <returns>Span instance.</returns>
|
||||
public static ISpan StartSpanFromActivity(this ITracer tracer, string operationName, Activity activity)
|
||||
{
|
||||
return tracer.StartSpanFromActivity(operationName, activity, SpanKind.Internal, null as Func<IEnumerable<Link>>);
|
||||
return tracer.StartSpanFromActivity(operationName, activity, SpanKind.Internal, null);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates span from auto-collected System.Diagnostics.Activity.
|
||||
/// Starts span from auto-collected <see cref="Activity"/>.
|
||||
/// </summary>
|
||||
/// <param name="tracer">Tracer instance.</param>
|
||||
/// <param name="operationName">Span name.</param>
|
||||
|
|
@ -194,7 +138,7 @@ namespace OpenTelemetry.Trace
|
|||
/// <returns>Span instance.</returns>
|
||||
public static ISpan StartSpanFromActivity(this ITracer tracer, string operationName, Activity activity, SpanKind kind)
|
||||
{
|
||||
return tracer.StartSpanFromActivity(operationName, activity, kind, null as Func<IEnumerable<Link>>);
|
||||
return tracer.StartSpanFromActivity(operationName, activity, kind, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ namespace OpenTelemetry.Collector.Dependencies
|
|||
}
|
||||
}
|
||||
|
||||
var span = this.Tracer.StartSpanFromActivity(operationName, Activity.Current, spanKind, parentLinks);
|
||||
var span = this.Tracer.StartSpanFromActivity(operationName, current, spanKind, parentLinks);
|
||||
|
||||
this.Tracer.WithSpan(span);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ namespace OpenTelemetry.Collector.StackExchangeRedis.Implementation
|
|||
name = "name";
|
||||
}
|
||||
|
||||
var span = tracer.StartSpan(name, parentSpan, SpanKind.Client, command.CommandCreated);
|
||||
var span = tracer.StartSpan(name, parentSpan, SpanKind.Client, new SpanCreationOptions { StartTimestamp = command.CommandCreated });
|
||||
if (span.IsRecording)
|
||||
{
|
||||
// use https://github.com/opentracing/specification/blob/master/semantic_conventions.md for now
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using global::OpenTracing;
|
||||
using SpanCreationOptions = OpenTelemetry.Trace.SpanCreationOptions;
|
||||
|
||||
namespace OpenTelemetry.Shims.OpenTracing
|
||||
{
|
||||
|
|
@ -156,18 +157,28 @@ namespace OpenTelemetry.Shims.OpenTracing
|
|||
{
|
||||
Trace.ISpan span = null;
|
||||
|
||||
SpanCreationOptions options = null;
|
||||
if (this.explicitStartTime != null || this.links != null)
|
||||
{
|
||||
options = new SpanCreationOptions
|
||||
{
|
||||
StartTimestamp = this.explicitStartTime ?? default,
|
||||
Links = this.links,
|
||||
};
|
||||
}
|
||||
|
||||
// If specified, this takes precedence.
|
||||
if (this.ignoreActiveSpan)
|
||||
{
|
||||
span = this.tracer.StartRootSpan(this.spanName, this.spanKind, this.explicitStartTime ?? default, this.links);
|
||||
span = this.tracer.StartRootSpan(this.spanName, this.spanKind, options);
|
||||
}
|
||||
else if (this.parentSpan != null)
|
||||
{
|
||||
span = this.tracer.StartSpan(this.spanName, this.parentSpan, this.spanKind, this.explicitStartTime ?? default, this.links);
|
||||
span = this.tracer.StartSpan(this.spanName, this.parentSpan, this.spanKind, options);
|
||||
}
|
||||
else if (this.parentSpanContext != null && this.parentSpanContext.IsValid)
|
||||
{
|
||||
span = this.tracer.StartSpan(this.spanName, this.parentSpanContext, this.spanKind, this.explicitStartTime ?? default, this.links);
|
||||
span = this.tracer.StartSpan(this.spanName, this.parentSpanContext, this.spanKind, options);
|
||||
}
|
||||
else if (this.parentSpan == null && (this.parentSpanContext == null || !this.parentSpanContext.IsValid) && (this.tracer.CurrentSpan == null || this.tracer.CurrentSpan == Trace.BlankSpan.Instance))
|
||||
{
|
||||
|
|
@ -184,7 +195,7 @@ namespace OpenTelemetry.Shims.OpenTracing
|
|||
|
||||
if (span == null)
|
||||
{
|
||||
span = this.tracer.StartSpan(this.spanName, this.spanKind, this.explicitStartTime ?? default, this.links);
|
||||
span = this.tracer.StartSpan(this.spanName, this.spanKind, options);
|
||||
}
|
||||
|
||||
foreach (var kvp in this.attributes)
|
||||
|
|
|
|||
|
|
@ -35,13 +35,14 @@ namespace OpenTelemetry.Trace
|
|||
{
|
||||
private readonly TracerConfiguration tracerConfiguration;
|
||||
private readonly SpanProcessor spanProcessor;
|
||||
private readonly DateTimeOffset startTimestamp;
|
||||
private readonly object lck = new object();
|
||||
|
||||
private EvictingQueue<KeyValuePair<string, object>> attributes;
|
||||
private EvictingQueue<Event> events;
|
||||
private List<Link> links;
|
||||
private Status status;
|
||||
|
||||
private DateTimeOffset startTimestamp;
|
||||
private DateTimeOffset endTimestamp;
|
||||
private bool hasEnded;
|
||||
|
||||
|
|
@ -51,24 +52,7 @@ namespace OpenTelemetry.Trace
|
|||
ActivityAndTracestate activityAndTracestate,
|
||||
bool ownsActivity,
|
||||
SpanKind spanKind,
|
||||
DateTimeOffset startTimestamp,
|
||||
Func<IEnumerable<Link>> linksGetter,
|
||||
TracerConfiguration tracerConfiguration,
|
||||
SpanProcessor spanProcessor,
|
||||
Resource libraryResource)
|
||||
: this(name, parentSpanContext, activityAndTracestate, ownsActivity, spanKind, startTimestamp,
|
||||
linksGetter?.Invoke(), tracerConfiguration, spanProcessor, libraryResource)
|
||||
{
|
||||
}
|
||||
|
||||
private Span(
|
||||
string name,
|
||||
SpanContext parentSpanContext,
|
||||
ActivityAndTracestate activityAndTracestate,
|
||||
bool ownsActivity,
|
||||
SpanKind spanKind,
|
||||
DateTimeOffset startTimestamp,
|
||||
IEnumerable<Link> links,
|
||||
SpanCreationOptions spanCreationOptions,
|
||||
TracerConfiguration tracerConfiguration,
|
||||
SpanProcessor spanProcessor,
|
||||
Resource libraryResource)
|
||||
|
|
@ -76,7 +60,17 @@ namespace OpenTelemetry.Trace
|
|||
this.Name = name;
|
||||
this.LibraryResource = libraryResource;
|
||||
|
||||
this.startTimestamp = startTimestamp == default ? PreciseTimestamp.GetUtcNow() : startTimestamp;
|
||||
IEnumerable<Link> links = null;
|
||||
if (spanCreationOptions != null)
|
||||
{
|
||||
links = spanCreationOptions.Links ?? spanCreationOptions.LinksFactory?.Invoke();
|
||||
this.startTimestamp = spanCreationOptions.StartTimestamp;
|
||||
}
|
||||
|
||||
if (this.startTimestamp == default)
|
||||
{
|
||||
this.startTimestamp = PreciseTimestamp.GetUtcNow();
|
||||
}
|
||||
|
||||
this.tracerConfiguration = tracerConfiguration;
|
||||
this.spanProcessor = spanProcessor;
|
||||
|
|
@ -99,19 +93,7 @@ namespace OpenTelemetry.Trace
|
|||
{
|
||||
this.Activity.ActivityTraceFlags |= ActivityTraceFlags.Recorded;
|
||||
|
||||
if (links != null)
|
||||
{
|
||||
var parentLinks = links.ToList();
|
||||
if (parentLinks.Count <= this.tracerConfiguration.MaxNumberOfLinks)
|
||||
{
|
||||
this.links = parentLinks; // common case - no allocations
|
||||
}
|
||||
else
|
||||
{
|
||||
this.links = parentLinks.GetRange(parentLinks.Count - this.tracerConfiguration.MaxNumberOfLinks, this.tracerConfiguration.MaxNumberOfLinks);
|
||||
}
|
||||
}
|
||||
|
||||
this.SetLinks(links);
|
||||
this.spanProcessor.OnStart(this);
|
||||
}
|
||||
else
|
||||
|
|
@ -372,8 +354,7 @@ namespace OpenTelemetry.Trace
|
|||
string name,
|
||||
ISpan parentSpan,
|
||||
SpanKind spanKind,
|
||||
DateTimeOffset startTimestamp,
|
||||
Func<IEnumerable<Link>> linksGetter,
|
||||
SpanCreationOptions spanCreationOptions,
|
||||
TracerConfiguration tracerConfiguration,
|
||||
SpanProcessor spanProcessor,
|
||||
Resource libraryResource)
|
||||
|
|
@ -386,8 +367,7 @@ namespace OpenTelemetry.Trace
|
|||
FromParentSpan(name, parentSpan),
|
||||
true,
|
||||
spanKind,
|
||||
startTimestamp,
|
||||
linksGetter,
|
||||
spanCreationOptions,
|
||||
tracerConfiguration,
|
||||
spanProcessor,
|
||||
libraryResource);
|
||||
|
|
@ -402,8 +382,7 @@ namespace OpenTelemetry.Trace
|
|||
CreateRoot(name),
|
||||
true,
|
||||
spanKind,
|
||||
startTimestamp,
|
||||
linksGetter,
|
||||
spanCreationOptions,
|
||||
tracerConfiguration,
|
||||
spanProcessor,
|
||||
libraryResource);
|
||||
|
|
@ -418,65 +397,7 @@ namespace OpenTelemetry.Trace
|
|||
FromCurrentParentActivity(name, currentActivity),
|
||||
true,
|
||||
spanKind,
|
||||
startTimestamp,
|
||||
linksGetter,
|
||||
tracerConfiguration,
|
||||
spanProcessor,
|
||||
libraryResource);
|
||||
}
|
||||
|
||||
internal static Span CreateFromParentSpan(
|
||||
string name,
|
||||
ISpan parentSpan,
|
||||
SpanKind spanKind,
|
||||
DateTimeOffset startTimestamp,
|
||||
IEnumerable<Link> links,
|
||||
TracerConfiguration tracerConfiguration,
|
||||
SpanProcessor spanProcessor,
|
||||
Resource libraryResource)
|
||||
{
|
||||
if (parentSpan.Context.IsValid)
|
||||
{
|
||||
return new Span(
|
||||
name,
|
||||
parentSpan.Context,
|
||||
FromParentSpan(name, parentSpan),
|
||||
true,
|
||||
spanKind,
|
||||
startTimestamp,
|
||||
links,
|
||||
tracerConfiguration,
|
||||
spanProcessor,
|
||||
libraryResource);
|
||||
}
|
||||
|
||||
var currentActivity = Activity.Current;
|
||||
if (currentActivity == null)
|
||||
{
|
||||
return new Span(
|
||||
name,
|
||||
SpanContext.Blank,
|
||||
CreateRoot(name),
|
||||
true,
|
||||
spanKind,
|
||||
startTimestamp,
|
||||
links,
|
||||
tracerConfiguration,
|
||||
spanProcessor,
|
||||
libraryResource);
|
||||
}
|
||||
|
||||
return new Span(
|
||||
name,
|
||||
new SpanContext(
|
||||
currentActivity.TraceId,
|
||||
currentActivity.SpanId,
|
||||
currentActivity.ActivityTraceFlags),
|
||||
FromCurrentParentActivity(name, currentActivity),
|
||||
true,
|
||||
spanKind,
|
||||
startTimestamp,
|
||||
links,
|
||||
spanCreationOptions,
|
||||
tracerConfiguration,
|
||||
spanProcessor,
|
||||
libraryResource);
|
||||
|
|
@ -486,8 +407,7 @@ namespace OpenTelemetry.Trace
|
|||
string name,
|
||||
SpanContext parentContext,
|
||||
SpanKind spanKind,
|
||||
DateTimeOffset startTimestamp,
|
||||
Func<IEnumerable<Link>> linksGetter,
|
||||
SpanCreationOptions spanCreationOptions,
|
||||
TracerConfiguration tracerConfiguration,
|
||||
SpanProcessor spanProcessor,
|
||||
Resource libraryResource)
|
||||
|
|
@ -498,31 +418,7 @@ namespace OpenTelemetry.Trace
|
|||
FromParentSpanContext(name, parentContext),
|
||||
true,
|
||||
spanKind,
|
||||
startTimestamp,
|
||||
linksGetter,
|
||||
tracerConfiguration,
|
||||
spanProcessor,
|
||||
libraryResource);
|
||||
}
|
||||
|
||||
internal static Span CreateFromParentContext(
|
||||
string name,
|
||||
SpanContext parentContext,
|
||||
SpanKind spanKind,
|
||||
DateTimeOffset startTimestamp,
|
||||
IEnumerable<Link> links,
|
||||
TracerConfiguration tracerConfiguration,
|
||||
SpanProcessor spanProcessor,
|
||||
Resource libraryResource)
|
||||
{
|
||||
return new Span(
|
||||
name,
|
||||
parentContext,
|
||||
FromParentSpanContext(name, parentContext),
|
||||
true,
|
||||
spanKind,
|
||||
startTimestamp,
|
||||
links,
|
||||
spanCreationOptions,
|
||||
tracerConfiguration,
|
||||
spanProcessor,
|
||||
libraryResource);
|
||||
|
|
@ -531,8 +427,7 @@ namespace OpenTelemetry.Trace
|
|||
internal static Span CreateRoot(
|
||||
string name,
|
||||
SpanKind spanKind,
|
||||
DateTimeOffset startTimestamp,
|
||||
Func<IEnumerable<Link>> linksGetter,
|
||||
SpanCreationOptions spanCreationOptions,
|
||||
TracerConfiguration tracerConfiguration,
|
||||
SpanProcessor spanProcessor,
|
||||
Resource libraryResource)
|
||||
|
|
@ -543,52 +438,7 @@ namespace OpenTelemetry.Trace
|
|||
CreateRoot(name),
|
||||
true,
|
||||
spanKind,
|
||||
startTimestamp,
|
||||
linksGetter,
|
||||
tracerConfiguration,
|
||||
spanProcessor,
|
||||
libraryResource);
|
||||
}
|
||||
|
||||
internal static Span CreateRoot(
|
||||
string name,
|
||||
SpanKind spanKind,
|
||||
DateTimeOffset startTimestamp,
|
||||
IEnumerable<Link> links,
|
||||
TracerConfiguration tracerConfiguration,
|
||||
SpanProcessor spanProcessor,
|
||||
Resource libraryResource)
|
||||
{
|
||||
return new Span(
|
||||
name,
|
||||
SpanContext.Blank,
|
||||
CreateRoot(name),
|
||||
true,
|
||||
spanKind,
|
||||
startTimestamp,
|
||||
links,
|
||||
tracerConfiguration,
|
||||
spanProcessor,
|
||||
libraryResource);
|
||||
}
|
||||
|
||||
internal static Span CreateFromActivity(
|
||||
string name,
|
||||
Activity activity,
|
||||
SpanKind spanKind,
|
||||
Func<IEnumerable<Link>> linksGetter,
|
||||
TracerConfiguration tracerConfiguration,
|
||||
SpanProcessor spanProcessor,
|
||||
Resource libraryResource)
|
||||
{
|
||||
return new Span(
|
||||
name,
|
||||
ParentContextFromActivity(activity),
|
||||
FromActivity(name, activity),
|
||||
false,
|
||||
spanKind,
|
||||
new DateTimeOffset(activity.StartTimeUtc),
|
||||
linksGetter,
|
||||
spanCreationOptions,
|
||||
tracerConfiguration,
|
||||
spanProcessor,
|
||||
libraryResource);
|
||||
|
|
@ -603,17 +453,23 @@ namespace OpenTelemetry.Trace
|
|||
SpanProcessor spanProcessor,
|
||||
Resource libraryResource)
|
||||
{
|
||||
return new Span(
|
||||
var span = new Span(
|
||||
name,
|
||||
ParentContextFromActivity(activity),
|
||||
FromActivity(name, activity),
|
||||
false,
|
||||
spanKind,
|
||||
new DateTimeOffset(activity.StartTimeUtc),
|
||||
links,
|
||||
null,
|
||||
tracerConfiguration,
|
||||
spanProcessor,
|
||||
libraryResource);
|
||||
libraryResource)
|
||||
{
|
||||
startTimestamp = new DateTimeOffset(activity.StartTimeUtc),
|
||||
};
|
||||
|
||||
span.SetLinks(links);
|
||||
|
||||
return span;
|
||||
}
|
||||
|
||||
private static bool MakeSamplingDecision(
|
||||
|
|
@ -764,6 +620,26 @@ namespace OpenTelemetry.Trace
|
|||
return null;
|
||||
}
|
||||
|
||||
private void SetLinks(IEnumerable<Link> links)
|
||||
{
|
||||
if (this.IsRecording)
|
||||
{
|
||||
if (links != null)
|
||||
{
|
||||
var parentLinks = links.ToList();
|
||||
if (parentLinks.Count <= this.tracerConfiguration.MaxNumberOfLinks)
|
||||
{
|
||||
this.links = parentLinks;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.links = parentLinks.GetRange(parentLinks.Count - this.tracerConfiguration.MaxNumberOfLinks,
|
||||
this.tracerConfiguration.MaxNumberOfLinks);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private readonly struct ActivityAndTracestate
|
||||
{
|
||||
public readonly Activity Activity;
|
||||
|
|
|
|||
|
|
@ -76,41 +76,24 @@ namespace OpenTelemetry.Trace
|
|||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public ISpan StartRootSpan(string operationName, SpanKind kind, DateTimeOffset startTimestamp, Func<IEnumerable<Link>> linksGetter)
|
||||
public ISpan StartRootSpan(string operationName, SpanKind kind, SpanCreationOptions options)
|
||||
{
|
||||
if (operationName == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(operationName));
|
||||
}
|
||||
|
||||
return Span.CreateRoot(operationName, kind, startTimestamp, linksGetter, this.tracerConfiguration, this.spanProcessor, this.LibraryResource);
|
||||
return Span.CreateRoot(operationName, kind, options, this.tracerConfiguration, this.spanProcessor, this.LibraryResource);
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public ISpan StartRootSpan(string operationName, SpanKind kind, DateTimeOffset startTimestamp, IEnumerable<Link> links)
|
||||
public ISpan StartSpan(string operationName, SpanKind kind, SpanCreationOptions options)
|
||||
{
|
||||
if (operationName == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(operationName));
|
||||
}
|
||||
|
||||
return Span.CreateRoot(operationName, kind, startTimestamp, links, this.tracerConfiguration, this.spanProcessor, this.LibraryResource);
|
||||
return this.StartSpan(operationName, null, kind, options);
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public ISpan StartSpan(string operationName, SpanKind kind, DateTimeOffset startTimestamp, Func<IEnumerable<Link>> linksGetter)
|
||||
{
|
||||
return this.StartSpan(operationName, null, kind, startTimestamp, linksGetter);
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public ISpan StartSpan(string operationName, SpanKind kind, DateTimeOffset startTimestamp, IEnumerable<Link> links)
|
||||
{
|
||||
return this.StartSpan(operationName, null, kind, startTimestamp, links);
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public ISpan StartSpan(string operationName, ISpan parent, SpanKind kind, DateTimeOffset startTimestamp, Func<IEnumerable<Link>> linksGetter)
|
||||
public ISpan StartSpan(string operationName, ISpan parent, SpanKind kind, SpanCreationOptions options)
|
||||
{
|
||||
if (operationName == null)
|
||||
{
|
||||
|
|
@ -122,29 +105,12 @@ namespace OpenTelemetry.Trace
|
|||
parent = this.CurrentSpan;
|
||||
}
|
||||
|
||||
return Span.CreateFromParentSpan(operationName, parent, kind, startTimestamp, linksGetter, this.tracerConfiguration,
|
||||
return Span.CreateFromParentSpan(operationName, parent, kind, options, this.tracerConfiguration,
|
||||
this.spanProcessor, this.LibraryResource);
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public ISpan StartSpan(string operationName, ISpan parent, SpanKind kind, DateTimeOffset startTimestamp, IEnumerable<Link> links)
|
||||
{
|
||||
if (operationName == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(operationName));
|
||||
}
|
||||
|
||||
if (parent == null)
|
||||
{
|
||||
parent = this.CurrentSpan;
|
||||
}
|
||||
|
||||
return Span.CreateFromParentSpan(operationName, parent, kind, startTimestamp, links, this.tracerConfiguration,
|
||||
this.spanProcessor, this.LibraryResource);
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public ISpan StartSpan(string operationName, in SpanContext parent, SpanKind kind, DateTimeOffset startTimestamp, Func<IEnumerable<Link>> linksGetter)
|
||||
public ISpan StartSpan(string operationName, in SpanContext parent, SpanKind kind, SpanCreationOptions options)
|
||||
{
|
||||
if (operationName == null)
|
||||
{
|
||||
|
|
@ -153,59 +119,14 @@ namespace OpenTelemetry.Trace
|
|||
|
||||
if (parent != null)
|
||||
{
|
||||
return Span.CreateFromParentContext(operationName, parent, kind, startTimestamp, linksGetter, this.tracerConfiguration,
|
||||
return Span.CreateFromParentContext(operationName, parent, kind, options, this.tracerConfiguration,
|
||||
this.spanProcessor, this.LibraryResource);
|
||||
}
|
||||
|
||||
return Span.CreateRoot(operationName, kind, startTimestamp, linksGetter, this.tracerConfiguration,
|
||||
return Span.CreateRoot(operationName, kind, options, this.tracerConfiguration,
|
||||
this.spanProcessor, this.LibraryResource);
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public ISpan StartSpan(string operationName, in SpanContext parent, SpanKind kind, DateTimeOffset startTimestamp, IEnumerable<Link> links)
|
||||
{
|
||||
if (operationName == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(operationName));
|
||||
}
|
||||
|
||||
if (parent != null)
|
||||
{
|
||||
return Span.CreateFromParentContext(operationName, parent, kind, startTimestamp, links, this.tracerConfiguration,
|
||||
this.spanProcessor, this.LibraryResource);
|
||||
}
|
||||
|
||||
return Span.CreateRoot(operationName, kind, startTimestamp, links, this.tracerConfiguration,
|
||||
this.spanProcessor, this.LibraryResource);
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public ISpan StartSpanFromActivity(string operationName, Activity activity, SpanKind kind, Func<IEnumerable<Link>> linksGetter)
|
||||
{
|
||||
if (operationName == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(operationName));
|
||||
}
|
||||
|
||||
if (activity == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(activity));
|
||||
}
|
||||
|
||||
if (activity.IdFormat != ActivityIdFormat.W3C)
|
||||
{
|
||||
throw new ArgumentException("Current Activity is not in W3C format");
|
||||
}
|
||||
|
||||
if (activity.StartTimeUtc == default || activity.Duration != default)
|
||||
{
|
||||
throw new ArgumentException(
|
||||
"Current Activity is not running: it has not been started or has been stopped");
|
||||
}
|
||||
|
||||
return Span.CreateFromActivity(operationName, activity, kind, linksGetter, this.tracerConfiguration, this.spanProcessor, this.LibraryResource);
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public ISpan StartSpanFromActivity(string operationName, Activity activity, SpanKind kind, IEnumerable<Link> links)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -50,11 +50,8 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
DefaultValueHandling = DefaultValueHandling.Include,
|
||||
};
|
||||
|
||||
private DateTime now;
|
||||
|
||||
public ApplicationInsightsTraceExporterTests()
|
||||
{
|
||||
now = DateTime.UtcNow.AddSeconds(-1);
|
||||
tracer = TracerFactory.Create(_ => { }).GetTracer(null);
|
||||
}
|
||||
|
||||
|
|
@ -80,11 +77,17 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
public void OpenTelemetryTelemetryConverterTests_TracksRequest()
|
||||
{
|
||||
// ARRANGE
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
|
||||
var endTimestamp = DateTimeOffset.UtcNow;
|
||||
var startTimestamp = endTimestamp.AddSeconds(-1);
|
||||
parentSpanId = default;
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions, tracestate, kind, status,
|
||||
new SpanCreationOptions
|
||||
{
|
||||
StartTimestamp = startTimestamp,
|
||||
});
|
||||
|
||||
span.End(endTimestamp);
|
||||
// ACT
|
||||
var sentItems = ConvertSpan(span);
|
||||
|
|
@ -95,7 +98,7 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
|
||||
var request = sentItems.OfType<RequestTelemetry>().Single();
|
||||
Assert.Equal("spanName", request.Name);
|
||||
Assert.Equal(now.AddSeconds(-1), request.Timestamp);
|
||||
Assert.Equal(startTimestamp, request.Timestamp);
|
||||
Assert.Equal(1, request.Duration.TotalSeconds);
|
||||
|
||||
Assert.Equal(span.Context.TraceId.ToHexString(), request.Context.Operation.Id);
|
||||
|
|
@ -113,7 +116,7 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
public void OpenTelemetryTelemetryConverterTests_TracksRequestWithTracestate()
|
||||
{
|
||||
// ARRANGE
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
|
||||
tracestate = new List<KeyValuePair<string, string>>
|
||||
{
|
||||
|
|
@ -121,7 +124,7 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
new KeyValuePair<string, string>("k2", "v2"),
|
||||
};
|
||||
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, SpanKind.Server, status);
|
||||
|
||||
// ACT
|
||||
|
|
@ -142,10 +145,10 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
public void OpenTelemetryTelemetryConverterTests_TracksRequestWithParent()
|
||||
{
|
||||
// ARRANGE
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
parentSpanId = ActivitySpanId.CreateFromBytes(testParentSpanIdBytes);
|
||||
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
// ACT
|
||||
|
|
@ -159,10 +162,10 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
public void OpenTelemetryTelemetryConverterTests_TracksRequestWithInvalidParent()
|
||||
{
|
||||
// ARRANGE
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
parentSpanId = default;
|
||||
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
// ACT
|
||||
|
|
@ -176,10 +179,10 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
public void OpenTelemetryTelemetryConverterTests_TracksRequestWithStatus()
|
||||
{
|
||||
// ARRANGE
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
status = Status.Ok;
|
||||
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
// ACT
|
||||
|
|
@ -197,10 +200,10 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
public void OpenTelemetryTelemetryConverterTests_TracksRequestWithStatusAndDescription()
|
||||
{
|
||||
// ARRANGE
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
status = Status.Ok.WithDescription("all good");
|
||||
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
// ACT
|
||||
|
|
@ -219,10 +222,10 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
public void OpenTelemetryTelemetryConverterTests_TracksRequestWithNonSuccessStatusAndDescription()
|
||||
{
|
||||
// ARRANGE
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
status = Status.Cancelled.WithDescription("all bad");
|
||||
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
// ACT
|
||||
|
|
@ -240,12 +243,13 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
[Fact]
|
||||
public void OpenTelemetryTelemetryConverterTests_TracksRequestErrorAttribute()
|
||||
{
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
span.SetAttribute("error", true);
|
||||
span.End(endTimestamp);
|
||||
span.End();
|
||||
|
||||
var sentItems = ConvertSpan(span);
|
||||
|
||||
|
|
@ -258,11 +262,17 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
public void OpenTelemetryTelemetryConverterTests_TracksClientDependency()
|
||||
{
|
||||
// ARRANGE
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
kind = SpanKind.Client;
|
||||
parentSpanId = default;
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
var endTimestamp = DateTimeOffset.UtcNow;
|
||||
var startTimestamp = endTimestamp.AddSeconds(-1);
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status, new SpanCreationOptions
|
||||
{
|
||||
StartTimestamp = startTimestamp,
|
||||
});
|
||||
span.End(endTimestamp);
|
||||
// ACT
|
||||
var sentItems = ConvertSpan(span);
|
||||
|
|
@ -273,7 +283,7 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
|
||||
var dependency = sentItems.OfType<DependencyTelemetry>().Single();
|
||||
Assert.Equal("spanName", dependency.Name);
|
||||
Assert.Equal(now.AddSeconds(-1), dependency.Timestamp);
|
||||
Assert.Equal(startTimestamp, dependency.Timestamp);
|
||||
Assert.Equal(1, dependency.Duration.TotalSeconds);
|
||||
|
||||
Assert.Equal(span.Context.TraceId.ToHexString(), dependency.Context.Operation.Id);
|
||||
|
|
@ -293,11 +303,15 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
public void OpenTelemetryTelemetryConverterTests_TracksInternalSpanAsDependency()
|
||||
{
|
||||
// ARRANGE
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
kind = SpanKind.Internal;
|
||||
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
var endTimestamp = DateTimeOffset.UtcNow;
|
||||
var startTimestamp = endTimestamp.AddSeconds(-1);
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions, tracestate, kind, status, new SpanCreationOptions
|
||||
{
|
||||
StartTimestamp = startTimestamp,
|
||||
});
|
||||
span.End(endTimestamp);
|
||||
// ACT
|
||||
var sentItems = ConvertSpan(span);
|
||||
|
|
@ -309,7 +323,7 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
var dependency = sentItems.OfType<DependencyTelemetry>().Single();
|
||||
Assert.Equal("spanName", dependency.Name);
|
||||
Assert.Equal("InProc", dependency.Type);
|
||||
Assert.Equal(now.AddSeconds(-1), dependency.Timestamp);
|
||||
Assert.Equal(startTimestamp, dependency.Timestamp);
|
||||
Assert.Equal(1, dependency.Duration.TotalSeconds);
|
||||
|
||||
Assert.Equal(TestTraceId, dependency.Context.Operation.Id);
|
||||
|
|
@ -328,16 +342,16 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
public void OpenTelemetryTelemetryConverterTests_DoesNotTrackCallToAppInsights()
|
||||
{
|
||||
// ARRANGE
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
kind = SpanKind.Client;
|
||||
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
span.SetAttribute("http.url", TestChannelEndpoint);
|
||||
span.SetAttribute("http.method", "POST");
|
||||
span.SetAttribute("http.status_code", 200);
|
||||
span.End(endTimestamp);
|
||||
span.End();
|
||||
|
||||
// ACT
|
||||
var sentItems = ConvertSpan(span);
|
||||
|
|
@ -350,11 +364,15 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
public void OpenTelemetryTelemetryConverterTests_TracksProducerDependency()
|
||||
{
|
||||
// ARRANGE
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
kind = SpanKind.Producer;
|
||||
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
var endTimestamp = DateTimeOffset.UtcNow;
|
||||
var startTimestamp = endTimestamp.AddSeconds(-1);
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions, tracestate, kind, status, new SpanCreationOptions
|
||||
{
|
||||
StartTimestamp = startTimestamp,
|
||||
});
|
||||
|
||||
span.End(endTimestamp);
|
||||
|
||||
|
|
@ -367,7 +385,7 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
|
||||
var dependency = sentItems.OfType<DependencyTelemetry>().Single();
|
||||
Assert.Equal("spanName", dependency.Name);
|
||||
Assert.Equal(now.AddSeconds(-1), dependency.Timestamp);
|
||||
Assert.Equal(startTimestamp, dependency.Timestamp);
|
||||
Assert.Equal(1, dependency.Duration.TotalSeconds);
|
||||
|
||||
Assert.Equal(TestTraceId, dependency.Context.Operation.Id);
|
||||
|
|
@ -387,14 +405,14 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
public void OpenTelemetryTelemetryConverterTests_TracksDependencyWithTracestate()
|
||||
{
|
||||
// ARRANGE
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
tracestate = new List<KeyValuePair<string, string>>
|
||||
{
|
||||
new KeyValuePair<string, string>("k1", "v1"),
|
||||
new KeyValuePair<string, string>("k2", "v2"),
|
||||
};
|
||||
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, SpanKind.Client, status);
|
||||
|
||||
// ACT
|
||||
|
|
@ -412,88 +430,15 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
// Assert.Equal("lf_unspecified-oc:0.0.0", dependency.Context.GetInternalContext().SdkVersion);
|
||||
}
|
||||
|
||||
/*
|
||||
[Fact]
|
||||
public void OpenTelemetryTelemetryConverterTests_TracksDependencyWithAnnotationsAndNode()
|
||||
{
|
||||
// ARRANGE
|
||||
var now = DateTime.UtcNow;
|
||||
|
||||
this.GetDefaults(out var context, out var parentSpanId, out var resource, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var childSpanCount, out var status, out var kind, out var endTimestamp);
|
||||
|
||||
kind = SpanKind.Client;
|
||||
|
||||
var span = SpanData.Create(context, parentSpanId, resource, name, startTimestamp, attributes, events, links, childSpanCount, status, kind, endTimestamp);
|
||||
|
||||
|
||||
span.TimeEvents = new Span.Types.TimeEvents
|
||||
{
|
||||
TimeEvent =
|
||||
{
|
||||
new Span.Types.TimeEvent
|
||||
{
|
||||
Time = now.ToTimestamp(),
|
||||
Annotation = new Span.Types.TimeEvent.Types.Annotation
|
||||
{
|
||||
Description = new TruncatableString {Value = "test message1"},
|
||||
},
|
||||
},
|
||||
new Span.Types.TimeEvent
|
||||
{
|
||||
Time = now.ToTimestamp(),
|
||||
MessageEvent = new Span.Types.TimeEvent.Types.MessageEvent
|
||||
{
|
||||
Id = 1,
|
||||
CompressedSize = 2,
|
||||
UncompressedSize = 3,
|
||||
Type = Span.Types.TimeEvent.Types.MessageEvent.Types.Type.Received,
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
string hostName = "host", serviceName = "tests", version = "1.2.3.4.5";
|
||||
uint pid = 12345;
|
||||
var lang = LibraryInfo.Types.Language.CSharp;
|
||||
|
||||
var node = CreateBasicNode(hostName, pid, lang, version, serviceName);
|
||||
node.Attributes.Add("a", "b");
|
||||
|
||||
// ACT
|
||||
var sentItems = this.ConvertSpan(span, node, string.Empty);
|
||||
|
||||
// ASSERT
|
||||
Assert.Equal(3, sentItems.Count);
|
||||
Assert.Single(sentItems.OfType<DependencyTelemetry>());
|
||||
Assert.Equal(2, sentItems.OfType<TraceTelemetry>().Count());
|
||||
|
||||
var dependency = sentItems.OfType<DependencyTelemetry>().Single();
|
||||
var trace1 = sentItems.OfType<TraceTelemetry>().First();
|
||||
var trace2 = sentItems.OfType<TraceTelemetry>().Last();
|
||||
Assert.Equal(serviceName, dependency.Context.Cloud.RoleName);
|
||||
Assert.Equal(serviceName, trace1.Context.Cloud.RoleName);
|
||||
Assert.Equal(serviceName, trace2.Context.Cloud.RoleName);
|
||||
|
||||
Assert.Equal($"{hostName}.{pid}", dependency.Context.Cloud.RoleInstance);
|
||||
Assert.Equal($"{hostName}.{pid}", trace1.Context.Cloud.RoleInstance);
|
||||
Assert.Equal($"{hostName}.{pid}", trace2.Context.Cloud.RoleInstance);
|
||||
|
||||
Assert.Equal(0, dependency.Properties.Count);
|
||||
Assert.Equal(0, trace1.Properties.Count);
|
||||
Assert.Equal(0, trace2.Properties.Count);
|
||||
}
|
||||
*/
|
||||
|
||||
[Fact]
|
||||
public void OpenTelemetryTelemetryConverterTests_TracksDependencyWithParent()
|
||||
{
|
||||
// ARRANGE
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
kind = SpanKind.Client;
|
||||
parentSpanId = ActivitySpanId.CreateFromBytes(testParentSpanIdBytes);
|
||||
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
// ACT
|
||||
|
|
@ -508,11 +453,11 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
public void OpenTelemetryTelemetryConverterTests_TracksDependencyWithStatus()
|
||||
{
|
||||
// ARRANGE
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
kind = SpanKind.Client;
|
||||
status = Status.Ok;
|
||||
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
// ACT
|
||||
|
|
@ -531,10 +476,10 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
public void OpenTelemetryTelemetryConverterTests_TracksDependencyWithStatusAndDescription()
|
||||
{
|
||||
// ARRANGE
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
kind = SpanKind.Client;
|
||||
status = Status.Ok.WithDescription("all good");
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
// ACT
|
||||
|
|
@ -555,10 +500,10 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
public void OpenTelemetryTelemetryConverterTests_TracksDependencyWithNonSuccessStatusAndDescription()
|
||||
{
|
||||
// ARRANGE
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
kind = SpanKind.Client;
|
||||
status = Status.Cancelled.WithDescription("all bad");
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
// ACT
|
||||
|
|
@ -577,13 +522,13 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
[Fact]
|
||||
public void OpenTelemetryTelemetryConverterTests_TracksDependencyErrorAttribute()
|
||||
{
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
kind = SpanKind.Client;
|
||||
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
span.SetAttribute("error", true);
|
||||
span.End(endTimestamp);
|
||||
span.End();
|
||||
|
||||
var sentItems = ConvertSpan(span);
|
||||
|
||||
|
|
@ -595,13 +540,13 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
[Fact]
|
||||
public void OpenTelemetryTelemetryConverterTests_TracksRequestBasedOnClientSpanKindAttribute()
|
||||
{
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
kind = SpanKind.Client;
|
||||
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
span.SetAttribute("span.kind", "client");
|
||||
span.End(endTimestamp);
|
||||
span.End();
|
||||
|
||||
var sentItems = ConvertSpan(span);
|
||||
|
||||
|
|
@ -611,10 +556,10 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
[Fact]
|
||||
public void OpenTelemetryTelemetryConverterTests_TracksRequestBasedOnProducerSpanKindAttribute()
|
||||
{
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
kind = SpanKind.Client;
|
||||
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
span.SetAttribute("span.kind", "producer");
|
||||
|
|
@ -626,10 +571,10 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
[Fact]
|
||||
public void OpenTelemetryTelemetryConverterTests_TracksRequestBasedOnConsumerSpanKindAttribute()
|
||||
{
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
kind = SpanKind.Consumer;
|
||||
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
var sentItems = ConvertSpan(span);
|
||||
|
|
@ -640,9 +585,9 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
[Fact]
|
||||
public void OpenTelemetryTelemetryConverterTests_TracksRequestBasedOnSpanKindProperty()
|
||||
{
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
parentSpanId = ActivitySpanId.CreateFromBytes(testParentSpanIdBytes);
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
var sentItems = ConvertSpan(span);
|
||||
|
|
@ -653,10 +598,10 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
[Fact]
|
||||
public void OpenTelemetryTelemetryConverterTests_TracksDependencyBasedOnSpanKindProperty()
|
||||
{
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
kind = SpanKind.Client;
|
||||
parentSpanId = ActivitySpanId.CreateFromBytes(testParentSpanIdBytes);
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
var sentItems = ConvertSpan(span);
|
||||
|
|
@ -667,14 +612,14 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
[Fact]
|
||||
public void OpenTelemetryTelemetryConverterTests_TracksDependencyBasedOnSpanKindAttribute()
|
||||
{
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
kind = SpanKind.Internal;
|
||||
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
span.SetAttribute("span.kind", "client");
|
||||
span.End(endTimestamp);
|
||||
span.End();
|
||||
|
||||
var sentItems = ConvertSpan(span);
|
||||
|
||||
|
|
@ -684,9 +629,9 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
[Fact]
|
||||
public void OpenTelemetryTelemetryConverterTests_TracksDependencyBasedOnSameProcessAsParentFlag()
|
||||
{
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
kind = SpanKind.Internal;
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
var sentItems = ConvertSpan(span);
|
||||
|
||||
|
|
@ -696,9 +641,9 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
[Fact]
|
||||
public void OpenTelemetryTelemetryConverterTests_TracksDependencyBasedOnSameProcessAsParentFlagNotSet()
|
||||
{
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
kind = SpanKind.Internal;
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
var sentItems = ConvertSpan(span);
|
||||
|
|
@ -706,25 +651,12 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
Assert.True(sentItems.Single() is DependencyTelemetry);
|
||||
}
|
||||
|
||||
// TODO: should we allow null dates? There is no reason to not allow it
|
||||
//[Fact]
|
||||
//public void OpenTelemetryTelemetryConverterTests_TracksRequestWithoutName()
|
||||
//{
|
||||
// this.GetDefaults(out var context, out var parentSpanId, out var resource, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var childSpanCount, out var status, out var kind, out var endTimestamp);
|
||||
// name = null;
|
||||
// var span = SpanData.Create(context, parentSpanId, resource, name, startTimestamp, attributes, events, links, childSpanCount, status, kind, endTimestamp);
|
||||
|
||||
// var sentItems = this.ConvertSpan(span);
|
||||
|
||||
// Assert.Null(sentItems.OfType<RequestTelemetry>().Single().Name);
|
||||
//}
|
||||
|
||||
[Fact]
|
||||
public void OpenTelemetryTelemetryConverterTests_TracksDependencyWithoutKind()
|
||||
{
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
kind = SpanKind.Internal;
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
var sentItems = ConvertSpan(span);
|
||||
|
|
@ -732,29 +664,13 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
Assert.True(sentItems.Single() is DependencyTelemetry);
|
||||
}
|
||||
|
||||
// TODO: should we allow null dates? There is no reason to not allow it
|
||||
//[Fact]
|
||||
//public void OpenTelemetryTelemetryConverterTests_TracksRequestWithoutStartAndEndTime()
|
||||
//{
|
||||
// this.GetDefaults(out var context, out var parentSpanId, out var resource, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var childSpanCount, out var status, out var kind, out var endTimestamp);
|
||||
// startTimestamp = null;
|
||||
// endTimestamp = null;
|
||||
// var span = SpanData.Create(context, parentSpanId, resource, name, startTimestamp, attributes, events, links, childSpanCount, status, kind, endTimestamp);
|
||||
|
||||
// var sentItems = this.ConvertSpan(span);
|
||||
|
||||
// var request = sentItems.OfType<RequestTelemetry>().Single();
|
||||
// Assert.True(Math.Abs((request.Timestamp - DateTime.UtcNow).TotalSeconds) < 1);
|
||||
// Assert.Equal(0, request.Duration.TotalSeconds);
|
||||
//}
|
||||
|
||||
[Fact]
|
||||
public void OpenTelemetryTelemetryConverterTests_TracksHttpRequestWithUrl()
|
||||
{
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
var url = new Uri("https://host:123/path?query");
|
||||
name = "HttpIn";
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
span.SetAttribute("http.url", url.ToString());
|
||||
span.SetAttribute("http.method", "POST");
|
||||
|
|
@ -771,11 +687,11 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
[Fact]
|
||||
public void OpenTelemetryTelemetryConverterTests_TracksHttpRequestWithRelativeUrl()
|
||||
{
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
var url = new Uri("https://host:123/path?query");
|
||||
name = "HttpIn";
|
||||
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
span.SetAttribute("http.url", url.LocalPath);
|
||||
|
|
@ -793,10 +709,10 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
[Fact]
|
||||
public void OpenTelemetryTelemetryConverterTests_TracksHttpRequestWithUrlAndRoute()
|
||||
{
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
var url = new Uri("https://host:123/path?query");
|
||||
name = "HttpIn";
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
span.SetAttribute("http.url", url.ToString());
|
||||
|
|
@ -815,10 +731,10 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
[Fact]
|
||||
public void OpenTelemetryTelemetryConverterTests_TracksHttpRequestWithUrlAndNoMethod()
|
||||
{
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
var url = new Uri("https://host:123/path?query");
|
||||
name = "HttpIn";
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
span.SetAttribute("http.url", url.ToString());
|
||||
|
|
@ -834,11 +750,11 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
[Fact]
|
||||
public void OpenTelemetryTelemetryConverterTests_TracksHttpRequestWithUrlOtherAttributesAreIgnored()
|
||||
{
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
var url = new Uri("https://host:123/path?query");
|
||||
name = "HttpIn";
|
||||
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
span.SetAttribute("http.url", url.ToString());
|
||||
|
|
@ -860,10 +776,10 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
public void OpenTelemetryTelemetryConverterTests_TracksRequestWithStringStatusCode()
|
||||
{
|
||||
// ARRANGE
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
|
||||
name = "HttpIn";
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
span.SetAttribute("http.status_code", 201);
|
||||
|
|
@ -880,11 +796,11 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
[Fact]
|
||||
public void OpenTelemetryTelemetryConverterTests_TracksHttpRequestHostPortPathAttributes()
|
||||
{
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
var url = new Uri("https://host:123/path?query");
|
||||
name = "HttpIn";
|
||||
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
span.SetAttribute("http.method", "POST");
|
||||
|
|
@ -904,11 +820,11 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
[Fact]
|
||||
public void OpenTelemetryTelemetryConverterTests_TracksHttpRequestPortPathAndEmptyHostAttributes()
|
||||
{
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
var url = new Uri("https://host:123/path?query");
|
||||
name = "HttpIn";
|
||||
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
span.SetAttribute("http.method", "POST");
|
||||
|
|
@ -928,11 +844,11 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
[Fact]
|
||||
public void OpenTelemetryTelemetryConverterTests_TracksHttpRequestHostPathAttributes()
|
||||
{
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
var url = new Uri("https://host:123/path?query");
|
||||
name = "HttpIn";
|
||||
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
span.SetAttribute("http.method", "POST");
|
||||
|
|
@ -951,10 +867,10 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
[Fact]
|
||||
public void OpenTelemetryTelemetryConverterTests_TracksHttpRequestHostAttributes()
|
||||
{
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
name = "HttpIn";
|
||||
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
span.SetAttribute("http.method", "POST");
|
||||
|
|
@ -972,10 +888,10 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
[Fact]
|
||||
public void OpenTelemetryTelemetryConverterTests_TracksHttpRequestOnlyMethodAttributes()
|
||||
{
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
name = "HttpIn";
|
||||
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
span.SetAttribute("http.method", "POST");
|
||||
|
|
@ -993,12 +909,12 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
public void OpenTelemetryTelemetryConverterTests_TracksDependencyWithStringStatusCode()
|
||||
{
|
||||
// ARRANGE
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
var url = new Uri("https://host:123/path?query");
|
||||
name = "HttpOut";
|
||||
kind = SpanKind.Client;
|
||||
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
span.SetAttribute("http.status_code", 201);
|
||||
|
|
@ -1017,10 +933,10 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
{
|
||||
var url = new Uri("https://host/path");
|
||||
var userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36";
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
name = "HttpIn";
|
||||
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
span.SetAttribute("http.url", url.ToString());
|
||||
|
|
@ -1035,11 +951,11 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
[Fact]
|
||||
public void OpenTelemetryTelemetryConverterTests_TracksHttpDependencyWithUrl()
|
||||
{
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
var url = new Uri("https://host:123/path?query");
|
||||
name = "HttpOut";
|
||||
kind = SpanKind.Client;
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
span.SetAttribute("http.url", url.ToString());
|
||||
|
|
@ -1059,11 +975,11 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
[Fact]
|
||||
public void OpenTelemetryTelemetryConverterTests_TracksHttpDependencyWithRelativeUrl()
|
||||
{
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
var url = new Uri("https://host:123/path?query");
|
||||
name = "HttpOut";
|
||||
kind = SpanKind.Client;
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
span.SetAttribute("http.url", url.LocalPath);
|
||||
|
|
@ -1083,11 +999,11 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
[Fact]
|
||||
public void OpenTelemetryTelemetryConverterTests_TracksHttpDependencyWithUrlIgnoresHostPortPath()
|
||||
{
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
var url = new Uri("https://host:123/path?query");
|
||||
name = "HttpOut";
|
||||
kind = SpanKind.Client;
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
span.SetAttribute("http.url", url.ToString());
|
||||
|
|
@ -1110,11 +1026,11 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
[Fact]
|
||||
public void OpenTelemetryTelemetryConverterTests_TracksHttpDependencyWithHostPortPath()
|
||||
{
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
var url = new Uri("https://host:123/path?query");
|
||||
name = "HttpOut";
|
||||
kind = SpanKind.Client;
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
span.SetAttribute("http.method", "POST");
|
||||
|
|
@ -1136,11 +1052,11 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
[Fact]
|
||||
public void OpenTelemetryTelemetryConverterTests_TracksHttpDependencyWithHostPort()
|
||||
{
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
var url = new Uri("https://host:123/path?query");
|
||||
name = "HttpOut";
|
||||
kind = SpanKind.Client;
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
span.SetAttribute("http.method", "POST");
|
||||
|
|
@ -1161,11 +1077,11 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
[Fact]
|
||||
public void OpenTelemetryTelemetryConverterTests_TracksHttpDependencyWithPathAndEmptyHost()
|
||||
{
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
var url = new Uri("https://host:123/path?query");
|
||||
name = "HttpOut";
|
||||
kind = SpanKind.Client;
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
span.SetAttribute("http.method", "POST");
|
||||
|
|
@ -1186,11 +1102,11 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
[Fact]
|
||||
public void OpenTelemetryTelemetryConverterTests_TracksHttpDependencyWithHost()
|
||||
{
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
var url = new Uri("https://host:123/path?query");
|
||||
name = "HttpOut";
|
||||
kind = SpanKind.Client;
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
span.SetAttribute("http.method", "POST");
|
||||
|
|
@ -1210,11 +1126,11 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
[Fact]
|
||||
public void OpenTelemetryTelemetryConverterTests_TracksHttpDependencyWithMethod()
|
||||
{
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
var url = new Uri("https://host:123/path?query");
|
||||
name = "HttpOut";
|
||||
kind = SpanKind.Client;
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
span.SetAttribute("http.method", "POST");
|
||||
|
|
@ -1233,11 +1149,11 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
[Fact]
|
||||
public void OpenTelemetryTelemetryConverterTests_TracksHttpDependencyWithStatusCodeOnly()
|
||||
{
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
var url = new Uri("https://host:123/path?query");
|
||||
name = "HttpOut";
|
||||
kind = SpanKind.Client;
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
span.SetAttribute("http.status_code", 200);
|
||||
|
|
@ -1255,10 +1171,10 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
[Fact]
|
||||
public void OpenTelemetryTelemetryConverterTests_TracksDependencyWithCustomAttributes()
|
||||
{
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
name = "spanName";
|
||||
kind = SpanKind.Client;
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
span.SetAttribute("custom.stringAttribute", "string");
|
||||
|
|
@ -1283,9 +1199,9 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
[Fact]
|
||||
public void OpenTelemetryTelemetryConverterTests_TracksRequestsWithCustomAttributes()
|
||||
{
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
name = "spanName";
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
span.SetAttribute("custom.stringAttribute", "string");
|
||||
|
|
@ -1318,7 +1234,7 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
var (link1SpanId, link1SpanIdBytes) = GenerateRandomId(8);
|
||||
var (link2SpanId, link2SpanIdBytes) = GenerateRandomId(8);
|
||||
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
name = "spanName";
|
||||
kind = SpanKind.Client;
|
||||
|
||||
|
|
@ -1341,8 +1257,8 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
ActivityTraceFlags.None)),
|
||||
};
|
||||
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status, () => parentLinks);
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status, new SpanCreationOptions { Links = parentLinks });
|
||||
|
||||
var sentItems = ConvertSpan(span);
|
||||
|
||||
|
|
@ -1368,11 +1284,11 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
[Fact]
|
||||
public void OpenTelemetryTelemetryConverterTests_TracksDependencyWithLinksAndAttributes()
|
||||
{
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
name = "spanName";
|
||||
kind = SpanKind.Client;
|
||||
|
||||
var parentLinks = new Link(
|
||||
var parentLink = new Link(
|
||||
new SpanContext(
|
||||
ActivityTraceId.CreateFromBytes(GenerateRandomId(16).Item2),
|
||||
ActivitySpanId.CreateFromBytes(GenerateRandomId(8).Item2),
|
||||
|
|
@ -1382,8 +1298,8 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
{"some.str.attribute", "foo"}, {"some.int.attribute", 1}, {"some.bool.attribute", true},
|
||||
});
|
||||
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status, () => new [] {parentLinks});
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status, new SpanCreationOptions { LinksFactory = () => new [] {parentLink}});
|
||||
|
||||
var sentItems = ConvertSpan(span);
|
||||
|
||||
|
|
@ -1411,7 +1327,7 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
var (link1SpanId, link1SpanIdBytes) = GenerateRandomId(8);
|
||||
var (link2SpanId, link2SpanIdBytes) = GenerateRandomId(8);
|
||||
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
name = "spanName";
|
||||
kind = SpanKind.Server;
|
||||
|
||||
|
|
@ -1428,8 +1344,8 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
ActivitySpanId.CreateFromBytes(link2SpanIdBytes), ActivityTraceFlags.None)),
|
||||
};
|
||||
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status, () => parentLinks);
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status, new SpanCreationOptions { Links = parentLinks });
|
||||
|
||||
var sentItems = ConvertSpan(span);
|
||||
|
||||
|
|
@ -1455,7 +1371,7 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
[Fact]
|
||||
public void OpenTelemetryTelemetryConverterTests_TracksRequestWithLinksAndAttributes()
|
||||
{
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
name = "spanName";
|
||||
kind = SpanKind.Server;
|
||||
|
||||
|
|
@ -1472,8 +1388,8 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
}),
|
||||
};
|
||||
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status, () => parentLinks);
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status, new SpanCreationOptions { LinksFactory = () => parentLinks });
|
||||
|
||||
var sentItems = ConvertSpan(span);
|
||||
|
||||
|
|
@ -1492,12 +1408,13 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
[Fact]
|
||||
public void OpenTelemetryTelemetryConverterTests_TracksRequestWithEvents()
|
||||
{
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
name = "spanName";
|
||||
kind = SpanKind.Server;
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
var now = DateTimeOffset.UtcNow.AddSeconds(-1);
|
||||
span.AddEvent(new Event("test message1", now));
|
||||
span.AddEvent(new Event("test message2", DateTime.UtcNow, new Dictionary<string, object>()
|
||||
{
|
||||
|
|
@ -1543,12 +1460,14 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
[Fact]
|
||||
public void OpenTelemetryTelemetryConverterTests_TracksDependenciesWithEvents()
|
||||
{
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var startTimestamp, out var attributes, out var events, out var links, out var status, out var kind, out var endTimestamp);
|
||||
GetDefaults(out var traceId, out var parentSpanId, out var traceOptions, out var tracestate, out var name, out var attributes, out var events, out var links, out var status, out var kind);
|
||||
name = "spanName";
|
||||
kind = SpanKind.Client;
|
||||
var span = CreateTestSpan(name, startTimestamp, traceId, parentSpanId, traceOptions,
|
||||
var span = CreateTestSpan(name, traceId, parentSpanId, traceOptions,
|
||||
tracestate, kind, status);
|
||||
|
||||
var now = DateTimeOffset.UtcNow.AddSeconds(-1);
|
||||
|
||||
span.AddEvent(new Event("test message1", now));
|
||||
span.AddEvent("test message2", new Dictionary<string, object>()
|
||||
{
|
||||
|
|
@ -1609,26 +1528,22 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
out ActivityTraceFlags traceOptions,
|
||||
out List<KeyValuePair<string, string>> tracestate,
|
||||
out string name,
|
||||
out DateTime startTimestamp,
|
||||
out Dictionary<string, object> attributes,
|
||||
out List<Event> events,
|
||||
out List<Link> links,
|
||||
out Status status,
|
||||
out SpanKind kind,
|
||||
out DateTime endTimestamp)
|
||||
out SpanKind kind)
|
||||
{
|
||||
traceId = ActivityTraceId.CreateFromBytes(testTraceIdBytes);
|
||||
traceOptions = ActivityTraceFlags.Recorded;
|
||||
tracestate = null;
|
||||
parentSpanId = ActivitySpanId.CreateFromBytes(testParentSpanIdBytes);
|
||||
name = "spanName";
|
||||
startTimestamp = now.AddSeconds(-1);
|
||||
attributes = null;
|
||||
events = null;
|
||||
links = null;
|
||||
status = default;
|
||||
kind = SpanKind.Server;
|
||||
endTimestamp = now;
|
||||
}
|
||||
|
||||
private class ApplicationInsightsLink
|
||||
|
|
@ -1639,18 +1554,17 @@ namespace OpenTelemetry.Exporter.ApplicationInsights.Tests
|
|||
}
|
||||
|
||||
internal Span CreateTestSpan(string name,
|
||||
DateTime startTimestamp,
|
||||
ActivityTraceId traceId,
|
||||
ActivitySpanId parentSpanId,
|
||||
ActivityTraceFlags traceOptions,
|
||||
List<KeyValuePair<string, string>> tracestate,
|
||||
SpanKind kind,
|
||||
Status status,
|
||||
Func<IEnumerable<Link>> linkGetter = null)
|
||||
SpanCreationOptions options = null)
|
||||
{
|
||||
var span = parentSpanId == default ?
|
||||
tracer.StartRootSpan(name, kind, startTimestamp) :
|
||||
tracer.StartSpan(name, new SpanContext(traceId, parentSpanId, traceOptions, false, tracestate), kind, startTimestamp, linkGetter);
|
||||
tracer.StartRootSpan(name, kind, options) :
|
||||
tracer.StartSpan(name, new SpanContext(traceId, parentSpanId, traceOptions, false, tracestate), kind, options);
|
||||
|
||||
if (status.IsValid)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -365,7 +365,11 @@ namespace OpenTelemetry.Exporter.Jaeger.Tests.Implementation
|
|||
}
|
||||
|
||||
var span = (Span)tracer
|
||||
.StartSpan("Name", new SpanContext(traceId, parentSpanId, ActivityTraceFlags.Recorded), SpanKind.Client, startTimestamp.Date, linkGetter);
|
||||
.StartSpan("Name", new SpanContext(traceId, parentSpanId, ActivityTraceFlags.Recorded), SpanKind.Client, new SpanCreationOptions
|
||||
{
|
||||
StartTimestamp = startTimestamp.Date,
|
||||
LinksFactory = linkGetter,
|
||||
});
|
||||
|
||||
if (setAttributes)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -106,7 +106,12 @@ namespace OpenTelemetry.Exporter.Jaeger.Tests.Implementation
|
|||
ActivityTraceFlags.Recorded));
|
||||
|
||||
var span = (Span)tracer
|
||||
.StartSpan("Name", new SpanContext(traceId, parentSpanId, ActivityTraceFlags.Recorded), SpanKind.Client, startTimestamp, () => new [] {link});
|
||||
.StartSpan("Name", new SpanContext(traceId, parentSpanId, ActivityTraceFlags.Recorded), SpanKind.Client,
|
||||
new SpanCreationOptions
|
||||
{
|
||||
StartTimestamp = startTimestamp,
|
||||
Links = new[] { link },
|
||||
});
|
||||
|
||||
var spanContextSetter = typeof(Span).GetMethod("set_Context", BindingFlags.Instance | BindingFlags.NonPublic);
|
||||
spanContextSetter.Invoke(span, new []{ new SpanContext(traceId, ActivitySpanId.CreateFromString(spanId.AsSpan()), ActivityTraceFlags.Recorded) });
|
||||
|
|
|
|||
|
|
@ -73,7 +73,12 @@ namespace OpenTelemetry.Exporter.LightStep.Tests
|
|||
traceId, linkedSpanId, ActivityTraceFlags.Recorded));
|
||||
|
||||
var span = (Span)tracer
|
||||
.StartSpan("Test", new Trace.SpanContext(traceId, parentId, ActivityTraceFlags.Recorded), SpanKind.Client, startTs, () => new [] {link});
|
||||
.StartSpan("Test", new Trace.SpanContext(traceId, parentId, ActivityTraceFlags.Recorded), SpanKind.Client,
|
||||
new SpanCreationOptions
|
||||
{
|
||||
StartTimestamp = startTs,
|
||||
Links = new[] { link },
|
||||
});
|
||||
|
||||
var spanIdInt = span.Context.SpanId.ToLSSpanId();
|
||||
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests
|
|||
shim.Start();
|
||||
|
||||
tracerMock.Verify(o => o.StartRootSpan("foo", 0,
|
||||
default, It.Is<IEnumerable<Link>>(links => !links.Any())), Times.Once);
|
||||
It.Is<SpanCreationOptions>(so => so.StartTimestamp == default && !so.Links.Any())), Times.Once);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -64,7 +64,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests
|
|||
|
||||
shim.Start();
|
||||
tracerMock.Verify(o => o.StartSpan("foo", 0,
|
||||
startTimestamp, It.Is<IEnumerable<Link>>(links => !links.Any())), Times.Once);
|
||||
It.Is<SpanCreationOptions>(so => so.StartTimestamp == startTimestamp && !so.Links.Any())), Times.Once);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -80,7 +80,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests
|
|||
shim.Start();
|
||||
|
||||
tracerMock.Verify(o => o.StartSpan("foo", 0,
|
||||
default, It.Is<IEnumerable<Link>>(links => !links.Any())), Times.Once);
|
||||
It.Is<SpanCreationOptions>(so => so.StartTimestamp == default && !so.Links.Any())), Times.Once);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -97,7 +97,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests
|
|||
shim.Start();
|
||||
|
||||
tracerMock.Verify(o => o.StartSpan("foo", span.Span, 0,
|
||||
default, It.Is<IEnumerable<Link>>(links => !links.Any())), Times.Once);
|
||||
It.Is<SpanCreationOptions>(so => so.StartTimestamp == default && !so.Links.Any())), Times.Once);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -121,7 +121,8 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests
|
|||
tracerMock = GetDefaultTracerMock();
|
||||
shim = new SpanBuilderShim(tracerMock.Object, "foo", new List<string> { "bar" });
|
||||
shim.Start();
|
||||
tracerMock.Verify(o => o.StartSpan("foo", 0, default, It.Is<IEnumerable<Link>>(links => !links.Any())), Times.Once);
|
||||
tracerMock.Verify(o => o.StartSpan("foo", 0,
|
||||
It.Is<SpanCreationOptions>(so => so.StartTimestamp == default && !so.Links.Any())), Times.Once);
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
|
@ -145,7 +146,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests
|
|||
shim.Start();
|
||||
|
||||
tracerMock.Verify(o => o.StartSpan("foo", span1.Span, 0,
|
||||
default, It.Is<IEnumerable<Link>>(links => links.Single().Context.Equals(span2.Span.Context))), Times.Once);
|
||||
It.Is<SpanCreationOptions>(so => so.StartTimestamp == default && so.Links.Single().Context.Equals(span2.Span.Context))), Times.Once);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -162,7 +163,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests
|
|||
|
||||
// should be no parent.
|
||||
tracerMock.Verify(o => o.StartSpan("foo", 0,
|
||||
default, It.Is<IEnumerable<Link>>(links => !links.Any())), Times.Once);
|
||||
It.Is<SpanCreationOptions>(so => so.StartTimestamp == default && !so.Links.Any())), Times.Once);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -179,7 +180,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests
|
|||
shim.Start();
|
||||
|
||||
tracerMock.Verify(o => o.StartSpan("foo", spanContext.SpanContext, 0,
|
||||
default, It.Is<IEnumerable<Link>>(links => !links.Any())), Times.Once);
|
||||
It.Is<SpanCreationOptions>(so => so.StartTimestamp == default && !so.Links.Any())), Times.Once);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -198,7 +199,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests
|
|||
shim.Start();
|
||||
|
||||
tracerMock.Verify(o => o.StartSpan("foo", spanContext1.SpanContext, 0,
|
||||
default, It.Is<IEnumerable<Link>>(links => links.Single().Context.Equals(spanContext2.SpanContext))), Times.Once);
|
||||
It.Is<SpanCreationOptions>(so => so.StartTimestamp == default && so.Links.Single().Context.Equals(spanContext2.SpanContext))), Times.Once);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -216,7 +217,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests
|
|||
// Not an attribute
|
||||
Assert.Empty(spanMock.Attributes);
|
||||
|
||||
tracerMock.Verify(o => o.StartSpan("foo", SpanKind.Client, default, It.Is<IEnumerable<Link>>(links => !links.Any())), Times.Once);
|
||||
tracerMock.Verify(o => o.StartSpan("foo", SpanKind.Client, It.Is<SpanCreationOptions>(so => so.StartTimestamp == default && !so.Links.Any())), Times.Once);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -328,10 +329,10 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests
|
|||
var mock = new Mock<ITracer>();
|
||||
spanMock = spanMock ?? Defaults.GetOpenTelemetrySpanMock();
|
||||
|
||||
mock.Setup(x => x.StartRootSpan(It.IsAny<string>(), It.IsAny<SpanKind>(), It.IsAny<DateTimeOffset>(), It.IsAny<IEnumerable<Link>>())).Returns(spanMock);
|
||||
mock.Setup(x => x.StartSpan(It.IsAny<string>(), It.IsAny<SpanKind>(), It.IsAny<DateTimeOffset>(), It.IsAny<IEnumerable<Link>>())).Returns(spanMock);
|
||||
mock.Setup(x => x.StartSpan(It.IsAny<string>(), It.IsAny<ISpan>(), It.IsAny<SpanKind>(), It.IsAny<DateTimeOffset>(), It.IsAny<IEnumerable<Link>>())).Returns(spanMock);
|
||||
mock.Setup(x => x.StartSpan(It.IsAny<string>(), It.IsAny<SpanContext>(), It.IsAny<SpanKind>(), It.IsAny<DateTimeOffset>(), It.IsAny<IEnumerable<Link>>())).Returns(spanMock);
|
||||
mock.Setup(x => x.StartRootSpan(It.IsAny<string>(), It.IsAny<SpanKind>(), It.IsAny<SpanCreationOptions>())).Returns(spanMock);
|
||||
mock.Setup(x => x.StartSpan(It.IsAny<string>(), It.IsAny<SpanKind>(), It.IsAny<SpanCreationOptions>())).Returns(spanMock);
|
||||
mock.Setup(x => x.StartSpan(It.IsAny<string>(), It.IsAny<ISpan>(), It.IsAny<SpanKind>(), It.IsAny<SpanCreationOptions>())).Returns(spanMock);
|
||||
mock.Setup(x => x.StartSpan(It.IsAny<string>(), It.IsAny<SpanContext>(), It.IsAny<SpanKind>(), It.IsAny<SpanCreationOptions>())).Returns(spanMock);
|
||||
mock.Setup(x => x.StartSpanFromActivity(It.IsAny<string>(), It.IsAny<Activity>(), It.IsAny<SpanKind>(), It.IsAny<IEnumerable<Link>>())).Returns(spanMock);
|
||||
return mock;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -51,26 +51,22 @@ namespace OpenTelemetry.Tests.Impl.Trace
|
|||
Assert.Throws<ArgumentNullException>(() => proxyTracer.StartRootSpan(null));
|
||||
Assert.Throws<ArgumentNullException>(() => proxyTracer.StartRootSpan(null, SpanKind.Client));
|
||||
Assert.Throws<ArgumentNullException>(() => proxyTracer.StartRootSpan(null, SpanKind.Client, default));
|
||||
Assert.Throws<ArgumentNullException>(() => proxyTracer.StartRootSpan(null, SpanKind.Client, default, null as IEnumerable<Link>));
|
||||
Assert.Throws<ArgumentNullException>(() => proxyTracer.StartRootSpan(null, SpanKind.Client, default, null as Func<IEnumerable<Link>>));
|
||||
Assert.Throws<ArgumentNullException>(() => proxyTracer.StartRootSpan(null, SpanKind.Client, null));
|
||||
|
||||
Assert.Throws<ArgumentNullException>(() => proxyTracer.StartSpan(null));
|
||||
Assert.Throws<ArgumentNullException>(() => proxyTracer.StartSpan(null, SpanKind.Client));
|
||||
Assert.Throws<ArgumentNullException>(() => proxyTracer.StartSpan(null, SpanKind.Client, default));
|
||||
Assert.Throws<ArgumentNullException>(() => proxyTracer.StartSpan(null, SpanKind.Client, default, null as IEnumerable<Link>));
|
||||
Assert.Throws<ArgumentNullException>(() => proxyTracer.StartSpan(null, SpanKind.Client, default, null as Func<IEnumerable<Link>>));
|
||||
Assert.Throws<ArgumentNullException>(() => proxyTracer.StartSpan(null, SpanKind.Client, null));
|
||||
|
||||
Assert.Throws<ArgumentNullException>(() => proxyTracer.StartSpan(null, BlankSpan.Instance));
|
||||
Assert.Throws<ArgumentNullException>(() => proxyTracer.StartSpan(null, BlankSpan.Instance, SpanKind.Client));
|
||||
Assert.Throws<ArgumentNullException>(() => proxyTracer.StartSpan(null, BlankSpan.Instance, SpanKind.Client, default));
|
||||
Assert.Throws<ArgumentNullException>(() => proxyTracer.StartSpan(null, BlankSpan.Instance, SpanKind.Client, default, null as IEnumerable<Link>));
|
||||
Assert.Throws<ArgumentNullException>(() => proxyTracer.StartSpan(null, BlankSpan.Instance, SpanKind.Client, default, null as Func<IEnumerable<Link>>));
|
||||
Assert.Throws<ArgumentNullException>(() => proxyTracer.StartSpan(null, BlankSpan.Instance, SpanKind.Client, null));
|
||||
|
||||
Assert.Throws<ArgumentNullException>(() => proxyTracer.StartSpan(null, SpanContext.Blank));
|
||||
Assert.Throws<ArgumentNullException>(() => proxyTracer.StartSpan(null, SpanContext.Blank, SpanKind.Client));
|
||||
Assert.Throws<ArgumentNullException>(() => proxyTracer.StartSpan(null, SpanContext.Blank, SpanKind.Client, default));
|
||||
Assert.Throws<ArgumentNullException>(() => proxyTracer.StartSpan(null, SpanContext.Blank, SpanKind.Client, default, null as IEnumerable<Link>));
|
||||
Assert.Throws<ArgumentNullException>(() => proxyTracer.StartSpan(null, SpanContext.Blank, SpanKind.Client, default, null as Func<IEnumerable<Link>>));
|
||||
Assert.Throws<ArgumentNullException>(() => proxyTracer.StartSpan(null, SpanContext.Blank, SpanKind.Client, null));
|
||||
|
||||
Assert.Throws<ArgumentNullException>(() =>
|
||||
proxyTracer.StartSpanFromActivity(null, new Activity("foo").Start()));
|
||||
|
|
@ -92,33 +88,24 @@ namespace OpenTelemetry.Tests.Impl.Trace
|
|||
var proxyTracer = new ProxyTracer();
|
||||
Assert.Equal(BlankSpan.Instance, proxyTracer.StartRootSpan("foo"));
|
||||
Assert.Equal(BlankSpan.Instance, proxyTracer.StartRootSpan("foo", SpanKind.Client));
|
||||
Assert.Equal(BlankSpan.Instance, proxyTracer.StartRootSpan("foo", SpanKind.Client, default));
|
||||
Assert.Equal(BlankSpan.Instance, proxyTracer.StartRootSpan("foo", SpanKind.Client, default, null as IEnumerable<Link>));
|
||||
Assert.Equal(BlankSpan.Instance, proxyTracer.StartRootSpan("foo", SpanKind.Client, default, null as Func<IEnumerable<Link>>));
|
||||
Assert.Equal(BlankSpan.Instance, proxyTracer.StartRootSpan("foo", SpanKind.Client, null));
|
||||
|
||||
Assert.Equal(BlankSpan.Instance, proxyTracer.StartSpan("foo"));
|
||||
Assert.Equal(BlankSpan.Instance, proxyTracer.StartSpan("foo", SpanKind.Client));
|
||||
Assert.Equal(BlankSpan.Instance, proxyTracer.StartSpan("foo", SpanKind.Client, default));
|
||||
Assert.Equal(BlankSpan.Instance, proxyTracer.StartSpan("foo", SpanKind.Client, default, null as IEnumerable<Link>));
|
||||
Assert.Equal(BlankSpan.Instance, proxyTracer.StartSpan("foo", SpanKind.Client, default, null as Func<IEnumerable<Link>>));
|
||||
Assert.Equal(BlankSpan.Instance, proxyTracer.StartSpan("foo", SpanKind.Client, null));
|
||||
|
||||
Assert.Equal(BlankSpan.Instance, proxyTracer.StartSpan("foo", BlankSpan.Instance));
|
||||
Assert.Equal(BlankSpan.Instance, proxyTracer.StartSpan("foo", BlankSpan.Instance, SpanKind.Client));
|
||||
Assert.Equal(BlankSpan.Instance, proxyTracer.StartSpan("foo", BlankSpan.Instance, SpanKind.Client, default));
|
||||
Assert.Equal(BlankSpan.Instance, proxyTracer.StartSpan("foo", BlankSpan.Instance, SpanKind.Client, default, null as IEnumerable<Link>));
|
||||
Assert.Equal(BlankSpan.Instance, proxyTracer.StartSpan("foo", BlankSpan.Instance, SpanKind.Client, default, null as Func<IEnumerable<Link>>));
|
||||
Assert.Equal(BlankSpan.Instance, proxyTracer.StartSpan("foo", BlankSpan.Instance, SpanKind.Client, null));
|
||||
|
||||
Assert.Equal(BlankSpan.Instance, proxyTracer.StartSpan("foo", SpanContext.Blank));
|
||||
Assert.Equal(BlankSpan.Instance, proxyTracer.StartSpan("foo", SpanContext.Blank, SpanKind.Client));
|
||||
Assert.Equal(BlankSpan.Instance, proxyTracer.StartSpan("foo", SpanContext.Blank, SpanKind.Client, default));
|
||||
Assert.Equal(BlankSpan.Instance, proxyTracer.StartSpan("foo", SpanContext.Blank, SpanKind.Client, default, null as IEnumerable<Link>));
|
||||
Assert.Equal(BlankSpan.Instance, proxyTracer.StartSpan("foo", SpanContext.Blank, SpanKind.Client, default, null as Func<IEnumerable<Link>>));
|
||||
Assert.Equal(BlankSpan.Instance, proxyTracer.StartSpan("foo", SpanContext.Blank, SpanKind.Client, null));
|
||||
|
||||
var validActivity = new Activity("foo").SetIdFormat(ActivityIdFormat.W3C).Start();
|
||||
Assert.Equal(BlankSpan.Instance, proxyTracer.StartSpanFromActivity("foo", validActivity));
|
||||
Assert.Equal(BlankSpan.Instance, proxyTracer.StartSpanFromActivity("foo", validActivity, SpanKind.Consumer));
|
||||
Assert.Equal(BlankSpan.Instance, proxyTracer.StartSpanFromActivity("foo", validActivity, SpanKind.Client, null as IEnumerable<Link>));
|
||||
Assert.Equal(BlankSpan.Instance, proxyTracer.StartSpanFromActivity("foo", validActivity, SpanKind.Client, null as Func<IEnumerable<Link>>));
|
||||
Assert.Equal(BlankSpan.Instance, proxyTracer.StartSpanFromActivity("foo", validActivity, SpanKind.Client, null));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -130,7 +117,11 @@ namespace OpenTelemetry.Tests.Impl.Trace
|
|||
var linkContext = new SpanContext(ActivityTraceId.CreateRandom(), ActivitySpanId.CreateRandom(), ActivityTraceFlags.Recorded);
|
||||
|
||||
var startTimestamp = DateTimeOffset.UtcNow.AddSeconds(-10);
|
||||
var span = (Span)proxyTracer.StartRootSpan("foo", SpanKind.Server, startTimestamp, () => new[] { new Link(linkContext) });
|
||||
var span = (Span)proxyTracer.StartRootSpan("foo", SpanKind.Server, new SpanCreationOptions
|
||||
{
|
||||
StartTimestamp = startTimestamp,
|
||||
LinksFactory = () => new[] { new Link(linkContext) },
|
||||
});
|
||||
|
||||
Assert.True(span.Context.IsValid);
|
||||
Assert.Equal(span.Activity.TraceId, span.Context.TraceId);
|
||||
|
|
@ -158,7 +149,11 @@ namespace OpenTelemetry.Tests.Impl.Trace
|
|||
|
||||
var startTimestamp = PreciseTimestamp.GetUtcNow();
|
||||
var linkContext = new SpanContext(ActivityTraceId.CreateRandom(), ActivitySpanId.CreateRandom(), ActivityTraceFlags.Recorded);
|
||||
var span = (Span)proxyTracer.StartSpan("child", parentSpan, SpanKind.Server, startTimestamp, () => new[] { new Link(linkContext) });
|
||||
var span = (Span)proxyTracer.StartSpan("child", parentSpan, SpanKind.Server, new SpanCreationOptions
|
||||
{
|
||||
StartTimestamp = startTimestamp,
|
||||
Links = new[] { new Link(linkContext) },
|
||||
});
|
||||
|
||||
Assert.True(span.Context.IsValid);
|
||||
Assert.Equal(parentSpan.Context.TraceId, span.Context.TraceId);
|
||||
|
|
@ -185,7 +180,11 @@ namespace OpenTelemetry.Tests.Impl.Trace
|
|||
|
||||
var startTimestamp = PreciseTimestamp.GetUtcNow();
|
||||
var linkContext = new SpanContext(ActivityTraceId.CreateRandom(), ActivitySpanId.CreateRandom(), ActivityTraceFlags.Recorded);
|
||||
var span = (Span)proxyTracer.StartSpan("child", parentSpanContext, SpanKind.Client, startTimestamp, () => new[] { new Link(linkContext) });
|
||||
var span = (Span)proxyTracer.StartSpan("child", parentSpanContext, SpanKind.Client, new SpanCreationOptions
|
||||
{
|
||||
StartTimestamp = startTimestamp,
|
||||
Links = new[] { new Link(linkContext) },
|
||||
});
|
||||
|
||||
Assert.True(span.Context.IsValid);
|
||||
Assert.Equal(parentSpanContext.TraceId, span.Context.TraceId);
|
||||
|
|
@ -201,7 +200,6 @@ namespace OpenTelemetry.Tests.Impl.Trace
|
|||
Assert.Same(linkContext, span.Links.Single().Context);
|
||||
}
|
||||
|
||||
|
||||
[Fact]
|
||||
public void ProxyTracer_UpdateTracer_StartSpanFrom_FromActivity_Kind_Links()
|
||||
{
|
||||
|
|
@ -214,7 +212,7 @@ namespace OpenTelemetry.Tests.Impl.Trace
|
|||
|
||||
var linkContext = new SpanContext(ActivityTraceId.CreateRandom(), ActivitySpanId.CreateRandom(), ActivityTraceFlags.Recorded);
|
||||
|
||||
var span = (Span)proxyTracer.StartSpanFromActivity("foo", activity, SpanKind.Server, () => new[] { new Link(linkContext) });
|
||||
var span = (Span)proxyTracer.StartSpanFromActivity("foo", activity, SpanKind.Server, new[] { new Link(linkContext) });
|
||||
|
||||
Assert.Equal(activity.TraceId, span.Context.TraceId);
|
||||
Assert.Equal(activity.SpanId, span.Context.SpanId);
|
||||
|
|
@ -242,8 +240,11 @@ namespace OpenTelemetry.Tests.Impl.Trace
|
|||
var startTimestamp = PreciseTimestamp.GetUtcNow();
|
||||
var linkContext = new SpanContext(ActivityTraceId.CreateRandom(), ActivitySpanId.CreateRandom(),
|
||||
ActivityTraceFlags.Recorded);
|
||||
var span = (Span)proxyTracer.StartSpan("child", SpanKind.Consumer, startTimestamp,
|
||||
() => new[] {new Link(linkContext)});
|
||||
var span = (Span)proxyTracer.StartSpan("child", SpanKind.Consumer, new SpanCreationOptions
|
||||
{
|
||||
StartTimestamp = startTimestamp,
|
||||
LinksFactory = () => new[] { new Link(linkContext) },
|
||||
});
|
||||
|
||||
Assert.True(span.Context.IsValid);
|
||||
Assert.Equal(parentSpan.Context.TraceId, span.Context.TraceId);
|
||||
|
|
|
|||
|
|
@ -147,7 +147,7 @@ namespace OpenTelemetry.Trace.Test
|
|||
var parentSpan = tracer.StartRootSpan(SpanName);
|
||||
|
||||
var startTimestamp = DateTimeOffset.Now.AddSeconds(-1);
|
||||
var span = (Span)tracer.StartSpan(SpanName, parentSpan, SpanKind.Server, startTimestamp);
|
||||
var span = (Span)tracer.StartSpan(SpanName, parentSpan, SpanKind.Server, new SpanCreationOptions { StartTimestamp = startTimestamp });
|
||||
|
||||
Assert.True(span.IsRecording);
|
||||
Assert.Equal(SpanKind.Server, span.Kind);
|
||||
|
|
@ -164,7 +164,7 @@ namespace OpenTelemetry.Trace.Test
|
|||
var linkContext = new SpanContext(ActivityTraceId.CreateRandom(), ActivitySpanId.CreateRandom(), ActivityTraceFlags.Recorded);
|
||||
|
||||
var startTimestamp = PreciseTimestamp.GetUtcNow();
|
||||
var span = (Span)tracer.StartSpan(SpanName, parentSpan, SpanKind.Server, default, () => new [] { new Link(linkContext) });
|
||||
var span = (Span)tracer.StartSpan(SpanName, parentSpan, SpanKind.Server, new SpanCreationOptions { LinksFactory = () => new[] { new Link(linkContext) } });
|
||||
|
||||
Assert.True(span.IsRecording);
|
||||
Assert.Equal(SpanKind.Server, span.Kind);
|
||||
|
|
@ -182,7 +182,7 @@ namespace OpenTelemetry.Trace.Test
|
|||
var linkContext = new SpanContext(ActivityTraceId.CreateRandom(), ActivitySpanId.CreateRandom(), ActivityTraceFlags.Recorded);
|
||||
|
||||
var startTimestamp = PreciseTimestamp.GetUtcNow();
|
||||
var span = (Span)tracer.StartSpan(SpanName, parentSpan, SpanKind.Server, default, new [] { new Link(linkContext) });
|
||||
var span = (Span)tracer.StartSpan(SpanName, parentSpan, SpanKind.Server, new SpanCreationOptions { Links = new[] { new Link(linkContext) } });
|
||||
|
||||
Assert.True(span.IsRecording);
|
||||
Assert.Equal(SpanKind.Server, span.Kind);
|
||||
|
|
@ -267,7 +267,7 @@ namespace OpenTelemetry.Trace.Test
|
|||
var tracer = tracerFactory.GetTracer(null);
|
||||
|
||||
var startTimestamp = DateTimeOffset.Now.AddSeconds(-1);
|
||||
var span = (Span)tracer.StartRootSpan(SpanName, SpanKind.Client, startTimestamp);
|
||||
var span = (Span)tracer.StartRootSpan(SpanName, SpanKind.Client, new SpanCreationOptions { StartTimestamp = startTimestamp });
|
||||
|
||||
Assert.True(span.IsRecording);
|
||||
Assert.Equal(SpanKind.Client, span.Kind);
|
||||
|
|
@ -283,7 +283,11 @@ namespace OpenTelemetry.Trace.Test
|
|||
var linkContext = new SpanContext(ActivityTraceId.CreateRandom(), ActivitySpanId.CreateRandom(), ActivityTraceFlags.Recorded);
|
||||
|
||||
var startTimestamp = PreciseTimestamp.GetUtcNow();
|
||||
var span = (Span)tracer.StartRootSpan(SpanName, SpanKind.Server, startTimestamp, () => new[] { new Link(linkContext) });
|
||||
var span = (Span)tracer.StartRootSpan(SpanName, SpanKind.Server, new SpanCreationOptions
|
||||
{
|
||||
StartTimestamp = startTimestamp,
|
||||
Links = new[] { new Link(linkContext) },
|
||||
});
|
||||
|
||||
Assert.True(span.IsRecording);
|
||||
Assert.Equal(SpanKind.Server, span.Kind);
|
||||
|
|
@ -401,7 +405,7 @@ namespace OpenTelemetry.Trace.Test
|
|||
var parentContext = new SpanContext(ActivityTraceId.CreateRandom(), ActivitySpanId.CreateRandom(), ActivityTraceFlags.Recorded);
|
||||
|
||||
var startTimestamp = DateTimeOffset.Now.AddSeconds(-1);
|
||||
var span = (Span)tracer.StartSpan(SpanName, parentContext, SpanKind.Server, startTimestamp);
|
||||
var span = (Span)tracer.StartSpan(SpanName, parentContext, SpanKind.Server, new SpanCreationOptions { StartTimestamp = startTimestamp } );
|
||||
|
||||
Assert.True(span.IsRecording);
|
||||
Assert.Equal(SpanKind.Server, span.Kind);
|
||||
|
|
@ -418,7 +422,7 @@ namespace OpenTelemetry.Trace.Test
|
|||
var linkContext = new SpanContext(ActivityTraceId.CreateRandom(), ActivitySpanId.CreateRandom(), ActivityTraceFlags.Recorded);
|
||||
|
||||
var startTimestamp = PreciseTimestamp.GetUtcNow();
|
||||
var span = (Span)tracer.StartSpan(SpanName, parentContext, SpanKind.Server, default, new[] { new Link(linkContext) });
|
||||
var span = (Span)tracer.StartSpan(SpanName, parentContext, SpanKind.Server, new SpanCreationOptions { LinksFactory = () => new[] { new Link(linkContext) }} );
|
||||
|
||||
Assert.True(span.IsRecording);
|
||||
Assert.Equal(SpanKind.Server, span.Kind);
|
||||
|
|
@ -437,7 +441,7 @@ namespace OpenTelemetry.Trace.Test
|
|||
var secondLinkContext = new SpanContext(ActivityTraceId.CreateRandom(), ActivitySpanId.CreateRandom(), ActivityTraceFlags.None);
|
||||
|
||||
var startTimestamp = PreciseTimestamp.GetUtcNow();
|
||||
var span = (Span)tracer.StartSpan(SpanName, parentContext, SpanKind.Server, default, new[] { new Link(firstLinkContext), new Link(secondLinkContext) });
|
||||
var span = (Span)tracer.StartSpan(SpanName, parentContext, SpanKind.Server, new SpanCreationOptions { Links = new[] { new Link(firstLinkContext), new Link(secondLinkContext) } });
|
||||
|
||||
Assert.True(span.IsRecording);
|
||||
Assert.Equal(SpanKind.Server, span.Kind);
|
||||
|
|
@ -536,26 +540,6 @@ namespace OpenTelemetry.Trace.Test
|
|||
Assert.Empty(span.Links);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void StartSpan_Recorded_FromActivity_Kind_Links_Func()
|
||||
{
|
||||
var tracer = tracerFactory.GetTracer(null);
|
||||
|
||||
var activity = new Activity(SpanName).SetIdFormat(ActivityIdFormat.W3C).Start();
|
||||
activity.ActivityTraceFlags |= ActivityTraceFlags.Recorded;
|
||||
|
||||
var linkContext = new SpanContext(ActivityTraceId.CreateRandom(), ActivitySpanId.CreateRandom(), ActivityTraceFlags.Recorded);
|
||||
|
||||
var span = (Span)tracer.StartSpanFromActivity(SpanName, activity, SpanKind.Server, () => new[] { new Link(linkContext) });
|
||||
|
||||
Assert.True(span.IsRecording);
|
||||
Assert.Equal(SpanKind.Server, span.Kind);
|
||||
Assert.Equal(activity.StartTimeUtc, span.StartTimestamp.DateTime);
|
||||
Assert.Equal(activity, span.Activity);
|
||||
Assert.Single(span.Links);
|
||||
Assert.Same(linkContext, span.Links.Single().Context);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void StartSpan_Recorded_FromActivity_Kind_Links_Enumerable()
|
||||
{
|
||||
|
|
@ -714,7 +698,7 @@ namespace OpenTelemetry.Trace.Test
|
|||
using (tracer.WithSpan(tracer.StartRootSpan(SpanName)))
|
||||
{
|
||||
var startTimestamp = DateTimeOffset.UtcNow.AddSeconds(-10);
|
||||
var span = (Span)tracer.StartSpan(SpanName, SpanKind.Server, startTimestamp);
|
||||
var span = (Span)tracer.StartSpan(SpanName, SpanKind.Server, new SpanCreationOptions { StartTimestamp = startTimestamp });
|
||||
|
||||
Assert.True(span.IsRecording);
|
||||
Assert.Equal(SpanKind.Server, span.Kind);
|
||||
|
|
@ -734,7 +718,7 @@ namespace OpenTelemetry.Trace.Test
|
|||
ActivityTraceFlags.Recorded);
|
||||
|
||||
var startTimestamp = DateTimeOffset.UtcNow.AddSeconds(-10);
|
||||
var span = (Span)tracer.StartSpan(SpanName, SpanKind.Server, startTimestamp, () => new[] {new Link(linkContext)});
|
||||
var span = (Span)tracer.StartSpan(SpanName, SpanKind.Server, new SpanCreationOptions { StartTimestamp = startTimestamp, LinksFactory = () => new[] { new Link(linkContext) } });
|
||||
|
||||
Assert.True(span.IsRecording);
|
||||
Assert.Equal(SpanKind.Server, span.Kind);
|
||||
|
|
@ -755,7 +739,7 @@ namespace OpenTelemetry.Trace.Test
|
|||
ActivityTraceFlags.Recorded);
|
||||
|
||||
var startTimestamp = DateTimeOffset.UtcNow.AddSeconds(-10);
|
||||
var span = (Span)tracer.StartSpan(SpanName, SpanKind.Server, startTimestamp, new[] {new Link(linkContext)});
|
||||
var span = (Span)tracer.StartSpan(SpanName, SpanKind.Server, new SpanCreationOptions { StartTimestamp = startTimestamp, Links = new[] { new Link(linkContext) } });
|
||||
|
||||
Assert.True(span.IsRecording);
|
||||
Assert.Equal(SpanKind.Server, span.Kind);
|
||||
|
|
@ -806,7 +790,7 @@ namespace OpenTelemetry.Trace.Test
|
|||
|
||||
var tracer = tracerFactory.GetTracer(null);
|
||||
var startTime = DateTimeOffset.UtcNow.AddSeconds(-1);
|
||||
var span = (Span)tracer.StartSpan(SpanName, SpanKind.Client, startTime, () => new [] {link});
|
||||
var span = (Span)tracer.StartSpan(SpanName, SpanKind.Client, new SpanCreationOptions { StartTimestamp = startTime, LinksFactory = () => new[] { link } });
|
||||
|
||||
span.SetAttribute(
|
||||
"MySingleStringAttributeKey",
|
||||
|
|
@ -866,7 +850,7 @@ namespace OpenTelemetry.Trace.Test
|
|||
var link = new Link(contextLink);
|
||||
var tracer = tracerFactory.GetTracer(null);
|
||||
var startTime = DateTimeOffset.UtcNow.AddSeconds(-1);
|
||||
var span = (Span)tracer.StartRootSpan(SpanName, SpanKind.Client, startTime, () => new [] {link});
|
||||
var span = (Span)tracer.StartRootSpan(SpanName, SpanKind.Client, new SpanCreationOptions { StartTimestamp = startTime, LinksFactory = () => new[] { link }});
|
||||
span.SetAttribute(
|
||||
"MySingleStringAttributeKey",
|
||||
"MySingleStringAttributeValue");
|
||||
|
|
|
|||
|
|
@ -67,27 +67,19 @@ namespace OpenTelemetry.Trace.Test
|
|||
{
|
||||
Assert.Throws<ArgumentNullException>(() => tracer.StartRootSpan(null));
|
||||
Assert.Throws<ArgumentNullException>(() => tracer.StartRootSpan(null, SpanKind.Client));
|
||||
Assert.Throws<ArgumentNullException>(() => tracer.StartRootSpan(null, SpanKind.Client, default));
|
||||
Assert.Throws<ArgumentNullException>(() => tracer.StartRootSpan(null, SpanKind.Client, default, null as IEnumerable<Link>));
|
||||
Assert.Throws<ArgumentNullException>(() => tracer.StartRootSpan(null, SpanKind.Client, default, null as Func<IEnumerable<Link>>));
|
||||
Assert.Throws<ArgumentNullException>(() => tracer.StartRootSpan(null, SpanKind.Client, null));
|
||||
|
||||
Assert.Throws<ArgumentNullException>(() => tracer.StartSpan(null));
|
||||
Assert.Throws<ArgumentNullException>(() => tracer.StartSpan(null, SpanKind.Client));
|
||||
Assert.Throws<ArgumentNullException>(() => tracer.StartSpan(null, SpanKind.Client, default));
|
||||
Assert.Throws<ArgumentNullException>(() => tracer.StartSpan(null, SpanKind.Client, default, null as IEnumerable<Link>));
|
||||
Assert.Throws<ArgumentNullException>(() => tracer.StartSpan(null, SpanKind.Client, default, null as Func<IEnumerable<Link>>));
|
||||
Assert.Throws<ArgumentNullException>(() => tracer.StartSpan(null, SpanKind.Client, null));
|
||||
|
||||
Assert.Throws<ArgumentNullException>(() => tracer.StartSpan(null, BlankSpan.Instance));
|
||||
Assert.Throws<ArgumentNullException>(() => tracer.StartSpan(null, BlankSpan.Instance, SpanKind.Client));
|
||||
Assert.Throws<ArgumentNullException>(() => tracer.StartSpan(null, BlankSpan.Instance, SpanKind.Client, default));
|
||||
Assert.Throws<ArgumentNullException>(() => tracer.StartSpan(null, BlankSpan.Instance, SpanKind.Client, default, null as IEnumerable<Link>));
|
||||
Assert.Throws<ArgumentNullException>(() => tracer.StartSpan(null, BlankSpan.Instance, SpanKind.Client, default, null as Func<IEnumerable<Link>>));
|
||||
Assert.Throws<ArgumentNullException>(() => tracer.StartSpan(null, BlankSpan.Instance, SpanKind.Client, null));
|
||||
|
||||
Assert.Throws<ArgumentNullException>(() => tracer.StartSpan(null, SpanContext.Blank));
|
||||
Assert.Throws<ArgumentNullException>(() => tracer.StartSpan(null, SpanContext.Blank, SpanKind.Client));
|
||||
Assert.Throws<ArgumentNullException>(() => tracer.StartSpan(null, SpanContext.Blank, SpanKind.Client, default));
|
||||
Assert.Throws<ArgumentNullException>(() => tracer.StartSpan(null, SpanContext.Blank, SpanKind.Client, default, null as IEnumerable<Link>));
|
||||
Assert.Throws<ArgumentNullException>(() => tracer.StartSpan(null, SpanContext.Blank, SpanKind.Client, default, null as Func<IEnumerable<Link>>));
|
||||
Assert.Throws<ArgumentNullException>(() => tracer.StartSpan(null, SpanContext.Blank, SpanKind.Client, null));
|
||||
|
||||
Assert.Throws<ArgumentNullException>(() => tracer.StartSpanFromActivity(null, new Activity("foo").Start()));
|
||||
|
||||
|
|
@ -250,7 +242,7 @@ namespace OpenTelemetry.Trace.Test
|
|||
}
|
||||
|
||||
[Fact]
|
||||
public void DroppingLinks()
|
||||
public void DroppingLinksFactory()
|
||||
{
|
||||
var contextLink = new SpanContext(ActivityTraceId.CreateRandom(), ActivitySpanId.CreateRandom(),
|
||||
ActivityTraceFlags.None);
|
||||
|
|
@ -269,7 +261,10 @@ namespace OpenTelemetry.Trace.Test
|
|||
overflowedLinks.Add(link);
|
||||
}
|
||||
|
||||
var span = (Span)tracer.StartSpan(SpanName, SpanKind.Client, DateTimeOffset.Now, () => overflowedLinks);
|
||||
var span = (Span)tracer.StartSpan(SpanName, SpanKind.Client, new SpanCreationOptions
|
||||
{
|
||||
LinksFactory = () => overflowedLinks,
|
||||
});
|
||||
|
||||
Assert.Equal(maxNumberOfLinks, span.Links.Count());
|
||||
foreach (var actualLink in span.Links)
|
||||
|
|
@ -286,6 +281,48 @@ namespace OpenTelemetry.Trace.Test
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
[Fact]
|
||||
public void DroppingLinksEnumerable()
|
||||
{
|
||||
var contextLink = new SpanContext(ActivityTraceId.CreateRandom(), ActivitySpanId.CreateRandom(),
|
||||
ActivityTraceFlags.None);
|
||||
|
||||
var maxNumberOfLinks = 8;
|
||||
var traceConfig = new TracerConfiguration(Samplers.AlwaysSample, 32, 128, maxNumberOfLinks);
|
||||
var tracer = TracerFactory.Create(b => b
|
||||
.AddProcessorPipeline(p => p.AddProcessor(n => spanProcessor))
|
||||
.SetTracerOptions(traceConfig))
|
||||
.GetTracer(null);
|
||||
|
||||
var overflowedLinks = new List<Link>();
|
||||
var link = new Link(contextLink);
|
||||
for (var i = 0; i < 2 * maxNumberOfLinks; i++)
|
||||
{
|
||||
overflowedLinks.Add(link);
|
||||
}
|
||||
|
||||
var span = (Span)tracer.StartSpan(SpanName, SpanKind.Client, new SpanCreationOptions
|
||||
{
|
||||
Links = overflowedLinks,
|
||||
});
|
||||
|
||||
Assert.Equal(maxNumberOfLinks, span.Links.Count());
|
||||
foreach (var actualLink in span.Links)
|
||||
{
|
||||
Assert.Equal(link, actualLink);
|
||||
}
|
||||
|
||||
span.End();
|
||||
|
||||
Assert.Equal(maxNumberOfLinks, span.Links.Count());
|
||||
foreach (var actualLink in span.Links)
|
||||
{
|
||||
Assert.Equal(link, actualLink);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
[Fact]
|
||||
public void DroppingAttributes()
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue