예제 #1
0
        public void LocalBallancerConstructorTestNull3()
        {
            var moq = new MockRepository(MockBehavior.Default);

            var ballancer = new LocalBallancer<int>(moq.OneOf<IBallancerTask<int>>(), moq.OneOf<IPerformanceManager>(),
                null, 1);
            Assert.IsNotNull(ballancer);
        }
예제 #2
0
        public void LocalBallancerConstructorTestNull1()
        {
            var moq = new MockRepository(MockBehavior.Default);

            var ballancer = new LocalBallancer<int>(null, moq.OneOf<IPerformanceManager>(),
                moq.OneOf<IRemoteMachinesManager>(), 1);
            Assert.IsNotNull(ballancer);
        }
예제 #3
0
        public void LocalBallancerStartTest()
        {
            var       machineMgrMoq = new Mock <IRemoteMachinesManager>();
            var       moq           = new MockRepository(MockBehavior.Default);
            const int machCount     = 7;

            machineMgrMoq.Setup(manager => manager.UnaviableHosts()).Returns(new[] { 2, 5, 6 });
            machineMgrMoq.Setup(m => m.Count).Returns(machCount);

            int ijk     = 0;
            var recived = new List <int>();
            int tmp     = 0;

            var ballancerTask = new BallancerDelagateTask <int?>(i =>
            {
                if (ijk != 100)
                {
                    return new int?[] { ijk++ }
                }
                ;
                return(Enumerable.Empty <int?>());
            }, i =>
            {
                if (i != null)
                {
                    recived.Add(i.Value);
                }
                else
                {
                    tmp++;
                    if (tmp > ijk)
                    {
                        lock (this)
                        {
                            Monitor.PulseAll(this);
                            return(true);
                        }
                    }
                }
                return(true);
            }, 1);

            var ballancer = new LocalBallancer <int?>(ballancerTask,
                                                      moq.OneOf <IPerformanceManager>(),
                                                      machineMgrMoq.Object, 1);
            var task = ballancer.StartAsync();

            lock (this)
            {
                Monitor.Wait(this);
                Assert.IsTrue(recived.Count > ijk / machCount, "{0}", recived.Count);
            }

            Assert.IsNotNull(ballancer);
            Assert.IsFalse(task.IsCanceled);
            Assert.IsFalse(task.IsFaulted);
            Assert.IsFalse(task.IsCanceled);
        }
예제 #4
0
        public void LocalBallancerConstructorTestNull3()
        {
            var moq = new MockRepository(MockBehavior.Default);

            var ballancer = new LocalBallancer <int>(moq.OneOf <IBallancerTask <int> >(), moq.OneOf <IPerformanceManager>(),
                                                     null, 1);

            Assert.IsNotNull(ballancer);
        }
예제 #5
0
        public void LocalBallancerConstructorTestNull1()
        {
            var moq = new MockRepository(MockBehavior.Default);

            var ballancer = new LocalBallancer <int>(null, moq.OneOf <IPerformanceManager>(),
                                                     moq.OneOf <IRemoteMachinesManager>(), 1);

            Assert.IsNotNull(ballancer);
        }
예제 #6
0
        public void LocalBallancerStartTest()
        {
            var machineMgrMoq = new Mock<IRemoteMachinesManager>();
            var moq = new MockRepository(MockBehavior.Default);
            const int machCount = 7;
            machineMgrMoq.Setup(manager => manager.UnaviableHosts()).Returns(new[] { 2,5,6 });
            machineMgrMoq.Setup(m => m.Count).Returns(machCount);

            int ijk = 0;
            var recived = new List<int>();
            int tmp = 0;

            var ballancerTask = new BallancerDelagateTask<int?>(i =>
            {
                if (ijk != 100) return new int?[] {ijk++};
                return Enumerable.Empty<int?>();
            }, i =>
            {
                if (i != null) recived.Add(i.Value);
                else
                {
                    tmp++;
                    if (tmp > ijk)
                    lock (this)
                    {
                        Monitor.PulseAll(this);
                        return true;
                    }
                }
                return true;
            }, 1);

            var ballancer = new LocalBallancer<int?>(ballancerTask,
                moq.OneOf<IPerformanceManager>(),
                machineMgrMoq.Object, 1);
            var task = ballancer.StartAsync();

            lock (this)
            {
                Monitor.Wait(this);
                Assert.IsTrue(recived.Count > ijk / machCount, "{0}", recived.Count);
            }

            Assert.IsNotNull(ballancer);
            Assert.IsFalse(task.IsCanceled);
            Assert.IsFalse(task.IsFaulted);
            Assert.IsFalse(task.IsCanceled);
        }