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); }
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)); } }