From 2d99b6b7c72b540b490118797399a0d6813d74b2 Mon Sep 17 00:00:00 2001 From: Austin Parker Date: Wed, 9 Dec 2020 16:39:40 -0500 Subject: [PATCH 1/9] Update CHANGELOG.md --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e9d542f..91293cd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,10 @@ # Changelog +_v0.12.0_ +*Note* This release modifies the `Tracer` object to make it disposable. You may wish to check your integrations and wrappers to ensure that this doesn't break anything. +- The `Tracer` now implements `IDisposable`. This is intended to be used by implementors to add an "off" switch that can stop span recording. +- The version of certain Protobuf libraries required has been relaxed to it's pre-0.11 state. +- We no longer make a copy of the span buffer to count how many spans are in it in certain cases, improving performance. + _v0.11.0_ *Note* This release changes the public API surface. It should not impact you, but it might if you're manging span contexts manually. - The `SpanContext` signature has changed and parent span ID is now a ulong as well (this continues work released in 0.8.0). Performance should be improved for serialization to proto. From 07a1542181b57597b925f5ea9925de5a566d24cb Mon Sep 17 00:00:00 2001 From: Austin Parker Date: Wed, 9 Dec 2020 19:26:00 -0500 Subject: [PATCH 2/9] add perf tests --- LightStep.sln | 13 +- src/LightStep/LightStepSpanRecorder.cs | 1 - test/LightStep.Tests/TracerLogTest.cs | 10 ++ test/LightStep.Tests/TracerTests.cs | 133 ------------------ .../LightStep.TracerPerf.Tests.csproj | 29 ++++ test/LightStep.TracerPerf.Tests/README.md | 4 + .../TracerLogTest.cs | 26 ++++ .../TracerMemoryTest.cs | 60 ++++++++ .../TracerNetworkTest.cs | 35 +++++ .../TracerTestBase.cs | 97 +++++++++++++ 10 files changed, 271 insertions(+), 137 deletions(-) create mode 100644 test/LightStep.Tests/TracerLogTest.cs delete mode 100644 test/LightStep.Tests/TracerTests.cs create mode 100644 test/LightStep.TracerPerf.Tests/LightStep.TracerPerf.Tests.csproj create mode 100644 test/LightStep.TracerPerf.Tests/README.md create mode 100644 test/LightStep.TracerPerf.Tests/TracerLogTest.cs create mode 100644 test/LightStep.TracerPerf.Tests/TracerMemoryTest.cs create mode 100644 test/LightStep.TracerPerf.Tests/TracerNetworkTest.cs create mode 100644 test/LightStep.TracerPerf.Tests/TracerTestBase.cs diff --git a/LightStep.sln b/LightStep.sln index 2e5287a..fa49a11 100644 --- a/LightStep.sln +++ b/LightStep.sln @@ -1,14 +1,14 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.28010.2016 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.30517.126 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LightStep", "src\LightStep\LightStep.csproj", "{E5F75D2A-B882-46BB-A173-0F77E46498E2}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{BE409569-9FA2-4741-8ABF-327D56E6598E}" ProjectSection(SolutionItems) = preProject - README.md = README.md CHANGELOG.md = CHANGELOG.md + README.md = README.md EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{1359ACF9-43F2-4E09-94FD-32EB2C6239BA}" @@ -23,6 +23,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LightStep.CSharpAspectTestA EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LightStep.CSharpDITestApp", "examples\LightStep.CSharpDITestApp\LightStep.CSharpDITestApp.csproj", "{358E688A-D19E-4149-85CD-E804738C0C3F}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LightStep.TracerPerf.Tests", "test\LightStep.TracerPerf.Tests\LightStep.TracerPerf.Tests.csproj", "{B54D212A-812F-4102-9852-15D4F084434D}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -49,6 +51,10 @@ Global {358E688A-D19E-4149-85CD-E804738C0C3F}.Debug|Any CPU.Build.0 = Debug|Any CPU {358E688A-D19E-4149-85CD-E804738C0C3F}.Release|Any CPU.ActiveCfg = Release|Any CPU {358E688A-D19E-4149-85CD-E804738C0C3F}.Release|Any CPU.Build.0 = Release|Any CPU + {B54D212A-812F-4102-9852-15D4F084434D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B54D212A-812F-4102-9852-15D4F084434D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B54D212A-812F-4102-9852-15D4F084434D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B54D212A-812F-4102-9852-15D4F084434D}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -59,6 +65,7 @@ Global {65A11CA6-E7E9-43B6-A36D-6B54EA9BD758} = {113EDBB5-081F-4581-B687-9293B4D74312} {1B83F7CF-E2AA-4A81-9C0B-2DA716D5C982} = {113EDBB5-081F-4581-B687-9293B4D74312} {358E688A-D19E-4149-85CD-E804738C0C3F} = {113EDBB5-081F-4581-B687-9293B4D74312} + {B54D212A-812F-4102-9852-15D4F084434D} = {1359ACF9-43F2-4E09-94FD-32EB2C6239BA} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {0890664C-9CE4-4960-90A4-AD6565C970E3} diff --git a/src/LightStep/LightStepSpanRecorder.cs b/src/LightStep/LightStepSpanRecorder.cs index a431c1f..45938c2 100644 --- a/src/LightStep/LightStepSpanRecorder.cs +++ b/src/LightStep/LightStepSpanRecorder.cs @@ -65,7 +65,6 @@ public IEnumerable GetSpans() public int GetSpanCount() { - return Spans.Count; } } diff --git a/test/LightStep.Tests/TracerLogTest.cs b/test/LightStep.Tests/TracerLogTest.cs new file mode 100644 index 0000000..fedca33 --- /dev/null +++ b/test/LightStep.Tests/TracerLogTest.cs @@ -0,0 +1,10 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace LightStep.Tests +{ + class TracerLogTest + { + } +} diff --git a/test/LightStep.Tests/TracerTests.cs b/test/LightStep.Tests/TracerTests.cs deleted file mode 100644 index 3022e98..0000000 --- a/test/LightStep.Tests/TracerTests.cs +++ /dev/null @@ -1,133 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using LightStep.Collector; -using Moq; -using OpenTracing.Propagation; -using Xunit; - -namespace LightStep.Tests -{ - public class TracerTests - { - private Tracer GetTracer(ISpanRecorder recorder = null) - { - var spanRecorder = recorder ?? new SimpleMockRecorder(); - var satelliteOptions = new SatelliteOptions("localhost", 80, true); - var tracerOptions = new Options("TEST").WithSatellite(satelliteOptions).WithAutomaticReporting(false); - - return new Tracer(tracerOptions, spanRecorder); - } - - [Fact] - public void TracerShouldBuildSpan() - { - var tracer = GetTracer(); - var span = tracer.BuildSpan("test").Start(); - Assert.NotNull(span); - } - - [Fact] - public void TracerShouldExtractFromValidSpan() - { - var tracer = GetTracer(); - // by convention, we expect the upstream RPC to send ids as hex strings but to become uint64 internally - var traceId = new Random().NextUInt64(); - var spanId = new Random().NextUInt64(); - var data = new Dictionary - { - {"ot-tracer-traceid", traceId.ToString("X")}, - {"ot-tracer-spanid", spanId.ToString("X")} - }; - var spanContext = tracer.Extract(BuiltinFormats.TextMap, new TextMapExtractAdapter(data)); - Assert.NotNull(spanContext); - Assert.Equal(traceId.ToString("x"), spanContext.TraceId); - Assert.Equal(spanId.ToString("x"), spanContext.SpanId); - } - - [Fact] - public void TracerShouldFailToExtractFromInvalidSpan() - { - var tracer = GetTracer(); - var data = new Dictionary(); - var spanContext = tracer.Extract(BuiltinFormats.TextMap, new TextMapExtractAdapter(data)); - Assert.Null(spanContext); - } - - [Fact] - public void TracerShouldInjectTextMap() - { - var tracer = GetTracer(); - var span = tracer.BuildSpan("test").Start(); - var hexTraceId = span.TypedContext().TraceId; - var hexSpanId = span.TypedContext().SpanId; - var data = new Dictionary(); - tracer.Inject(span.Context, BuiltinFormats.TextMap, new TextMapInjectAdapter(data)); - Assert.Equal(hexTraceId, data["ot-tracer-traceid"]); - Assert.Equal(hexSpanId, data["ot-tracer-spanid"]); - } - - [Fact] - public void TracerShouldRecordAllSpanData() - { - var recorder = new SimpleMockRecorder(); - var tracer = GetTracer(recorder); - - var startTimeStamp = new DateTimeOffset(2018, 2, 19, 12, 0, 0, TimeSpan.Zero); - var endTimeStamp = new DateTimeOffset(2018, 2, 19, 12, 0, 5, TimeSpan.Zero); - - var span = tracer.BuildSpan("test") - .WithStartTimestamp(startTimeStamp) - .Start() - .SetTag("key", "testValue") - .SetBaggageItem("baggageKey", "bagTestValue"); - span.Finish(endTimeStamp); - - var recordedSpans = recorder.GetSpans().First(); - - Assert.Equal("test", recordedSpans.OperationName); - Assert.Equal(startTimeStamp, recordedSpans.StartTimestamp); - Assert.Equal(TimeSpan.FromSeconds(5), recordedSpans.Duration); - - Assert.Equal("bagTestValue", recordedSpans.Context.GetBaggageItem("baggageKey")); - Assert.Equal("testValue", recordedSpans.Tags["key"]); - - Assert.False(string.IsNullOrWhiteSpace(recordedSpans.Context.TraceId)); - Assert.False(string.IsNullOrWhiteSpace(recordedSpans.Context.SpanId)); - } - - [Fact] - public void TracerOptionsShouldLetYouOverrideTags() - { - var satelliteOptions = new SatelliteOptions("localhost", 80, true); - var overrideTags = new Dictionary {{LightStepConstants.ComponentNameKey, "test_component"}}; - var tracerOptions = new Options("TEST").WithSatellite(satelliteOptions).WithTags(overrideTags).WithAutomaticReporting(false); - - Assert.Equal("test_component", tracerOptions.Tags[LightStepConstants.ComponentNameKey]); - Assert.Equal(LightStepConstants.TracerPlatformValue, - tracerOptions.Tags[LightStepConstants.TracerPlatformKey]); - } - - [Fact] - public async void TracerShouldTrapExceptions() - { - var x = false; - Action eh = delegate { x = true; }; - var satelliteOptions = new SatelliteOptions("localhost", 80, true); - var tracerOptions = new Options().WithSatellite(satelliteOptions).WithExceptionHandler(eh.Invoke); - var recorder = new SimpleMockRecorder(); - var mockClient = new Mock(); - var mockTranslator = new Mock(); - mockTranslator.Setup(translator => translator.Translate(recorder)).Throws(); - - var tracer = new Tracer(tracerOptions, recorder, mockClient.Object); - - var span = tracer.BuildSpan("test").Start(); - span.Finish(); - - Assert.False(x); - await tracer.Flush(); - Assert.True(x); - } - } -} \ No newline at end of file diff --git a/test/LightStep.TracerPerf.Tests/LightStep.TracerPerf.Tests.csproj b/test/LightStep.TracerPerf.Tests/LightStep.TracerPerf.Tests.csproj new file mode 100644 index 0000000..0037afa --- /dev/null +++ b/test/LightStep.TracerPerf.Tests/LightStep.TracerPerf.Tests.csproj @@ -0,0 +1,29 @@ + + + + netcoreapp3.1 + false + LightStep.TracerPerf.Tests + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test/LightStep.TracerPerf.Tests/README.md b/test/LightStep.TracerPerf.Tests/README.md new file mode 100644 index 0000000..74402a1 --- /dev/null +++ b/test/LightStep.TracerPerf.Tests/README.md @@ -0,0 +1,4 @@ +# tracer-tests +For benchmarking tracers of distributed tracing that implements OpenTracing + +To collect data in terms of memory, network, and log usages, bring in tracer dependencies and run the NUnit tests. diff --git a/test/LightStep.TracerPerf.Tests/TracerLogTest.cs b/test/LightStep.TracerPerf.Tests/TracerLogTest.cs new file mode 100644 index 0000000..72a8daf --- /dev/null +++ b/test/LightStep.TracerPerf.Tests/TracerLogTest.cs @@ -0,0 +1,26 @@ +using NUnit.Framework; +using Serilog; + +namespace LightStep.TracerPerf.Tests +{ + public class TracerLogTest : TracerTestBase + { + [SetUp] + public void SetUp() + { + Log.Logger = new LoggerConfiguration() + .MinimumLevel.Verbose() + .WriteTo.Console() + .CreateLogger(); + + Log.Information("Log is setup!"); + } + + [Test] + public void TestExecute([Values("NoFinishNoDispose", "ExplicitFinish", "FinishOnDispose", "DisposeNoFinish")] + string tracingMethod) + { + Execute(TracingMethods[tracingMethod]); + } + } +} \ No newline at end of file diff --git a/test/LightStep.TracerPerf.Tests/TracerMemoryTest.cs b/test/LightStep.TracerPerf.Tests/TracerMemoryTest.cs new file mode 100644 index 0000000..4ae271e --- /dev/null +++ b/test/LightStep.TracerPerf.Tests/TracerMemoryTest.cs @@ -0,0 +1,60 @@ +using System; +using NUnit.Framework; + +namespace LightStep.TracerPerf.Tests +{ + [SingleThreaded] + public class TracerMemoryTest : TracerTestBase + { + [SetUp] + public void SetUp() + { + Iter = 100; + Chunk = 10000; + } + + [Test] + public void TestExecute_NoFinishNoDispose() + { + Console.WriteLine(nameof(NoFinishNoDispose)); + var heapInfo = Execute(NoFinishNoDispose); + foreach (var num in heapInfo) + { + Console.WriteLine(num); + } + } + + [Test] + public void TestExecute_ExplicitFinish() + { + Console.WriteLine(nameof(ExplicitFinish)); + var heapInfo = Execute(ExplicitFinish); + foreach (var num in heapInfo) + { + Console.WriteLine(num); + } + } + + [Test] + public void TestExecute_FinishOnDispose() + { + Console.WriteLine(nameof(FinishOnDispose)); + var heapInfo = Execute(FinishOnDispose); + foreach (var num in heapInfo) + { + Console.WriteLine(num); + } + } + + [Test] + public void TestExecute_DisposeNoFinish() + { + Console.WriteLine(nameof(DisposeNoFinish)); + var heapInfo = Execute(DisposeNoFinish); + foreach (var num in heapInfo) + { + Console.WriteLine(num); + } + } + } +} \ No newline at end of file diff --git a/test/LightStep.TracerPerf.Tests/TracerNetworkTest.cs b/test/LightStep.TracerPerf.Tests/TracerNetworkTest.cs new file mode 100644 index 0000000..6245269 --- /dev/null +++ b/test/LightStep.TracerPerf.Tests/TracerNetworkTest.cs @@ -0,0 +1,35 @@ +using System; +using System.Threading; +using NUnit.Framework; + +namespace LightStep.TracerPerf.Tests +{ + [SingleThreaded] + public class TracerNetworkTest : TracerTestBase + { + [SetUp] + public void SetUp() + { + Iter = 10000; + Chunk = 1000; + BufferSize = 2000; + ReportPeriod = .5; + } + + [Test, Order(1)] + public void TestExecute_Localhost() + { + Host = Environment.GetEnvironmentVariable("LS_HOST") ?? "localhost"; + Execute(ExplicitFinish); + Thread.Sleep(TimeSpan.FromSeconds(20)); + } + + [Test, Order(2)] + public void TestExecute_GarbageHost() + { + Host = "garbage"; + Execute(FinishOnDispose); + Thread.Sleep(TimeSpan.FromSeconds(10)); + } + } +} \ No newline at end of file diff --git a/test/LightStep.TracerPerf.Tests/TracerTestBase.cs b/test/LightStep.TracerPerf.Tests/TracerTestBase.cs new file mode 100644 index 0000000..5f7ec66 --- /dev/null +++ b/test/LightStep.TracerPerf.Tests/TracerTestBase.cs @@ -0,0 +1,97 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using LightStep; +using OpenTracing; + +namespace LightStep.TracerPerf.Tests +{ + public class TracerTestBase + { + protected string Host { get; set; } = Environment.GetEnvironmentVariable("LS_HOST") ?? "localhost" ; + protected int Port { get; set; } = 8360; + protected double ReportPeriod { get; set; } = .5; + protected int BufferSize { get; set; } = 200; + protected string Token { get; set; } = Environment.GetEnvironmentVariable("LS_KEY") ?? "developer"; + protected long Iter { get; set; } = 10; + protected long Chunk { get; set; } = 10; + protected Tracer Tracer; + + protected static readonly Action NoFinishNoDispose = t => t.BuildSpan("test").StartActive(false); + + protected static Action ExplicitFinish => t => + { + t.BuildSpan("test").StartActive(true); + t.ActiveSpan.Finish(); + }; + + protected static readonly Action FinishOnDispose = t => + { + var scope = t.BuildSpan("test").StartActive(true); + scope.Dispose(); + }; + + protected static readonly Action DisposeNoFinish = t => + { + var scope = t.BuildSpan("test").StartActive(false); + scope.Dispose(); + }; + + protected readonly Dictionary> TracingMethods = new Dictionary>() + { + { "NoFinishNoDispose", NoFinishNoDispose }, + { "ExplicitFinish", ExplicitFinish }, + { "FinishOnDispose", FinishOnDispose }, + { "DisposeNoFinish", DisposeNoFinish }, + }; + + private void Init() + { + var overrideTags = new Dictionary + { + { + LightStepConstants.ComponentNameKey, "ServiceName" + }, + }; + if (Environment.GetEnvironmentVariable("LS_PORT") != null) + { + Port = int.Parse(Environment.GetEnvironmentVariable("LS_PORT")); + } + + var usePlaintext = true; + if (Environment.GetEnvironmentVariable("LS_USE_PLAINTEXT") != null) + { + usePlaintext = false; + } + var satelliteOptions = new SatelliteOptions(Host, Port, usePlaintext); + Options options = new Options(Token) + .WithSatellite(satelliteOptions) + .WithTags(overrideTags) + .WithMaxBufferedSpans(BufferSize) + .WithReportPeriod(TimeSpan.FromSeconds(ReportPeriod)); + Tracer = new Tracer(options); + } + + protected List Execute(Action buildSpan) + { + Init(); + var heapInfo = new List(); + for (var i = 0; i < Iter; i++) + { + for (var j = 0; j < Chunk; j++) + { + buildSpan(Tracer); + } + + var gcMemoryInfo = GC.GetGCMemoryInfo(); + heapInfo.Add(gcMemoryInfo.HeapSizeBytes); + Console.WriteLine(gcMemoryInfo.HeapSizeBytes); + Tracer.Flush(); + } + + Tracer = null; + var min = Enumerable.Min(heapInfo); + return heapInfo.Select(e => e - min).ToList(); + } + } +} \ No newline at end of file From 84d203112efbaebe364b243e66a40d0dd285868c Mon Sep 17 00:00:00 2001 From: Austin Parker Date: Wed, 9 Dec 2020 19:28:17 -0500 Subject: [PATCH 3/9] Update LightStep.TracerPerf.Tests.csproj --- .../LightStep.TracerPerf.Tests.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/LightStep.TracerPerf.Tests/LightStep.TracerPerf.Tests.csproj b/test/LightStep.TracerPerf.Tests/LightStep.TracerPerf.Tests.csproj index 0037afa..990c214 100644 --- a/test/LightStep.TracerPerf.Tests/LightStep.TracerPerf.Tests.csproj +++ b/test/LightStep.TracerPerf.Tests/LightStep.TracerPerf.Tests.csproj @@ -1,7 +1,7 @@ - netcoreapp3.1 + netcoreapp2.1 false LightStep.TracerPerf.Tests From 5376b9f9d639b6d8a63df6483e7033e3ba98a991 Mon Sep 17 00:00:00 2001 From: Austin Parker Date: Wed, 9 Dec 2020 19:33:32 -0500 Subject: [PATCH 4/9] Update TracerTestBase.cs --- test/LightStep.TracerPerf.Tests/TracerTestBase.cs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/test/LightStep.TracerPerf.Tests/TracerTestBase.cs b/test/LightStep.TracerPerf.Tests/TracerTestBase.cs index 5f7ec66..eaa7508 100644 --- a/test/LightStep.TracerPerf.Tests/TracerTestBase.cs +++ b/test/LightStep.TracerPerf.Tests/TracerTestBase.cs @@ -82,10 +82,9 @@ protected List Execute(Action buildSpan) { buildSpan(Tracer); } - - var gcMemoryInfo = GC.GetGCMemoryInfo(); - heapInfo.Add(gcMemoryInfo.HeapSizeBytes); - Console.WriteLine(gcMemoryInfo.HeapSizeBytes); + var gcMemoryInfo = GC.GetTotalMemory(true); + heapInfo.Add(gcMemoryInfo); + Console.WriteLine(gcMemoryInfo); Tracer.Flush(); } From 1f0e7d53c28c90acb4ca517489890e70a4156145 Mon Sep 17 00:00:00 2001 From: Austin Parker Date: Wed, 9 Dec 2020 19:40:23 -0500 Subject: [PATCH 5/9] Update build.cake --- build.cake | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/build.cake b/build.cake index c08bad4..15b652f 100644 --- a/build.cake +++ b/build.cake @@ -65,7 +65,8 @@ Task("Test") .IsDependentOn("Build") .Does(() => { - var projects = GetFiles("./test/**/*.csproj"); + var unitProject = GetFiles("./test/LightStep.Tests/*.csproj"); + var perfProject = GetFiles("./test/LightStep.TracerPerf.Tests/*.csproj"); var coverletSettings = new CoverletSettings { CollectCoverage = true, CoverletOutputFormat = CoverletOutputFormat.opencover, @@ -73,12 +74,12 @@ Task("Test") CoverletOutputName = $"coverage.xml", ExcludeByFile = { "../../src/LightStep/Collector/Collector.cs", "../../src/LightStep/LightStep.cs" } }; - foreach(var project in projects) - { - DotNetCoreTest(project.FullPath, new DotNetCoreTestSettings { - Logger = "xunit;LogFilePath=../../build/test_results.xml" - }, coverletSettings); - } + DotNetCoreTest(unitProject.FullPath, new DotNetCoreTestSettings { + Logger = "xunit;LogFilePath=../../build/test_results.xml" + }, coverletSettings); + DotNetCoreTest(perfProject.FullPath, new DotNetCoreTestSettings { + Logger = "nunit;LogFilePath=../../build/perf_results.xml" + }); }); Task("Publish") From 5347891171a5ba006fee03560e8c0f674abd77bc Mon Sep 17 00:00:00 2001 From: Austin Parker Date: Wed, 9 Dec 2020 19:42:34 -0500 Subject: [PATCH 6/9] Update build.cake --- build.cake | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/build.cake b/build.cake index 15b652f..2f65443 100644 --- a/build.cake +++ b/build.cake @@ -65,8 +65,8 @@ Task("Test") .IsDependentOn("Build") .Does(() => { - var unitProject = GetFiles("./test/LightStep.Tests/*.csproj"); - var perfProject = GetFiles("./test/LightStep.TracerPerf.Tests/*.csproj"); + var unitProject = "./test/LightStep.Tests/LightStep.Tests.csproj"; + var perfProject = "./test/LightStep.TracerPerf.Tests/LightStep.TracerPerf.Tests.csproj"; var coverletSettings = new CoverletSettings { CollectCoverage = true, CoverletOutputFormat = CoverletOutputFormat.opencover, @@ -74,10 +74,10 @@ Task("Test") CoverletOutputName = $"coverage.xml", ExcludeByFile = { "../../src/LightStep/Collector/Collector.cs", "../../src/LightStep/LightStep.cs" } }; - DotNetCoreTest(unitProject.FullPath, new DotNetCoreTestSettings { + DotNetCoreTest(unitProject, new DotNetCoreTestSettings { Logger = "xunit;LogFilePath=../../build/test_results.xml" }, coverletSettings); - DotNetCoreTest(perfProject.FullPath, new DotNetCoreTestSettings { + DotNetCoreTest(perfProject, new DotNetCoreTestSettings { Logger = "nunit;LogFilePath=../../build/perf_results.xml" }); }); From 0c0d76c4021226124219a6f0d9c17200ac85bb74 Mon Sep 17 00:00:00 2001 From: Austin Parker Date: Wed, 9 Dec 2020 19:46:51 -0500 Subject: [PATCH 7/9] Update build.cake --- build.cake | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/build.cake b/build.cake index 2f65443..90726c3 100644 --- a/build.cake +++ b/build.cake @@ -1,4 +1,5 @@ #tool "xunit.runner.console" +#tool nuget:?package=NUnit.ConsoleRunner #addin nuget:?package=Cake.Coverlet var target = Argument("target", "Default"); @@ -77,9 +78,7 @@ Task("Test") DotNetCoreTest(unitProject, new DotNetCoreTestSettings { Logger = "xunit;LogFilePath=../../build/test_results.xml" }, coverletSettings); - DotNetCoreTest(perfProject, new DotNetCoreTestSettings { - Logger = "nunit;LogFilePath=../../build/perf_results.xml" - }); + DotNetCoreTest(perfProject); }); Task("Publish") From bca0caaf4174bc1833c01d6e516917f0136ee951 Mon Sep 17 00:00:00 2001 From: Austin Parker Date: Wed, 9 Dec 2020 20:00:49 -0500 Subject: [PATCH 8/9] ignore perf on CI --- build.cake | 3 --- .../LightStep.TracerPerf.Tests.csproj | 2 +- .../TracerNetworkTest.cs | 2 +- .../TracerTestBase.cs | 22 +++++-------------- 4 files changed, 8 insertions(+), 21 deletions(-) diff --git a/build.cake b/build.cake index 90726c3..3b34a9e 100644 --- a/build.cake +++ b/build.cake @@ -1,5 +1,4 @@ #tool "xunit.runner.console" -#tool nuget:?package=NUnit.ConsoleRunner #addin nuget:?package=Cake.Coverlet var target = Argument("target", "Default"); @@ -67,7 +66,6 @@ Task("Test") .Does(() => { var unitProject = "./test/LightStep.Tests/LightStep.Tests.csproj"; - var perfProject = "./test/LightStep.TracerPerf.Tests/LightStep.TracerPerf.Tests.csproj"; var coverletSettings = new CoverletSettings { CollectCoverage = true, CoverletOutputFormat = CoverletOutputFormat.opencover, @@ -78,7 +76,6 @@ Task("Test") DotNetCoreTest(unitProject, new DotNetCoreTestSettings { Logger = "xunit;LogFilePath=../../build/test_results.xml" }, coverletSettings); - DotNetCoreTest(perfProject); }); Task("Publish") diff --git a/test/LightStep.TracerPerf.Tests/LightStep.TracerPerf.Tests.csproj b/test/LightStep.TracerPerf.Tests/LightStep.TracerPerf.Tests.csproj index 990c214..0037afa 100644 --- a/test/LightStep.TracerPerf.Tests/LightStep.TracerPerf.Tests.csproj +++ b/test/LightStep.TracerPerf.Tests/LightStep.TracerPerf.Tests.csproj @@ -1,7 +1,7 @@ - netcoreapp2.1 + netcoreapp3.1 false LightStep.TracerPerf.Tests diff --git a/test/LightStep.TracerPerf.Tests/TracerNetworkTest.cs b/test/LightStep.TracerPerf.Tests/TracerNetworkTest.cs index 6245269..fbf0727 100644 --- a/test/LightStep.TracerPerf.Tests/TracerNetworkTest.cs +++ b/test/LightStep.TracerPerf.Tests/TracerNetworkTest.cs @@ -19,7 +19,7 @@ public void SetUp() [Test, Order(1)] public void TestExecute_Localhost() { - Host = Environment.GetEnvironmentVariable("LS_HOST") ?? "localhost"; + Host = "localhost"; Execute(ExplicitFinish); Thread.Sleep(TimeSpan.FromSeconds(20)); } diff --git a/test/LightStep.TracerPerf.Tests/TracerTestBase.cs b/test/LightStep.TracerPerf.Tests/TracerTestBase.cs index eaa7508..48385c8 100644 --- a/test/LightStep.TracerPerf.Tests/TracerTestBase.cs +++ b/test/LightStep.TracerPerf.Tests/TracerTestBase.cs @@ -8,11 +8,11 @@ namespace LightStep.TracerPerf.Tests { public class TracerTestBase { - protected string Host { get; set; } = Environment.GetEnvironmentVariable("LS_HOST") ?? "localhost" ; + protected string Host { get; set; } = "localhost" ; protected int Port { get; set; } = 8360; protected double ReportPeriod { get; set; } = .5; protected int BufferSize { get; set; } = 200; - protected string Token { get; set; } = Environment.GetEnvironmentVariable("LS_KEY") ?? "developer"; + protected string Token { get; set; } = "developer"; protected long Iter { get; set; } = 10; protected long Chunk { get; set; } = 10; protected Tracer Tracer; @@ -53,17 +53,7 @@ private void Init() LightStepConstants.ComponentNameKey, "ServiceName" }, }; - if (Environment.GetEnvironmentVariable("LS_PORT") != null) - { - Port = int.Parse(Environment.GetEnvironmentVariable("LS_PORT")); - } - - var usePlaintext = true; - if (Environment.GetEnvironmentVariable("LS_USE_PLAINTEXT") != null) - { - usePlaintext = false; - } - var satelliteOptions = new SatelliteOptions(Host, Port, usePlaintext); + var satelliteOptions = new SatelliteOptions(Host, Port, true); Options options = new Options(Token) .WithSatellite(satelliteOptions) .WithTags(overrideTags) @@ -82,9 +72,9 @@ protected List Execute(Action buildSpan) { buildSpan(Tracer); } - var gcMemoryInfo = GC.GetTotalMemory(true); - heapInfo.Add(gcMemoryInfo); - Console.WriteLine(gcMemoryInfo); + var gcMemoryInfo = GC.GetGCMemoryInfo(); + heapInfo.Add(gcMemoryInfo.HeapSizeBytes); + Console.WriteLine(gcMemoryInfo.HeapSizeBytes); Tracer.Flush(); } From f2fe3dbeac6c2b31964fd4702cc05ee8b8fe0ddb Mon Sep 17 00:00:00 2001 From: Austin Parker Date: Wed, 9 Dec 2020 20:06:11 -0500 Subject: [PATCH 9/9] Update build.cake --- build.cake | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/build.cake b/build.cake index 3b34a9e..e7c1018 100644 --- a/build.cake +++ b/build.cake @@ -8,6 +8,7 @@ var buildDir = Directory("./build"); var distDir = Directory("./dist"); var solution = "./LightStep.sln"; var library = "./src/LightStep/LightStep.csproj"; +var testLib = "./test/LightStep.Tests/LightStep.Tests.csproj"; var lightStepAssemblyInfoFile = "./src/LightStep/Properties/AssemblyInfo.cs"; var version = EnvironmentVariable("CIRCLE_TAG") ?? "v0.0.0"; version = version.TrimStart('v'); @@ -35,7 +36,8 @@ Task("Restore") .IsDependentOn("Clean") .Does( ()=> { - DotNetCoreRestore(solution); + DotNetCoreRestore(library); + DotNetCoreRestore(testLib); }); Task("Build")