Skip to content
This repository was archived by the owner on Mar 4, 2025. It is now read-only.

Commit

Permalink
Fix MockZipkinCollector (#144)
Browse files Browse the repository at this point in the history
* Fix MockZipkinCollector

* Only exclude multi package samples if TestAllPackageVersions is true
  • Loading branch information
pjanotti authored Sep 24, 2021
1 parent 11c506e commit b285e53
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 16 deletions.
2 changes: 1 addition & 1 deletion tracer/build/_build/Build.Steps.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1044,7 +1044,7 @@ _ when projectPath.ToString().Contains("Samples.OracleMDA") => false,
"Samples.AspNetCore2" => Framework == TargetFramework.NETCOREAPP2_1,
"Samples.AspNetCore5" => Framework == TargetFramework.NET5_0 || Framework == TargetFramework.NETCOREAPP3_1 || Framework == TargetFramework.NETCOREAPP3_0,
var name when projectsToSkip.Contains(name) => false,
var name when multiPackageProjects.Contains(name) => false,
var name when TestAllPackageVersions && multiPackageProjects.Contains(name) => false,
_ when !string.IsNullOrWhiteSpace(SampleName) => project?.Name?.Contains(SampleName) ?? false,
_ => true,
};
Expand Down
43 changes: 28 additions & 15 deletions tracer/test/Datadog.Trace.TestHelpers/MockZipkinCollector.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,11 @@ public MockZipkinCollector(int port = 8126, int retries = 5)
// seems like we can't reuse a listener if it fails to start,
// so create a new listener each time we retry
var listener = new HttpListener();
listener.Prefixes.Add($"http://localhost:{port}/");

try
{
listener.Start();
listener.Prefixes.Add($"http://localhost:{port}/");

// successfully listening
Port = port;
Expand Down Expand Up @@ -182,25 +182,38 @@ private void HandleHttpRequests()
var getCtxTask = Task.Run(() => _listener.GetContext());
getCtxTask.Wait(_listenerCts.Token);

var ctx = getCtxTask.Result;
OnRequestReceived(ctx);

if (ShouldDeserializeTraces)
lock (_listener)
{
using (var reader = new StreamReader(ctx.Request.InputStream))
if (!_listener.IsListening)
{
var zspans = JsonConvert.DeserializeObject<List<Span>>(reader.ReadToEnd());
OnRequestDeserialized(zspans);
return;
}

Spans = Spans.AddRange(zspans);
RequestHeaders = RequestHeaders.Add(new NameValueCollection(ctx.Request.Headers));
var ctx = getCtxTask.Result;
OnRequestReceived(ctx);

if (ShouldDeserializeTraces)
{
using (var reader = new StreamReader(ctx.Request.InputStream))
{
var zspans = JsonConvert.DeserializeObject<List<Span>>(reader.ReadToEnd());
if (zspans != null)
{
IList<Span> spans = (IList<Span>)zspans.ConvertAll(x => (Span)x);
OnRequestDeserialized(spans);

Spans = Spans.AddRange(spans);
}

RequestHeaders = RequestHeaders.Add(new NameValueCollection(ctx.Request.Headers));
}
}
}

ctx.Response.ContentType = "application/json";
var buffer = Encoding.UTF8.GetBytes("{}");
ctx.Response.OutputStream.Write(buffer, 0, buffer.Length);
ctx.Response.Close();
ctx.Response.ContentType = "application/json";
var buffer = Encoding.UTF8.GetBytes("{}");
ctx.Response.OutputStream.Write(buffer, 0, buffer.Length);
ctx.Response.Close();
}
}
catch (Exception ex) when (ex is HttpListenerException || ex is OperationCanceledException || ex is AggregateException)
{
Expand Down

0 comments on commit b285e53

Please sign in to comment.