Ejemplo n.º 1
0
        public void ByAllProperties_FalseOnUnMatchedObjectInstances()
        {
            A a = new A(5, "Foo"),
              b = new A(3, "Bar");

            Assert.NotEqual(a, b, GenericEqualityComparer <A> .ByAllMembers());
        }
Ejemplo n.º 2
0
        public void Constructor_StoresException()
        {
            var exception = new ArgumentNullException("foo");
            var poison    = new Poison <int>(42, exception);

            Assert.Equal(new ExceptionDetails(exception), poison.Exception, GenericEqualityComparer <ExceptionDetails> .ByAllMembers());
        }
Ejemplo n.º 3
0
        public void ByAllProperties_TrueOnMatchedObjectInstancesWithCustomComparer()
        {
            B b  = new B(6, new A(5, "Foo")),
              b2 = new B(6, new A(5, "Bar"));

            Assert.Equal(b, b2, GenericEqualityComparer <B> .ByAllMembers(new[] { A.IntegerOnlyComparer }));
        }
        public void Queue_GeneratesExpectedOnQueueAction()
        {
            var actionType  = DurableJobQueueActionType.Queued;
            var observation = SubscribeForAction(actionType, (store, item, poison) =>
            {
                store.Queue(item);
            });

            Assert.True(observation.Action.ActionType == actionType && GenericEqualityComparer <TQueue> .ByAllMembers().Equals(observation.Action.Input, observation.Input));
        }
Ejemplo n.º 5
0
        public void Subscribe_ResumesInProperQueuePositionAfterReadingMaximumDuringInterval()
        {
            int maxToSlurp = 3;
            var jobStorage = A.Fake <IDurableJobQueue <Incoming, Incoming> >();
            var scheduler  = new HistoricalScheduler();
            var monitor    = new DurableJobQueueMonitor <Incoming, Incoming>(jobStorage, maxToSlurp, DurableJobQueueMonitor.DefaultPollingInterval,
                                                                             scheduler);

            List <Incoming> incomingItems = new List <Incoming>();

            var queuedItems = Enumerable.Repeat(Item.From(new Incoming()
            {
                Id = 1
            }), 3)
                              .Concat(new []
            {
                Item.From(new Incoming()
                {
                    Id = 456
                }),
                Item.From(new Incoming()
                {
                    Id = 222
                }),
                Item.From(new Incoming()
                {
                    Id = 8714
                })
            })
                              .Concat(Enumerable.Repeat(Item.From(new Incoming()
            {
                Id = 5
            }), 2))
                              .Concat(Enumerable.Repeat(Item.From(new Incoming()
            {
                Id = 2
            }), 4))
                              .Concat(Enumerable.Repeat(Item.From(new Incoming()
            {
                Id = 3
            }), 3))
                              .ToArray();

            A.CallTo(() => jobStorage.NextQueuedItem()).ReturnsNextFromSequence(queuedItems);

            using (var subscription = monitor.Subscribe(publishedItem => { incomingItems.Add(publishedItem); }))
            {
                scheduler.AdvanceBy(monitor.PollingInterval);
                scheduler.AdvanceBy(monitor.PollingInterval);

                Assert.True(queuedItems.Take(maxToSlurp * 2)
                            .Select(item => item.Value)
                            .SequenceEqual(incomingItems, GenericEqualityComparer <Incoming> .ByAllMembers()));
            }
        }
Ejemplo n.º 6
0
        public void GetQueued_PreservesOrdering()
        {
            var storage = JobStorageFactory();

            var queueItems = Fixture.CreateMany <TQueue>(15).ToList();

            foreach (var item in queueItems)
            {
                storage.Queue(item);
            }

            Assert.True(queueItems.SequenceEqual(storage.GetQueued(), GenericEqualityComparer <TQueue> .ByAllMembers()));
        }
        public void Deleted_GeneratesExpectedOnQueueAction()
        {
            var actionType  = DurableJobQueueActionType.Deleted;
            var observation = SubscribeForAction(actionType, (store, item, poison) =>
            {
                store.Queue(item);
                store.NextQueuedItem();
                store.Poison(item, poison);
                store.Delete(poison);
            });

            Assert.True(observation.Action.ActionType == actionType &&
                        GenericEqualityComparer <TQueuePoison> .ByAllMembers().Equals(observation.Action.Poison, observation.Poison));
        }
Ejemplo n.º 8
0
        public void Poison_GetPoisoned_QueuesMatch()
        {
            var storage = JobStorageFactory();

            var item = Fixture.CreateAnonymous <TQueue>();

            storage.Queue(item);
            storage.NextQueuedItem();
            var poison = _poisonConverter(item);

            storage.Poison(item, poison);

            Assert.True(storage.GetPoisoned().SequenceEqual(new [] { poison }, GenericEqualityComparer <TQueuePoison> .
                                                            ByAllMembers()));
        }
