Example #1
0
        public void GivenIHaveAlreadyAcquiredTheLease()
        {
            var lease  = new Lease(new AzureLeaseProvider(new ConnectionStringProvider()), new AzureLeasePolicyValidator());
            var policy = ScenarioContext.Current.Get <LeasePolicy>();

            lease.AcquireAsync(policy).Wait();
            ScenarioContext.Current.Set(lease);
        }
Example #2
0
        public void GivenTheLeaseHasExpired()
        {
            var lease  = new Lease(new AzureLeaseProvider(new ConnectionStringProvider()), new AzureLeasePolicyValidator());
            var policy = ScenarioContext.Current.Get <LeasePolicy>();

            lease.AcquireAsync(policy).Wait();
            Thread.Sleep(policy.Duration.Value.Add(TimeSpan.FromSeconds(2)));
            ScenarioContext.Current.Set(lease);
        }
Example #3
0
        public void GivenActorAHasAlreadyAcquiredALeaseForAnOperationCalled(string leaseName)
        {
            var policy = new LeasePolicy {
                Name = leaseName, Duration = TimeSpan.FromSeconds(15)
            };
            var lease = new Lease(new AzureLeaseProvider(new ConnectionStringProvider()), new AzureLeasePolicyValidator());

            lease.AcquireAsync(policy).Wait();
            ScenarioContext.Current.Set(lease, "ActorALease");
        }
Example #4
0
        public async Task IsAcquired_WhenLeaseWasNotAcquired_ReturnsTrue()
        {
            // arrange
            //
            await Lease.AcquireAsync(Blob, TimeSpan.FromMinutes(1));

            // act
            //
            var lease = await Lease.AcquireAsync(Blob, TimeSpan.FromMinutes(1));

            // assert
            //
            Assert.False(Lease.IsAcquired(lease));
        }
Example #5
0
        public void Start()
        {
            s_logger.Information("Starting pending notifications chaser...");

            m_pollingJob.Start(async cancellationToken =>
            {
                var lease  = Lease.NotAcquired;
                var result = false;

                try
                {
                    lease = await Lease.AcquireAsync(
                        m_chaserExclusiveAccessBlobLock,
                        TimeSpan.FromMinutes(Constants.Settings.PENDING_NOTIFICATIONS_CHASER_EXCLUSIVE_ACCESS_LOCK_TIMEOUT_IN_MINUTES));

                    if (Lease.IsAcquired(lease))
                    {
                        s_logger.Verbose("Chaser lock was successfully acquired. Start pending notification processing...");

                        var processNotificationCount = await ProcessPendingNotificationsAsync();

                        s_logger.Information("Chaser republished {NotificationCount} unpublished notifications.", processNotificationCount);

                        result = processNotificationCount != 0;
                    }
                    else
                    {
                        s_logger.Verbose("Chaser lock wasn't acquired.");
                    }
                }
                catch (Exception exception)
                {
                    s_logger.Error(exception, "Notification processing failed.");
                }

                await ReleaseLeaseAsync(lease);

                return(result);
            });

            s_logger.Information("Pending notifications chaser started.");
        }
Example #6
0
        public async Task IsAcquired_WhenLeaseWasAcquired_ReturnsTrue()
        {
            var lease = await Lease.AcquireAsync(Blob, TimeSpan.FromMinutes(1));

            Assert.True(Lease.IsAcquired(lease));
        }