Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ namespace Azure.Monitor.OpenTelemetry.Exporter.Demo.Tracing
public class TelemetryPartATests
{
private const string ResourcePropertyName = "OTel.Resource";
private const string ActivitySourceName = "TelemetryPartATests";
private const string ActivityName = "TestActivity";

static TelemetryPartATests()
{
Expand Down Expand Up @@ -110,7 +112,13 @@ public void InitRoleInfo_ServiceNameAndInstanceAndNamespace()
[Fact]
public void GeneratePartAEnvelope_DefaultActivity_DefaultResource()
{
var activity = CreateTestActivity();
using ActivitySource activitySource = new ActivitySource(ActivitySourceName);
using var activity = activitySource.StartActivity(
ActivityName,
ActivityKind.Client,
parentContext: default,
startTime: DateTime.UtcNow);

var resource = CreateTestResource();

var telemetryItem = TelemetryPartA.GetTelemetryItem(activity, resource, null);
Expand All @@ -127,7 +135,13 @@ public void GeneratePartAEnvelope_DefaultActivity_DefaultResource()
[Fact]
public void GeneratePartAEnvelope_Activity_WithResource()
{
var activity = CreateTestActivity();
using ActivitySource activitySource = new ActivitySource(ActivitySourceName);
using var activity = activitySource.StartActivity(
ActivityName,
ActivityKind.Client,
parentContext: default,
startTime: DateTime.UtcNow);

var resource = CreateTestResource(serviceName: "my-service", serviceInstance: "my-instance");

var telemetryItem = TelemetryPartA.GetTelemetryItem(activity, resource, null);
Expand Down Expand Up @@ -166,103 +180,5 @@ private static Resource CreateTestResource(string serviceName = null, string ser

return ResourceBuilder.CreateDefault().AddAttributes(testAttributes).Build();
}

private static Activity CreateTestActivity(
bool setAttributes = true,
Dictionary<string, object> additionalAttributes = null,
bool addEvents = true,
bool addLinks = true,
Resource resource = null,
ActivityKind kind = ActivityKind.Client)
{
var startTimestamp = DateTime.UtcNow;
var endTimestamp = startTimestamp.AddSeconds(60);
var eventTimestamp = DateTime.UtcNow;
var traceId = ActivityTraceId.CreateRandom();

var parentSpanId = ActivitySpanId.CreateRandom();

var attributes = new Dictionary<string, object>
{
{ "stringKey", "value" },
{ "longKey", 1L },
{ "longKey2", 1 },
{ "doubleKey", 1D },
{ "doubleKey2", 1F },
{ "boolKey", true },
{ "int_array", new int[] { 1, 2 } },
{ "bool_array", new bool[] { true, false } },
{ "double_array", new double[] { 1.0, 1.1 } },
{ "string_array", new string[] { "a", "b" } },
};
if (additionalAttributes != null)
{
foreach (var attribute in additionalAttributes)
{
attributes.Add(attribute.Key, attribute.Value);
}
}

var events = new List<ActivityEvent>
{
new ActivityEvent(
"Event1",
eventTimestamp,
new ActivityTagsCollection(new Dictionary<string, object>
{
{ "key", "value" },
})),
new ActivityEvent(
"Event2",
eventTimestamp,
new ActivityTagsCollection(new Dictionary<string, object>
{
{ "key", "value" },
})),
};

var linkedSpanId = ActivitySpanId.CreateRandom();

var activitySource = new ActivitySource(nameof(CreateTestActivity));

var tags = setAttributes ?
attributes
: null;
var links = addLinks ?
new[]
{
new ActivityLink(new ActivityContext(
traceId,
linkedSpanId,
ActivityTraceFlags.Recorded)),
}
: null;

var activity = activitySource.StartActivity(
"Name",
kind,
parentContext: new ActivityContext(traceId, parentSpanId, ActivityTraceFlags.Recorded),
tags,
links,
startTime: startTimestamp);

if (addEvents)
{
foreach (var evnt in events)
{
activity.AddEvent(evnt);
}
}

if (resource != null)
{
activity.SetCustomProperty(ResourcePropertyName, resource);
}

activity.SetEndTime(endTimestamp);
activity.Stop();

return activity;
}
}
}