public GetEventStoreAggregateRepositoryTests() { _id = "aggregate-" + Guid.NewGuid().ToString("n"); var source = new TaskCompletionSource<bool>(); _eventStoreInitialized = source.Task; var notListening = new IPEndPoint(IPAddress.None, 0); _node = EmbeddedVNodeBuilder .AsSingleNode() .WithExternalTcpOn(notListening) .WithInternalTcpOn(notListening) .WithExternalHttpOn(notListening) .WithInternalHttpOn(notListening) .RunProjections(ProjectionsMode.All); _node.NodeStatusChanged += (_, e) => { if (e.NewVNodeState != VNodeState.Master) { return; } source.SetResult(true); }; _connection = EmbeddedEventStoreConnection.Create(_node); _sut = new GetEventStoreAggregateRepository(_connection, new DefaultGetEventStoreJsonSerializer()); _node.Start(); }
public static void Start() { var node = EmbeddedVNodeBuilder. AsSingleNode(). OnDefaultEndpoints(). RunInMemory(). Build(); node.Start(); var tcs = new TaskCompletionSource<object>(); node.NodeStatusChanged += (sender, args) => { if (args.NewVNodeState == VNodeState.Master) tcs.SetResult(null); }; tcs.Task.Wait(); Node = node; Credentials = new UserCredentials("admin", "changeit"); var connection = EmbeddedEventStoreConnection.Create(Node); // This does not work, because ... ††† JEZUS ††† //var connection = EventStoreConnection.Create( // ConnectionSettings.Create().SetDefaultUserCredentials(Credentials).UseDebugLogger(), // new IPEndPoint(Opts.InternalIpDefault, Opts.ExternalTcpPortDefault)); connection.ConnectAsync().Wait(); Connection = connection; }
public static void Stop() { var connection = Connection; if (connection != null) { connection.Close(); connection.Dispose(); Connection = null; } var node = Node; if (node != null) { node.Stop(); Node = null; } Credentials = null; }
public ResolvedEventtDispatcherTests() { var source = new TaskCompletionSource<bool>(); _nodeStarted = source.Task; var notListening = new IPEndPoint(IPAddress.None, 0); _node = EmbeddedVNodeBuilder.AsSingleNode() .WithInternalTcpOn(notListening) .WithExternalTcpOn(notListening) .WithInternalHttpOn(notListening) .WithExternalHttpOn(notListening); _node.NodeStatusChanged += (_, e) => { if(e.NewVNodeState != VNodeState.Master) return; source.SetResult(true); }; _node.Start(); _connection = EmbeddedEventStoreConnection.Create(_node); }
public EmbeddedEventStoreConnectionFactory() { var noIp = new IPEndPoint(IPAddress.None, 0); _vnode = EmbeddedVNodeBuilder.AsSingleNode() .RunInMemory() .WithExternalTcpOn(noIp) .WithInternalTcpOn(noIp) .WithExternalHttpOn(noIp) .WithInternalHttpOn(noIp) .Build(); _status = Observable.FromEventPattern<VNodeStatusChangeArgs>( h => _vnode.NodeStatusChanged += h, h => _vnode.NodeStatusChanged -= h) .Select(e => e.EventArgs.NewVNodeState) .Log(new ConsoleLogger(), "VNode.State") .Publish(VNodeState.Unknown); _statusSubscription.Disposable = _status.Connect(); _vnode.Start(); _conn = EmbeddedEventStoreConnection.Create(_vnode); }
public ProcessManagerHandlerTests() { TestLogger.Configure(); var source = new TaskCompletionSource<bool>(); _nodeStarted = source.Task; var notListening = new IPEndPoint(IPAddress.None, 0); _node = EmbeddedVNodeBuilder.AsSingleNode() .WithInternalTcpOn(notListening) .WithExternalTcpOn(notListening) .WithInternalHttpOn(notListening) .WithExternalHttpOn(notListening); _node.NodeStatusChanged += (_, e) => { if(e.NewVNodeState != VNodeState.Master) { return; } source.SetResult(true); }; _node.Start(); _connection = EmbeddedEventStoreConnection.Create(_node); _commands = new List<object>(); _serializer = new DefaultGetEventStoreJsonSerializer(); var commandHandlerModule = new CommandHandlerModule(); commandHandlerModule.For<ShipOrder>() .Handle((message, _) => { _commands.Add(message.Command); return Task.FromResult(0); }); commandHandlerModule.For<BillCustomer>() .Handle((message, _) => { _commands.Add(message.Command); return Task.FromResult(0); }); var resolver = new CommandHandlerResolver(commandHandlerModule); var commandHandlingMiddleware = CommandHandlingMiddleware.HandleCommands(new CommandHandlingSettings(resolver)); var embeddedClient = commandHandlingMiddleware.CreateEmbeddedClient(); var processHandler = ProcessHandler.For<OrderFulfillment, CompareablePosition>( (command, token) => embeddedClient.PutCommand(command, Guid.NewGuid()), new EventStoreClientProcessManagerCheckpointRepository(_connection, _serializer)) .CorrelateBy<OrderPlaced>(e => e.DomainEvent.OrderId.ToString()) .CorrelateBy<OrderShipped>(e => e.DomainEvent.OrderId.ToString()) .CorrelateBy<BillingSucceeded>(e => e.DomainEvent.OrderId.ToString()) .CorrelateBy<BillingFailed>(e => e.DomainEvent.OrderId.ToString()); _dispatcher = new ResolvedEventDispatcher(_connection, new DefaultGetEventStoreJsonSerializer(), new InMemoryCheckpointRepository(), processHandler.BuildHandlerResolver(), () => { }); _orderId = Guid.NewGuid(); _streamId = ("orders-" + _orderId.ToString("n")).FormatStreamIdWithBucket(); _correlationId = _orderId.ToString(); }
/// <summary> /// Creates a new embedded <see cref="IEventStoreConnection"/> to single node using specific <see cref="ConnectionSettings"/> /// </summary> /// <param name="eventStore">The <see cref="ClusterVNode" /> to connect to. The node must already be running.</param> /// <param name="connectionSettings">The <see cref="ConnectionSettings"/> to apply to the new connection</param> /// <param name="connectionName">Optional name of connection (will be generated automatically, if not provided)</param> /// <returns></returns> public static IEventStoreConnection Create(ClusterVNode eventStore, ConnectionSettings connectionSettings, string connectionName = null) { return Create(eventStore.MainQueue, eventStore.MainBus, eventStore.InternalAuthenticationProvider, connectionSettings, connectionName); }
/// <summary> /// Creates a new embedded <see cref="IEventStoreConnection"/> to single node with default connection settings /// </summary> /// <param name="eventStore">The <see cref="ClusterVNode" /> to connect to. The node must already be running.</param> /// <param name="connectionName">Optional name of connection (will be generated automatically, if not provided)</param> /// <returns></returns> public static IEventStoreConnection Create(ClusterVNode eventStore, string connectionName = null) { return Create(eventStore, ConnectionSettings.Default, connectionName); }