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);
        }
Esempio n. 2
0
        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();
        }
Esempio n. 5
0
        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);
        }