Integration Tests with EventStore

Hi,

I’m trying to integrate EventStore with the Brighter OSS project.
As such I’m creating integration tests between the two.
I thought this would be best achieved by creating an Embedded instance (via EmbeddedVNodeBuilder).
However the projections the application relies upon can’t seem to be run in (when I use the ProjectionsManager to run the required projectiosn in I see errors).
I’ve tried running Embedded with IPEndPoint(IPAddress.None, 0) (preferable) but the Exception is (Exit reason: The requested address is not valid in its context)
I’ve tried switching to a fixed loopback address IPEndPoint(IPAddress.Loopback, 1112) (preferable) but the Exception is (EventStore.ClientAPI.Exceptions.ProjectionCommandFailedExceptionServer returned 408 (Server was unable to handle request in time) for POST on http://127.0.0.1:2114/projections/continuous?name=commandStore-Id&type=JS&emit=1)

So. I’m sure I’m missing something but it’s far from clear. I’ve checked posts here (I’ve seen Greg allude to the need to set Paths and wire up Controllers but that sounds a little like peering into the guts… ).
I’ve peeked at some tests in the EventSource code and they allude to configuring / using miniweb.

And so for the question:

  • Should I be using an Embedded instance (via EmbeddedVNodeBuilder) in IntegrationTests ?
    - If so how can I configure projections?
  • Otherwise how should I run IntegrationTests againt Event Store?

I’m rather starting out with EventStore, have consumed the Blogs posts and Doco I can find, so sorry if I’m making a beginners faux pas.

Cheers
ian

Additional info, here’s code I’m using to setup ES:

var noneIp = new
IPEndPoint(IPAddress.None, 0);

s_eventStoreNode =
EmbeddedVNodeBuilder

.AsSingleNode()

.RunInMemory()

//.WithExternalTcpOn(noneIp)
// tried this first

//.WithInternalTcpOn(noneIp)

//.WithExternalHttpOn(noneIp)

//.WithInternalHttpOn(noneIp)

.WithInternalTcpOn(new
IPEndPoint(IPAddress.Loopback, 1112))

.WithExternalHttpOn(new
IPEndPoint(IPAddress.Loopback, 1113))

.WithInternalHttpOn(new
IPEndPoint(IPAddress.Loopback, 2112))

.WithExternalHttpOn(new
IPEndPoint(IPAddress.Loopback, 2114))

.RunProjections(ProjectionsMode.All)

.Build();

s_eventStoreNode.Start();

s_eventStore =
EmbeddedEventStoreConnection.Create(s_eventStoreNode);

s_eventStore.ConnectAsync();

//once connected

var pm = new
ProjectionsManager(new ConsoleLogger(), new IPEndPoint(IPAddress.Loopback,
2114), new TimeSpan(0, 0, 30));

pm.CreateContinuousAsync(projectName,
projectionSource)

.Wait();

We run our integrationtests on the default closternode (v3.1.0). I haven’t yet experienced any async-related brittlenes in the tests yet. We use the --inmem-db option on the node, and use the ProjectionManager in C# API. Works so far (1½ week), but it would be cool to have som instrumentation events (maybe they already exist?) in case you have large integrations (and have to process a lot of events in the projections).

/Julian