Skip to content

Commit 479f27e

Browse files
author
Oleksii Sokol
committed
fix cosmos container
1 parent 80da773 commit 479f27e

File tree

6 files changed

+66
-49
lines changed

6 files changed

+66
-49
lines changed
Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/*using FluentAssertions;
1+
using FluentAssertions;
22
using ManagedCode.Database.Core.Exceptions;
33
using ManagedCode.Database.Tests.BaseTests;
44
using ManagedCode.Database.Tests.Common;
@@ -16,24 +16,24 @@ public CosmosCollectionTests(ITestOutputHelper testOutputHelper, CosmosTestConta
1616
{
1717
}
1818

19-
*//* public override async Task DeleteItemById_WhenItemDoesntExists()
20-
{
21-
var baseMethod = () => base.DeleteItemById_WhenItemDoesntExists();
19+
public override async Task DeleteItemById_WhenItemDoesntExists()
20+
{
21+
var baseMethod = () => base.DeleteItemById_WhenItemDoesntExists();
2222

23-
await baseMethod.Should().ThrowExactlyAsync<DatabaseException>();
24-
}
23+
await baseMethod.Should().ThrowExactlyAsync<DatabaseException>();
24+
}
2525

26-
public override async Task DeleteListOfItemsById_WhenItemsDontExist()
27-
{
28-
var baseMethod = () => base.DeleteListOfItemsById_WhenItemsDontExist();
26+
public override async Task DeleteListOfItemsById_WhenItemsDontExist()
27+
{
28+
var baseMethod = () => base.DeleteListOfItemsById_WhenItemsDontExist();
2929

30-
await baseMethod.Should().ThrowExactlyAsync<DatabaseException>();
31-
}
30+
await baseMethod.Should().ThrowExactlyAsync<DatabaseException>();
31+
}
3232

33-
public override async Task DeleteListOfItems_WhenItemsDontExist()
34-
{
35-
var baseMethod = () => base.DeleteListOfItems_WhenItemsDontExist();
33+
public override async Task DeleteListOfItems_WhenItemsDontExist()
34+
{
35+
var baseMethod = () => base.DeleteListOfItems_WhenItemsDontExist();
3636

37-
await baseMethod.Should().ThrowExactlyAsync<DatabaseException>();
38-
}*//*
39-
}*/
37+
await baseMethod.Should().ThrowExactlyAsync<DatabaseException>();
38+
}
39+
}

ManagedCode.Database.Tests/CosmosTests/CosmosQueryableTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/*using FluentAssertions;
1+
using FluentAssertions;
22
using ManagedCode.Database.Tests.BaseTests;
33
using ManagedCode.Database.Tests.Common;
44
using ManagedCode.Database.Tests.TestContainers;
@@ -108,4 +108,4 @@ public override async Task Take_NegativeNumber_ReturnZero()
108108

109109
await baseMethod.Should().ThrowExactlyAsync<ArgumentException>();
110110
}
111-
}*/
111+
}

ManagedCode.Database.Tests/TestContainers/AzureTablesTestContainer.cs

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@
1010
using ManagedCode.Database.Core;
1111
using ManagedCode.Database.Tests.Common;
1212
using Xunit;
13-
using Xunit.Abstractions;
1413

1514
namespace ManagedCode.Database.Tests.TestContainers;
1615

1716
[CollectionDefinition(nameof(AzureTablesTestContainer))]
18-
public class AzureTablesTestContainer : ITestContainer<TableId, TestAzureTablesItem>, ICollectionFixture<AzureTablesTestContainer>, IDisposable
17+
public class AzureTablesTestContainer : ITestContainer<TableId, TestAzureTablesItem>,
18+
ICollectionFixture<AzureTablesTestContainer>, IDisposable
1919
{
2020
//private readonly ITestOutputHelper _testOutputHelper;
2121
private readonly TestcontainersContainer _azureTablesTestContainer;
@@ -92,13 +92,15 @@ public async Task InitializeAsync()
9292

9393
containerId = containerListResponse.ID;
9494

95-
publicPort[1] = containerListResponse.Ports.Single(port => port.PrivatePort == privatePort[1]).PublicPort;
96-
publicPort[2] = containerListResponse.Ports.Single(port => port.PrivatePort == privatePort[2]).PublicPort;
97-
publicPort[3] = containerListResponse.Ports.Single(port => port.PrivatePort == privatePort[3]).PublicPort;
98-
}
95+
if (containerListResponse != null)
96+
{
97+
publicPort[1] = containerListResponse.Ports.Single(port => port.PrivatePort == privatePort[1]).PublicPort;
98+
publicPort[2] = containerListResponse.Ports.Single(port => port.PrivatePort == privatePort[2]).PublicPort;
99+
publicPort[3] = containerListResponse.Ports.Single(port => port.PrivatePort == privatePort[3]).PublicPort;
99100

100-
//_testOutputHelper.WriteLine("=START=");
101-
//_testOutputHelper.WriteLine($"Azure Tables container State:{_azureTablesContainer.State}");
101+
containerId = containerListResponse.ID;
102+
}
103+
}
102104

