public async Task SuccessfulSetTests(IWorkerInfo worker, IWorkerInfo current)
        {
            var activityId = Guid.NewGuid().ToString();
            var tableLock  = new MockWorkerTableLock();

            // Test
            using (var scaleManager = new MockScaleManager(MockBehavior.Strict))
            {
                // Setup
                scaleManager.MockWorkerTable.Setup(t => t.AcquireLock())
                .Returns(() => tableLock.AcquireLock());
                scaleManager.MockWorkerTable.Setup(t => t.GetManager())
                .Returns(Task.FromResult(current));
                scaleManager.MockWorkerTable.Setup(t => t.SetManager(worker))
                .Returns(Task.CompletedTask);
                scaleManager.MockScaleTracer.Setup(t => t.TraceInformation(activityId, worker, It.Is <string>(c => c.Contains("Acquire table lock"))));
                scaleManager.MockScaleTracer.Setup(t => t.TraceInformation(activityId, worker, It.Is <string>(c => c.Contains("Release table lock"))));
                scaleManager.MockScaleTracer.Setup(t => t.TraceInformation(activityId, worker, It.Is <string>(c => c.Contains("is set to be a manager"))));

                // test
                var newManager = await scaleManager.MockSetManager(activityId, worker, current);

                // assert
                scaleManager.VerifyAll();
                Assert.True(ScaleUtils.Equals(newManager, worker));
                Assert.False(ScaleUtils.Equals(newManager, current));
            }
        }
Beispiel #2
0
        public void SortByRemovingOrderTests()
        {
            var expected = new[]
            {
                new MockWorkerInfo {
                    StampName = "slave-stamp", WorkerName = "1", LoadFactor = 10
                },
                new MockWorkerInfo {
                    StampName = "slave-stamp", WorkerName = "2", LoadFactor = 50
                },
                new MockWorkerInfo {
                    StampName = "slave-stamp", WorkerName = "3", LoadFactor = 90
                },
                new MockWorkerInfo {
                    StampName = "home-stamp", WorkerName = "4", LoadFactor = 10
                },
                new MockWorkerInfo {
                    StampName = "home-stamp", WorkerName = "5", LoadFactor = 50
                },
                new MockWorkerInfo {
                    StampName = "home-stamp", WorkerName = "6", LoadFactor = 90
                },
            };

            // Test
            var random = new Random();
            var actual = expected.OrderBy(_ => random.Next())
                         .SortByRemovingOrder().ToArray();

            // Assert
            for (int i = 0; i < 0; ++i)
            {
                Assert.True(ScaleUtils.Equals(expected[i], actual[i]));
            }
        }
Beispiel #3
0
        public async Task BasicTests(IWorkerInfo worker, IWorkerInfo current, IEnumerable <IWorkerInfo> workers, IWorkerInfo expected)
        {
            var activityId  = Guid.NewGuid().ToString();
            var mockManager = new Mock <MockScaleManager>(MockBehavior.Default)
            {
                CallBase = true
            };

            // Test
            using (var scaleManager = mockManager.Object)
            {
                // Setup
                IWorkerInfo newManager = null;
                if (expected != current)
                {
                    mockManager.Setup(m => m.MockSetManager(activityId, worker, current))
                    .Callback((string acticityId1, IWorkerInfo info1, IWorkerInfo current1) => newManager = info1)
                    .Returns(() => Task.FromResult(newManager));
                }

                scaleManager.MockWorkerTable.Setup(t => t.GetManager())
                .Returns(Task.FromResult <IWorkerInfo>(current));
                if (workers != null)
                {
                    scaleManager.MockWorkerTable.Setup(t => t.List())
                    .Returns(Task.FromResult(workers));
                }

                // test
                var actual = await scaleManager.MockEnsureManager(activityId, worker);

                // assert
                mockManager.VerifyAll();
                scaleManager.VerifyAll();
                Assert.True(ScaleUtils.Equals(expected, actual));
            }
        }