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);
        }
        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);
        }
        public void StrartLoadBallancerTestNoConf()
        {
            var moq = new MockRepository(MockBehavior.Default);

            var config = new SimpleConfig(@"nonfile.xml");
            config.StrartLoadBallancer(moq.OneOf<IBallancerTask<int>>());
        }
        public void Test_Initialize_Multiple_Stubs_Using_Repository_OneOf_Method()
        {
            // MockRepository supports two ways for building subs.
            // Instead of calling "Of" method we can call OneOf and
            // use the same syntax as for creating stubs via Mock.Of

            // Arrange
            var repository = new MockRepository(MockBehavior.Default);
            ILoggerDependency logger =
                repository.OneOf<ILoggerDependency>(ld => ld.DefaultLogger == "DefaultLogger"
                                                    && ld.GetCurrentDirectory() == "D:\\Temp"
                                                    && ld.GetDirectoryByLoggerName(It.IsAny<string>()) == "C:\\Temp");

            // Assert
            Assert.That(logger.GetCurrentDirectory(), Is.EqualTo("D:\\Temp"));
            Assert.That(logger.DefaultLogger, Is.EqualTo("DefaultLogger"));
            Assert.That(logger.GetDirectoryByLoggerName("CustomLogger"), Is.EqualTo("C:\\Temp"));
        }
        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);
        }