Skip to content

Commit 264ea08

Browse files
:|
1 parent ab9f222 commit 264ea08

5 files changed

Lines changed: 34 additions & 27 deletions

File tree

Shared.EventStore.Tests/SubscriptionRepositoryTests.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using Shared.EventStore.Tests.TestObjects;
2+
using SimpleResults;
23

34
namespace Shared.EventStore.Tests;
45

@@ -19,7 +20,7 @@ public async Task SubscriptionRepository_GetSubscriptions_ReturnsSubscriptions()
1920
{
2021
List<PersistentSubscriptionInfo> allSubscriptions = (TestData.GetPersistentSubscriptions_DemoEstate());
2122

22-
Func<CancellationToken, Task<List<PersistentSubscriptionInfo>>> GetAllSubscriptions = async token => allSubscriptions;
23+
Func<CancellationToken, Task<Result<List<PersistentSubscriptionInfo>>>> GetAllSubscriptions = async token => allSubscriptions;
2324

2425
ISubscriptionRepository subscriptionRepository = SubscriptionRepository.Create(GetAllSubscriptions);
2526

Shared.EventStore/SubscriptionWorker/SubscriptionRepository.cs

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
namespace Shared.EventStore.SubscriptionWorker;
1+
using SimpleResults;
2+
3+
namespace Shared.EventStore.SubscriptionWorker;
24
using System;
35
using System.Collections.Generic;
46
using System.Diagnostics.CodeAnalysis;
@@ -12,7 +14,7 @@
1214
public class SubscriptionRepository : ISubscriptionRepository {
1315
private Int32 CacheHits;
1416
private Int32 FullRefreshHits;
15-
private Func<CancellationToken, Task<List<PersistentSubscriptionInfo>>> GetAllSubscriptions;
17+
private Func<CancellationToken, Task<Result<List<PersistentSubscriptionInfo>>>> GetAllSubscriptions;
1618
private readonly Func<Boolean, PersistentSubscriptions, Boolean> RefreshRequired;
1719
private Int32 running;
1820
private PersistentSubscriptions Subscriptions;
@@ -29,37 +31,39 @@ public static SubscriptionRepository Create(String eventStoreConnectionString,
2931
Int32 cacheDuration = 120) {
3032
EventStoreClientSettings settings = EventStoreClientSettings.Create(eventStoreConnectionString);
3133
HttpClient httpClient = SubscriptionWorkerHelper.CreateHttpClient(settings);
32-
return new SubscriptionRepository(cacheDuration) { GetAllSubscriptions = cancellationToken => SubscriptionRepository.GetSubscriptions(httpClient, cancellationToken) };
34+
35+
36+
return new SubscriptionRepository(cacheDuration) { GetAllSubscriptions = cancellationToken => GetSubscriptions(httpClient, cancellationToken) };
3337
}
3438

35-
public static SubscriptionRepository Create(Task<List<PersistentSubscriptionInfo>> func,
39+
public static SubscriptionRepository Create(Task<Result<List<PersistentSubscriptionInfo>>> func,
3640
Int32 cacheDuration = 120) {
3741

3842
return new(cacheDuration) { GetAllSubscriptions = _ => func };
3943

4044
}
4145

42-
public static SubscriptionRepository Create(Func<CancellationToken, Task<List<PersistentSubscriptionInfo>>> func,
46+
public static SubscriptionRepository Create(Func<CancellationToken, Task<Result<List<PersistentSubscriptionInfo>>>> func,
4347
Int32 cacheDuration = 120) {
4448
return new(cacheDuration) { GetAllSubscriptions = func };
4549
}
4650

47-
public static async Task<List<PersistentSubscriptionInfo>> GetSubscriptions(HttpClient httpClient,
48-
CancellationToken cancellationToken) {
51+
public static async Task<Result<List<PersistentSubscriptionInfo>>> GetSubscriptions(HttpClient httpClient,
52+
CancellationToken cancellationToken) {
4953
try {
5054
HttpResponseMessage responseMessage = await httpClient.SendAsync(new HttpRequestMessage(HttpMethod.Get, "subscriptions"), cancellationToken);
5155
String responseBody = await responseMessage.Content.ReadAsStringAsync(cancellationToken);
5256

5357
if (responseMessage.IsSuccessStatusCode) {
5458
List<PersistentSubscriptionInfo> list = JsonConvert.DeserializeObject<List<PersistentSubscriptionInfo>>(responseBody);
5559

56-
return list;
60+
return Result.Success(list);
5761
}
5862

59-
throw new ApplicationException($"Response was [{responseBody}] and status code was [{responseMessage.StatusCode}]");
63+
return Result.Failure($"Response was [{responseBody}] and status code was [{responseMessage.StatusCode}]");
6064
}
6165
catch (Exception ex) {
62-
throw new ApplicationException($"Unable to get persistent subscription list. [{ex}]");
66+
return Result.Failure($"Unable to get persistent subscription list. [{ex}]");
6367
}
6468
}
6569

@@ -76,11 +80,12 @@ public async Task<PersistentSubscriptions> GetSubscriptions(Boolean forceRefresh
7680

7781
this.WriteTrace("Full refresh on repository");
7882

79-
List<PersistentSubscriptionInfo> list = await this.GetAllSubscriptions(cancellationToken);
83+
Result<List<PersistentSubscriptionInfo>> list = await this.GetAllSubscriptions(cancellationToken);
8084

81-
this.FullRefreshHits++;
85+
// TODO: Log failure?
86+
this.FullRefreshHits++;
8287

83-
this.Subscriptions = this.Subscriptions.Update(list);
88+
this.Subscriptions = this.Subscriptions.Update(list.Data);
8489

8590
this.WriteTrace($"Full refresh on repository completed {this.FullRefreshHits}");
8691

Shared.EventStoreContext.Tests/EventStoreDockerHelper.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public override async Task CreateSubscriptions(){
5555
}
5656

5757
public override async Task StartContainersForScenarioRun(String scenarioName, DockerServices services) {
58-
this.DockerPlatform = BaseDockerHelper.GetDockerEnginePlatform();
58+
this.DockerPlatform = BaseDockerHelper.GetDockerEnginePlatform().Data;
5959
this.TestId = Guid.NewGuid();
6060
INetworkService networkService = this.SetupTestNetwork("eventstoretestnetwork", true);
6161
this.SetupContainerNames();

Shared.IntegrationTesting/BaseDockerHelper.cs

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System.Net.Http.Headers;
2+
using SimpleResults;
23

34
namespace Shared.IntegrationTesting;
45

@@ -134,8 +135,8 @@ protected BaseDockerHelper(Boolean skipHealthChecks=false) {
134135
}));
135136

136137
// Setup the default image details
137-
DockerEnginePlatform engineType = BaseDockerHelper.GetDockerEnginePlatform();
138-
if (engineType == DockerEnginePlatform.Windows){
138+
SimpleResults.Result<DockerEnginePlatform> engineType = BaseDockerHelper.GetDockerEnginePlatform();
139+
if (engineType.Data == DockerEnginePlatform.Windows){
139140
this.ImageDetails.Add(ContainerType.SqlServer, ("iamrjindal/sqlserverexpress:2019", true));
140141
this.ImageDetails.Add(ContainerType.EventStore, ("stuartferguson/eventstore_windows", true));
141142
this.ImageDetails.Add(ContainerType.MessagingService, ("stuartferguson/messagingservicewindows:master", true));
@@ -222,22 +223,22 @@ public List<String> GetCommonEnvironmentVariables(){
222223
};
223224
}
224225

225-
public static DockerEnginePlatform GetDockerEnginePlatform(){
226+
public static SimpleResults.Result<DockerEnginePlatform> GetDockerEnginePlatform(){
226227
try{
227228
IHostService docker = BaseDockerHelper.GetDockerHost();
228229

229230
if (docker.Host.IsLinuxEngine()){
230-
return DockerEnginePlatform.Linux;
231+
return Result.Success(DockerEnginePlatform.Linux);
231232
}
232233

233234
if (docker.Host.IsWindowsEngine()){
234-
return DockerEnginePlatform.Windows;
235+
return Result.Success(DockerEnginePlatform.Windows);
235236
}
236237

237-
return DockerEnginePlatform.Unknown;
238+
return Result.Success(DockerEnginePlatform.Unknown);
238239
}
239240
catch(Exception e){
240-
throw new ApplicationException("Unable to determine docker Engine Platform", e);
241+
return Result.Failure($"Unable to determine docker Engine Platform. Exception [{e.Message}]");
241242
}
242243
}
243244

@@ -551,11 +552,11 @@ public virtual ContainerBuilder SetupTestHostContainer(){
551552
public virtual INetworkService SetupTestNetwork(String networkName = null,
552553
Boolean reuseIfExists = false){
553554
networkName = String.IsNullOrEmpty(networkName) ? $"testnw{this.TestId:N}" : networkName;
554-
DockerEnginePlatform engineType = BaseDockerHelper.GetDockerEnginePlatform();
555+
SimpleResults.Result<DockerEnginePlatform> engineType = BaseDockerHelper.GetDockerEnginePlatform();
555556

556-
if (engineType == DockerEnginePlatform.Windows){
557+
if (engineType.Data == DockerEnginePlatform.Windows){
557558
var docker = BaseDockerHelper.GetDockerHost();
558-
var network = docker.GetNetworks().Where(nw => nw.Name == networkName).SingleOrDefault();
559+
var network = docker.GetNetworks().SingleOrDefault(nw => nw.Name == networkName);
559560
if (network == null){
560561
Dictionary<String, String> driverOptions = new Dictionary<String, String>();
561562
driverOptions.Add("com.docker.network.windowsshim.networkname", networkName);
@@ -571,7 +572,7 @@ public virtual INetworkService SetupTestNetwork(String networkName = null,
571572
return network;
572573
}
573574

574-
if (engineType == DockerEnginePlatform.Linux){
575+
if (engineType.Data == DockerEnginePlatform.Linux){
575576
// Build a network
576577
NetworkBuilder networkService = new Builder().UseNetwork(networkName).ReuseIfExist();
577578

Shared.IntegrationTesting/DockerHelper.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ protected virtual void SetHostTraceFolder(String scenarioName) {
7171

7272

7373
public override async Task StartContainersForScenarioRun(String scenarioName, DockerServices dockerServices){
74-
this.DockerPlatform = BaseDockerHelper.GetDockerEnginePlatform();
74+
this.DockerPlatform = BaseDockerHelper.GetDockerEnginePlatform().Data;
7575

7676
this.DockerCredentials.ShouldNotBeNull();
7777
this.SqlCredentials.ShouldNotBeNull();

0 commit comments

Comments
 (0)