From 962f24e379333fed3ffb66fdbed0a5eda2f46f5f Mon Sep 17 00:00:00 2001 From: scottf Date: Tue, 16 Aug 2022 17:14:37 -0400 Subject: [PATCH 1/8] removing time testing, it's unreliable when it happens so fast --- .../TestJetStreamManagement.cs | 39 ++++++++----------- src/Tests/UnitTests/TestBase.cs | 8 +--- 2 files changed, 18 insertions(+), 29 deletions(-) diff --git a/src/Tests/IntegrationTests/TestJetStreamManagement.cs b/src/Tests/IntegrationTests/TestJetStreamManagement.cs index 54e41ea0e..6d6e5c064 100644 --- a/src/Tests/IntegrationTests/TestJetStreamManagement.cs +++ b/src/Tests/IntegrationTests/TestJetStreamManagement.cs @@ -673,7 +673,6 @@ public void TestDeleteMessage() { MsgHeader h = new MsgHeader(); h.Add("foo", "bar"); - DateTime beforeCreated = DateTime.UtcNow; //MessageInfo.Time is in UTC js.Publish(new Msg(SUBJECT, null, h, DataBytes(1))); js.Publish(new Msg(SUBJECT, null)); @@ -683,7 +682,6 @@ public void TestDeleteMessage() { Assert.Equal(SUBJECT, mi.Subject); Assert.Equal(Data(1), Encoding.ASCII.GetString(mi.Data)); Assert.Equal(1U, mi.Sequence); - Assert.True(SameOrAfter(mi.Time, beforeCreated)); Assert.NotNull(mi.Headers); Assert.Equal("bar", mi.Headers["foo"]); @@ -691,7 +689,6 @@ public void TestDeleteMessage() { Assert.Equal(SUBJECT, mi.Subject); Assert.Null(mi.Data); Assert.Equal(2U, mi.Sequence); - Assert.True(SameOrAfter(mi.Time, beforeCreated)); Assert.Null(mi.Headers); Assert.True(jsm.DeleteMessage(STREAM, 1, false)); // added coverage for use of erase (no_erase) flag. @@ -786,7 +783,6 @@ public void TestGetMessage() .Build(); StreamInfo si = jsm.AddStream(sc); - DateTime beforeCreated = DateTime.UtcNow; js.Publish(Subject(1), Encoding.UTF8.GetBytes("s1-q1")); js.Publish(Subject(2), Encoding.UTF8.GetBytes("s2-q2")); js.Publish(Subject(1), Encoding.UTF8.GetBytes("s1-q3")); @@ -794,37 +790,37 @@ public void TestGetMessage() js.Publish(Subject(1), Encoding.UTF8.GetBytes("s1-q5")); js.Publish(Subject(2), Encoding.UTF8.GetBytes("s2-q6")); - ValidateGetMessage(jsm, si, false, beforeCreated); + ValidateGetMessage(jsm, si, false); sc = StreamConfiguration.Builder(si.Config).WithAllowDirect(true).Build(); si = jsm.UpdateStream(sc); - ValidateGetMessage(jsm, si, true, beforeCreated); + ValidateGetMessage(jsm, si, true); // error case stream doesn't exist Assert.Throws(() => jsm.GetMessage(Stream(999), 1)); }); } - private void ValidateGetMessage(IJetStreamManagement jsm, StreamInfo si, bool allowDirect, DateTime beforeCreated) { + private void ValidateGetMessage(IJetStreamManagement jsm, StreamInfo si, bool allowDirect) { Assert.Equal(allowDirect, si.Config.AllowDirect); - AssertMessageInfo(1, 1, jsm.GetMessage(STREAM, 1), beforeCreated); - AssertMessageInfo(1, 5, jsm.GetLastMessage(STREAM, Subject(1)), beforeCreated); - AssertMessageInfo(2, 6, jsm.GetLastMessage(STREAM, Subject(2)), beforeCreated); + AssertMessageInfo(1, 1, jsm.GetMessage(STREAM, 1)); + AssertMessageInfo(1, 5, jsm.GetLastMessage(STREAM, Subject(1))); + AssertMessageInfo(2, 6, jsm.GetLastMessage(STREAM, Subject(2))); - AssertMessageInfo(1, 1, jsm.GetNextMessage(STREAM, 0, Subject(1)), beforeCreated); - AssertMessageInfo(2, 2, jsm.GetNextMessage(STREAM, 0, Subject(2)), beforeCreated); - AssertMessageInfo(1, 1, jsm.GetFirstMessage(STREAM, Subject(1)), beforeCreated); - AssertMessageInfo(2, 2, jsm.GetFirstMessage(STREAM, Subject(2)), beforeCreated); + AssertMessageInfo(1, 1, jsm.GetNextMessage(STREAM, 0, Subject(1))); + AssertMessageInfo(2, 2, jsm.GetNextMessage(STREAM, 0, Subject(2))); + AssertMessageInfo(1, 1, jsm.GetFirstMessage(STREAM, Subject(1))); + AssertMessageInfo(2, 2, jsm.GetFirstMessage(STREAM, Subject(2))); - AssertMessageInfo(1, 1, jsm.GetNextMessage(STREAM, 1, Subject(1)), beforeCreated); - AssertMessageInfo(2, 2, jsm.GetNextMessage(STREAM, 1, Subject(2)), beforeCreated); + AssertMessageInfo(1, 1, jsm.GetNextMessage(STREAM, 1, Subject(1))); + AssertMessageInfo(2, 2, jsm.GetNextMessage(STREAM, 1, Subject(2))); - AssertMessageInfo(1, 3, jsm.GetNextMessage(STREAM, 2, Subject(1)), beforeCreated); - AssertMessageInfo(2, 2, jsm.GetNextMessage(STREAM, 2, Subject(2)), beforeCreated); + AssertMessageInfo(1, 3, jsm.GetNextMessage(STREAM, 2, Subject(1))); + AssertMessageInfo(2, 2, jsm.GetNextMessage(STREAM, 2, Subject(2))); - AssertMessageInfo(1, 5, jsm.GetNextMessage(STREAM, 5, Subject(1)), beforeCreated); - AssertMessageInfo(2, 6, jsm.GetNextMessage(STREAM, 5, Subject(2)), beforeCreated); + AssertMessageInfo(1, 5, jsm.GetNextMessage(STREAM, 5, Subject(1))); + AssertMessageInfo(2, 6, jsm.GetNextMessage(STREAM, 5, Subject(2))); AssertStatus(10003, Assert.Throws(() => jsm.GetMessage(STREAM, 0))); AssertStatus(10037, Assert.Throws(() => jsm.GetMessage(STREAM, 9))); @@ -838,11 +834,10 @@ private void AssertStatus(int apiErrorCode, NATSJetStreamException e) { Assert.Equal(apiErrorCode, e.ApiErrorCode); } - private void AssertMessageInfo(int subj, ulong seq, MessageInfo mi, DateTime beforeCreated) { + private void AssertMessageInfo(int subj, ulong seq, MessageInfo mi) { Assert.Equal(STREAM, mi.Stream); Assert.Equal(Subject(subj), mi.Subject); Assert.Equal(seq, mi.Sequence); - Assert.True(SameOrAfter(mi.Time, beforeCreated)); Assert.Equal("s" + subj + "-q" + seq, Encoding.UTF8.GetString(mi.Data)); } diff --git a/src/Tests/UnitTests/TestBase.cs b/src/Tests/UnitTests/TestBase.cs index d221204f2..6ed26a3d2 100644 --- a/src/Tests/UnitTests/TestBase.cs +++ b/src/Tests/UnitTests/TestBase.cs @@ -147,11 +147,5 @@ public static byte[] DataBytes() { public static byte[] DataBytes(int seq) { return Encoding.ASCII.GetBytes(Data(seq)); } - - public static bool Same(DateTime t1, DateTime t2) => t1.ToUniversalTime().CompareTo(t2.ToUniversalTime()) == 0; - public static bool Before(DateTime t1, DateTime t2) => t1.ToUniversalTime().CompareTo(t2.ToUniversalTime()) < 0; - public static bool After(DateTime t1, DateTime t2) => t1.ToUniversalTime().CompareTo(t2.ToUniversalTime()) > 0; - public static bool SameOrBefore(DateTime t1, DateTime t2) => t1.ToUniversalTime().CompareTo(t2.ToUniversalTime()) <= 0; - public static bool SameOrAfter(DateTime t1, DateTime t2) => t1.ToUniversalTime().CompareTo(t2.ToUniversalTime()) >= 0; - } + } } \ No newline at end of file From 0a9c19741eb10a15842ce1476f6d034cba785846 Mon Sep 17 00:00:00 2001 From: scottf Date: Wed, 17 Aug 2022 09:23:01 -0400 Subject: [PATCH 2/8] removing time comparisons as they seem problematic --- .../TestJetStreamManagement.cs | 45 ++++++------------- 1 file changed, 14 insertions(+), 31 deletions(-) diff --git a/src/Tests/IntegrationTests/TestJetStreamManagement.cs b/src/Tests/IntegrationTests/TestJetStreamManagement.cs index 6d6e5c064..3db013946 100644 --- a/src/Tests/IntegrationTests/TestJetStreamManagement.cs +++ b/src/Tests/IntegrationTests/TestJetStreamManagement.cs @@ -14,12 +14,10 @@ using System; using System.Collections.Generic; using System.Text; -using System.Threading; using NATS.Client; using NATS.Client.Internals; using NATS.Client.JetStream; using Xunit; -using Xunit.Abstractions; using static IntegrationTests.JetStreamTestBase; using static UnitTests.TestBase; @@ -27,22 +25,13 @@ namespace IntegrationTests { public class TestJetStreamManagement : TestSuite { - private readonly ITestOutputHelper output; - - public TestJetStreamManagement(ITestOutputHelper output, JetStreamManagementSuiteContext context) : - base(context) - { - this.output = output; - Console.SetOut(new ConsoleWriter(output)); - } + public TestJetStreamManagement(JetStreamManagementSuiteContext context) : base(context) {} [Fact] public void TestStreamCreate() { Context.RunInJsServer(c => { - DateTime utcNow = DateTime.UtcNow; - IJetStreamManagement jsm = c.CreateJetStreamManagementContext(); StreamConfiguration sc = StreamConfiguration.Builder() @@ -52,8 +41,6 @@ public void TestStreamCreate() .Build(); StreamInfo si = jsm.AddStream(sc); - Assert.True(utcNow <= si.Created.ToUniversalTime()); - Assert.NotNull(si.Config); sc = si.Config; Assert.Equal(STREAM, sc.Name); @@ -91,8 +78,6 @@ public void TestStreamCreate() public void TestStreamCreateWithNoSubject() { Context.RunInJsServer(c => { - DateTime utcNow = DateTime.UtcNow; - IJetStreamManagement jsm = c.CreateJetStreamManagementContext(); StreamConfiguration sc = StreamConfiguration.Builder() @@ -101,8 +86,6 @@ public void TestStreamCreateWithNoSubject() { .Build(); StreamInfo si = jsm.AddStream(sc); - Assert.True(utcNow <= si.Created.ToUniversalTime()); - sc = si.Config; Assert.Equal(STREAM, sc.Name); @@ -228,10 +211,10 @@ public void TestAddUpdateStreamInvalids() Assert.Throws(() => jsm.UpdateStream(scMaxCon)); // cannot change RetentionPolicy - StreamConfiguration scReten = GetTestStreamConfigurationBuilder() + StreamConfiguration scRetention = GetTestStreamConfigurationBuilder() .WithRetentionPolicy(RetentionPolicy.Interest) .Build(); - Assert.Throws(() => jsm.UpdateStream(scReten)); + Assert.Throws(() => jsm.UpdateStream(scRetention)); }); } @@ -524,12 +507,12 @@ private void AssertInvalidConsumerUpdate(IJetStreamManagement jsm, ConsumerConfi private void AssertValidAddOrUpdate(IJetStreamManagement jsm, ConsumerConfiguration cc) { ConsumerInfo ci = jsm.AddOrUpdateConsumer(STREAM, cc); - ConsumerConfiguration cicc = ci.ConsumerConfiguration; + ConsumerConfiguration ciCc = ci.ConsumerConfiguration; Assert.Equal(cc.Durable, ci.Name); - Assert.Equal(cc.Durable, cicc.Durable); - Assert.Equal(cc.DeliverSubject, cicc.DeliverSubject); - Assert.Equal(cc.MaxDeliver, cicc.MaxDeliver); - Assert.Equal(cc.DeliverPolicy, cicc.DeliverPolicy); + Assert.Equal(cc.Durable, ciCc.Durable); + Assert.Equal(cc.DeliverSubject, ciCc.DeliverSubject); + Assert.Equal(cc.MaxDeliver, ciCc.MaxDeliver); + Assert.Equal(cc.DeliverPolicy, ciCc.DeliverPolicy); IList consumers = jsm.GetConsumerNames(STREAM); Assert.Single(consumers); @@ -670,8 +653,7 @@ public void TestDeleteMessage() { CreateDefaultTestStream(c); IJetStream js = c.CreateJetStreamContext(); - MsgHeader h = new MsgHeader(); - h.Add("foo", "bar"); + MsgHeader h = new MsgHeader { { "foo", "bar" } }; js.Publish(new Msg(SUBJECT, null, h, DataBytes(1))); js.Publish(new Msg(SUBJECT, null)); @@ -782,6 +764,7 @@ public void TestGetMessage() .WithSubjects(Subject(1), Subject(2)) .Build(); StreamInfo si = jsm.AddStream(sc); + Assert.False(si.Config.AllowDirect); js.Publish(Subject(1), Encoding.UTF8.GetBytes("s1-q1")); js.Publish(Subject(2), Encoding.UTF8.GetBytes("s2-q2")); @@ -790,19 +773,19 @@ public void TestGetMessage() js.Publish(Subject(1), Encoding.UTF8.GetBytes("s1-q5")); js.Publish(Subject(2), Encoding.UTF8.GetBytes("s2-q6")); - ValidateGetMessage(jsm, si, false); + ValidateGetMessage(jsm); sc = StreamConfiguration.Builder(si.Config).WithAllowDirect(true).Build(); si = jsm.UpdateStream(sc); - ValidateGetMessage(jsm, si, true); + Assert.True(si.Config.AllowDirect); + ValidateGetMessage(jsm); // error case stream doesn't exist Assert.Throws(() => jsm.GetMessage(Stream(999), 1)); }); } - private void ValidateGetMessage(IJetStreamManagement jsm, StreamInfo si, bool allowDirect) { - Assert.Equal(allowDirect, si.Config.AllowDirect); + private void ValidateGetMessage(IJetStreamManagement jsm) { AssertMessageInfo(1, 1, jsm.GetMessage(STREAM, 1)); AssertMessageInfo(1, 5, jsm.GetLastMessage(STREAM, Subject(1))); From f6f4de0a6f246f02d5df571a0c5e20007d4973a8 Mon Sep 17 00:00:00 2001 From: scottf Date: Wed, 17 Aug 2022 09:23:54 -0400 Subject: [PATCH 3/8] removing time comparisons as they seem problematic --- src/Tests/UnitTests/TestBase.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Tests/UnitTests/TestBase.cs b/src/Tests/UnitTests/TestBase.cs index 6ed26a3d2..c286daf83 100644 --- a/src/Tests/UnitTests/TestBase.cs +++ b/src/Tests/UnitTests/TestBase.cs @@ -148,4 +148,4 @@ public static byte[] DataBytes(int seq) { return Encoding.ASCII.GetBytes(Data(seq)); } } -} \ No newline at end of file +} From b8ed0ff49e3bdd41e48eaf808f33cdc308bed3e1 Mon Sep 17 00:00:00 2001 From: scottf Date: Wed, 17 Aug 2022 10:32:31 -0400 Subject: [PATCH 4/8] reducing noise on tests --- src/Tests/IntegrationTests/TestBasic.cs | 24 ++++++++++----------- src/Tests/IntegrationTests/TestUtilities.cs | 14 ++++++++++++ 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/src/Tests/IntegrationTests/TestBasic.cs b/src/Tests/IntegrationTests/TestBasic.cs index 8c3e269cb..8c5f02d00 100644 --- a/src/Tests/IntegrationTests/TestBasic.cs +++ b/src/Tests/IntegrationTests/TestBasic.cs @@ -33,7 +33,7 @@ public TestBasic(DefaultSuiteContext context) : base(context) { } [Fact] public void TestConnectedServer() { - using (NATSServer.CreateFastAndVerify()) + using (NATSServer.CreateFastAndVerifyQuietHandlers()) { using (var c = Context.OpenConnection()) { @@ -54,7 +54,7 @@ public void TestConnectedServer() [Fact] public void TestMultipleClose() { - using (NATSServer.CreateFastAndVerify()) + using (NATSServer.CreateFastAndVerifyQuietHandlers()) { using (var c = Context.OpenConnection()) { @@ -73,7 +73,7 @@ public void TestMultipleClose() [Fact] public void TestSimplePublish() { - using (NATSServer.CreateFastAndVerify()) + using (NATSServer.CreateFastAndVerifyQuietHandlers()) { using (IConnection c = Context.OpenConnection()) { @@ -85,7 +85,7 @@ public void TestSimplePublish() [Fact] public void TestSimplePublishNoData() { - using (NATSServer.CreateFastAndVerify()) + using (NATSServer.CreateFastAndVerifyQuietHandlers()) { using (IConnection c = Context.OpenConnection()) { @@ -109,7 +109,7 @@ public void TestSimplePublishNoData() [Fact] public void TestPublishDataWithOffsets() { - using (NATSServer.CreateFastAndVerify()) + using (NATSServer.CreateFastAndVerifyQuietHandlers()) { using (IConnection c = Context.OpenConnection()) { @@ -153,13 +153,13 @@ private bool compare(byte[] p1, byte[] p2) return true; } - private bool compare(byte[] payload, Msg m) + private bool Compare(byte[] payload, Msg m) { return compare(payload, m.Data); } // Compares a subset of expected (offset to count) against all of actual - private bool compare(byte[] expected, int offset, byte[] actual, int count) + private static bool compare(byte[] expected, int offset, byte[] actual, int count) { // null case if (expected == actual) @@ -251,12 +251,12 @@ public void TestSyncSubscribe() c.Publish("foo", omsg); Msg m = s.NextMessage(1000); - Assert.True(compare(omsg, m), "Messages are not equal."); + Assert.True(Compare(omsg, m), "Messages are not equal."); c.Publish("foo", omsg, 0, omsg.Length); m = s.NextMessage(1000); - Assert.True(compare(omsg, m), "Messages are not equal."); + Assert.True(Compare(omsg, m), "Messages are not equal."); c.Publish("foo", omsg, 2, 3); m = s.NextMessage(1000); @@ -279,12 +279,12 @@ public void TestPubWithReply() c.Publish("foo", "reply", omsg); Msg m = s.NextMessage(1000); - Assert.True(compare(omsg, m), "Messages are not equal."); + Assert.True(Compare(omsg, m), "Messages are not equal."); c.Publish("foo", "reply", omsg, 0, omsg.Length); m = s.NextMessage(1000); - Assert.True(compare(omsg, m), "Messages are not equal."); + Assert.True(Compare(omsg, m), "Messages are not equal."); c.Publish("foo", "reply", omsg, 1, 5); m = s.NextMessage(1000); @@ -2096,7 +2096,7 @@ public void TestMessageHeaderNoServerSupport() c.Publish(m); } } - + } // class } // namespace diff --git a/src/Tests/IntegrationTests/TestUtilities.cs b/src/Tests/IntegrationTests/TestUtilities.cs index 8d05767d4..783198589 100644 --- a/src/Tests/IntegrationTests/TestUtilities.cs +++ b/src/Tests/IntegrationTests/TestUtilities.cs @@ -98,6 +98,20 @@ public static NATSServer CreateJetStreamFastAndVerify(int port, string args = nu public static NATSServer CreateFastAndVerify(string args = null) => CreateFastAndVerify(Defaults.Port, args); + public static NATSServer CreateFastAndVerifyQuietHandlers() + => CreateFastAndVerify(Defaults.Port, null, opts => + { + opts.ClosedEventHandler = (s, e) => { }; + opts.ServerDiscoveredEventHandler = (s, e) => { }; + opts.DisconnectedEventHandler = (s, e) => { }; + opts.ReconnectedEventHandler = (s, e) => { }; + opts.LameDuckModeEventHandler = (s, e) => { }; + opts.AsyncErrorEventHandler = (s, e) => { }; + opts.HeartbeatAlarmEventHandler = (s, e) => { }; + opts.UnhandledStatusEventHandler = (s, e) => { }; + opts.FlowControlProcessedEventHandler = (s, e) => { }; + }); + public static NATSServer CreateFastAndVerify(int port, string args = null, Action optionsModifier = null) { var server = new NATSServer(TimeSpan.Zero, port, args); From 11a277a35c4b47dbd4a78b25cccff9d031ff0792 Mon Sep 17 00:00:00 2001 From: scottf Date: Wed, 17 Aug 2022 10:40:41 -0400 Subject: [PATCH 5/8] splitting 3.1 and 4.6 builds into separate templates --- .../{stage-build.yml => stage-build-31.yml} | 34 +-------- az-templates/stage-build-46.yml | 76 +++++++++++++++++++ azure-pipelines-cd.yml | 3 +- azure-pipelines-ci.yml | 3 +- 4 files changed, 81 insertions(+), 35 deletions(-) rename az-templates/{stage-build.yml => stage-build-31.yml} (72%) create mode 100644 az-templates/stage-build-46.yml diff --git a/az-templates/stage-build.yml b/az-templates/stage-build-31.yml similarity index 72% rename from az-templates/stage-build.yml rename to az-templates/stage-build-31.yml index 683253b50..c94edb31f 100644 --- a/az-templates/stage-build.yml +++ b/az-templates/stage-build-31.yml @@ -2,7 +2,7 @@ stages: - stage: Build jobs: - job: BuildArtifacts - displayName: 'Builds, tests & produces artifacts' + displayName: 'Builds, tests & produces artifacts under .NetCoreApp3.1' timeoutInMinutes: 20 cancelTimeoutInMinutes: 5 steps: @@ -26,14 +26,6 @@ stages: configuration: $(BuildConfiguration) testRunTitle: 'UnitTests .NetCoreApp3.1' - - task: VSTest@2 - displayName: 'UnitTests .Net4.6' - inputs: - testSelector: 'testAssemblies' - testAssemblyVer2: 'src/Tests/UnitTests/bin/$(BuildConfiguration)/net46/UnitTests.dll' - configuration: $(BuildConfiguration) - testRunTitle: 'UnitTests .Net4.6' - - task: PowerShell@2 displayName: 'Install Dependencies' inputs: @@ -57,18 +49,6 @@ stages: rerunMaxAttempts: 2 testRunTitle: 'IntegrationTests .NetCoreApp3.1' - - task: VSTest@2 - displayName: 'IntegrationTests .Net4.6' - env: - GODEBUG: x509sha1=1 - inputs: - testSelector: 'testAssemblies' - testAssemblyVer2: 'src/Tests/IntegrationTests/bin/$(BuildConfiguration)/net46/IntegrationTests.dll' - configuration: $(BuildConfiguration) - rerunFailedTests: True - rerunMaxAttempts: 2 - testRunTitle: 'IntegrationTests .Net4.6' - - task: VSTest@2 displayName: 'IntegrationTests Internal .NetCoreApp3.1' env: @@ -81,18 +61,6 @@ stages: rerunMaxAttempts: 2 testRunTitle: 'IntegrationTests Internal .NetCoreApp3.1' - - task: VSTest@2 - displayName: 'IntegrationTests Internal .Net4.6' - env: - GODEBUG: x509sha1=1 - inputs: - testSelector: 'testAssemblies' - testAssemblyVer2: 'src/Tests/IntegrationTestsInternal/bin/$(BuildConfiguration)/net46/IntegrationTestsInternal.dll' - configuration: $(BuildConfiguration) - rerunFailedTests: True - rerunMaxAttempts: 2 - testRunTitle: 'IntegrationTests Internal .Net4.6' - - task: VSTest@2 displayName: 'IntegrationTests Using Nito AsyncEx .NetCoreApp3.1' inputs: diff --git a/az-templates/stage-build-46.yml b/az-templates/stage-build-46.yml new file mode 100644 index 000000000..a73d7f561 --- /dev/null +++ b/az-templates/stage-build-46.yml @@ -0,0 +1,76 @@ +stages: +- stage: Build + jobs: + - job: BuildArtifacts + displayName: 'Builds, tests & produces artifacts under .Net4.6' + timeoutInMinutes: 20 + cancelTimeoutInMinutes: 5 + steps: + - task: NugetToolInstaller@1 + - task: DotNetCoreCLI@2 + inputs: + command: restore + projects: 'src/*.sln' + - task: DotNetCoreCLI@2 + displayName: 'Build Solution' + inputs: + command: build + projects: 'src/*.sln' + arguments: '-c $(BuildConfiguration) --no-incremental --nologo -p:TreatWarningsAsErrors=true -p:Version=$(SemVer) -p:InformationalVersion=$(InfoVer)' + + - task: VSTest@2 + displayName: 'UnitTests .Net4.6' + inputs: + testSelector: 'testAssemblies' + testAssemblyVer2: 'src/Tests/UnitTests/bin/$(BuildConfiguration)/net46/UnitTests.dll' + configuration: $(BuildConfiguration) + testRunTitle: 'UnitTests .Net4.6' + + - task: PowerShell@2 + displayName: 'Install Dependencies' + inputs: + targetType: 'inline' + script: | + Write-Host "Cloning dependency repo." + git clone https://github.com/nats-io/nats.net.deps.git "$(Agent.TempDirectory)\deps" + $natsServerDir = "$(Agent.TempDirectory)\deps\nats-server" + Write-Host "Appending nats-server directory $natsServerDir to path." + Write-Host "##vso[task.setvariable variable=PATH;]${env:PATH};$natsServerDir" + + - task: VSTest@2 + displayName: 'IntegrationTests .Net4.6' + env: + GODEBUG: x509sha1=1 + inputs: + testSelector: 'testAssemblies' + testAssemblyVer2: 'src/Tests/IntegrationTests/bin/$(BuildConfiguration)/net46/IntegrationTests.dll' + configuration: $(BuildConfiguration) + rerunFailedTests: True + rerunMaxAttempts: 2 + testRunTitle: 'IntegrationTests .Net4.6' + + - task: VSTest@2 + displayName: 'IntegrationTests Internal .Net4.6' + env: + GODEBUG: x509sha1=1 + inputs: + testSelector: 'testAssemblies' + testAssemblyVer2: 'src/Tests/IntegrationTestsInternal/bin/$(BuildConfiguration)/net46/IntegrationTestsInternal.dll' + configuration: $(BuildConfiguration) + rerunFailedTests: True + rerunMaxAttempts: 2 + testRunTitle: 'IntegrationTests Internal .Net4.6' + + - task: DotNetCoreCLI@2 + displayName: 'Pack Nupkg' + inputs: + command: custom + custom: pack + projects: 'src/*.sln' + arguments: '-c $(BuildConfiguration) --no-build -o $(Build.ArtifactStagingDirectory) -p:Version=$(SemVer) -p:InformationalVersion=$(InfoVer)' + + - task: PublishPipelineArtifact@1 + displayName: 'Publish Artifacts' + inputs: + path: '$(Build.ArtifactStagingDirectory)' + artifact: Artifacts diff --git a/azure-pipelines-cd.yml b/azure-pipelines-cd.yml index 48ba26332..4d47cc694 100644 --- a/azure-pipelines-cd.yml +++ b/azure-pipelines-cd.yml @@ -18,5 +18,6 @@ pool: vmImage: windows-2019 stages: -- template: az-templates/stage-build.yml +- template: az-templates/stage-build-31.yml +- template: az-templates/stage-build-46.yml - template: az-templates/stage-deploy.yml diff --git a/azure-pipelines-ci.yml b/azure-pipelines-ci.yml index a18d6cada..d848e8837 100644 --- a/azure-pipelines-ci.yml +++ b/azure-pipelines-ci.yml @@ -21,4 +21,5 @@ pool: vmImage: windows-2019 stages: -- template: az-templates/stage-build.yml \ No newline at end of file +- template: az-templates/stage-build-31.yml +- template: az-templates/stage-build-46.yml From b52c42b4d7733b72268f54caa8991c5741dcbca9 Mon Sep 17 00:00:00 2001 From: scottf Date: Wed, 17 Aug 2022 11:22:18 -0400 Subject: [PATCH 6/8] unique stage names --- az-templates/stage-build-31.yml | 2 +- az-templates/stage-build-46.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/az-templates/stage-build-31.yml b/az-templates/stage-build-31.yml index c94edb31f..2a491fb83 100644 --- a/az-templates/stage-build-31.yml +++ b/az-templates/stage-build-31.yml @@ -1,5 +1,5 @@ stages: -- stage: Build +- stage: Build NetCoreApp 3.1 jobs: - job: BuildArtifacts displayName: 'Builds, tests & produces artifacts under .NetCoreApp3.1' diff --git a/az-templates/stage-build-46.yml b/az-templates/stage-build-46.yml index a73d7f561..1db78b2a1 100644 --- a/az-templates/stage-build-46.yml +++ b/az-templates/stage-build-46.yml @@ -1,5 +1,5 @@ stages: -- stage: Build +- stage: Build Net 4.6 jobs: - job: BuildArtifacts displayName: 'Builds, tests & produces artifacts under .Net4.6' From 0ad4ad09d6dc20df894656f9e5788cff1e94cf27 Mon Sep 17 00:00:00 2001 From: scottf Date: Wed, 17 Aug 2022 11:36:17 -0400 Subject: [PATCH 7/8] unique stage names 2 --- az-templates/stage-build-31.yml | 2 +- az-templates/stage-build-46.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/az-templates/stage-build-31.yml b/az-templates/stage-build-31.yml index 2a491fb83..9987b37d9 100644 --- a/az-templates/stage-build-31.yml +++ b/az-templates/stage-build-31.yml @@ -1,5 +1,5 @@ stages: -- stage: Build NetCoreApp 3.1 +- stage: Build_NetCoreApp_3_1 jobs: - job: BuildArtifacts displayName: 'Builds, tests & produces artifacts under .NetCoreApp3.1' diff --git a/az-templates/stage-build-46.yml b/az-templates/stage-build-46.yml index 1db78b2a1..7e6521e0e 100644 --- a/az-templates/stage-build-46.yml +++ b/az-templates/stage-build-46.yml @@ -1,5 +1,5 @@ stages: -- stage: Build Net 4.6 +- stage: Build_Net_4_6 jobs: - job: BuildArtifacts displayName: 'Builds, tests & produces artifacts under .Net4.6' From 95aa8f132817ea3777599c850f3898cdbf4d12b2 Mon Sep 17 00:00:00 2001 From: scottf Date: Wed, 17 Aug 2022 12:02:18 -0400 Subject: [PATCH 8/8] reverting to one stage --- az-templates/stage-build-46.yml | 76 ------------------- .../{stage-build-31.yml => stage-build.yml} | 36 ++++++++- azure-pipelines-cd.yml | 3 +- azure-pipelines-ci.yml | 3 +- 4 files changed, 36 insertions(+), 82 deletions(-) delete mode 100644 az-templates/stage-build-46.yml rename az-templates/{stage-build-31.yml => stage-build.yml} (72%) diff --git a/az-templates/stage-build-46.yml b/az-templates/stage-build-46.yml deleted file mode 100644 index 7e6521e0e..000000000 --- a/az-templates/stage-build-46.yml +++ /dev/null @@ -1,76 +0,0 @@ -stages: -- stage: Build_Net_4_6 - jobs: - - job: BuildArtifacts - displayName: 'Builds, tests & produces artifacts under .Net4.6' - timeoutInMinutes: 20 - cancelTimeoutInMinutes: 5 - steps: - - task: NugetToolInstaller@1 - - task: DotNetCoreCLI@2 - inputs: - command: restore - projects: 'src/*.sln' - - task: DotNetCoreCLI@2 - displayName: 'Build Solution' - inputs: - command: build - projects: 'src/*.sln' - arguments: '-c $(BuildConfiguration) --no-incremental --nologo -p:TreatWarningsAsErrors=true -p:Version=$(SemVer) -p:InformationalVersion=$(InfoVer)' - - - task: VSTest@2 - displayName: 'UnitTests .Net4.6' - inputs: - testSelector: 'testAssemblies' - testAssemblyVer2: 'src/Tests/UnitTests/bin/$(BuildConfiguration)/net46/UnitTests.dll' - configuration: $(BuildConfiguration) - testRunTitle: 'UnitTests .Net4.6' - - - task: PowerShell@2 - displayName: 'Install Dependencies' - inputs: - targetType: 'inline' - script: | - Write-Host "Cloning dependency repo." - git clone https://github.com/nats-io/nats.net.deps.git "$(Agent.TempDirectory)\deps" - $natsServerDir = "$(Agent.TempDirectory)\deps\nats-server" - Write-Host "Appending nats-server directory $natsServerDir to path." - Write-Host "##vso[task.setvariable variable=PATH;]${env:PATH};$natsServerDir" - - - task: VSTest@2 - displayName: 'IntegrationTests .Net4.6' - env: - GODEBUG: x509sha1=1 - inputs: - testSelector: 'testAssemblies' - testAssemblyVer2: 'src/Tests/IntegrationTests/bin/$(BuildConfiguration)/net46/IntegrationTests.dll' - configuration: $(BuildConfiguration) - rerunFailedTests: True - rerunMaxAttempts: 2 - testRunTitle: 'IntegrationTests .Net4.6' - - - task: VSTest@2 - displayName: 'IntegrationTests Internal .Net4.6' - env: - GODEBUG: x509sha1=1 - inputs: - testSelector: 'testAssemblies' - testAssemblyVer2: 'src/Tests/IntegrationTestsInternal/bin/$(BuildConfiguration)/net46/IntegrationTestsInternal.dll' - configuration: $(BuildConfiguration) - rerunFailedTests: True - rerunMaxAttempts: 2 - testRunTitle: 'IntegrationTests Internal .Net4.6' - - - task: DotNetCoreCLI@2 - displayName: 'Pack Nupkg' - inputs: - command: custom - custom: pack - projects: 'src/*.sln' - arguments: '-c $(BuildConfiguration) --no-build -o $(Build.ArtifactStagingDirectory) -p:Version=$(SemVer) -p:InformationalVersion=$(InfoVer)' - - - task: PublishPipelineArtifact@1 - displayName: 'Publish Artifacts' - inputs: - path: '$(Build.ArtifactStagingDirectory)' - artifact: Artifacts diff --git a/az-templates/stage-build-31.yml b/az-templates/stage-build.yml similarity index 72% rename from az-templates/stage-build-31.yml rename to az-templates/stage-build.yml index 9987b37d9..683253b50 100644 --- a/az-templates/stage-build-31.yml +++ b/az-templates/stage-build.yml @@ -1,8 +1,8 @@ stages: -- stage: Build_NetCoreApp_3_1 +- stage: Build jobs: - job: BuildArtifacts - displayName: 'Builds, tests & produces artifacts under .NetCoreApp3.1' + displayName: 'Builds, tests & produces artifacts' timeoutInMinutes: 20 cancelTimeoutInMinutes: 5 steps: @@ -26,6 +26,14 @@ stages: configuration: $(BuildConfiguration) testRunTitle: 'UnitTests .NetCoreApp3.1' + - task: VSTest@2 + displayName: 'UnitTests .Net4.6' + inputs: + testSelector: 'testAssemblies' + testAssemblyVer2: 'src/Tests/UnitTests/bin/$(BuildConfiguration)/net46/UnitTests.dll' + configuration: $(BuildConfiguration) + testRunTitle: 'UnitTests .Net4.6' + - task: PowerShell@2 displayName: 'Install Dependencies' inputs: @@ -49,6 +57,18 @@ stages: rerunMaxAttempts: 2 testRunTitle: 'IntegrationTests .NetCoreApp3.1' + - task: VSTest@2 + displayName: 'IntegrationTests .Net4.6' + env: + GODEBUG: x509sha1=1 + inputs: + testSelector: 'testAssemblies' + testAssemblyVer2: 'src/Tests/IntegrationTests/bin/$(BuildConfiguration)/net46/IntegrationTests.dll' + configuration: $(BuildConfiguration) + rerunFailedTests: True + rerunMaxAttempts: 2 + testRunTitle: 'IntegrationTests .Net4.6' + - task: VSTest@2 displayName: 'IntegrationTests Internal .NetCoreApp3.1' env: @@ -61,6 +81,18 @@ stages: rerunMaxAttempts: 2 testRunTitle: 'IntegrationTests Internal .NetCoreApp3.1' + - task: VSTest@2 + displayName: 'IntegrationTests Internal .Net4.6' + env: + GODEBUG: x509sha1=1 + inputs: + testSelector: 'testAssemblies' + testAssemblyVer2: 'src/Tests/IntegrationTestsInternal/bin/$(BuildConfiguration)/net46/IntegrationTestsInternal.dll' + configuration: $(BuildConfiguration) + rerunFailedTests: True + rerunMaxAttempts: 2 + testRunTitle: 'IntegrationTests Internal .Net4.6' + - task: VSTest@2 displayName: 'IntegrationTests Using Nito AsyncEx .NetCoreApp3.1' inputs: diff --git a/azure-pipelines-cd.yml b/azure-pipelines-cd.yml index 4d47cc694..48ba26332 100644 --- a/azure-pipelines-cd.yml +++ b/azure-pipelines-cd.yml @@ -18,6 +18,5 @@ pool: vmImage: windows-2019 stages: -- template: az-templates/stage-build-31.yml -- template: az-templates/stage-build-46.yml +- template: az-templates/stage-build.yml - template: az-templates/stage-deploy.yml diff --git a/azure-pipelines-ci.yml b/azure-pipelines-ci.yml index d848e8837..a18d6cada 100644 --- a/azure-pipelines-ci.yml +++ b/azure-pipelines-ci.yml @@ -21,5 +21,4 @@ pool: vmImage: windows-2019 stages: -- template: az-templates/stage-build-31.yml -- template: az-templates/stage-build-46.yml +- template: az-templates/stage-build.yml \ No newline at end of file