Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Src/LiquidProjections.NEventStore/.nuspec
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
<releaseNotes/>
<dependencies>
<group>
<dependency id="NEventStore" version="[5.0, 6.0)"/>
<dependency id="NEventStore" version="[7.0, 8.0)"/>
<dependency id="LiquidProjections.Abstractions" version="[2.3, 4.0)"/>
</group>
</dependencies>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@
<Reference Include="LiquidProjections.Abstractions, Version=2.3.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\packages\LiquidProjections.Abstractions.2.3.0\lib\netstandard1.1\LiquidProjections.Abstractions.dll</HintPath>
</Reference>
<Reference Include="NEventStore, Version=5.2.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\packages\NEventStore.5.2.0\lib\net40\NEventStore.dll</HintPath>
<Reference Include="NEventStore, Version=7.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\packages\NEventStore.7.0.0\lib\net45\NEventStore.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
Expand Down
4 changes: 2 additions & 2 deletions Src/LiquidProjections.NEventStore/NEventStoreAdapter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ public StreamPersisterAdapter(IPersistStreams streamPersister)
public IEnumerable<Transaction> GetFrom(long? checkpoint)
{
return streamPersister
.GetFrom((!checkpoint.HasValue || checkpoint == 0) ? null : checkpoint.ToString())
.GetFrom(checkpoint ?? 0)
.Select(ToTransaction);
}

Expand All @@ -76,7 +76,7 @@ private Transaction ToTransaction(ICommit commit)
{
Id = commit.CommitId.ToString(),
StreamId = commit.StreamId,
Checkpoint = long.Parse(commit.CheckpointToken),
Checkpoint = commit.CheckpointToken,
TimeStampUtc = commit.CommitStamp,
Events = new List<EventEnvelope>(commit.Events.Select(@event => new EventEnvelope
{
Expand Down
2 changes: 1 addition & 1 deletion Src/LiquidProjections.NEventStore/packages.config
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@
<package id="LiquidProjections.Abstractions" version="2.3.0" targetFramework="net45" />
<package id="LiquidProjections.PollingEventStore.Sources" version="1.1.5" targetFramework="net45" />
<package id="Microsoft.CSharp" version="4.3.0" targetFramework="net45" />
<package id="NEventStore" version="5.2.0" targetFramework="net45" />
<package id="NEventStore" version="7.0.0" targetFramework="net45" />
<package id="System.Dynamic.Runtime" version="4.3.0" targetFramework="net45" />
</packages>
14 changes: 4 additions & 10 deletions Tests/LiquidProjections.NEventStore.Specs/CommitBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public class CommitBuilder : TestDataBuilder<Commit>
private string streamId = Guid.NewGuid().ToString();
private int sequence = ++nextSequence;
private static int nextSequence = 1;
private string checkpointToken = "1";
private long checkpoint = 1;
private Guid commitId = Guid.NewGuid();

protected override Commit OnBuild()
Expand All @@ -27,8 +27,8 @@ protected override Commit OnBuild()
});
}

long streamRevision = events.Max(e => ((Event) e.Body).Version);
return new Commit("default", streamId, (int) streamRevision, commitId, sequence, timeStamp, checkpointToken,
long streamRevision = events.Max(e => ((Event)e.Body).Version);
return new Commit("default", streamId, (int)streamRevision, commitId, sequence, timeStamp, checkpoint,
new Dictionary<string, object>(), events);
}

Expand Down Expand Up @@ -81,15 +81,9 @@ public CommitBuilder WithSequence(int sequence)
return this;
}

public CommitBuilder WithCheckpoint(string checkpointToken)
{
this.checkpointToken = checkpointToken;
return this;
}