103105
_database = new AzureTablesDatabase(new AzureTablesOptions
104106
{
@@ -114,6 +116,9 @@ public async Task InitializeAsync()
114116
});
115117

116118
await _database.InitializeAsync();
119+
120+
//_testOutputHelper.WriteLine("=START=");
121+
//_testOutputHelper.WriteLine($"Azure Tables container State:{_azureTablesContainer.State}");
117122
}
118123

119124
public async Task DisposeAsync()

ManagedCode.Database.Tests/TestContainers/CosmosTestContainer.cs

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,27 +11,26 @@
1111
using ManagedCode.Database.Tests.Common;
1212
using Microsoft.Azure.Cosmos;
1313
using Xunit;
14-
using Xunit.Abstractions;
1514

1615
namespace ManagedCode.Database.Tests.TestContainers;
1716

1817
[CollectionDefinition(nameof(CosmosTestContainer))]
19-
public class CosmosTestContainer : ITestContainer<string, TestCosmosItem>, ICollectionFixture<CosmosTestContainer>
18+
public class CosmosTestContainer : ITestContainer<string, TestCosmosItem>,
19+
ICollectionFixture<CosmosTestContainer>, IDisposable
2020
{
2121
private readonly TestcontainersContainer _cosmosTestContainer;
2222
private CosmosDatabase _database;
2323
private DockerClient _dockerClient;
2424
private const string containerName = "cosmosContainer";
2525
private const ushort privatePort = 8081;
2626
private bool containerExsist = false;
27+
private string containerId;
2728

2829
public CosmosTestContainer()
2930
{
30-
// Docker container for cosmos db is not working at all, to test database use local windows emulator
3131
_cosmosTestContainer = new TestcontainersBuilder<TestcontainersContainer>()
3232
.WithImage("mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator")
3333
.WithName(containerName)
34-
//.WithName($"azure-cosmos-emulator{Guid.NewGuid().ToString("N")}")
3534
.WithExposedPort(8081)
3635
.WithPortBinding(8081, 8081)
3736
.WithPortBinding(10250, 10250)
@@ -43,7 +42,7 @@ public CosmosTestContainer()
4342
.WithEnvironment("AZURE_COSMOS_EMULATOR_PARTITION_COUNT", "2")
4443
.WithEnvironment("AZURE_COSMOS_EMULATOR_IP_ADDRESS_OVERRIDE", "127.0.0.1")
4544
.WithEnvironment("AZURE_COSMOS_EMULATOR_ENABLE_DATA_PERSISTENCE", "true")
46-
.WithCleanUp(true)
45+
.WithCleanUp(false)
4746
.WithWaitStrategy(Wait.ForUnixContainer()
4847
.UntilPortIsAvailable(8081))
4948
.Build();
@@ -77,6 +76,7 @@ public async Task InitializeAsync()
7776
if (!containerExsist)
7877
{
7978
publicPort = _cosmosTestContainer.GetMappedPublicPort(privatePort);
79+
containerId = _cosmosTestContainer.Id;
8080
}
8181
else
8282
{
@@ -85,7 +85,11 @@ public async Task InitializeAsync()
8585
ContainerListResponse containerListResponse = listContainers.FirstOrDefault(container => container.Names.Contains($"/{containerName}"));
8686

8787
if(containerListResponse != null)
88+
{
8889
publicPort = containerListResponse.Ports.Single(port => port.PrivatePort == privatePort).PublicPort;
90+
91+
containerId = containerListResponse.ID;
92+
}
8993
}
9094

9195
_database = new CosmosDatabase(new CosmosOptions
@@ -116,18 +120,20 @@ public async Task InitializeAsync()
116120

117121
public async Task DisposeAsync()
118122
{
119-
await _database.DeleteAsync();
123+
await _database.DeleteAsync();
120124
await _database.DisposeAsync();
121-
/*
122-
await _cosmosTestContainer.StopAsync();
123-
await _cosmosTestContainer.CleanUpAsync();*/
125+
124126
/* _testOutputHelper.WriteLine($"Cosmos container State:{_cosmosContainer.State}");
125127
_testOutputHelper.WriteLine("=STOP=");*/
126128
}
127-
/*
129+
128130
public async void Dispose()
129131
{
130-
await _cosmosTestContainer.StopAsync();
131-
await _cosmosTestContainer.CleanUpAsync();
132-
}*/
133-
}
132+
133+
await _dockerClient.Containers.RemoveContainerAsync(containerId,
134+
new ContainerRemoveParameters
135+
{
136+
Force = true
137+
});
138+
}
139+
}

