feat(otel): Add proper support for remote spans (#458)
.NET Build and Publish / build (push) Has been cancelled

* Add proper support for remote spans

* Fix tests
This commit is contained in:
Jedd Morgan
2026-03-12 12:52:10 +00:00
committed by GitHub
parent 906ff9c3ff
commit a2c99a537a
4 changed files with 16 additions and 7 deletions
@@ -5,6 +5,7 @@ public interface ISdkActivity : IDisposable
void SetTag(string key, object? value);
void RecordException(Exception e);
string TraceId { get; }
string SpanId { get; }
void SetStatus(SdkActivityStatusCode code);
void InjectHeaders(Action<string, string> header);
@@ -6,7 +6,12 @@ public interface ISdkActivityFactory : IDisposable
{
/// <param name="name"></param>
/// <param name="source"></param>
/// <param name="parentId">Only need to set if the parent is coming from an external source (e.g.to trace between client and server)</param>
/// <returns></returns>
ISdkActivity? Start(string? name = default, [CallerMemberName] string source = "", string? parentId = null);
ISdkActivity? Start(string? name = default, [CallerMemberName] string source = "");
ISdkActivity? StartRemote(
string traceId,
string parentSpanId,
string? name = default,
[CallerMemberName] string source = ""
);
}
@@ -4,5 +4,8 @@ public sealed class NullActivityFactory : ISdkActivityFactory
{
public void Dispose() { }
public ISdkActivity? Start(string? name = default, string source = "", string? parentId = null) => null;
public ISdkActivity? Start(string? name = default, string source = "") => null;
public ISdkActivity? StartRemote(string traceId, string parentSpanId, string? name = default, string source = "") =>
null;
}
@@ -52,7 +52,7 @@ public class ServerObjectManagerTests : MoqTest
http.Setup(x => x.CreateHttpClient(It.IsAny<HttpClientHandler>(), timeout, token)).Returns(httpClient);
var activityFactory = Create<ISdkActivityFactory>();
activityFactory.Setup(x => x.Start(null, "DownloadObjects", null)).Returns((ISdkActivity?)null);
activityFactory.Setup(x => x.Start(null, "DownloadObjects")).Returns((ISdkActivity?)null);
var serverObjectManager = new ServerObjectManager(
http.Object,
@@ -91,7 +91,7 @@ public class ServerObjectManagerTests : MoqTest
http.Setup(x => x.CreateHttpClient(It.IsAny<HttpClientHandler>(), timeout, token)).Returns(httpClient);
var activityFactory = Create<ISdkActivityFactory>();
activityFactory.Setup(x => x.Start(null, "DownloadSingleObject", null)).Returns((ISdkActivity?)null);
activityFactory.Setup(x => x.Start(null, "DownloadSingleObject")).Returns((ISdkActivity?)null);
var serverObjectManager = new ServerObjectManager(
http.Object,
@@ -132,7 +132,7 @@ public class ServerObjectManagerTests : MoqTest
http.Setup(x => x.CreateHttpClient(It.IsAny<HttpClientHandler>(), timeout, token)).Returns(httpClient);
var activityFactory = Create<ISdkActivityFactory>();
activityFactory.Setup(x => x.Start(null, "HasObjects", null)).Returns((ISdkActivity?)null);
activityFactory.Setup(x => x.Start(null, "HasObjects")).Returns((ISdkActivity?)null);
var serverObjectManager = new ServerObjectManager(
http.Object,
@@ -171,7 +171,7 @@ public class ServerObjectManagerTests : MoqTest
http.Setup(x => x.CreateHttpClient(It.IsAny<HttpClientHandler>(), timeout, token)).Returns(httpClient);
var activityFactory = Create<ISdkActivityFactory>();
activityFactory.Setup(x => x.Start(null, "UploadObjects", null)).Returns((ISdkActivity?)null);
activityFactory.Setup(x => x.Start(null, "UploadObjects")).Returns((ISdkActivity?)null);
var serverObjectManager = new ServerObjectManager(
http.Object,