public void Dispose_ReleasesExclusiveApplicationLock()
        {
            UseConnection(sql =>
            {
                var distributedLock = new SqlServerDistributedLock("hello", _timeout, sql);
                distributedLock.Dispose();

                var lockMode = sql.Query<string>(
                    "select applock_mode('public', 'hello', 'session')").Single();

                Assert.Equal("NoLock", lockMode);
            });
        }
        public void Ctor_AcquiresExclusiveApplicationLock_OnSession()
        {
            UseConnection(sql =>
            {
                // ReSharper disable once UnusedVariable
                var distributedLock = new SqlServerDistributedLock("hello", _timeout, sql);

                var lockMode = sql.Query<string>(
                    "select applock_mode('public', 'hello', 'session')").Single();

                Assert.Equal("Exclusive", lockMode);
            });
        }
        public void Dispose_ReleasesExclusiveApplicationLock()
        {
            UseConnection(sql =>
            {
                var distributedLock = new SqlServerDistributedLock("hello", _timeout, sql);
                distributedLock.Dispose();

                var lockMode = sql.Query <string>(
                    "select applock_mode('public', 'hello', 'session')").Single();

                Assert.Equal("NoLock", lockMode);
            });
        }
        public void Ctor_AcquiresExclusiveApplicationLock_OnSession()
        {
            UseConnection(sql =>
            {
                // ReSharper disable once UnusedVariable
                var distributedLock = new SqlServerDistributedLock("hello", _timeout, sql);

                var lockMode = sql.Query <string>(
                    "select applock_mode('public', 'hello', 'session')").Single();

                Assert.Equal("Exclusive", lockMode);
            });
        }
        public void Dispose_ReleasesExclusiveApplicationLock(bool useMicrosoftDataSqlClient)
        {
            UseConnection(sql =>
            {
                var storage         = CreateStorage(sql);
                var distributedLock = new SqlServerDistributedLock(storage, "hello", _timeout);
                distributedLock.Dispose();

                var lockMode = sql.Query <string>(
                    "select applock_mode('public', 'hello', 'session')").Single();

                Assert.Equal("NoLock", lockMode);
            }, useMicrosoftDataSqlClient);
        }
Пример #6
0
        public void InnerDistributedLock_DoesNotConsumeADatabaseConnection()
        {
            // Arrange
            var storage = new SqlServerStorage(ConnectionUtils.GetConnectionString());

            // Act
            using (var outer = new SqlServerDistributedLock(storage, "hello", TimeSpan.FromMinutes(5)))
                using (var inner = new SqlServerDistributedLock(storage, "hello", TimeSpan.FromMinutes(5)))
                {
                    // Assert
                    var field = typeof(SqlServerDistributedLock).GetField("_connection",
                                                                          BindingFlags.Instance | BindingFlags.NonPublic);
                    Assert.NotNull(field);

                    Assert.NotNull(field.GetValue(outer));
                    Assert.Null(field.GetValue(inner));
                }
        }
        public void InnerDistributedLock_DoesNotConsumeADatabaseConnection()
        {
            // Arrange
            var storage = new SqlServerStorage(ConnectionUtils.GetConnectionString());

            // Act
            using (var outer = new SqlServerDistributedLock(storage, "hello", TimeSpan.FromMinutes(5)))
            using (var inner = new SqlServerDistributedLock(storage, "hello", TimeSpan.FromMinutes(5)))
            {
                // Assert
                var field = typeof(SqlServerDistributedLock).GetField("_connection",
                    BindingFlags.Instance | BindingFlags.NonPublic);
                Assert.NotNull(field);

                Assert.NotNull(field.GetValue(outer));
                Assert.Null(field.GetValue(inner));
            }
        }