public CommitBuilder WithCheckpoint(long checkpoint)
{
checkpointToken = checkpoint.ToString();
this.checkpoint = checkpoint;
return this;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\..\packages\xunit.runner.visualstudio.2.4.1\build\net20\xunit.runner.visualstudio.props" Condition="Exists('..\..\packages\xunit.runner.visualstudio.2.4.1\build\net20\xunit.runner.visualstudio.props')" />
<Import Project="..\..\packages\xunit.core.2.4.1\build\xunit.core.props" Condition="Exists('..\..\packages\xunit.core.2.4.1\build\xunit.core.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
Expand All @@ -11,6 +13,8 @@
<AssemblyName>LiquidProjections.NEventStore.Specs</AssemblyName>
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Expand Down Expand Up @@ -49,8 +53,8 @@
<Reference Include="LiquidProjections.Abstractions, Version=2.3.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\packages\LiquidProjections.Abstractions.2.3.0\lib\netstandard1.1\LiquidProjections.Abstractions.dll</HintPath>
</Reference>
<Reference Include="NEventStore, Version=5.2.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\packages\NEventStore.5.2.0\lib\net40\NEventStore.dll</HintPath>
<Reference Include="NEventStore, Version=7.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\packages\NEventStore.7.0.0\lib\net45\NEventStore.dll</HintPath>
</Reference>
<Reference Include="Ploeh.AutoFixture, Version=3.50.0.0, Culture=neutral, PublicKeyToken=b24654c590009d4f, processorArchitecture=MSIL">
<HintPath>..\..\packages\AutoFixture.3.50.3\lib\net40\Ploeh.AutoFixture.dll</HintPath>
Expand All @@ -64,16 +68,16 @@
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
<Reference Include="xunit.abstractions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c, processorArchitecture=MSIL">
<HintPath>..\..\packages\xunit.abstractions.2.0.1\lib\net35\xunit.abstractions.dll</HintPath>
<HintPath>..\..\packages\xunit.abstractions.2.0.3\lib\net35\xunit.abstractions.dll</HintPath>
</Reference>
<Reference Include="xunit.assert, Version=2.2.0.3545, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c, processorArchitecture=MSIL">
<HintPath>..\..\packages\xunit.assert.2.2.0\lib\netstandard1.1\xunit.assert.dll</HintPath>
<Reference Include="xunit.assert, Version=2.4.1.0, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c, processorArchitecture=MSIL">
<HintPath>..\..\packages\xunit.assert.2.4.1\lib\netstandard1.1\xunit.assert.dll</HintPath>
</Reference>
<Reference Include="xunit.core, Version=2.2.0.3545, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c, processorArchitecture=MSIL">
<HintPath>..\..\packages\xunit.extensibility.core.2.2.0\lib\netstandard1.1\xunit.core.dll</HintPath>
<Reference Include="xunit.core, Version=2.4.1.0, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c, processorArchitecture=MSIL">
<HintPath>..\..\packages\xunit.extensibility.core.2.4.1\lib\net452\xunit.core.dll</HintPath>
</Reference>
<Reference Include="xunit.execution.desktop, Version=2.2.0.3545, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c, processorArchitecture=MSIL">
<HintPath>..\..\packages\xunit.extensibility.execution.2.2.0\lib\net452\xunit.execution.desktop.dll</HintPath>
<Reference Include="xunit.execution.desktop, Version=2.4.1.0, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c, processorArchitecture=MSIL">
<HintPath>..\..\packages\xunit.extensibility.execution.2.4.1\lib\net452\xunit.execution.desktop.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
Expand All @@ -97,7 +101,19 @@
<ItemGroup>
<Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
</ItemGroup>
<ItemGroup>
<Analyzer Include="..\..\packages\xunit.analyzers.0.10.0\analyzers\dotnet\cs\xunit.analyzers.dll" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\..\packages\xunit.core.2.4.1\build\xunit.core.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\xunit.core.2.4.1\build\xunit.core.props'))" />
<Error Condition="!Exists('..\..\packages\xunit.core.2.4.1\build\xunit.core.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\xunit.core.2.4.1\build\xunit.core.targets'))" />
<Error Condition="!Exists('..\..\packages\xunit.runner.visualstudio.2.4.1\build\net20\xunit.runner.visualstudio.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\xunit.runner.visualstudio.2.4.1\build\net20\xunit.runner.visualstudio.props'))" />
</Target>
<Import Project="..\..\packages\xunit.core.2.4.1\build\xunit.core.targets" Condition="Exists('..\..\packages\xunit.core.2.4.1\build\xunit.core.targets')" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,11 @@ public When_the_persistency_engine_is_temporarily_unavailable()
{
Given(() =>
{
UseThe((ICommit) new CommitBuilder().WithCheckpoint("123").Build());
UseThe((ICommit)new CommitBuilder().WithCheckpoint(123).Build());

var eventStore = A.Fake<IPersistStreams>();
A.CallTo(() => eventStore.GetFrom(A<string>.Ignored)).Returns(new[] {The<ICommit>()});
A.CallTo(() => eventStore.GetFrom(A<string>.Ignored)).Throws(new ApplicationException()).Once();
A.CallTo(() => eventStore.GetFrom(A<long>.Ignored)).Returns(new[] { The<ICommit>() });
A.CallTo(() => eventStore.GetFrom(A<long>.Ignored)).Throws(new ApplicationException()).Once();

var adapter = new NEventStoreAdapter(eventStore, 11, pollingInterval, 100, () => DateTime.UtcNow);

Expand Down Expand Up @@ -73,10 +73,10 @@ public When_a_commit_is_persisted()
{
Given(() =>
{
UseThe((ICommit) new CommitBuilder().WithCheckpoint("123").Build());
UseThe((ICommit)new CommitBuilder().WithCheckpoint(123).Build());

var eventStore = A.Fake<IPersistStreams>();
A.CallTo(() => eventStore.GetFrom(A<string>.Ignored)).Returns(new[] {The<ICommit>()});
A.CallTo(() => eventStore.GetFrom(0)).Returns(new[] { The<ICommit>() });

var adapter = new NEventStoreAdapter(eventStore, 11, pollingInterval, 100, () => DateTime.UtcNow);

Expand Down Expand Up @@ -105,7 +105,7 @@ public async Task Then_it_should_convert_the_commit_details_to_a_transaction()

var commit = The<ICommit>();
actualTransaction.Id.Should().Be(commit.CommitId.ToString());
actualTransaction.Checkpoint.Should().Be(long.Parse(commit.CheckpointToken));
actualTransaction.Checkpoint.Should().Be(commit.CheckpointToken);
actualTransaction.TimeStampUtc.Should().Be(commit.CommitStamp);
actualTransaction.StreamId.Should().Be(commit.StreamId);

Expand All @@ -122,7 +122,7 @@ public When_requesting_a_subscription_beyond_the_highest_available_checkpoint()
Given(() =>
{
var eventStore = A.Fake<IPersistStreams>();
A.CallTo(() => eventStore.GetFrom("999")).Returns(new ICommit[0]);
A.CallTo(() => eventStore.GetFrom(999)).Returns(new ICommit[0]);

var adapter = new NEventStoreAdapter(eventStore, 11, 1.Seconds(), 100, () => DateTime.UtcNow);

Expand Down Expand Up @@ -167,15 +167,14 @@ public When_there_are_no_more_commits()
{
var streamPersister = A.Fake<IPersistStreams>();

A.CallTo(() => streamPersister.GetFrom(A<string>.Ignored)).ReturnsLazily<IEnumerable<ICommit>, string>(checkpointToken =>
A.CallTo(() => streamPersister.GetFrom(A<long>.Ignored)).ReturnsLazily<IEnumerable<ICommit>, long>(checkPoint =>
{
pollingTimeStamps.Add(new PollingCall(checkpointToken, DateTime.UtcNow));
pollingTimeStamps.Add(new PollingCall(checkPoint, DateTime.UtcNow));
if (pollingTimeStamps.Count == 4)
{
pollingCompleted.SetResult(true);
}

long checkPoint = (checkpointToken != null) ? long.Parse(checkpointToken) : 0;
long offsetToDetectAheadSubscriber = 1;

if (checkPoint <= (subscriptionCheckpoint - offsetToDetectAheadSubscriber))
Expand Down Expand Up @@ -212,19 +211,19 @@ public async Task Then_it_should_wait_for_the_polling_interval_before_polling_ag
PollingCall lastCall = pollingTimeStamps.Last();

lastCall.TimeStampUtc.Should().BeAtLeast(pollingInterval).After(lastButOneCall.TimeStampUtc);
lastCall.CheckpointToken.Should().Be(lastButOneCall.CheckpointToken);
lastCall.Checkpoint.Should().Be(lastButOneCall.Checkpoint);
}
}

internal class PollingCall
{
public PollingCall(string checkpointToken, DateTime timeStampUtc)
public PollingCall(long checkpoint, DateTime timeStampUtc)
{
CheckpointToken = checkpointToken;
Checkpoint = checkpoint;
TimeStampUtc = timeStampUtc;
}

public string CheckpointToken { get; set; }
public long Checkpoint { get; set; }
public DateTime TimeStampUtc { get; set; }
}

Expand All @@ -236,12 +235,12 @@ public When_a_commit_is_already_projected()
{
Given(() =>
{
ICommit projectedCommit = new CommitBuilder().WithCheckpoint("123").Build();
ICommit unprojectedCommit = new CommitBuilder().WithCheckpoint("124").Build();
ICommit projectedCommit = new CommitBuilder().WithCheckpoint(123).Build();
ICommit unprojectedCommit = new CommitBuilder().WithCheckpoint(124).Build();

var eventStore = A.Fake<IPersistStreams>();
A.CallTo(() => eventStore.GetFrom(A<string>.Ignored)).Returns(new[] {projectedCommit, unprojectedCommit});
A.CallTo(() => eventStore.GetFrom("123")).Returns(new[] {unprojectedCommit});
A.CallTo(() => eventStore.GetFrom(A<long>.Ignored)).Returns(new[] { projectedCommit, unprojectedCommit });
A.CallTo(() => eventStore.GetFrom(123)).Returns(new[] { unprojectedCommit });

var adapter = new NEventStoreAdapter(eventStore, 11, 1.Seconds(), 100, () => DateTime.UtcNow);
WithSubject(_ => adapter.Subscribe);
Expand Down Expand Up @@ -279,7 +278,7 @@ public When_disposing()
Given(() =>
{
var eventStore = A.Fake<IPersistStreams>();
A.CallTo(() => eventStore.GetFrom(A<string>.Ignored)).Returns(new ICommit[0]);
A.CallTo(() => eventStore.GetFrom(A<long>.Ignored)).Returns(new ICommit[0]);

WithSubject(_ => new NEventStoreAdapter(eventStore, 11, 500.Milliseconds(), 100, () => utcNow));

Expand Down Expand Up @@ -313,7 +312,7 @@ public When_disposing_subscription()
Given(() =>
{
var eventStore = A.Fake<IPersistStreams>();
A.CallTo(() => eventStore.GetFrom(A<string>.Ignored)).Returns(new ICommit[0]);
A.CallTo(() => eventStore.GetFrom(A<long>.Ignored)).Returns(new ICommit[0]);

WithSubject(_ => new NEventStoreAdapter(eventStore, 11, pollingInterval, 100, () => utcNow));

Expand Down Expand Up @@ -353,13 +352,9 @@ public class
Given(() =>
{
eventStore = A.Fake<IPersistStreams>();
A.CallTo(() => eventStore.GetFrom(A<string>.Ignored)).ReturnsLazily(call =>
A.CallTo(() => eventStore.GetFrom(A<long>.Ignored)).ReturnsLazily(call =>
{
string checkpointString = call.GetArgument<string>(0);

long checkpoint = string.IsNullOrEmpty(checkpointString)
? 0
: long.Parse(checkpointString, CultureInfo.InvariantCulture);
long checkpoint = call.GetArgument<long>(0);

aSubscriptionStartedLoading.Set();

Expand All @@ -373,7 +368,7 @@ public class

return checkpoint > 0
? new ICommit[0]
: new ICommit[] {new CommitBuilder().WithCheckpoint("1").Build()};
: new ICommit[] { new CommitBuilder().WithCheckpoint(1).Build() };
});

var adapter = new NEventStoreAdapter(eventStore, 11, pollingInterval, 100, () => DateTime.UtcNow);
Expand Down
16 changes: 9 additions & 7 deletions Tests/LiquidProjections.NEventStore.Specs/packages.config
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,13 @@
<package id="FakeItEasy" version="3.4.2" targetFramework="net452" />
<package id="FluentAssertions" version="4.19.3" targetFramework="net452" />
<package id="LiquidProjections.Abstractions" version="2.3.0" targetFramework="net452" />
<package id="NEventStore" version="5.2.0" targetFramework="net452" />
<package id="xunit" version="2.2.0" targetFramework="net452" />
<package id="xunit.abstractions" version="2.0.1" targetFramework="net452" />
<package id="xunit.assert" version="2.2.0" targetFramework="net452" />
<package id="xunit.core" version="2.2.0" targetFramework="net452" />
<package id="xunit.extensibility.core" version="2.2.0" targetFramework="net452" />
<package id="xunit.extensibility.execution" version="2.2.0" targetFramework="net452" />
<package id="NEventStore" version="7.0.0" targetFramework="net452" />
<package id="xunit" version="2.4.1" targetFramework="net452" />
<package id="xunit.abstractions" version="2.0.3" targetFramework="net452" />
<package id="xunit.analyzers" version="0.10.0" targetFramework="net452" />
<package id="xunit.assert" version="2.4.1" targetFramework="net452" />
<package id="xunit.core" version="2.4.1" targetFramework="net452" />
<package id="xunit.extensibility.core" version="2.4.1" targetFramework="net452" />
<package id="xunit.extensibility.execution" version="2.4.1" targetFramework="net452" />
<package id="xunit.runner.visualstudio" version="2.4.1" targetFramework="net452" developmentDependency="true" />
</packages>