Exemple #1
0
        public async Task GetInstanceId_IncrementedId_Valid()
        {
            var instanceDataStoreMock = new Mock <IInstanceDataStore>();
            var lockProviderMock      = new Mock <ILockProvider>();

            lockProviderMock.Setup(loc => loc.TryGetLockAsync("abc", LockType.Write, CancellationToken.None)).ReturnsAsync(true);
            var configProviderMock = new Mock <IConfigurationProvider>();

            configProviderMock.Setup(cp => cp.GetGlobalConfiguration <int>("", "")).Returns(1800);
            var instanceList = new Dictionary <string, InstanceInfo>();

            var instance1 = new InstanceInfo(0, 0, 0, DateTime.UtcNow.Subtract(new TimeSpan(0, 30, 0)));

            var instance2 = new InstanceInfo(0, 0, 1, DateTime.UtcNow.Subtract(new TimeSpan(0, 15, 0)));

            instanceList.Add(instance1.GetUniqueId(), instance1);
            instanceList.Add(instance2.GetUniqueId(), instance2);

            instanceDataStoreMock.Setup(ds => ds.GetInstanceList()).Returns(instanceList);

            var webFarm = new WebFarmConfiguration(instanceDataStoreMock.Object, lockProviderMock.Object, configProviderMock.Object);

            webFarm.Intialize();
            var instanceId = webFarm.GetInstanceId();

            Assert.AreEqual(instanceId, (UInt32)2);
        }
Exemple #2
0
        public async Task MultiRegion_AddSameInstanceId_Valid()
        {
            var instanceDataStoreMock = new Mock <IInstanceDataStore>();
            var lockProviderMock      = new Mock <ILockProvider>();

            lockProviderMock.Setup(loc => loc.TryGetLockAsync("abc", LockType.Write, CancellationToken.None)).ReturnsAsync(true);
            var configProviderMock = new Mock <IConfigurationProvider>();

            configProviderMock.Setup(cp => cp.GetGlobalConfiguration <int>("", "", "")).Returns(1800);

            var instanceList = new Dictionary <string, InstanceInfo>();

            var instance1 = new InstanceInfo(0, 0, 0, DateTime.UtcNow);
            var instance2 = new InstanceInfo(1, 0, 0, DateTime.UtcNow);

            instanceList.Add(instance1.GetUniqueId(), instance1);
            instanceList.Add(instance2.GetUniqueId(), instance2);

            configProviderMock.Setup(cp => cp.GetGlobalConfiguration <uint>("montone_id_generator", "webfarm_settings", "webfarm_regionid")).Returns(2);

            instanceDataStoreMock.Setup(ds => ds.GetInstanceList()).Returns(instanceList);

            var webFarm = new WebFarmConfiguration(instanceDataStoreMock.Object, lockProviderMock.Object, configProviderMock.Object);

            webFarm.Intialize();
            var instanceId = webFarm.GetInstanceId();

            Assert.AreEqual(instanceId, (UInt32)0);
        }
Exemple #3
0
        public async Task CheckHeartBeat_TimerSetting_Valid()
        {
            var instanceDataStore = new DummyInstanceStore();
            var lockProviderMock  = new Mock <ILockProvider>();

            lockProviderMock.Setup(loc => loc.TryGetLockAsync("abc", LockType.Write, CancellationToken.None)).ReturnsAsync(true);
            var configProviderMock = new Mock <IConfigurationProvider>();

            _settings.Add("reset_time_sec", "5");
            configProviderMock.Setup(cp => cp.GetGlobalConfigurationAsNameValueCollection("montone_id_generator", "webfarm_settings", "heartbeat_settings")).Returns(_settings);

            var webFarm = new WebFarmConfiguration(instanceDataStore, lockProviderMock.Object, configProviderMock.Object);

            webFarm.Intialize();

            var instanceInfo = new InstanceInfo(webFarm.GetRegionId(), webFarm.GetZoneId(), webFarm.GetInstanceId(), DateTime.UtcNow);

            var datetime1 = instanceDataStore.InstanceList[instanceInfo.GetUniqueId()].UpdateTimestamp;

            Thread.Sleep(6000);

            var datetime2 = instanceDataStore.InstanceList[instanceInfo.GetUniqueId()].UpdateTimestamp;

            Assert.IsTrue(datetime2 > datetime1);
        }
Exemple #4
0
        public async Task GetInstanceId_FirstInstance_Valid()
        {
            var instanceDataStoreMock = new Mock <IInstanceDataStore>();
            var lockProviderMock      = new Mock <ILockProvider>();
            var configProviderMock    = new Mock <IConfigurationProvider>();

            configProviderMock.Setup(cp => cp.GetGlobalConfiguration <int>("", "", "")).Returns(1800);

            lockProviderMock.Setup(loc => loc.TryGetLockAsync("abc", LockType.Write, CancellationToken.None)).ReturnsAsync(true);
            instanceDataStoreMock.Setup(ds => ds.GetInstanceList()).Returns(new Dictionary <string, InstanceInfo>());
            instanceDataStoreMock.Setup(ds => ds.AddOrUpdate(new InstanceInfo(0, 0, 0, DateTime.UtcNow)));

            var webFarm = new WebFarmConfiguration(instanceDataStoreMock.Object, lockProviderMock.Object, configProviderMock.Object);

            webFarm.Intialize();
            var instanceId = webFarm.GetInstanceId();

            Assert.IsNotNull(instanceId);
            Assert.AreEqual((UInt32)(0), instanceId);
        }