コード例 #1
0
        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));
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        //[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);
            }
        }