ManagedCode.Database.Tests/TestContainers/DynamoDBTestContainer.cs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@
99
using ManagedCode.Database.DynamoDB;
1010
using ManagedCode.Database.Tests.Common;
1111
using Xunit;
12-
using Xunit.Abstractions;
1312

1413
namespace ManagedCode.Database.Tests.TestContainers;
1514

1615
[CollectionDefinition(nameof(DynamoDBTestContainer))]
17-
public class DynamoDBTestContainer : ITestContainer<string, TestDynamoDbItem>, ICollectionFixture<DynamoDBTestContainer>, IDisposable
16+
public class DynamoDBTestContainer : ITestContainer<string, TestDynamoDbItem>,
17+
ICollectionFixture<DynamoDBTestContainer>, IDisposable
1818
{
1919
// private readonly ITestOutputHelper _testOutputHelper;
2020
private readonly TestcontainersContainer _dynamoDBTestContainer;
@@ -75,9 +75,12 @@ public async Task InitializeAsync()
7575

7676
ContainerListResponse containerListResponse = listContainers.Single(container => container.Names.Contains($"/{containerName}"));
7777

78-
containerId = containerListResponse.ID;
78+
if (containerListResponse != null)
79+
{
80+
publicPort = containerListResponse.Ports.Single(port => port.PrivatePort == privatePort).PublicPort;
7981

80-
publicPort = containerListResponse.Ports.Single(port => port.PrivatePort == privatePort).PublicPort;
82+
containerId = containerListResponse.ID;
83+
}
8184
}
8285

8386
_dbDatabase = new DynamoDBDatabase(new DynamoDBOptions()

ManagedCode.Database.Tests/TestContainers/MongoDBTestContainer.cs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@
1010
using ManagedCode.Database.Tests.Common;
1111
using MongoDB.Bson;
1212
using Xunit;
13-
using Xunit.Abstractions;
1413

1514
namespace ManagedCode.Database.Tests.TestContainers;
1615

1716
[CollectionDefinition(nameof(MongoDBTestContainer))]
18-
public class MongoDBTestContainer : ITestContainer<ObjectId, TestMongoDBItem>, ICollectionFixture<MongoDBTestContainer>, IDisposable
17+
public class MongoDBTestContainer : ITestContainer<ObjectId, TestMongoDBItem>,
18+
ICollectionFixture<MongoDBTestContainer>, IDisposable
1919
{
2020
//private readonly ITestOutputHelper _testOutputHelper;
2121
private readonly TestcontainersContainer _mongoDBTestContainer;
@@ -76,9 +76,12 @@ public async Task InitializeAsync()
7676

7777
ContainerListResponse containerListResponse = listContainers.Single(container => container.Names.Contains($"/{containerName}"));
7878

79-
containerId = containerListResponse.ID;
79+
if (containerListResponse != null)
80+
{
81+
publicPort = containerListResponse.Ports.Single(port => port.PrivatePort == privatePort).PublicPort;
8082

81-
publicPort = containerListResponse.Ports.Single(port => port.PrivatePort == privatePort).PublicPort;
83+
containerId = containerListResponse.ID;
84+
}
8285
}
8386

8487
_dbDatabase = new MongoDBDatabase(new MongoDBOptions()

0 commit comments

Comments
 (0)