public void DistributedThreadFallbacksToLocalExecutionIfNoRemoteServiceIsAvailable() { var listToProcess = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; Func<List<int>, int, int, int, int?> function = (list, start, stop, threshold) => { for (var i = start; i < stop; i++) { if (list[i] > threshold) { return list[i]; } } return null; }; var connectionManager = new FakeConnectionManager(); var dt1 = Bluepath.Threading.DistributedThread<Func<List<int>, int, int, int, int?>>.Create( function, null, new RoundRobinLocalScheduler(new ServiceUri[0]), Threading.DistributedThread.ExecutorSelectionMode.RemoteOrLocal); dt1.Start(listToProcess, 0, listToProcess.Count, 5); dt1.Join(); Convert.ToInt32(dt1.Result).ShouldBe(6); }
public void It_sends_all_messages_at_once_after_transaction_is_committed() { var connectionMock = MockRepository.GenerateMock <IEventStoreConnection>(); connectionMock.Expect(x => x.AppendToStream(Arg <string> .Is.Anything, Arg <int> .Is.Anything, Arg <IEnumerable <EventData> > .Is.Anything, Arg <UserCredentials> .Is.Anything)).Repeat.Once().Return(new WriteResult()); var connectionManager = new FakeConnectionManager() { Connection = connectionMock }; var uow = new TransactionalUnitOfWork(connectionManager) { EndpointAddress = new Address("q", "m") }; using (var tx = new TransactionScope()) { uow.Send(new EventData(Guid.NewGuid(), "", false, new byte[0], new byte[0])); uow.Send(new EventData(Guid.NewGuid(), "", false, new byte[0], new byte[0])); tx.Complete(); } connectionMock.VerifyAllExpectations(); }
public void It_sends_all_messages_at_once_after_transaction_is_committed() { var connectionMock = MockRepository.GenerateMock<IEventStoreConnection>(); connectionMock.Expect(x => x.AppendToStream(Arg<string>.Is.Anything, Arg<int>.Is.Anything, Arg<IEnumerable<EventData>>.Is.Anything, Arg<UserCredentials>.Is.Anything)).Repeat.Once().Return(new WriteResult()); var connectionManager = new FakeConnectionManager() { Connection = connectionMock }; var uow = new TransactionalUnitOfWork(connectionManager) { EndpointAddress = new Address("q", "m") }; using (var tx = new TransactionScope()) { uow.Send(new EventData(Guid.NewGuid(), "", false, new byte[0], new byte[0])); uow.Send(new EventData(Guid.NewGuid(), "", false, new byte[0], new byte[0])); tx.Complete(); } connectionMock.VerifyAllExpectations(); }
public void It_does_not_send_events_to_store_before_transaction_is_committed() { var connectionMock = MockRepository.GenerateMock<IEventStoreConnection>(); connectionMock.Expect(x => x.AppendToStream(Arg<string>.Is.Anything, Arg<int>.Is.Anything, Arg<EventData[]>.Is.Anything)).Repeat.Never(); var connectionManager = new FakeConnectionManager() { Connection = connectionMock }; var uow = new TransactionalUnitOfWork(connectionManager) { EndpointAddress = new Address("q","m") }; using (new TransactionScope()) { uow.Send(new EventData(Guid.NewGuid(), "", false, new byte[0], new byte[0])); } connectionMock.VerifyAllExpectations(); }
public void It_does_not_send_events_to_store_before_transaction_is_committed() { var connectionMock = MockRepository.GenerateMock <IEventStoreConnection>(); connectionMock.Expect(x => x.AppendToStream(Arg <string> .Is.Anything, Arg <int> .Is.Anything, Arg <EventData[]> .Is.Anything)).Repeat.Never(); var connectionManager = new FakeConnectionManager() { Connection = connectionMock }; var uow = new TransactionalUnitOfWork(connectionManager) { EndpointAddress = new Address("q", "m") }; using (new TransactionScope()) { uow.Send(new EventData(Guid.NewGuid(), "", false, new byte[0], new byte[0])); } connectionMock.VerifyAllExpectations(); }
public void ExecutesSingleThread() { var listToProcess = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; Func<List<int>, int, int, int, int?> function = (list, start, stop, threshold) => { for (var i = start; i < stop; i++) { if (list[i] > threshold) { return list[i]; } } return null; }; var connectionManager = new FakeConnectionManager(); var dt1 = Bluepath.Threading.DistributedThread<Func<List<int>, int, int, int, int?>>.Create( function, connectionManager, null, Threading.DistributedThread.ExecutorSelectionMode.LocalOnly); dt1.Start(listToProcess, 0, listToProcess.Count, 5); dt1.Join(); Convert.ToInt32(dt1.Result).ShouldBe(6); }
public void ExecutorShouldAlwaysGetDeepCopiedParameters() { Func<TestInteger, TestInteger, int> function = (__a, __b) => { var sum = __a.Value + __b.Value; __a.Value++; return sum; }; var connectionManager = new FakeConnectionManager(); var dt1 = Bluepath.Threading.DistributedThread<Func<TestInteger, TestInteger, int>>.Create( function, connectionManager, null, Threading.DistributedThread.ExecutorSelectionMode.LocalOnly); var a = new TestInteger() { Value = 2 }; var b = new TestInteger() { Value = 5 }; dt1.Start(a, b); dt1.Join(); Convert.ToInt32(dt1.Result).ShouldBe(7); a.Value.ShouldBe(2); b.Value.ShouldBe(5); }