diff --git a/.circleci/config.yml b/.circleci/config.yml index 8508e948..a7a3928c 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -49,7 +49,7 @@ jobs: test: working_directory: /test docker: - - image: microsoft/dotnet:1.1.1-sdk + - image: microsoft/dotnet:2.1-sdk environment: DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 DOTNET_CLI_TELEMETRY_OUTPUT: 1 diff --git a/Analytics.Net35/Analytics.Net35.csproj b/Analytics.Net35/Analytics.Net35.csproj index 3cae6e08..197dadb9 100644 --- a/Analytics.Net35/Analytics.Net35.csproj +++ b/Analytics.Net35/Analytics.Net35.csproj @@ -32,5 +32,13 @@ + + + <_Parameter1>Test.Net35 + + + <_Parameter1>DynamicProxyGenAssembly2 + + diff --git a/Analytics.Net45/Analytics.Net45.csproj b/Analytics.Net45/Analytics.Net45.csproj index cf6b715f..3dfb6551 100644 --- a/Analytics.Net45/Analytics.Net45.csproj +++ b/Analytics.Net45/Analytics.Net45.csproj @@ -33,4 +33,12 @@ + + + <_Parameter1>Test.Net45 + + + <_Parameter1>DynamicProxyGenAssembly2 + + diff --git a/Analytics.NetStandard20/Analytics.NetStandard20.csproj b/Analytics.NetStandard20/Analytics.NetStandard20.csproj index 8ac0d235..9c9200ed 100644 --- a/Analytics.NetStandard20/Analytics.NetStandard20.csproj +++ b/Analytics.NetStandard20/Analytics.NetStandard20.csproj @@ -38,5 +38,8 @@ <_Parameter1>Test.NetStandard20 + + <_Parameter1>DynamicProxyGenAssembly2 + diff --git a/Analytics.Portable/Analytics.Portable.csproj b/Analytics.Portable/Analytics.Portable.csproj index 2f8d9a3d..14e3df34 100644 --- a/Analytics.Portable/Analytics.Portable.csproj +++ b/Analytics.Portable/Analytics.Portable.csproj @@ -36,6 +36,7 @@ + diff --git a/Analytics.Portable/_AssemblyConfiguration.cs b/Analytics.Portable/_AssemblyConfiguration.cs new file mode 100644 index 00000000..20f0077e --- /dev/null +++ b/Analytics.Portable/_AssemblyConfiguration.cs @@ -0,0 +1,7 @@ +using System.Runtime.CompilerServices; + +[assembly: InternalsVisibleTo("Test.UniversalApp")] +[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")] +namespace Analytics +{ +} diff --git a/Analytics/Analytics.cs b/Analytics/Analytics.cs index 484800ca..70e82353 100644 --- a/Analytics/Analytics.cs +++ b/Analytics/Analytics.cs @@ -1,7 +1,3 @@ -using System; -using System.Collections.Generic; -using System.Text; - namespace Segment { public class Analytics @@ -48,6 +44,17 @@ public static void Initialize(string writeKey, Config config) } } + internal static void Initialize(Client client) + { + lock (padlock) + { + if (Client == null) + { + Client = client; + } + } + } + /// /// Disposes of the current client and allows the creation of a new one /// diff --git a/Analytics/Analytics.csproj b/Analytics/Analytics.csproj index d39703ab..01afffc9 100644 --- a/Analytics/Analytics.csproj +++ b/Analytics/Analytics.csproj @@ -27,5 +27,13 @@ + + + <_Parameter1>Test + + + <_Parameter1>DynamicProxyGenAssembly2 + + diff --git a/Analytics/Client.cs b/Analytics/Client.cs index 9990df2d..05169e4b 100644 --- a/Analytics/Client.cs +++ b/Analytics/Client.cs @@ -42,17 +42,22 @@ public class Client : IDisposable /// /// /// - public Client(string writeKey, Config config) + public Client(string writeKey, Config config) : this(writeKey, config, null) { - if (String.IsNullOrEmpty(writeKey)) + if (string.IsNullOrEmpty(writeKey)) throw new InvalidOperationException("Please supply a valid writeKey to initialize."); + } + + internal Client(string writeKey, Config config, IRequestHandler requestHandler) + { + this.Statistics = new Statistics(); this._writeKey = writeKey; this._config = config; - IRequestHandler requestHandler = new BlockingRequestHandler(this, config.Timeout); + requestHandler = requestHandler ?? new BlockingRequestHandler(this, config.Timeout); IBatchFactory batchFactory = new SimpleBatchFactory(this._writeKey); if (config.Async) diff --git a/Test.Net35/ActionTests.cs b/Test.Net35/ActionTests.cs index 032cbb0e..3e4724ab 100644 --- a/Test.Net35/ActionTests.cs +++ b/Test.Net35/ActionTests.cs @@ -2,18 +2,32 @@ using NUnit.Framework; using System.Collections.Generic; using System.Threading.Tasks; +using Segment.Request; +using Moq; +using Segment.Model; namespace Segment.Test { [TestFixture()] public class ActionTests { + private Mock _mockRequestHandler; + [SetUp] public void Init() { + _mockRequestHandler = new Mock(); + _mockRequestHandler + .Setup(x => x.MakeRequest(It.IsAny())) + .Returns(async (Batch b) => + { + Analytics.Client.Statistics.Succeeded += b.batch.Count; + }); + Analytics.Dispose(); Logger.Handlers += LoggingHandler; - Analytics.Initialize(Constants.WRITE_KEY, new Config().SetAsync(false)); + var client = new Client(Constants.WRITE_KEY, new Config().SetAsync(false), _mockRequestHandler.Object); + Analytics.Initialize(client); } [Test ()] diff --git a/Test.Net35/ConnectionTests.cs b/Test.Net35/ConnectionTests.cs index e3bb26de..d90d0143 100644 --- a/Test.Net35/ConnectionTests.cs +++ b/Test.Net35/ConnectionTests.cs @@ -1,16 +1,29 @@ using System; using System.Collections.Generic; using System.Text; +using Moq; using NUnit.Framework; +using Segment.Model; +using Segment.Request; namespace Segment.Test { [TestFixture()] public class ConnectionTests { + private Mock _mockRequestHandler; + [SetUp] public void Init() { + _mockRequestHandler = new Mock(); + _mockRequestHandler + .Setup(x => x.MakeRequest(It.IsAny())) + .Returns(async (Batch b) => + { + Analytics.Client.Statistics.Succeeded += b.batch.Count; + }); + Analytics.Dispose(); Logger.Handlers += LoggingHandler; } @@ -19,7 +32,8 @@ public void Init() public void ProxyTestNet35() { // Set proxy address, like as "http://localhost:8888" - Analytics.Initialize(Constants.WRITE_KEY, new Config().SetAsync(false).SetProxy("")); + var client = new Client(Constants.WRITE_KEY, new Config().SetAsync(false).SetProxy(""), _mockRequestHandler.Object); + Analytics.Initialize(client); Actions.Identify(Analytics.Client); @@ -32,7 +46,8 @@ public void ProxyTestNet35() public void GZipTestNet35() { // Set GZip/Deflate on request header - Analytics.Initialize(Constants.WRITE_KEY, new Config().SetAsync(false).SetRequestCompression(true)); + var client = new Client(Constants.WRITE_KEY, new Config().SetAsync(false).SetRequestCompression(true), _mockRequestHandler.Object); + Analytics.Initialize(client); Actions.Identify(Analytics.Client); diff --git a/Test.Net35/FlushTests.cs b/Test.Net35/FlushTests.cs index f8aff1b4..4af7fef2 100644 --- a/Test.Net35/FlushTests.cs +++ b/Test.Net35/FlushTests.cs @@ -2,17 +2,29 @@ using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; +using Moq; using NUnit.Framework; using Segment.Model; +using Segment.Request; namespace Segment.Test { [TestFixture()] public class FlushTests { + private Mock _mockRequestHandler; + [SetUp] public void Init() { + _mockRequestHandler = new Mock(); + _mockRequestHandler + .Setup(x => x.MakeRequest(It.IsAny())) + .Returns(async (Batch b) => + { + Analytics.Client.Statistics.Succeeded += b.batch.Count; + }); + Analytics.Dispose(); Logger.Handlers += LoggingHandler; } @@ -20,7 +32,8 @@ public void Init() [Test()] public void SynchronousFlushTestNet35() { - Analytics.Initialize(Constants.WRITE_KEY, new Config().SetAsync(false)); + var client = new Client(Constants.WRITE_KEY, new Config().SetAsync(false), _mockRequestHandler.Object); + Analytics.Initialize(client); Analytics.Client.Succeeded += Client_Succeeded; Analytics.Client.Failed += Client_Failed; @@ -36,7 +49,8 @@ public void SynchronousFlushTestNet35() [Test()] public void AsynchronousFlushTestNet35() { - Analytics.Initialize(Constants.WRITE_KEY, new Config().SetAsync(true)); + var client = new Client(Constants.WRITE_KEY, new Config().SetAsync(true), _mockRequestHandler.Object); + Analytics.Initialize(client); Analytics.Client.Succeeded += Client_Succeeded; Analytics.Client.Failed += Client_Failed; @@ -55,7 +69,8 @@ public void AsynchronousFlushTestNet35() [Test()] public void PerformanceTestNet35() { - Analytics.Initialize(Constants.WRITE_KEY); + var client = new Client(Constants.WRITE_KEY, new Config(), _mockRequestHandler.Object); + Analytics.Initialize(client); Analytics.Client.Succeeded += Client_Succeeded; Analytics.Client.Failed += Client_Failed; diff --git a/Test.Net35/Test.Net35.csproj b/Test.Net35/Test.Net35.csproj index b3be5e21..a934f3bf 100644 --- a/Test.Net35/Test.Net35.csproj +++ b/Test.Net35/Test.Net35.csproj @@ -33,6 +33,12 @@ 4 + + ..\packages\AsyncBridge.Net35.0.2.0\lib\net35-Client\AsyncBridge.Net35.dll + + + ..\packages\Moq.4.2.1510.2205\lib\net35\Moq.dll + ../packages/NUnit.3.8.1/lib/net35/nunit.framework.dll diff --git a/Test.Net35/packages.config b/Test.Net35/packages.config index c4eb1eaa..b409435f 100644 --- a/Test.Net35/packages.config +++ b/Test.Net35/packages.config @@ -1,5 +1,7 @@  + + diff --git a/Test.Net45/ActionTests.cs b/Test.Net45/ActionTests.cs index 9d6c5a98..722cd3a8 100644 --- a/Test.Net45/ActionTests.cs +++ b/Test.Net45/ActionTests.cs @@ -2,18 +2,33 @@ using NUnit.Framework; using System.Collections.Generic; using System.Threading.Tasks; +using Segment.Request; +using Moq; +using Segment.Model; namespace Segment.Test { [TestFixture()] public class ActionTests { + private Mock _mockRequestHandler; + [SetUp] public void Init() { + _mockRequestHandler = new Mock(); + _mockRequestHandler + .Setup(x => x.MakeRequest(It.IsAny())) + .Returns((Batch b) => + { + Analytics.Client.Statistics.Succeeded += b.batch.Count; + return Task.FromResult(true); + }); + Analytics.Dispose(); Logger.Handlers += LoggingHandler; - Analytics.Initialize(Constants.WRITE_KEY, new Config().SetAsync(false)); + var client = new Client(Constants.WRITE_KEY, new Config().SetAsync(false), _mockRequestHandler.Object); + Analytics.Initialize(client); } [Test ()] diff --git a/Test.Net45/ConnectionTests.cs b/Test.Net45/ConnectionTests.cs index 181e7f01..fa260c81 100644 --- a/Test.Net45/ConnectionTests.cs +++ b/Test.Net45/ConnectionTests.cs @@ -1,16 +1,31 @@ -using System; +using System; using System.Collections.Generic; using System.Text; +using System.Threading.Tasks; +using Moq; using NUnit.Framework; +using Segment.Model; +using Segment.Request; namespace Segment.Test { [TestFixture()] public class ConnectionTests { + private Mock _mockRequestHandler; + [SetUp] public void Init() { + _mockRequestHandler = new Mock(); + _mockRequestHandler + .Setup(x => x.MakeRequest(It.IsAny())) + .Returns((Batch b) => + { + Analytics.Client.Statistics.Succeeded += b.batch.Count; + return Task.FromResult(true); + }); + Analytics.Dispose(); Logger.Handlers += LoggingHandler; } @@ -19,7 +34,8 @@ public void Init() public void ProxyTestNet45() { // Set proxy address, like as "http://localhost:8888" - Analytics.Initialize(Constants.WRITE_KEY, new Config().SetAsync(false).SetProxy("")); + var client = new Client(Constants.WRITE_KEY, new Config().SetAsync(false).SetProxy(""), _mockRequestHandler.Object); + Analytics.Initialize(client); Actions.Identify(Analytics.Client); @@ -32,7 +48,8 @@ public void ProxyTestNet45() public void GZipTestNet45() { // Set GZip/Deflate on request header - Analytics.Initialize(Constants.WRITE_KEY, new Config().SetAsync(false).SetRequestCompression(true)); + var client = new Client(Constants.WRITE_KEY, new Config().SetAsync(false).SetRequestCompression(true), _mockRequestHandler.Object); + Analytics.Initialize(client); Actions.Identify(Analytics.Client); diff --git a/Test.Net45/FlushTests.cs b/Test.Net45/FlushTests.cs index 18b7b3d5..2c5aa0a3 100644 --- a/Test.Net45/FlushTests.cs +++ b/Test.Net45/FlushTests.cs @@ -2,17 +2,30 @@ using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; +using Moq; using NUnit.Framework; using Segment.Model; +using Segment.Request; namespace Segment.Test { [TestFixture()] public class FlushTests { + private Mock _mockRequestHandler; + [SetUp] public void Init() { + _mockRequestHandler = new Mock(); + _mockRequestHandler + .Setup(x => x.MakeRequest(It.IsAny())) + .Returns((Batch b) => + { + Analytics.Client.Statistics.Succeeded += b.batch.Count; + return Task.FromResult(true); + }); + Analytics.Dispose(); Logger.Handlers += LoggingHandler; } @@ -20,7 +33,8 @@ public void Init() [Test()] public void SynchronousFlushTestNet45() { - Analytics.Initialize(Constants.WRITE_KEY, new Config().SetAsync(false)); + var client = new Client(Constants.WRITE_KEY, new Config().SetAsync(false), _mockRequestHandler.Object); + Analytics.Initialize(client); Analytics.Client.Succeeded += Client_Succeeded; Analytics.Client.Failed += Client_Failed; @@ -36,7 +50,8 @@ public void SynchronousFlushTestNet45() [Test()] public void AsynchronousFlushTestNet45() { - Analytics.Initialize(Constants.WRITE_KEY, new Config().SetAsync(true)); + var client = new Client(Constants.WRITE_KEY, new Config().SetAsync(true), _mockRequestHandler.Object); + Analytics.Initialize(client); Analytics.Client.Succeeded += Client_Succeeded; Analytics.Client.Failed += Client_Failed; @@ -55,7 +70,8 @@ public void AsynchronousFlushTestNet45() [Test()] public void PerformanceTestNet45() { - Analytics.Initialize(Constants.WRITE_KEY); + var client = new Client(Constants.WRITE_KEY, new Config(), _mockRequestHandler.Object); + Analytics.Initialize(client); Analytics.Client.Succeeded += Client_Succeeded; Analytics.Client.Failed += Client_Failed; diff --git a/Test.Net45/Test.Net45.csproj b/Test.Net45/Test.Net45.csproj index ef7c6c7b..580a23ff 100644 --- a/Test.Net45/Test.Net45.csproj +++ b/Test.Net45/Test.Net45.csproj @@ -36,14 +36,24 @@ false + + ..\packages\Castle.Core.4.4.0\lib\net45\Castle.Core.dll + + + ..\packages\Moq.4.13.1\lib\net45\Moq.dll + ..\packages\NUnit.3.8.1\lib\net45\nunit.framework.dll + - - ../packages/TaskParallelLibrary.1.0.2856.0/lib/Net35/System.Threading.dll + + ..\packages\System.Runtime.CompilerServices.Unsafe.4.5.0\lib\netstandard1.0\System.Runtime.CompilerServices.Unsafe.dll + + + ..\packages\System.Threading.Tasks.Extensions.4.5.1\lib\portable-net45+win8+wp8+wpa81\System.Threading.Tasks.Extensions.dll diff --git a/Test.Net45/packages.config b/Test.Net45/packages.config index 4e30b548..0c35f545 100644 --- a/Test.Net45/packages.config +++ b/Test.Net45/packages.config @@ -1,5 +1,7 @@  + + @@ -8,5 +10,6 @@ - + + \ No newline at end of file diff --git a/Test.NetStandard20/ActionTests.cs b/Test.NetStandard20/ActionTests.cs index bdbb2255..86fe7927 100644 --- a/Test.NetStandard20/ActionTests.cs +++ b/Test.NetStandard20/ActionTests.cs @@ -1,6 +1,9 @@ using System; using NUnit.Framework; using System.Collections.Generic; +using Moq; +using Segment.Request; +using Segment.Model; using System.Threading.Tasks; namespace Segment.Test @@ -8,13 +11,24 @@ namespace Segment.Test [TestFixture()] public class ActionTests { + private Mock _mockRequestHandler; [SetUp] public void Init() { + _mockRequestHandler = new Mock(); + _mockRequestHandler + .Setup(x => x.MakeRequest(It.IsAny())) + .Returns((Batch b) => + { + Analytics.Client.Statistics.Succeeded += b.batch.Count; + return Task.CompletedTask; + }); + Analytics.Dispose(); Logger.Handlers += LoggingHandler; - Analytics.Initialize(Constants.WRITE_KEY, new Config().SetAsync(false)); + var client = new Client(Constants.WRITE_KEY, new Config().SetAsync(false), _mockRequestHandler.Object); + Analytics.Initialize(client); } [Test ()] diff --git a/Test.NetStandard20/ConnectionTests.cs b/Test.NetStandard20/ConnectionTests.cs index 15a82867..786e70bb 100644 --- a/Test.NetStandard20/ConnectionTests.cs +++ b/Test.NetStandard20/ConnectionTests.cs @@ -1,16 +1,31 @@ using System; using System.Collections.Generic; using System.Text; +using System.Threading.Tasks; +using Moq; using NUnit.Framework; +using Segment.Model; +using Segment.Request; namespace Segment.Test { [TestFixture()] public class ConnectionTests { + private Mock _mockRequestHandler; + [SetUp] public void Init() { + _mockRequestHandler = new Mock(); + _mockRequestHandler + .Setup(x => x.MakeRequest(It.IsAny())) + .Returns((Batch b) => + { + Analytics.Client.Statistics.Succeeded += b.batch.Count; + return Task.CompletedTask; + }); + Analytics.Dispose(); Logger.Handlers += LoggingHandler; } @@ -19,7 +34,8 @@ public void Init() public void ProxyTestNetStanard20() { // Set proxy address, like as "http://localhost:8888" - Analytics.Initialize(Constants.WRITE_KEY, new Config().SetAsync(false).SetProxy("")); + var client = new Client(Constants.WRITE_KEY, new Config().SetAsync(false).SetProxy(""), _mockRequestHandler.Object); + Analytics.Initialize(client); Actions.Identify(Analytics.Client); @@ -32,7 +48,8 @@ public void ProxyTestNetStanard20() public void GZipTestNetStanard20() { // Set proxy address, like as "http://localhost:8888" - Analytics.Initialize(Constants.WRITE_KEY, new Config().SetAsync(false).SetRequestCompression(true)); + var client = new Client(Constants.WRITE_KEY, new Config().SetAsync(false).SetRequestCompression(true), _mockRequestHandler.Object); + Analytics.Initialize(client); Actions.Identify(Analytics.Client); diff --git a/Test.NetStandard20/FlushTests.cs b/Test.NetStandard20/FlushTests.cs index 8370c265..b386419c 100644 --- a/Test.NetStandard20/FlushTests.cs +++ b/Test.NetStandard20/FlushTests.cs @@ -2,17 +2,30 @@ using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; +using Moq; using NUnit.Framework; using Segment.Model; +using Segment.Request; namespace Segment.Test { [TestFixture()] public class FlushTests { + private Mock _mockRequestHandler; + [SetUp] public void Init() { + _mockRequestHandler = new Mock(); + _mockRequestHandler + .Setup(x => x.MakeRequest(It.IsAny())) + .Returns((Batch b) => + { + Analytics.Client.Statistics.Succeeded += b.batch.Count; + return Task.CompletedTask; + }); + Analytics.Dispose(); Logger.Handlers += LoggingHandler; } @@ -20,7 +33,8 @@ public void Init() [Test()] public void SynchronousFlushTestNetStanard20() { - Analytics.Initialize(Constants.WRITE_KEY, new Config().SetAsync(false)); + var client = new Client(Constants.WRITE_KEY, new Config().SetAsync(false), _mockRequestHandler.Object); + Analytics.Initialize(client); Analytics.Client.Succeeded += Client_Succeeded; Analytics.Client.Failed += Client_Failed; @@ -36,7 +50,8 @@ public void SynchronousFlushTestNetStanard20() [Test()] public void AsynchronousFlushTestNetStanard20() { - Analytics.Initialize(Constants.WRITE_KEY, new Config().SetAsync(true)); + var client = new Client(Constants.WRITE_KEY, new Config().SetAsync(true), _mockRequestHandler.Object); + Analytics.Initialize(client); Analytics.Client.Succeeded += Client_Succeeded; Analytics.Client.Failed += Client_Failed; @@ -55,7 +70,8 @@ public void AsynchronousFlushTestNetStanard20() [Test()] public async Task PerformanceTestNetStanard20() { - Analytics.Initialize(Constants.WRITE_KEY); + var client = new Client(Constants.WRITE_KEY, new Config(), _mockRequestHandler.Object); + Analytics.Initialize(client); Analytics.Client.Succeeded += Client_Succeeded; Analytics.Client.Failed += Client_Failed; diff --git a/Test.NetStandard20/Request/BlockingRequestHandlerTest.cs b/Test.NetStandard20/Request/BlockingRequestHandlerTest.cs index 871a28e9..cc819f12 100644 --- a/Test.NetStandard20/Request/BlockingRequestHandlerTest.cs +++ b/Test.NetStandard20/Request/BlockingRequestHandlerTest.cs @@ -13,7 +13,7 @@ using System.Threading; using System.Threading.Tasks; -namespace Test.NetStandard20.Request +namespace Segment.Test.Request { [TestFixture()] diff --git a/Test.UniversalApp/ActionTests.cs b/Test.UniversalApp/ActionTests.cs index a7eb045f..aebf6d41 100644 --- a/Test.UniversalApp/ActionTests.cs +++ b/Test.UniversalApp/ActionTests.cs @@ -3,18 +3,33 @@ using System.Diagnostics; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; +using Moq; +using Segment.Model; +using Segment.Request; namespace Segment.Test { [TestClass] public class ActionTests { + private Mock _mockRequestHandler; + [TestInitialize] public void Init() { + _mockRequestHandler = new Mock(); + _mockRequestHandler + .Setup(x => x.MakeRequest(It.IsAny())) + .Returns((Batch b) => + { + Analytics.Client.Statistics.Succeeded += b.batch.Count; + return Task.CompletedTask; + }); + Analytics.Dispose(); Logger.Handlers += LoggingHandler; - Analytics.Initialize(Constants.WRITE_KEY, new Config().SetAsync(false)); + var client = new Client(Constants.WRITE_KEY, new Config().SetAsync(false), _mockRequestHandler.Object); + Analytics.Initialize(client); } [TestMethod] diff --git a/Test.UniversalApp/ConnectionTests.cs b/Test.UniversalApp/ConnectionTests.cs index df194dc7..e839c76c 100644 --- a/Test.UniversalApp/ConnectionTests.cs +++ b/Test.UniversalApp/ConnectionTests.cs @@ -3,15 +3,30 @@ using System.Text; using System.Diagnostics; using Microsoft.VisualStudio.TestTools.UnitTesting; +using Moq; +using Segment.Request; +using Segment.Model; +using System.Threading.Tasks; namespace Segment.Test { [TestClass] public class ConnectionTests { + private Mock _mockRequestHandler; + [TestInitialize] public void Init() { + _mockRequestHandler = new Mock(); + _mockRequestHandler + .Setup(x => x.MakeRequest(It.IsAny())) + .Returns((Batch b) => + { + Analytics.Client.Statistics.Succeeded += b.batch.Count; + return Task.CompletedTask; + }); + Analytics.Dispose(); Logger.Handlers += LoggingHandler; } @@ -20,7 +35,8 @@ public void Init() public void ProxyTestNetPortable() { // Set proxy address, like as "http://localhost:8888" - Analytics.Initialize(Constants.WRITE_KEY, new Config().SetAsync(false).SetProxy("")); + var client = new Client(Constants.WRITE_KEY, new Config().SetAsync(false).SetProxy(""), _mockRequestHandler.Object); + Analytics.Initialize(client); Actions.Identify(Analytics.Client); @@ -33,7 +49,8 @@ public void ProxyTestNetPortable() public void GZipTestNetPortable() { // Set proxy address, like as "http://localhost:8888" - Analytics.Initialize(Constants.WRITE_KEY, new Config().SetAsync(false).SetRequestCompression(true)); + var client = new Client(Constants.WRITE_KEY, new Config().SetAsync(false).SetRequestCompression(true), _mockRequestHandler.Object); + Analytics.Initialize(client); Actions.Identify(Analytics.Client); diff --git a/Test.UniversalApp/FlushTests.cs b/Test.UniversalApp/FlushTests.cs index 7ca30611..65f34c07 100644 --- a/Test.UniversalApp/FlushTests.cs +++ b/Test.UniversalApp/FlushTests.cs @@ -5,15 +5,27 @@ using Segment.Model; using Microsoft.VisualStudio.TestTools.UnitTesting; using System.Diagnostics; +using Moq; +using Segment.Request; namespace Segment.Test { [TestClass] public class FlushTests { + private Mock _mockRequestHandler; + [TestInitialize] public void Init() { + _mockRequestHandler = new Mock(); + _mockRequestHandler + .Setup(x => x.MakeRequest(It.IsAny())) + .Returns((Batch b) => + { + Analytics.Client.Statistics.Succeeded += b.batch.Count; + return Task.CompletedTask; + }); Analytics.Dispose(); Logger.Handlers += LoggingHandler; } @@ -21,7 +33,8 @@ public void Init() [TestMethod] public void SynchronousFlushTestNetPortable() { - Analytics.Initialize(Constants.WRITE_KEY, new Config().SetAsync(false)); + var client = new Client(Constants.WRITE_KEY, new Config().SetAsync(false), _mockRequestHandler.Object); + Analytics.Initialize(client); Analytics.Client.Succeeded += Client_Succeeded; Analytics.Client.Failed += Client_Failed; @@ -37,7 +50,8 @@ public void SynchronousFlushTestNetPortable() [TestMethod] public void AsynchronousFlushTestNetPortable() { - Analytics.Initialize(Constants.WRITE_KEY, new Config().SetAsync(true)); + var client = new Client(Constants.WRITE_KEY, new Config().SetAsync(true), _mockRequestHandler.Object); + Analytics.Initialize(client); Analytics.Client.Succeeded += Client_Succeeded; Analytics.Client.Failed += Client_Failed; @@ -56,7 +70,8 @@ public void AsynchronousFlushTestNetPortable() [TestMethod] public async Task PerformanceTestNetPortable() { - Analytics.Initialize(Constants.WRITE_KEY); + var client = new Client(Constants.WRITE_KEY, new Config(), _mockRequestHandler.Object); + Analytics.Initialize(client); Analytics.Client.Succeeded += Client_Succeeded; Analytics.Client.Failed += Client_Failed; diff --git a/Test.UniversalApp/Test.UniversalApp.csproj b/Test.UniversalApp/Test.UniversalApp.csproj index 80ef4faf..a0324304 100644 --- a/Test.UniversalApp/Test.UniversalApp.csproj +++ b/Test.UniversalApp/Test.UniversalApp.csproj @@ -11,8 +11,8 @@ Test.UniversalApp en-US UAP - 10.0.15063.0 - 10.0.10586.0 + 10.0.18362.0 + 10.0.18362.0 14 512 {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} @@ -132,6 +132,9 @@ 6.0.1 + + 4.13.1 + 1.1.18 diff --git a/Test/ActionTests.cs b/Test/ActionTests.cs index f25f19be..fbde3827 100644 --- a/Test/ActionTests.cs +++ b/Test/ActionTests.cs @@ -1,20 +1,31 @@ using System; using NUnit.Framework; using System.Collections.Generic; -using System.Threading.Tasks; +using Segment.Request; +using Moq; +using Segment.Model; namespace Segment.Test { [TestFixture()] public class ActionTests { + private Mock _mockRequestHandler; [SetUp] public void Init() { + _mockRequestHandler = new Mock(); + _mockRequestHandler + .Setup(x => x.MakeRequest(It.IsAny())) + .Returns(async (Batch b) => + { + Analytics.Client.Statistics.Succeeded += b.batch.Count; + }); + Analytics.Dispose(); - Logger.Handlers += LoggingHandler; - Analytics.Initialize(Constants.WRITE_KEY, new Config().SetAsync(false)); + var client = new Client(Constants.WRITE_KEY, new Config().SetAsync(false), _mockRequestHandler.Object); + Analytics.Initialize(client); } [Test ()] diff --git a/Test/ConnectionTests.cs b/Test/ConnectionTests.cs index 837b2579..e12ec2f5 100644 --- a/Test/ConnectionTests.cs +++ b/Test/ConnectionTests.cs @@ -1,16 +1,31 @@ -using System; +using System; using System.Collections.Generic; using System.Text; +using System.Threading.Tasks; +using Moq; using NUnit.Framework; +using Segment.Model; +using Segment.Request; namespace Segment.Test { [TestFixture()] public class ConnectionTests { + private Mock _mockRequestHandler; + [SetUp] public void Init() { + _mockRequestHandler = new Mock(); + _mockRequestHandler + .Setup(x => x.MakeRequest(It.IsAny())) + .Returns((Batch b) => + { + Analytics.Client.Statistics.Succeeded += b.batch.Count; + return Task.CompletedTask; + }); + Analytics.Dispose(); Logger.Handlers += LoggingHandler; } @@ -19,7 +34,8 @@ public void Init() public void ProxyTest() { // Set proxy address, like as "http://localhost:8888" - Analytics.Initialize(Constants.WRITE_KEY, new Config().SetAsync(false).SetProxy("")); + var client = new Client(Constants.WRITE_KEY, new Config().SetAsync(false).SetProxy(""), _mockRequestHandler.Object); + Analytics.Initialize(client); Actions.Identify(Analytics.Client); @@ -32,7 +48,8 @@ public void ProxyTest() public void GZipTest() { // Set GZip/Deflate on request header - Analytics.Initialize(Constants.WRITE_KEY, new Config().SetAsync(false).SetRequestCompression(true)); + var client = new Client(Constants.WRITE_KEY, new Config().SetAsync(false).SetRequestCompression(true), _mockRequestHandler.Object); + Analytics.Initialize(client); Actions.Identify(Analytics.Client); diff --git a/Test/FlushTests.cs b/Test/FlushTests.cs index ea4e4c96..de6d50ec 100644 --- a/Test/FlushTests.cs +++ b/Test/FlushTests.cs @@ -2,17 +2,30 @@ using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; +using Moq; using NUnit.Framework; using Segment.Model; +using Segment.Request; namespace Segment.Test { [TestFixture()] public class FlushTests { + private Mock _mockRequestHandler; + [SetUp] public void Init() { + _mockRequestHandler = new Mock(); + _mockRequestHandler + .Setup(x => x.MakeRequest(It.IsAny())) + .Returns((Batch b) => + { + Analytics.Client.Statistics.Succeeded += b.batch.Count; + return Task.CompletedTask; + }); + Analytics.Dispose(); Logger.Handlers += LoggingHandler; } @@ -20,7 +33,8 @@ public void Init() [Test()] public void SynchronousFlushTest() { - Analytics.Initialize(Constants.WRITE_KEY, new Config().SetAsync(false)); + var client = new Client(Constants.WRITE_KEY, new Config().SetAsync(false), _mockRequestHandler.Object); + Analytics.Initialize(client); Analytics.Client.Succeeded += Client_Succeeded; Analytics.Client.Failed += Client_Failed; @@ -36,7 +50,8 @@ public void SynchronousFlushTest() [Test()] public void AsynchronousFlushTest() { - Analytics.Initialize(Constants.WRITE_KEY, new Config().SetAsync(true)); + var client = new Client(Constants.WRITE_KEY, new Config().SetAsync(true), _mockRequestHandler.Object); + Analytics.Initialize(client); Analytics.Client.Succeeded += Client_Succeeded; Analytics.Client.Failed += Client_Failed; @@ -55,7 +70,8 @@ public void AsynchronousFlushTest() [Test()] public async Task PerformanceTest() { - Analytics.Initialize(Constants.WRITE_KEY); + var client = new Client(Constants.WRITE_KEY, new Config(), _mockRequestHandler.Object); + Analytics.Initialize(client); Analytics.Client.Succeeded += Client_Succeeded; Analytics.Client.Failed += Client_Failed; diff --git a/Test/Test.csproj b/Test/Test.csproj index 25339895..36485644 100644 --- a/Test/Test.csproj +++ b/Test/Test.csproj @@ -1,7 +1,7 @@  - netcoreapp1.1 + netcoreapp2.1 Library @@ -9,6 +9,7 @@ +