From 1aa747c994fee351b7c24aa47761d450221d1e27 Mon Sep 17 00:00:00 2001 From: Harry Cordewener Date: Tue, 29 Oct 2024 16:23:25 -0500 Subject: [PATCH 1/8] Use Testcontainers for easier to run tests. --- Core.Arango.Tests/AnalyzerViewTest.cs | 5 +++ Core.Arango.Tests/CamelCaseTest.cs | 5 +++ Core.Arango.Tests/CollectionTest.cs | 1 + Core.Arango.Tests/Core.Arango.Tests.csproj | 11 ++--- Core.Arango.Tests/Core/TestBase.cs | 41 +++++++++++-------- Core.Arango.Tests/DatabaseTest.cs | 1 + Core.Arango.Tests/DependencyInjectionTest.cs | 5 +++ Core.Arango.Tests/DocumentTest.cs | 5 +++ Core.Arango.Tests/FoxxTest.cs | 5 +++ Core.Arango.Tests/FunctionTest.cs | 5 +++ Core.Arango.Tests/GraphTest.cs | 5 +++ Core.Arango.Tests/IndexTest.cs | 5 +++ Core.Arango.Tests/LinqTest.cs | 21 +++++++--- Core.Arango.Tests/LinqTest_BasicOperations.cs | 6 +++ Core.Arango.Tests/LinqTest_String.cs | 5 +-- Core.Arango.Tests/QueryFormattingTest.cs | 5 +++ Core.Arango.Tests/QueryStatisticTest.cs | 2 + Core.Arango.Tests/QueryTest.cs | 1 + Core.Arango.Tests/Serializer.cs | 2 - Core.Arango.Tests/TransactionTest.cs | 5 +++ Core.Arango/Core.Arango.csproj | 12 +++--- 21 files changed, 115 insertions(+), 38 deletions(-) diff --git a/Core.Arango.Tests/AnalyzerViewTest.cs b/Core.Arango.Tests/AnalyzerViewTest.cs index 0cd53040fc..4dcd8e31f2 100644 --- a/Core.Arango.Tests/AnalyzerViewTest.cs +++ b/Core.Arango.Tests/AnalyzerViewTest.cs @@ -8,6 +8,11 @@ namespace Core.Arango.Tests { public class AnalyzerViewTest : TestBase { + public AnalyzerViewTest() + { + InitializeAsync().ConfigureAwait(false).GetAwaiter().GetResult(); + } + [Theory] [ClassData(typeof(PascalCaseData))] public async Task AnalyzersViews(string serializer) diff --git a/Core.Arango.Tests/CamelCaseTest.cs b/Core.Arango.Tests/CamelCaseTest.cs index 84d46470ca..531cdfe5b9 100644 --- a/Core.Arango.Tests/CamelCaseTest.cs +++ b/Core.Arango.Tests/CamelCaseTest.cs @@ -8,6 +8,11 @@ namespace Core.Arango.Tests { public class CamelCaseTest : TestBase { + public CamelCaseTest() + { + InitializeAsync().ConfigureAwait(false).GetAwaiter().GetResult(); + } + [Theory] [ClassData(typeof(CamelCaseData))] public async Task GetCamelCase(string serializer) diff --git a/Core.Arango.Tests/CollectionTest.cs b/Core.Arango.Tests/CollectionTest.cs index 862f23f395..67b49b745d 100644 --- a/Core.Arango.Tests/CollectionTest.cs +++ b/Core.Arango.Tests/CollectionTest.cs @@ -14,6 +14,7 @@ public class CollectionTest : TestBase public CollectionTest(ITestOutputHelper output) { _output = output; + InitializeAsync().ConfigureAwait(false).GetAwaiter().GetResult(); } [Theory] diff --git a/Core.Arango.Tests/Core.Arango.Tests.csproj b/Core.Arango.Tests/Core.Arango.Tests.csproj index 921f908de5..c4f027632d 100644 --- a/Core.Arango.Tests/Core.Arango.Tests.csproj +++ b/Core.Arango.Tests/Core.Arango.Tests.csproj @@ -10,21 +10,22 @@ - - + + + - + all runtime; build; native; contentfiles; analyzers; buildtransitive - + all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/Core.Arango.Tests/Core/TestBase.cs b/Core.Arango.Tests/Core/TestBase.cs index db9ee489f8..91f9c1d729 100644 --- a/Core.Arango.Tests/Core/TestBase.cs +++ b/Core.Arango.Tests/Core/TestBase.cs @@ -7,29 +7,37 @@ using Newtonsoft.Json; using Xunit; using Xunit.Abstractions; +using Testcontainers.ArangoDb; namespace Core.Arango.Tests.Core { public abstract class TestBase : IAsyncLifetime { + private const string Image = "arangodb:latest"; + private const string DefaultImagePassword = "password"; + public const string DefaultImageUser = "root"; + public IArangoContext Arango { get; protected set; } + public ArangoDbContainer Container { get; protected set; } - public virtual Task InitializeAsync() + public virtual async Task InitializeAsync() { - return Task.CompletedTask; + Container = new ArangoDbBuilder() + .WithImage(Image) + .WithPassword(DefaultImagePassword) + .Build(); + + await Container.StartAsync() + .ConfigureAwait(false); } public async Task DisposeAsync() { try { - foreach (var db in await Arango.Database.ListAsync()) - await Arango.Database.DropAsync(db); - } - catch - { - // + await (Container?.DisposeAsync().AsTask() ?? Task.CompletedTask); } + catch { } } public async Task SetupAsync(string serializer, string createDatabase = "test") @@ -47,18 +55,17 @@ public async Task SetupAsync(string serializer, string createDatabase = "test") }); if (!string.IsNullOrEmpty(createDatabase)) - await Arango.Database.CreateAsync("test"); + { + var databaseCreateSuccessful = await Arango.Database.CreateAsync("test"); + if(databaseCreateSuccessful == false) + { + throw new Exception("Database creation failed"); + } + } } protected string UniqueTestRealm() - { - var cs = Environment.GetEnvironmentVariable("ARANGODB_CONNECTION"); - - if (string.IsNullOrWhiteSpace(cs)) - cs = "Server=http://localhost:8529;Realm=CI-{UUID};User=root;Password=;"; - - return cs.Replace("{UUID}", Guid.NewGuid().ToString("D")); - } + => $"Server={Container.GetTransportAddress()};User={DefaultImageUser};Realm=CI-{Guid.NewGuid():D};Password={DefaultImagePassword};"; protected void PrintQuery(IQueryable query, ITestOutputHelper output) { diff --git a/Core.Arango.Tests/DatabaseTest.cs b/Core.Arango.Tests/DatabaseTest.cs index 5f54097318..b6946f9a62 100644 --- a/Core.Arango.Tests/DatabaseTest.cs +++ b/Core.Arango.Tests/DatabaseTest.cs @@ -13,6 +13,7 @@ public class DatabaseTest : TestBase public DatabaseTest(ITestOutputHelper output) { + InitializeAsync().ConfigureAwait(false).GetAwaiter().GetResult(); _output = output; } diff --git a/Core.Arango.Tests/DependencyInjectionTest.cs b/Core.Arango.Tests/DependencyInjectionTest.cs index afd9793f0f..dfed7d89d1 100644 --- a/Core.Arango.Tests/DependencyInjectionTest.cs +++ b/Core.Arango.Tests/DependencyInjectionTest.cs @@ -6,6 +6,11 @@ namespace Core.Arango.Tests { public class DependencyInjectionTest : TestBase { + public DependencyInjectionTest() + { + InitializeAsync().ConfigureAwait(false).GetAwaiter().GetResult(); + } + [Fact] public void AddArangoConfigurationCallback() { diff --git a/Core.Arango.Tests/DocumentTest.cs b/Core.Arango.Tests/DocumentTest.cs index d53513bf9f..46958f5025 100644 --- a/Core.Arango.Tests/DocumentTest.cs +++ b/Core.Arango.Tests/DocumentTest.cs @@ -10,6 +10,11 @@ namespace Core.Arango.Tests { public class DocumentTest : TestBase { + public DocumentTest() + { + InitializeAsync().ConfigureAwait(false).GetAwaiter().GetResult(); + } + [Theory] [ClassData(typeof(PascalCaseData))] public async Task Get(string serializer) diff --git a/Core.Arango.Tests/FoxxTest.cs b/Core.Arango.Tests/FoxxTest.cs index 3b8fd1c2f3..53aaf392b9 100644 --- a/Core.Arango.Tests/FoxxTest.cs +++ b/Core.Arango.Tests/FoxxTest.cs @@ -13,6 +13,11 @@ namespace Core.Arango.Tests #if !NETSTANDARD2_0 public class FoxxTest : TestBase { + public FoxxTest() + { + InitializeAsync().ConfigureAwait(false).GetAwaiter().GetResult(); + } + [Fact] public async Task InstallScript() { diff --git a/Core.Arango.Tests/FunctionTest.cs b/Core.Arango.Tests/FunctionTest.cs index d98bf0dc8a..b6db9052e1 100644 --- a/Core.Arango.Tests/FunctionTest.cs +++ b/Core.Arango.Tests/FunctionTest.cs @@ -12,6 +12,11 @@ public class FunctionTest : TestBase { private readonly IEqualityComparer _functionsComparer = new FunctionsComparer(); + public FunctionTest() + { + InitializeAsync().ConfigureAwait(false).GetAwaiter().GetResult(); + } + [Theory] [ClassData(typeof(PascalCaseData))] public async Task Run(string serializer) diff --git a/Core.Arango.Tests/GraphTest.cs b/Core.Arango.Tests/GraphTest.cs index ea0a6189bb..18baa27233 100644 --- a/Core.Arango.Tests/GraphTest.cs +++ b/Core.Arango.Tests/GraphTest.cs @@ -9,6 +9,11 @@ namespace Core.Arango.Tests { public class GraphTest : TestBase { + public GraphTest() + { + InitializeAsync().ConfigureAwait(false).GetAwaiter().GetResult(); + } + [Theory] [ClassData(typeof(CamelCaseData))] public async Task Get(string serializer) diff --git a/Core.Arango.Tests/IndexTest.cs b/Core.Arango.Tests/IndexTest.cs index b77a83e136..cf54a87d97 100644 --- a/Core.Arango.Tests/IndexTest.cs +++ b/Core.Arango.Tests/IndexTest.cs @@ -8,6 +8,11 @@ namespace Core.Arango.Tests { public class IndexTest : TestBase { + public IndexTest() + { + InitializeAsync().ConfigureAwait(false).GetAwaiter().GetResult(); + } + [Theory] [ClassData(typeof(PascalCaseData))] public async Task DropAll(string serializer) diff --git a/Core.Arango.Tests/LinqTest.cs b/Core.Arango.Tests/LinqTest.cs index 2e7fa9ccee..c4dbc3737d 100644 --- a/Core.Arango.Tests/LinqTest.cs +++ b/Core.Arango.Tests/LinqTest.cs @@ -1,7 +1,5 @@ using System; using System.Collections.Generic; -using System.Diagnostics.CodeAnalysis; -using System.Globalization; using System.Linq; using System.Threading.Tasks; using Core.Arango.Protocol; @@ -10,7 +8,6 @@ using Newtonsoft.Json; using Xunit; using Xunit.Abstractions; -using System.Linq.Expressions; namespace Core.Arango.Tests { @@ -22,6 +19,7 @@ public class LinqTest : TestBase public LinqTest(ITestOutputHelper output) { _output = output; + InitializeAsync().ConfigureAwait(false).GetAwaiter().GetResult(); } [Fact] @@ -70,7 +68,7 @@ await Arango.Query("test") } [Fact] - public async Task MultiFilter() + public Task MultiFilter() { var q = Arango.Query("test") .Where(x => x.Name == "Project A") @@ -80,16 +78,20 @@ public async Task MultiFilter() .Skip(0).Take(1); Assert.Equal("FOR `x` IN `Project` FILTER ( `x`.`Name` == @P1 ) SORT `x`.`Name` ASC FILTER ( `x`.`Name` == @P2 ) SORT `x`.`Name` DESC LIMIT @P3 , @P4 RETURN `x`", q.ToAql().aql.Trim()); + + return Task.CompletedTask; } [Fact] - public async Task FilterOrder() + public Task FilterOrder() { var q = Arango.Query("test") .Where(x => (x.Name == "Project A" || x.Name == "Project B") && x.Budget <= 0); Assert.Equal("FOR `x` IN `Project` FILTER ( ( ( `x`.`Name` == @P1 ) OR ( `x`.`Name` == @P2 ) ) AND ( `x`.`Budget` <= @P3 ) ) RETURN `x`", q.ToAql().aql.Trim()); + + return Task.CompletedTask; } [Fact] @@ -117,6 +119,7 @@ public async Task GroupBy() _output.WriteLine(q.ToAql().aql); _output.WriteLine(""); + await Task.CompletedTask; //_output.WriteLine(JsonConvert.SerializeObject(await q.ToListAsync(), Formatting.Indented)); } @@ -132,6 +135,7 @@ public async Task MathAbs() _output.WriteLine(q.ToAql().aql); _output.WriteLine(""); + await Task.CompletedTask; //_output.WriteLine(JsonConvert.SerializeObject(await q.ToListAsync(), Formatting.Indented)); } @@ -147,6 +151,7 @@ public async Task Ternary() _output.WriteLine(q.ToAql().aql); _output.WriteLine(""); + await Task.CompletedTask; //_output.WriteLine(JsonConvert.SerializeObject(await q.ToListAsync(), Formatting.Indented)); } @@ -174,6 +179,7 @@ public async Task Remove() .Remove().In().Select(x => x.Key); _output.WriteLine(q.ToAql().aql); + await Task.CompletedTask; } [Fact] @@ -217,10 +223,13 @@ public async Task QueryableContains() .Contains("CB"); Assert.True(q); + await Task.CompletedTask; } public override async Task InitializeAsync() { + await base.InitializeAsync(); + Arango = new ArangoContext(UniqueTestRealm()); await Arango.Database.CreateAsync(D); await Arango.Collection.CreateAsync(D, nameof(Client), ArangoCollectionType.Document); @@ -300,6 +309,7 @@ public async Task StringContains() var aql = q.ToAql().aql.Trim(); Assert.Equal("FOR `x` IN `Project` FILTER CONTAINS( `x`.`Name` , @P1 ) RETURN `x`", aql); + await Task.CompletedTask; } [Fact] @@ -309,6 +319,7 @@ public async Task StringConcat() var aql = q.ToAql().aql.Trim(); Assert.Equal("FOR `x` IN `Project` FILTER ( CONCAT( `x`.`Name` , @P1 ) == @P2 ) RETURN `x`", aql); + await Task.CompletedTask; } } } \ No newline at end of file diff --git a/Core.Arango.Tests/LinqTest_BasicOperations.cs b/Core.Arango.Tests/LinqTest_BasicOperations.cs index 46d68ebb63..337e2850e5 100644 --- a/Core.Arango.Tests/LinqTest_BasicOperations.cs +++ b/Core.Arango.Tests/LinqTest_BasicOperations.cs @@ -48,11 +48,13 @@ class InnerChain public class LinqTest_BasicOperations : TestBase { + private const string D = "test"; private readonly ITestOutputHelper _output; public LinqTest_BasicOperations(ITestOutputHelper output) { _output = output; + InitializeAsync().ConfigureAwait(false).GetAwaiter().GetResult(); } [Fact] @@ -381,6 +383,7 @@ public async Task Min() var min = Arango.Query("test").Select(x => x.Revenue).Min(); Assert.Equal(3.4m, min); + await Task.CompletedTask; } [Fact] @@ -389,6 +392,7 @@ public async Task Max() var max = Arango.Query("test").Select(x => x.Revenue).Max(); Assert.Equal(4.4m, max); + await Task.CompletedTask; } [Fact] @@ -398,6 +402,7 @@ public async Task Sum() var sum = Arango.Query("test").Select(x => x.Revenue).Sum(); Assert.Equal(expectedSum, sum); + await Task.CompletedTask; } /*[Fact] @@ -492,6 +497,7 @@ public async Task Take() public override async Task InitializeAsync() { + await base.InitializeAsync(); Arango = new ArangoContext(UniqueTestRealm()); await Arango.Database.CreateAsync(D); await Arango.Collection.CreateAsync(D, nameof(Activity), ArangoCollectionType.Document); diff --git a/Core.Arango.Tests/LinqTest_String.cs b/Core.Arango.Tests/LinqTest_String.cs index a7726a3d22..e59949735a 100644 --- a/Core.Arango.Tests/LinqTest_String.cs +++ b/Core.Arango.Tests/LinqTest_String.cs @@ -1,13 +1,10 @@ using System; using System.Collections.Generic; -using System.Diagnostics.CodeAnalysis; -using System.Globalization; using System.Linq; using System.Threading.Tasks; using Core.Arango.Protocol; using Core.Arango.Linq; using Core.Arango.Tests.Core; -using Newtonsoft.Json; using Xunit; using Xunit.Abstractions; @@ -20,6 +17,7 @@ public class LinqTest_String : TestBase public LinqTest_String(ITestOutputHelper output) { _output = output; + InitializeAsync().ConfigureAwait(false).GetAwaiter().GetResult(); } [Fact] @@ -227,6 +225,7 @@ public async Task StringToUpper() public override async Task InitializeAsync() { + await base.InitializeAsync(); Arango = new ArangoContext(UniqueTestRealm()); await Arango.Database.CreateAsync(D); await Arango.Collection.CreateAsync(D, nameof(Client), ArangoCollectionType.Document); diff --git a/Core.Arango.Tests/QueryFormattingTest.cs b/Core.Arango.Tests/QueryFormattingTest.cs index be1772281f..082793f970 100644 --- a/Core.Arango.Tests/QueryFormattingTest.cs +++ b/Core.Arango.Tests/QueryFormattingTest.cs @@ -9,6 +9,11 @@ namespace Core.Arango.Tests { public class QueryFormattingTest : TestBase { + public QueryFormattingTest() + { + InitializeAsync().ConfigureAwait(false).GetAwaiter().GetResult(); + } + [Theory] [ClassData(typeof(PascalCaseData))] public async Task GuidFormat(string serializer) diff --git a/Core.Arango.Tests/QueryStatisticTest.cs b/Core.Arango.Tests/QueryStatisticTest.cs index 2ab326ba37..fdc7a3e1a2 100644 --- a/Core.Arango.Tests/QueryStatisticTest.cs +++ b/Core.Arango.Tests/QueryStatisticTest.cs @@ -16,10 +16,12 @@ public class QueryStatisticTest : TestBase public QueryStatisticTest(ITestOutputHelper output) { _output = output; + InitializeAsync().ConfigureAwait(false).GetAwaiter().GetResult(); } public override async Task InitializeAsync() { + await base.InitializeAsync(); Arango = new ArangoContext(UniqueTestRealm(), new ArangoConfiguration diff --git a/Core.Arango.Tests/QueryTest.cs b/Core.Arango.Tests/QueryTest.cs index ede41e576e..875ba99aa4 100644 --- a/Core.Arango.Tests/QueryTest.cs +++ b/Core.Arango.Tests/QueryTest.cs @@ -17,6 +17,7 @@ public class QueryTest : TestBase public QueryTest(ITestOutputHelper output) { _output = output; + InitializeAsync().ConfigureAwait(false).GetAwaiter().GetResult(); } [Theory] diff --git a/Core.Arango.Tests/Serializer.cs b/Core.Arango.Tests/Serializer.cs index 806be072af..5ebc565ef9 100644 --- a/Core.Arango.Tests/Serializer.cs +++ b/Core.Arango.Tests/Serializer.cs @@ -2,8 +2,6 @@ using System.Collections.Generic; using System.Diagnostics; using System.Linq; -using System.Net.Http; -using System.Net.Http.Headers; using Core.Arango.Serialization; using Core.Arango.Serialization.Json; using Core.Arango.Serialization.Newtonsoft; diff --git a/Core.Arango.Tests/TransactionTest.cs b/Core.Arango.Tests/TransactionTest.cs index b986c22811..be00af5130 100644 --- a/Core.Arango.Tests/TransactionTest.cs +++ b/Core.Arango.Tests/TransactionTest.cs @@ -11,6 +11,11 @@ namespace Core.Arango.Tests { public class TransactionTest : TestBase { + public TransactionTest() + { + InitializeAsync().ConfigureAwait(false).GetAwaiter().GetResult(); + } + [Theory] [ClassData(typeof(PascalCaseData))] public async Task StreamTransaction(string serializer) diff --git a/Core.Arango/Core.Arango.csproj b/Core.Arango/Core.Arango.csproj index 65d3977ab3..5518fff4ac 100644 --- a/Core.Arango/Core.Arango.csproj +++ b/Core.Arango/Core.Arango.csproj @@ -37,7 +37,7 @@ - + @@ -46,14 +46,14 @@ - - + + - - - + + + From be21f1b87e0d75b941ca146656a79d307a7f5d07 Mon Sep 17 00:00:00 2001 From: Harry Cordewener Date: Tue, 29 Oct 2024 17:46:17 -0500 Subject: [PATCH 2/8] Adjust Workflow script. This is not compatible with Clusters at this time. --- .github/workflows/build.yml | 15 ++++++++------- Core.Arango.Tests/Core/TestBase.cs | 5 +++-- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e17a3498f8..c4004a54d8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,7 +21,7 @@ jobs: - 8.x arango: - "arangodb:3.11" -# - "arangodb:3.10" + - "arangodb:latest" # - "arangodb/enterprise:3.9" topology: - single @@ -33,11 +33,11 @@ jobs: - name: chmod run: find ./docker -name '*.sh' | xargs chmod +x - - name: arango - run: ./docker/start_db_${{ matrix.topology }}_retry_fail.sh ${{ matrix.arango }} - env: - ARANGO_LICENSE_KEY: ${{ secrets.ARANGO_LICENSE_KEY }} - + # - name: arango + # run: ./docker/start_db_${{ matrix.topology }}_retry_fail.sh ${{ matrix.arango }} + # env: + # ARANGO_LICENSE_KEY: ${{ secrets.ARANGO_LICENSE_KEY }} + - name: dotnet uses: actions/setup-dotnet@v3 with: @@ -49,4 +49,5 @@ jobs: - name: test run: dotnet test --configuration Release env: - ARANGODB_CONNECTION: "Server=http://172.28.3.1:8529;Realm=CI-{UUID};User=root;Password=test;" + ARANGODB_VERSION: ${{ matrix.arango }} + ARANGODB_TOPOLOGY: ${{ matrix.topology }} diff --git a/Core.Arango.Tests/Core/TestBase.cs b/Core.Arango.Tests/Core/TestBase.cs index 91f9c1d729..8eb5f42758 100644 --- a/Core.Arango.Tests/Core/TestBase.cs +++ b/Core.Arango.Tests/Core/TestBase.cs @@ -13,7 +13,7 @@ namespace Core.Arango.Tests.Core { public abstract class TestBase : IAsyncLifetime { - private const string Image = "arangodb:latest"; + private const string DefaultImage = "arangodb:latest"; private const string DefaultImagePassword = "password"; public const string DefaultImageUser = "root"; @@ -22,8 +22,9 @@ public abstract class TestBase : IAsyncLifetime public virtual async Task InitializeAsync() { + var version = Environment.GetEnvironmentVariable("ARANGODB_VERSION"); Container = new ArangoDbBuilder() - .WithImage(Image) + .WithImage(string.IsNullOrWhiteSpace(version) ? DefaultImage : version) .WithPassword(DefaultImagePassword) .Build(); From 575f371cad288214f9544012508a80938f7f8455 Mon Sep 17 00:00:00 2001 From: Harry Cordewener Date: Tue, 29 Oct 2024 20:17:02 -0500 Subject: [PATCH 3/8] Tentative support for Clusters down the line. It does not look like a Cluster can be tested with the base image for ArangoDB. --- Core.Arango.Tests/Core/TestBase.cs | 124 ++++++++++++++++++++++++++--- 1 file changed, 115 insertions(+), 9 deletions(-) diff --git a/Core.Arango.Tests/Core/TestBase.cs b/Core.Arango.Tests/Core/TestBase.cs index 8eb5f42758..5804590a00 100644 --- a/Core.Arango.Tests/Core/TestBase.cs +++ b/Core.Arango.Tests/Core/TestBase.cs @@ -8,35 +8,140 @@ using Xunit; using Xunit.Abstractions; using Testcontainers.ArangoDb; +using System.Collections.Generic; +using System.IO; +using DotNet.Testcontainers.Builders; namespace Core.Arango.Tests.Core { public abstract class TestBase : IAsyncLifetime { + private const string ARANGO_LICENSE_KEY_ENVAR = "ARANGO_LICENSE_KEY"; + private const string ARANGODB_VERSION_ENVAR = "ARANGODB_VERSION"; private const string DefaultImage = "arangodb:latest"; private const string DefaultImagePassword = "password"; - public const string DefaultImageUser = "root"; + private const string DefaultImageUser = "root"; public IArangoContext Arango { get; protected set; } - public ArangoDbContainer Container { get; protected set; } + public IEnumerable Containers { get; protected set; } public virtual async Task InitializeAsync() { - var version = Environment.GetEnvironmentVariable("ARANGODB_VERSION"); - Container = new ArangoDbBuilder() - .WithImage(string.IsNullOrWhiteSpace(version) ? DefaultImage : version) + var environment = new Dictionary(); + + if (string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable(ARANGO_LICENSE_KEY_ENVAR))) + { + environment.Add(ARANGO_LICENSE_KEY_ENVAR, Environment.GetEnvironmentVariable(ARANGO_LICENSE_KEY_ENVAR)); + } + + var version = string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable(ARANGODB_VERSION_ENVAR)) + ? DefaultImage + : Environment.GetEnvironmentVariable(ARANGODB_VERSION_ENVAR); + + Containers = [SetupSingleServer(environment, version)]; + // Containers = await SetupClusterServer(environment, version); + + foreach (var container in Containers) + { + await container.StartAsync() + .ConfigureAwait(false); + } + } + + private static ArangoDbContainer SetupSingleServer(Dictionary environment, string version) + => new ArangoDbBuilder() + .WithImage(version) + .WithEnvironment(environment) .WithPassword(DefaultImagePassword) .Build(); - await Container.StartAsync() + private static async Task> SetupClusterServer(Dictionary environment, string version) + { + // This is not yet tested. But is a largely compatible replication of the start_db_cluster script. + // 2024-10-29 20:11:32 Error while processing command-line options for arangod: + // 2024 - 10 - 29 20:11:32 unknown option '--cluster.start-dbserver false' + // I suspect that's because Cluster is only available for Enterprise? + var arangoDBNetwork = new NetworkBuilder() + .WithName($"ArangoDB-{Guid.NewGuid():D}") + .Build(); + + var jwt = Path.GetTempFileName(); + File.Move(jwt, jwt + ".jwt"); + jwt += ".jwt"; + File.AppendAllText(jwt, "Averysecretword"); + + var leadAgent = $"leadagent-{Guid.NewGuid():N}"; + var extraAgents = Enumerable.Range(0, 2); + var dbs = Enumerable.Range(0, 2); + var coordinators = Enumerable.Range(0, 2); + + var containers = new List(); + + var DefaultContainerConfiguration = new ArangoDbBuilder() + .WithImage(version) + .WithResourceMapping(jwt, "/jwtSecret") + .WithEnvironment(environment) + .WithPassword(DefaultImagePassword) + .WithNetwork(arangoDBNetwork); + + containers.Add(DefaultContainerConfiguration + .WithName(leadAgent) + .WithCommand( + "--cluster.start-dbserver", "false", + "--cluster.start-coordinator", "false", + "--auth.jwt-secret", "/jwtSecret") + .Build()); + + foreach (var _ in extraAgents) + { + containers.Add(DefaultContainerConfiguration + .WithName($"{extraAgents}-{Guid.NewGuid():N}") + .WithCommand( + "--cluster.start-dbserver", "false", + "--cluster.start-coordinator", "false", + "--auth.jwt-secret", "/jwtSecret", + "--starter.join", leadAgent) + .Build()); + } + + foreach (var _ in dbs) + { + containers.Add(DefaultContainerConfiguration + .WithName($"{dbs}-{Guid.NewGuid():N}") + .WithCommand( + "--cluster.start-dbserver", "true", + "--cluster.start-coordinator", "false", + "--auth.jwt-secret", "/jwtSecret", + "--starter.join", leadAgent) + .Build()); + } + + foreach (var _ in coordinators) + { + containers.Add(DefaultContainerConfiguration + .WithName($"{coordinators}-{Guid.NewGuid():N}") + .WithCommand( + "--cluster.start-dbserver", "false", + "--cluster.start-coordinator", "true", + "--auth.jwt-secret", "/jwtSecret", + "--starter.join", leadAgent) + .Build()); + } + + await arangoDBNetwork.CreateAsync() .ConfigureAwait(false); + + return containers; } public async Task DisposeAsync() { try { - await (Container?.DisposeAsync().AsTask() ?? Task.CompletedTask); + foreach (var container in Containers) + { + await container.DisposeAsync().AsTask(); + } } catch { } } @@ -58,7 +163,7 @@ public async Task SetupAsync(string serializer, string createDatabase = "test") if (!string.IsNullOrEmpty(createDatabase)) { var databaseCreateSuccessful = await Arango.Database.CreateAsync("test"); - if(databaseCreateSuccessful == false) + if (databaseCreateSuccessful == false) { throw new Exception("Database creation failed"); } @@ -66,7 +171,8 @@ public async Task SetupAsync(string serializer, string createDatabase = "test") } protected string UniqueTestRealm() - => $"Server={Container.GetTransportAddress()};User={DefaultImageUser};Realm=CI-{Guid.NewGuid():D};Password={DefaultImagePassword};"; + // Last to get the Coordinators for clusters, or the only existing one for a single server. + => $"Server={Containers.Last().GetTransportAddress()};User={DefaultImageUser};Realm=CI-{Guid.NewGuid():D};Password={DefaultImagePassword};"; protected void PrintQuery(IQueryable query, ITestOutputHelper output) { From 156cf4e348adddd7cebc7632f1320f8cd9364486 Mon Sep 17 00:00:00 2001 From: Harry Cordewener Date: Tue, 29 Oct 2024 20:55:01 -0500 Subject: [PATCH 4/8] Don't start so many containers please. --- .github/workflows/build.yml | 16 +++------- Core.Arango.Tests/Core/TestBase.cs | 50 +++++++++++++++--------------- 2 files changed, 29 insertions(+), 37 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c4004a54d8..2426ab43e7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -20,26 +20,18 @@ jobs: dotnet: - 8.x arango: - - "arangodb:3.11" +# - "arangodb:3.11" - "arangodb:latest" -# - "arangodb/enterprise:3.9" +# - "arangodb/enterprise:3.9" topology: - single # - cluster steps: - - uses: actions/checkout@v3 - - - name: chmod - run: find ./docker -name '*.sh' | xargs chmod +x - - # - name: arango - # run: ./docker/start_db_${{ matrix.topology }}_retry_fail.sh ${{ matrix.arango }} - # env: - # ARANGO_LICENSE_KEY: ${{ secrets.ARANGO_LICENSE_KEY }} + - uses: actions/checkout@v4 - name: dotnet - uses: actions/setup-dotnet@v3 + uses: actions/setup-dotnet@v4 with: dotnet-version: ${{ matrix.dotnet }} diff --git a/Core.Arango.Tests/Core/TestBase.cs b/Core.Arango.Tests/Core/TestBase.cs index 5804590a00..740c883c16 100644 --- a/Core.Arango.Tests/Core/TestBase.cs +++ b/Core.Arango.Tests/Core/TestBase.cs @@ -23,9 +23,18 @@ public abstract class TestBase : IAsyncLifetime private const string DefaultImageUser = "root"; public IArangoContext Arango { get; protected set; } - public IEnumerable Containers { get; protected set; } + public static Lazy>> Containers = new(async () => await SetupSingleServer()); public virtual async Task InitializeAsync() + { + foreach (var container in await Containers.Value) + { + await container.StartAsync() + .ConfigureAwait(false); + } + } + + private static (Dictionary Environment, string Version) GetVersionAndEnvironment() { var environment = new Dictionary(); @@ -38,25 +47,23 @@ public virtual async Task InitializeAsync() ? DefaultImage : Environment.GetEnvironmentVariable(ARANGODB_VERSION_ENVAR); - Containers = [SetupSingleServer(environment, version)]; - // Containers = await SetupClusterServer(environment, version); - - foreach (var container in Containers) - { - await container.StartAsync() - .ConfigureAwait(false); - } + return (environment, version); } - private static ArangoDbContainer SetupSingleServer(Dictionary environment, string version) - => new ArangoDbBuilder() - .WithImage(version) - .WithEnvironment(environment) - .WithPassword(DefaultImagePassword) - .Build(); + private static Task> SetupSingleServer() + { + var (environment, version) = GetVersionAndEnvironment(); + return Task.FromResult(new List{new ArangoDbBuilder() + .WithImage(version) + .WithEnvironment(environment) + .WithPassword(DefaultImagePassword) + .Build() }); + } - private static async Task> SetupClusterServer(Dictionary environment, string version) + private static async Task> SetupClusterServer() { + var (environment, version) = GetVersionAndEnvironment(); + // This is not yet tested. But is a largely compatible replication of the start_db_cluster script. // 2024-10-29 20:11:32 Error while processing command-line options for arangod: // 2024 - 10 - 29 20:11:32 unknown option '--cluster.start-dbserver false' @@ -136,14 +143,7 @@ await arangoDBNetwork.CreateAsync() public async Task DisposeAsync() { - try - { - foreach (var container in Containers) - { - await container.DisposeAsync().AsTask(); - } - } - catch { } + await Task.CompletedTask; } public async Task SetupAsync(string serializer, string createDatabase = "test") @@ -172,7 +172,7 @@ public async Task SetupAsync(string serializer, string createDatabase = "test") protected string UniqueTestRealm() // Last to get the Coordinators for clusters, or the only existing one for a single server. - => $"Server={Containers.Last().GetTransportAddress()};User={DefaultImageUser};Realm=CI-{Guid.NewGuid():D};Password={DefaultImagePassword};"; + => $"Server={Containers.Value.Result.Last().GetTransportAddress()};User={DefaultImageUser};Realm=CI-{Guid.NewGuid():D};Password={DefaultImagePassword};"; protected void PrintQuery(IQueryable query, ITestOutputHelper output) { From 1fdec687b524e73d720904e2806eb674a848a34e Mon Sep 17 00:00:00 2001 From: Harry Cordewener Date: Tue, 29 Oct 2024 21:02:44 -0500 Subject: [PATCH 5/8] Be explicit about Cluster vs Single, so it's ready to go for later down the line. Edit Build.yml to run against 3.11, which was the original tested-against server. --- .github/workflows/build.yml | 2 +- Core.Arango.Tests/Core/TestBase.cs | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2426ab43e7..9eb3cb0993 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -20,7 +20,7 @@ jobs: dotnet: - 8.x arango: -# - "arangodb:3.11" + - "arangodb:3.11" - "arangodb:latest" # - "arangodb/enterprise:3.9" topology: diff --git a/Core.Arango.Tests/Core/TestBase.cs b/Core.Arango.Tests/Core/TestBase.cs index 740c883c16..ece774eab2 100644 --- a/Core.Arango.Tests/Core/TestBase.cs +++ b/Core.Arango.Tests/Core/TestBase.cs @@ -18,12 +18,17 @@ public abstract class TestBase : IAsyncLifetime { private const string ARANGO_LICENSE_KEY_ENVAR = "ARANGO_LICENSE_KEY"; private const string ARANGODB_VERSION_ENVAR = "ARANGODB_VERSION"; + private const string ARANGODB_TOPOLOGY_ENVAR = "ARANGODB_TOPOLOGY"; private const string DefaultImage = "arangodb:latest"; private const string DefaultImagePassword = "password"; private const string DefaultImageUser = "root"; + private const string ClusterValue = "cluster"; public IArangoContext Arango { get; protected set; } - public static Lazy>> Containers = new(async () => await SetupSingleServer()); + public static Lazy>> Containers = new(async () => + Environment.GetEnvironmentVariable(ARANGODB_TOPOLOGY_ENVAR) == ClusterValue + ? await SetupClusterServer() + : await SetupSingleServer()); public virtual async Task InitializeAsync() { From b036827c1597e8d775524250ecb34b76fa6e632a Mon Sep 17 00:00:00 2001 From: Harry Cordewener Date: Tue, 29 Oct 2024 21:05:29 -0500 Subject: [PATCH 6/8] Minor cleanup items. --- Core.Arango.Tests/Core/TestBase.cs | 6 +++--- Core.Arango.Tests/IndexTest.cs | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Core.Arango.Tests/Core/TestBase.cs b/Core.Arango.Tests/Core/TestBase.cs index ece774eab2..23fed73f2a 100644 --- a/Core.Arango.Tests/Core/TestBase.cs +++ b/Core.Arango.Tests/Core/TestBase.cs @@ -25,7 +25,7 @@ public abstract class TestBase : IAsyncLifetime private const string ClusterValue = "cluster"; public IArangoContext Arango { get; protected set; } - public static Lazy>> Containers = new(async () => + private readonly static Lazy>> Containers = new(async () => Environment.GetEnvironmentVariable(ARANGODB_TOPOLOGY_ENVAR) == ClusterValue ? await SetupClusterServer() : await SetupSingleServer()); @@ -175,11 +175,11 @@ public async Task SetupAsync(string serializer, string createDatabase = "test") } } - protected string UniqueTestRealm() + protected static string UniqueTestRealm() // Last to get the Coordinators for clusters, or the only existing one for a single server. => $"Server={Containers.Value.Result.Last().GetTransportAddress()};User={DefaultImageUser};Realm=CI-{Guid.NewGuid():D};Password={DefaultImagePassword};"; - protected void PrintQuery(IQueryable query, ITestOutputHelper output) + protected static void PrintQuery(IQueryable query, ITestOutputHelper output) { var aql = query.ToAql(); output.WriteLine("QUERY:"); diff --git a/Core.Arango.Tests/IndexTest.cs b/Core.Arango.Tests/IndexTest.cs index cf54a87d97..6273a1b825 100644 --- a/Core.Arango.Tests/IndexTest.cs +++ b/Core.Arango.Tests/IndexTest.cs @@ -22,7 +22,7 @@ public async Task DropAll(string serializer) await Arango.Index.CreateAsync("test", "test", new ArangoIndex { - Fields = new List {"test"}, + Fields = ["test"], Type = ArangoIndexType.Hash }); From 541775c4b68bcb6e1277e8b3e8bea2b27a21ff17 Mon Sep 17 00:00:00 2001 From: Harry Cordewener Date: Tue, 29 Oct 2024 21:19:49 -0500 Subject: [PATCH 7/8] Readme. --- Core.Arango.sln | 1 + README.md | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/Core.Arango.sln b/Core.Arango.sln index a5b9ad6783..69e6ea547b 100644 --- a/Core.Arango.sln +++ b/Core.Arango.sln @@ -10,6 +10,7 @@ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{13D67C1C-3066-4412-A1F6-9C9AD13B7C81}" ProjectSection(SolutionItems) = preProject .editorconfig = .editorconfig + README.md = README.md EndProjectSection EndProject Global diff --git a/README.md b/README.md index 34fa313eb1..d24f0632dd 100644 --- a/README.md +++ b/README.md @@ -667,3 +667,12 @@ await Arango.Backup.RestoreAsync(backup.Id); await Arango.Backup.DeleteAsync(backup.Id); ``` + +# Building and Testing +## Build +- Clone the repository. +- Run `dotnet build` to build the solution, or use your preferred IDE to build the solution. + +## Testing +- Install [Docker Desktop](https://www.docker.com/products/docker-desktop/), this is required to run the integration tests via TestContainers. +- Run `dotnet test` to run the tests, or use your preferred IDE to run the tests. \ No newline at end of file From f297018fd696073d284dfad6933ea4dbf738d170 Mon Sep 17 00:00:00 2001 From: Harry Cordewener Date: Wed, 30 Oct 2024 10:33:07 -0500 Subject: [PATCH 8/8] Remove unnecessary items. --- Core.Arango.Tests/AnalyzerViewTest.cs | 5 ----- Core.Arango.Tests/CamelCaseTest.cs | 5 ----- Core.Arango.Tests/CollectionTest.cs | 1 - Core.Arango.Tests/DatabaseTest.cs | 1 - Core.Arango.Tests/DependencyInjectionTest.cs | 5 ----- Core.Arango.Tests/DocumentTest.cs | 5 ----- Core.Arango.Tests/FoxxTest.cs | 5 ----- Core.Arango.Tests/FunctionTest.cs | 5 ----- Core.Arango.Tests/GraphTest.cs | 5 ----- Core.Arango.Tests/IndexTest.cs | 5 ----- Core.Arango.Tests/LinqTest.cs | 1 - Core.Arango.Tests/LinqTest_BasicOperations.cs | 1 - Core.Arango.Tests/LinqTest_String.cs | 1 - Core.Arango.Tests/QueryFormattingTest.cs | 5 ----- Core.Arango.Tests/QueryStatisticTest.cs | 1 - Core.Arango.Tests/QueryTest.cs | 1 - Core.Arango.Tests/TransactionTest.cs | 5 ----- 17 files changed, 57 deletions(-) diff --git a/Core.Arango.Tests/AnalyzerViewTest.cs b/Core.Arango.Tests/AnalyzerViewTest.cs index 4dcd8e31f2..0cd53040fc 100644 --- a/Core.Arango.Tests/AnalyzerViewTest.cs +++ b/Core.Arango.Tests/AnalyzerViewTest.cs @@ -8,11 +8,6 @@ namespace Core.Arango.Tests { public class AnalyzerViewTest : TestBase { - public AnalyzerViewTest() - { - InitializeAsync().ConfigureAwait(false).GetAwaiter().GetResult(); - } - [Theory] [ClassData(typeof(PascalCaseData))] public async Task AnalyzersViews(string serializer) diff --git a/Core.Arango.Tests/CamelCaseTest.cs b/Core.Arango.Tests/CamelCaseTest.cs index 531cdfe5b9..84d46470ca 100644 --- a/Core.Arango.Tests/CamelCaseTest.cs +++ b/Core.Arango.Tests/CamelCaseTest.cs @@ -8,11 +8,6 @@ namespace Core.Arango.Tests { public class CamelCaseTest : TestBase { - public CamelCaseTest() - { - InitializeAsync().ConfigureAwait(false).GetAwaiter().GetResult(); - } - [Theory] [ClassData(typeof(CamelCaseData))] public async Task GetCamelCase(string serializer) diff --git a/Core.Arango.Tests/CollectionTest.cs b/Core.Arango.Tests/CollectionTest.cs index 67b49b745d..862f23f395 100644 --- a/Core.Arango.Tests/CollectionTest.cs +++ b/Core.Arango.Tests/CollectionTest.cs @@ -14,7 +14,6 @@ public class CollectionTest : TestBase public CollectionTest(ITestOutputHelper output) { _output = output; - InitializeAsync().ConfigureAwait(false).GetAwaiter().GetResult(); } [Theory] diff --git a/Core.Arango.Tests/DatabaseTest.cs b/Core.Arango.Tests/DatabaseTest.cs index b6946f9a62..5f54097318 100644 --- a/Core.Arango.Tests/DatabaseTest.cs +++ b/Core.Arango.Tests/DatabaseTest.cs @@ -13,7 +13,6 @@ public class DatabaseTest : TestBase public DatabaseTest(ITestOutputHelper output) { - InitializeAsync().ConfigureAwait(false).GetAwaiter().GetResult(); _output = output; } diff --git a/Core.Arango.Tests/DependencyInjectionTest.cs b/Core.Arango.Tests/DependencyInjectionTest.cs index dfed7d89d1..afd9793f0f 100644 --- a/Core.Arango.Tests/DependencyInjectionTest.cs +++ b/Core.Arango.Tests/DependencyInjectionTest.cs @@ -6,11 +6,6 @@ namespace Core.Arango.Tests { public class DependencyInjectionTest : TestBase { - public DependencyInjectionTest() - { - InitializeAsync().ConfigureAwait(false).GetAwaiter().GetResult(); - } - [Fact] public void AddArangoConfigurationCallback() { diff --git a/Core.Arango.Tests/DocumentTest.cs b/Core.Arango.Tests/DocumentTest.cs index 46958f5025..d53513bf9f 100644 --- a/Core.Arango.Tests/DocumentTest.cs +++ b/Core.Arango.Tests/DocumentTest.cs @@ -10,11 +10,6 @@ namespace Core.Arango.Tests { public class DocumentTest : TestBase { - public DocumentTest() - { - InitializeAsync().ConfigureAwait(false).GetAwaiter().GetResult(); - } - [Theory] [ClassData(typeof(PascalCaseData))] public async Task Get(string serializer) diff --git a/Core.Arango.Tests/FoxxTest.cs b/Core.Arango.Tests/FoxxTest.cs index 53aaf392b9..3b8fd1c2f3 100644 --- a/Core.Arango.Tests/FoxxTest.cs +++ b/Core.Arango.Tests/FoxxTest.cs @@ -13,11 +13,6 @@ namespace Core.Arango.Tests #if !NETSTANDARD2_0 public class FoxxTest : TestBase { - public FoxxTest() - { - InitializeAsync().ConfigureAwait(false).GetAwaiter().GetResult(); - } - [Fact] public async Task InstallScript() { diff --git a/Core.Arango.Tests/FunctionTest.cs b/Core.Arango.Tests/FunctionTest.cs index b6db9052e1..d98bf0dc8a 100644 --- a/Core.Arango.Tests/FunctionTest.cs +++ b/Core.Arango.Tests/FunctionTest.cs @@ -12,11 +12,6 @@ public class FunctionTest : TestBase { private readonly IEqualityComparer _functionsComparer = new FunctionsComparer(); - public FunctionTest() - { - InitializeAsync().ConfigureAwait(false).GetAwaiter().GetResult(); - } - [Theory] [ClassData(typeof(PascalCaseData))] public async Task Run(string serializer) diff --git a/Core.Arango.Tests/GraphTest.cs b/Core.Arango.Tests/GraphTest.cs index 18baa27233..ea0a6189bb 100644 --- a/Core.Arango.Tests/GraphTest.cs +++ b/Core.Arango.Tests/GraphTest.cs @@ -9,11 +9,6 @@ namespace Core.Arango.Tests { public class GraphTest : TestBase { - public GraphTest() - { - InitializeAsync().ConfigureAwait(false).GetAwaiter().GetResult(); - } - [Theory] [ClassData(typeof(CamelCaseData))] public async Task Get(string serializer) diff --git a/Core.Arango.Tests/IndexTest.cs b/Core.Arango.Tests/IndexTest.cs index 6273a1b825..573efbab9a 100644 --- a/Core.Arango.Tests/IndexTest.cs +++ b/Core.Arango.Tests/IndexTest.cs @@ -8,11 +8,6 @@ namespace Core.Arango.Tests { public class IndexTest : TestBase { - public IndexTest() - { - InitializeAsync().ConfigureAwait(false).GetAwaiter().GetResult(); - } - [Theory] [ClassData(typeof(PascalCaseData))] public async Task DropAll(string serializer) diff --git a/Core.Arango.Tests/LinqTest.cs b/Core.Arango.Tests/LinqTest.cs index c4dbc3737d..3a536451a2 100644 --- a/Core.Arango.Tests/LinqTest.cs +++ b/Core.Arango.Tests/LinqTest.cs @@ -19,7 +19,6 @@ public class LinqTest : TestBase public LinqTest(ITestOutputHelper output) { _output = output; - InitializeAsync().ConfigureAwait(false).GetAwaiter().GetResult(); } [Fact] diff --git a/Core.Arango.Tests/LinqTest_BasicOperations.cs b/Core.Arango.Tests/LinqTest_BasicOperations.cs index 337e2850e5..bf59042db1 100644 --- a/Core.Arango.Tests/LinqTest_BasicOperations.cs +++ b/Core.Arango.Tests/LinqTest_BasicOperations.cs @@ -54,7 +54,6 @@ public class LinqTest_BasicOperations : TestBase public LinqTest_BasicOperations(ITestOutputHelper output) { _output = output; - InitializeAsync().ConfigureAwait(false).GetAwaiter().GetResult(); } [Fact] diff --git a/Core.Arango.Tests/LinqTest_String.cs b/Core.Arango.Tests/LinqTest_String.cs index e59949735a..45791a2d8a 100644 --- a/Core.Arango.Tests/LinqTest_String.cs +++ b/Core.Arango.Tests/LinqTest_String.cs @@ -17,7 +17,6 @@ public class LinqTest_String : TestBase public LinqTest_String(ITestOutputHelper output) { _output = output; - InitializeAsync().ConfigureAwait(false).GetAwaiter().GetResult(); } [Fact] diff --git a/Core.Arango.Tests/QueryFormattingTest.cs b/Core.Arango.Tests/QueryFormattingTest.cs index 082793f970..be1772281f 100644 --- a/Core.Arango.Tests/QueryFormattingTest.cs +++ b/Core.Arango.Tests/QueryFormattingTest.cs @@ -9,11 +9,6 @@ namespace Core.Arango.Tests { public class QueryFormattingTest : TestBase { - public QueryFormattingTest() - { - InitializeAsync().ConfigureAwait(false).GetAwaiter().GetResult(); - } - [Theory] [ClassData(typeof(PascalCaseData))] public async Task GuidFormat(string serializer) diff --git a/Core.Arango.Tests/QueryStatisticTest.cs b/Core.Arango.Tests/QueryStatisticTest.cs index fdc7a3e1a2..e769af386a 100644 --- a/Core.Arango.Tests/QueryStatisticTest.cs +++ b/Core.Arango.Tests/QueryStatisticTest.cs @@ -16,7 +16,6 @@ public class QueryStatisticTest : TestBase public QueryStatisticTest(ITestOutputHelper output) { _output = output; - InitializeAsync().ConfigureAwait(false).GetAwaiter().GetResult(); } public override async Task InitializeAsync() diff --git a/Core.Arango.Tests/QueryTest.cs b/Core.Arango.Tests/QueryTest.cs index 875ba99aa4..ede41e576e 100644 --- a/Core.Arango.Tests/QueryTest.cs +++ b/Core.Arango.Tests/QueryTest.cs @@ -17,7 +17,6 @@ public class QueryTest : TestBase public QueryTest(ITestOutputHelper output) { _output = output; - InitializeAsync().ConfigureAwait(false).GetAwaiter().GetResult(); } [Theory] diff --git a/Core.Arango.Tests/TransactionTest.cs b/Core.Arango.Tests/TransactionTest.cs index be00af5130..b986c22811 100644 --- a/Core.Arango.Tests/TransactionTest.cs +++ b/Core.Arango.Tests/TransactionTest.cs @@ -11,11 +11,6 @@ namespace Core.Arango.Tests { public class TransactionTest : TestBase { - public TransactionTest() - { - InitializeAsync().ConfigureAwait(false).GetAwaiter().GetResult(); - } - [Theory] [ClassData(typeof(PascalCaseData))] public async Task StreamTransaction(string serializer)