Ejemplo n.º 9
0
        public void ResetAllPendingToQueued_PreservesOriginalOrder()
        {
            var storage = JobStorageFactory();

            var queueItems = Fixture.CreateMany <TQueue>(15).ToList();

            foreach (var item in queueItems)
            {
                storage.Queue(item);
            }

            storage.ResetAllPendingToQueued();

            List <TQueue> items = SlideItemsToPending(storage).ToList();

            Assert.True(queueItems.SequenceEqual(items, GenericEqualityComparer <TQueue> .ByAllMembers()));
        }
Ejemplo n.º 10
0
        public void GetPoisoned_PreservesOrdering()
        {
            var storage = JobStorageFactory();

            List <TQueuePoison> poisonedItems = new List <TQueuePoison>();

            foreach (var item in Fixture.CreateMany <TQueue>(15))
            {
                storage.Queue(item);
                storage.NextQueuedItem();
                var poisoned = _poisonConverter(item);
                poisonedItems.Add(poisoned);
                storage.Poison(item, poisoned);
            }

            Assert.True(poisonedItems.SequenceEqual(storage.GetPoisoned(), GenericEqualityComparer <TQueuePoison> .ByAllMembers())
                        );
        }
Ejemplo n.º 11
0
        public static void Subscribe_PublishesExactSequenceOfItemsOverMultipleElapsedIntervals()
        {
            var jobStorage = A.Fake <IDurableJobQueue <Incoming, Incoming> >();
            var scheduler  = new HistoricalScheduler();
            var monitor    = new DurableJobQueueMonitor <Incoming, Incoming>(jobStorage, 20, DurableJobQueueMonitor.DefaultPollingInterval, scheduler);

            List <Incoming> incomingItems = new List <Incoming>();

            var queuedItems = Enumerable.Repeat(Item.From(new Incoming()
            {
                Id = 1
            }), 5)
                              .Concat(new [] { Item.None <Incoming>() })
                              .Concat(Enumerable.Repeat(Item.From(new Incoming()
            {
                Id = 2
            }), 5))
                              .Concat(new [] { Item.None <Incoming>() })
                              .Concat(Enumerable.Repeat(Item.From(new Incoming()
            {
                Id = 1
            }), 2))
                              .Concat(new [] { Item.None <Incoming>() }).ToArray();

            using (var subscription = monitor.Subscribe(publishedItem => { incomingItems.Add(publishedItem); }))
            {
                A.CallTo(() => jobStorage.NextQueuedItem()).ReturnsNextFromSequence(queuedItems);

                scheduler.AdvanceBy(monitor.PollingInterval);
                scheduler.AdvanceBy(monitor.PollingInterval);
                scheduler.AdvanceBy(monitor.PollingInterval);

                Assert.True(queuedItems.Where(item => item.Success)
                            .Select(item => item.Value)
                            .SequenceEqual(incomingItems, GenericEqualityComparer <Incoming> .ByAllMembers()));
            }
        }
Ejemplo n.º 12
0
 public IDurableJobQueue <TQueueInput, TQueuePoison> CreateDurableJobQueue <TQueueInput, TQueuePoison>()
 {
     return(new TransientJobQueue <TQueueInput, TQueuePoison>(GenericEqualityComparer <TQueueInput> .ByAllMembers(), GenericEqualityComparer <TQueuePoison> .ByAllMembers()));
 }
 private static IDurableJobQueue <TQueue, TQueuePoison> GetTransient()
 {
     return(new TransientJobQueue <TQueue, TQueuePoison>(GenericEqualityComparer <TQueue> .ByAllMembers(),
                                                         GenericEqualityComparer <TQueuePoison> .ByAllMembers()));
 }
Ejemplo n.º 14
0
 protected TransientJobQueueTest(Func <TQueue, TQueuePoison> poisonConverter)
     : base(() => new TransientJobQueue <TQueue, TQueuePoison>(GenericEqualityComparer <TQueue> .ByAllMembers(), GenericEqualityComparer <TQueuePoison> .ByAllMembers()), poisonConverter)
 {
 }
Ejemplo n.º 15
0
 public void Constructor_Throws_OnNullPoisonComparer()
 {
     Assert.Throws <ArgumentNullException>(() => new TransientJobQueue <TQueue, TQueuePoison>(GenericEqualityComparer <TQueue> .ByAllMembers(), null));
 }
Ejemplo n.º 16
0
 public void Equal_ThrowsOnMoreThanOneComparerForATypeInList()
 {
     Assert.Throws <ArgumentException>(() => MemberComparer.Equal(4, 4, new[] { GenericEqualityComparer <int> .ByAllMembers(), GenericEqualityComparer <int> .ByAllMembers() }));
 }
Ejemplo n.º 17
0
        public void FromJobSpecification_Inspect_ReturnsExpectedQueuePoison_OnFailedJobResult()
        {
            int input            = 2;
            var exception        = new ArgumentException();
            var inspectionResult = GetFailedInspectionResult(input, exception);

            Assert.Equal(new Poison <int>(input, exception), inspectionResult.QueuePoison, GenericEqualityComparer <Poison <int> > .ByAllMembers());
        }