Implement in-process multi-dataset sync isolation across core, network, persistence, and tests
All checks were successful
NuGet Package Publish / nuget (push) Successful in 1m14s
All checks were successful
NuGet Package Publish / nuget (push) Successful in 1m14s
This commit is contained in:
@@ -16,6 +16,8 @@ public class SnapshotReconnectRegressionTests
|
||||
.Returns((SnapshotMetadata?)null);
|
||||
snapshotMetadataStore.GetSnapshotHashAsync(Arg.Any<string>(), Arg.Any<CancellationToken>())
|
||||
.Returns((string?)null);
|
||||
snapshotMetadataStore.GetSnapshotHashAsync(Arg.Any<string>(), Arg.Any<string>(), Arg.Any<CancellationToken>())
|
||||
.Returns((string?)null);
|
||||
snapshotMetadataStore.GetAllSnapshotMetadataAsync(Arg.Any<CancellationToken>())
|
||||
.Returns(Array.Empty<SnapshotMetadata>());
|
||||
return snapshotMetadataStore;
|
||||
@@ -30,6 +32,10 @@ public class SnapshotReconnectRegressionTests
|
||||
.Returns(Task.CompletedTask);
|
||||
snapshotService.MergeSnapshotAsync(Arg.Any<Stream>(), Arg.Any<CancellationToken>())
|
||||
.Returns(Task.CompletedTask);
|
||||
snapshotService.ReplaceDatabaseAsync(Arg.Any<Stream>(), Arg.Any<string>(), Arg.Any<CancellationToken>())
|
||||
.Returns(Task.CompletedTask);
|
||||
snapshotService.MergeSnapshotAsync(Arg.Any<Stream>(), Arg.Any<string>(), Arg.Any<CancellationToken>())
|
||||
.Returns(Task.CompletedTask);
|
||||
return snapshotService;
|
||||
}
|
||||
|
||||
@@ -69,8 +75,12 @@ public class SnapshotReconnectRegressionTests
|
||||
var oplogStore = Substitute.For<IOplogStore>();
|
||||
oplogStore.GetLastEntryHashAsync(Arg.Any<string>(), Arg.Any<CancellationToken>())
|
||||
.Returns(localHeadHash);
|
||||
oplogStore.GetLastEntryHashAsync(Arg.Any<string>(), Arg.Any<string>(), Arg.Any<CancellationToken>())
|
||||
.Returns(localHeadHash);
|
||||
oplogStore.ApplyBatchAsync(Arg.Any<IEnumerable<OplogEntry>>(), Arg.Any<CancellationToken>())
|
||||
.Returns(Task.CompletedTask);
|
||||
oplogStore.ApplyBatchAsync(Arg.Any<IEnumerable<OplogEntry>>(), Arg.Any<string>(), Arg.Any<CancellationToken>())
|
||||
.Returns(Task.CompletedTask);
|
||||
return oplogStore;
|
||||
}
|
||||
|
||||
@@ -84,6 +94,8 @@ public class SnapshotReconnectRegressionTests
|
||||
null);
|
||||
client.GetChainRangeAsync(Arg.Any<string>(), Arg.Any<string>(), Arg.Any<CancellationToken>())
|
||||
.Returns(_ => Task.FromException<List<OplogEntry>>(new SnapshotRequiredException()));
|
||||
client.GetChainRangeAsync(Arg.Any<string>(), Arg.Any<string>(), Arg.Any<string>(), Arg.Any<CancellationToken>())
|
||||
.Returns(_ => Task.FromException<List<OplogEntry>>(new SnapshotRequiredException()));
|
||||
return client;
|
||||
}
|
||||
|
||||
@@ -109,19 +121,38 @@ public class SnapshotReconnectRegressionTests
|
||||
store.EnsurePeerRegisteredAsync(Arg.Any<string>(), Arg.Any<string>(), Arg.Any<PeerType>(),
|
||||
Arg.Any<CancellationToken>())
|
||||
.Returns(Task.CompletedTask);
|
||||
store.EnsurePeerRegisteredAsync(Arg.Any<string>(), Arg.Any<string>(), Arg.Any<PeerType>(), Arg.Any<string>(),
|
||||
Arg.Any<CancellationToken>())
|
||||
.Returns(Task.CompletedTask);
|
||||
store.UpdateConfirmationAsync(Arg.Any<string>(), Arg.Any<string>(), Arg.Any<HlcTimestamp>(), Arg.Any<string>(),
|
||||
Arg.Any<CancellationToken>())
|
||||
.Returns(Task.CompletedTask);
|
||||
store.UpdateConfirmationAsync(Arg.Any<string>(), Arg.Any<string>(), Arg.Any<HlcTimestamp>(), Arg.Any<string>(),
|
||||
Arg.Any<string>(), Arg.Any<CancellationToken>())
|
||||
.Returns(Task.CompletedTask);
|
||||
store.GetConfirmationsAsync(Arg.Any<CancellationToken>()).Returns(Array.Empty<PeerOplogConfirmation>());
|
||||
store.GetConfirmationsAsync(Arg.Any<string>(), Arg.Any<CancellationToken>())
|
||||
.Returns(Array.Empty<PeerOplogConfirmation>());
|
||||
store.GetConfirmationsForPeerAsync(Arg.Any<string>(), Arg.Any<CancellationToken>())
|
||||
.Returns(Array.Empty<PeerOplogConfirmation>());
|
||||
store.GetConfirmationsForPeerAsync(Arg.Any<string>(), Arg.Any<string>(), Arg.Any<CancellationToken>())
|
||||
.Returns(Array.Empty<PeerOplogConfirmation>());
|
||||
store.RemovePeerTrackingAsync(Arg.Any<string>(), Arg.Any<CancellationToken>()).Returns(Task.CompletedTask);
|
||||
store.RemovePeerTrackingAsync(Arg.Any<string>(), Arg.Any<string>(), Arg.Any<CancellationToken>())
|
||||
.Returns(Task.CompletedTask);
|
||||
store.GetActiveTrackedPeersAsync(Arg.Any<CancellationToken>()).Returns(Array.Empty<string>());
|
||||
store.GetActiveTrackedPeersAsync(Arg.Any<string>(), Arg.Any<CancellationToken>()).Returns(Array.Empty<string>());
|
||||
store.ExportAsync(Arg.Any<CancellationToken>()).Returns(Array.Empty<PeerOplogConfirmation>());
|
||||
store.ExportAsync(Arg.Any<string>(), Arg.Any<CancellationToken>())
|
||||
.Returns(Array.Empty<PeerOplogConfirmation>());
|
||||
store.ImportAsync(Arg.Any<IEnumerable<PeerOplogConfirmation>>(), Arg.Any<CancellationToken>())
|
||||
.Returns(Task.CompletedTask);
|
||||
store.ImportAsync(Arg.Any<IEnumerable<PeerOplogConfirmation>>(), Arg.Any<string>(), Arg.Any<CancellationToken>())
|
||||
.Returns(Task.CompletedTask);
|
||||
store.MergeAsync(Arg.Any<IEnumerable<PeerOplogConfirmation>>(), Arg.Any<CancellationToken>())
|
||||
.Returns(Task.CompletedTask);
|
||||
store.MergeAsync(Arg.Any<IEnumerable<PeerOplogConfirmation>>(), Arg.Any<string>(), Arg.Any<CancellationToken>())
|
||||
.Returns(Task.CompletedTask);
|
||||
return store;
|
||||
}
|
||||
|
||||
@@ -136,6 +167,8 @@ public class SnapshotReconnectRegressionTests
|
||||
var snapshotMetadataStore = CreateSnapshotMetadataStore();
|
||||
snapshotMetadataStore.GetSnapshotHashAsync(Arg.Any<string>(), Arg.Any<CancellationToken>())
|
||||
.Returns("snapshot-boundary-hash");
|
||||
snapshotMetadataStore.GetSnapshotHashAsync(Arg.Any<string>(), Arg.Any<string>(), Arg.Any<CancellationToken>())
|
||||
.Returns("snapshot-boundary-hash");
|
||||
var snapshotService = CreateSnapshotService();
|
||||
|
||||
var orch = new TestableSyncOrchestrator(
|
||||
@@ -165,7 +198,7 @@ public class SnapshotReconnectRegressionTests
|
||||
// Assert
|
||||
result.ShouldBe("Success");
|
||||
await client.DidNotReceive()
|
||||
.GetChainRangeAsync(Arg.Any<string>(), Arg.Any<string>(), Arg.Any<CancellationToken>());
|
||||
.GetChainRangeAsync(Arg.Any<string>(), Arg.Any<string>(), Arg.Any<string>(), Arg.Any<CancellationToken>());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -179,6 +212,8 @@ public class SnapshotReconnectRegressionTests
|
||||
var snapshotMetadataStore = CreateSnapshotMetadataStore();
|
||||
snapshotMetadataStore.GetSnapshotHashAsync(Arg.Any<string>(), Arg.Any<CancellationToken>())
|
||||
.Returns("snapshot-boundary-hash");
|
||||
snapshotMetadataStore.GetSnapshotHashAsync(Arg.Any<string>(), Arg.Any<string>(), Arg.Any<CancellationToken>())
|
||||
.Returns("snapshot-boundary-hash");
|
||||
var snapshotService = CreateSnapshotService();
|
||||
|
||||
var orch = new TestableSyncOrchestrator(
|
||||
@@ -208,7 +243,11 @@ public class SnapshotReconnectRegressionTests
|
||||
await Should.ThrowAsync<SnapshotRequiredException>(async () =>
|
||||
await orch.TestProcessInboundBatchAsync(client, "remote-node", entries, CancellationToken.None));
|
||||
|
||||
await client.Received(1).GetChainRangeAsync(Arg.Any<string>(), Arg.Any<string>(), Arg.Any<CancellationToken>());
|
||||
await client.Received(1).GetChainRangeAsync(
|
||||
Arg.Any<string>(),
|
||||
Arg.Any<string>(),
|
||||
Arg.Any<string>(),
|
||||
Arg.Any<CancellationToken>());
|
||||
}
|
||||
|
||||
// Subclass to expose private method
|
||||
@@ -283,4 +322,4 @@ public class SnapshotReconnectRegressionTests
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user