public void ReleaseAccessShouldConnectTheConnections() { var connectionLock = new Mock <IConnectedBindingQueue>(); connectionLock.Setup(x => x.OpenConnections(server1, database1, DatabaseLocksManager.DefaultWaitToGetFullAccess)); using (DatabaseLocksManager databaseLocksManager = CreateManager()) { databaseLocksManager.ConnectionService.RegisterConnectedQueue("test", connectionLock.Object); databaseLocksManager.ReleaseAccess(server1, database1); connectionLock.Verify(x => x.OpenConnections(server1, database1, DatabaseLocksManager.DefaultWaitToGetFullAccess)); } }
private DatabaseLocksManager CreateManager() { DatabaseLocksManager databaseLocksManager = new DatabaseLocksManager(2000); var connectionLock1 = new Mock <IConnectedBindingQueue>(); var connectionLock2 = new Mock <IConnectedBindingQueue>(); connectionLock1.Setup(x => x.CloseConnections(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <int>())); connectionLock2.Setup(x => x.OpenConnections(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <int>())); connectionLock1.Setup(x => x.OpenConnections(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <int>())); connectionLock2.Setup(x => x.CloseConnections(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <int>())); ConnectionService connectionService = new ConnectionService(); databaseLocksManager.ConnectionService = connectionService; connectionService.RegisterConnectedQueue("1", connectionLock1.Object); connectionService.RegisterConnectedQueue("2", connectionLock2.Object); return(databaseLocksManager); }
//[Fact] public void SecondProcessToGainAccessShouldWaitForTheFirstProcess() { var connectionLock = new Mock <IConnectedBindingQueue>(); using (DatabaseLocksManager databaseLocksManager = CreateManager()) { databaseLocksManager.GainFullAccessToDatabase(server1, database1); bool secondTimeGettingAccessFails = false; try { databaseLocksManager.GainFullAccessToDatabase(server1, database1); } catch (DatabaseFullAccessException) { secondTimeGettingAccessFails = true; } Assert.Equal(secondTimeGettingAccessFails, true); databaseLocksManager.ReleaseAccess(server1, database1); Assert.Equal(databaseLocksManager.GainFullAccessToDatabase(server1, database1), true); databaseLocksManager.ReleaseAccess(server1, database1); } }