Skip to content

Commit 0f9ab94

Browse files
author
Oleksii Sokol
committed
test
1 parent f1956b3 commit 0f9ab94

File tree

2 files changed

+36
-85
lines changed

2 files changed

+36
-85
lines changed

ManagedCode.Database.Tests/CosmosTests/CosmosCollectionTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@
1010

1111
namespace ManagedCode.Database.Tests.CosmosTests;
1212

13-
[Collection(nameof(CosmosTestContainer))]
13+
//[Collection(nameof(CosmosTestContainer))]
1414
public class CosmosCollectionTests : BaseCollectionTests<string, TestCosmosItem>
1515
{
16-
public CosmosCollectionTests(CosmosTestContainer container) : base(container)
16+
public CosmosCollectionTests() : base()
1717
{
1818
}
1919

Lines changed: 34 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,48 @@
11
using System;
2-
using System.Linq;
32
using System.Net.Http;
43
using System.Threading.Tasks;
5-
using Docker.DotNet;
6-
using Docker.DotNet.Models;
74
using DotNet.Testcontainers.Builders;
85
using DotNet.Testcontainers.Containers;
96
using ManagedCode.Database.Core;
107
using ManagedCode.Database.Cosmos;
118
using ManagedCode.Database.Tests.Common;
129
using Microsoft.Azure.Cosmos;
13-
using Xunit;
1410

1511
namespace ManagedCode.Database.Tests.TestContainers;
1612

17-
[CollectionDefinition(nameof(CosmosTestContainer))]
18-
public class CosmosTestContainer : ITestContainer<string, TestCosmosItem>,
19-
ICollectionFixture<CosmosTestContainer>, IDisposable
13+
public class CosmosTestContainer : ITestContainer<string, TestCosmosItem>
2014
{
21-
private readonly TestcontainersContainer _cosmosTestContainer;
2215
private CosmosDatabase _database;
23-
private DockerClient _dockerClient;
24-
private const string containerName = "cosmosContainer";
25-
private const ushort privatePort = 8081;
26-
private bool containerExsist = false;
27-
private string containerId;
16+
private readonly TestcontainersContainer _cosmosContainer;
2817

2918
public CosmosTestContainer()
3019
{
31-
_cosmosTestContainer = new TestcontainersBuilder<TestcontainersContainer>()
20+
// Docker container for cosmos db is not working at all, to test database use local windows emulator
21+
_cosmosContainer = new TestcontainersBuilder<TestcontainersContainer>()
3222
.WithImage("mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator")
33-
.WithName(containerName)
23+
.WithName($"azure-cosmos-emulator{Guid.NewGuid().ToString("N")}")
24+
// .WithExposedPort(8081)
25+
// .WithExposedPort(10250)
26+
// .WithExposedPort(10251)
27+
// .WithExposedPort(10252)
28+
// .WithExposedPort(10253)
29+
// .WithExposedPort(10254)
30+
// .WithExposedPort(10255)
3431
.WithExposedPort(8081)
35-
.WithExposedPort(10251)
36-
.WithExposedPort(10252)
37-
.WithExposedPort(10253)
38-
.WithExposedPort(10254)
39-
.WithExposedPort(10255)
4032
.WithPortBinding(8081, 8081)
33+
.WithPortBinding(10250, 10250)
4134
.WithPortBinding(10251, 10251)
4235
.WithPortBinding(10252, 10252)
4336
.WithPortBinding(10253, 10253)
4437
.WithPortBinding(10254, 10254)
45-
.WithPortBinding(8081, 8081)
38+
.WithPortBinding(10255, 10255)
4639
.WithEnvironment("AZURE_COSMOS_EMULATOR_PARTITION_COUNT", "1")
4740
.WithEnvironment("AZURE_COSMOS_EMULATOR_IP_ADDRESS_OVERRIDE", "127.0.0.1")
4841
.WithEnvironment("AZURE_COSMOS_EMULATOR_ENABLE_DATA_PERSISTENCE", "false")
49-
.WithCleanUp(false)
42+
//.WithCleanUp(true)
5043
.WithWaitStrategy(Wait.ForUnixContainer()
51-
.UntilPortIsAvailable(privatePort))
44+
.UntilPortIsAvailable(8081))
5245
.Build();
53-
54-
_dockerClient = new DockerClientConfiguration().CreateClient();
5546
}
5647

5748
public IDatabaseCollection<string, TestCosmosItem> Collection =>
@@ -64,56 +55,27 @@ public string GenerateId()
6455

6556
public async Task InitializeAsync()
6657
{
67-
ushort publicPort = privatePort;
68-
69-
try
70-
{
71-
await _cosmosTestContainer.StartAsync();
72-
73-
containerExsist = false;
74-
}
75-
catch (Exception ex) //TODO catch name already using exception
76-
{
77-
containerExsist = true;
78-
}
79-
80-
if (!containerExsist)
81-
{
82-
publicPort = _cosmosTestContainer.GetMappedPublicPort(privatePort);
83-
containerId = _cosmosTestContainer.Id;
84-
}
85-
else
86-
{
87-
var listContainers = await _dockerClient.Containers.ListContainersAsync(new ContainersListParameters());
88-
89-
ContainerListResponse containerListResponse = listContainers.FirstOrDefault(container => container.Names.Contains($"/{containerName}"));
90-
91-
if (containerListResponse != null)
92-
{
93-
publicPort = containerListResponse.Ports.Single(port => port.PrivatePort == privatePort).PublicPort;
94-
95-
containerId = containerListResponse.ID;
96-
}
97-
}
98-
99-
var httpMessageHandler = new HttpClientHandler()
100-
{
101-
ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator
102-
};
103-
104-
58+
await _cosmosContainer.StartAsync();
59+
Console.WriteLine($"Cosmos container State:{_cosmosContainer.State}");
10560
_database = new CosmosDatabase(new CosmosOptions
10661
{
10762
ConnectionString =
108-
$"AccountEndpoint=https://localhost:{publicPort}/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==",
63+
$"AccountEndpoint=https://localhost:{_cosmosContainer.GetMappedPublicPort(8081)}/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==",
10964
DatabaseName = "database",
110-
CollectionName = $"testContainer",
65+
CollectionName = "testContainer",
11166
AllowTableCreation = true,
11267
CosmosClientOptions = new CosmosClientOptions()
11368
{
114-
HttpClientFactory = () => new HttpClient(httpMessageHandler),
115-
ConnectionMode = ConnectionMode.Gateway,
116-
//RequestTimeout = TimeSpan.FromMinutes(3)
69+
HttpClientFactory = () =>
70+
{
71+
HttpMessageHandler httpMessageHandler = new HttpClientHandler()
72+
{
73+
ServerCertificateCustomValidationCallback = (_, _, _, _) => true
74+
};
75+
76+
return new HttpClient(httpMessageHandler);
77+
},
78+
ConnectionMode = ConnectionMode.Gateway
11779
},
11880
});
11981

@@ -123,20 +85,9 @@ public async Task InitializeAsync()
12385

12486
public async Task DisposeAsync()
12587
{
126-
// await _database.DeleteAsync();
12788
await _database.DisposeAsync();
128-
129-
/* _testOutputHelper.WriteLine($"Cosmos container State:{_cosmosContainer.State}");
130-
_testOutputHelper.WriteLine("=STOP=");*/
131-
}
132-
133-
public async void Dispose()
134-
{
135-
136-
await _dockerClient.Containers.RemoveContainerAsync(containerId,
137-
new ContainerRemoveParameters
138-
{
139-
Force = true
140-
});
89+
await _cosmosContainer.StopAsync();
90+
await _cosmosContainer.CleanUpAsync();
91+
Console.WriteLine($"Cosmos container State:{_cosmosContainer.State}");
14192
}
142-
}
93+
}

0 commit comments

Comments
 (0)