Пример #1
0
        public static void TransactionCleanupTest(string connectionString)
        {
            SqlConnection.ClearAllPools();
            ConnectionPoolWrapper connectionPool = null;

            using (TransactionScope transScope = new())
            {
                using SqlConnection connection1 = new(connectionString);
                using SqlConnection connection2 = new(connectionString);
                connection1.Open();
                connection2.Open();
                InternalConnectionWrapper internalConnection1 = new(connection1);
                connectionPool = new ConnectionPoolWrapper(connection1);

                connectionPool.Cleanup();
                Assert.Equal(2, connectionPool.ConnectionCount);

                connection1.Close();
                connection2.Close();
                connectionPool.Cleanup();
                Assert.Equal(2, connectionPool.ConnectionCount);

                connectionPool.Cleanup();
                Assert.Equal(2, connectionPool.ConnectionCount);

                transScope.Complete();
            }
        }
Пример #2
0
        /// <summary>
        /// Tests that using the same connection string results in the same pool\internal connection and a different string results in a different pool\internal connection
        /// </summary>
        /// <param name="connectionString"></param>
        private static void BasicConnectionPoolingTest(string connectionString)
        {
            SqlConnection connection = new SqlConnection(connectionString);

            connection.Open();
            InternalConnectionWrapper internalConnection = new InternalConnectionWrapper(connection);
            ConnectionPoolWrapper     connectionPool     = new ConnectionPoolWrapper(connection);

            connection.Close();

            SqlConnection connection2 = new SqlConnection(connectionString);

            connection2.Open();
            Assert.True(internalConnection.IsInternalConnectionOf(connection2), "New connection does not use same internal connection");
            Assert.True(connectionPool.ContainsConnection(connection2), "New connection is in a different pool");
            connection2.Close();

            SqlConnection connection3 = new SqlConnection(connectionString + ";App=SqlConnectionPoolUnitTest;");

            connection3.Open();
            Assert.False(internalConnection.IsInternalConnectionOf(connection3), "Connection with different connection string uses same internal connection");
            Assert.False(connectionPool.ContainsConnection(connection3), "Connection with different connection string uses same connection pool");
            connection3.Close();

            connectionPool.Cleanup();
            SqlConnection connection4 = new SqlConnection(connectionString);

            connection4.Open();
            Assert.True(internalConnection.IsInternalConnectionOf(connection4), "New connection does not use same internal connection");
            Assert.True(connectionPool.ContainsConnection(connection4), "New connection is in a different pool");
            connection4.Close();
        }
Пример #3
0
        public static void AccessTokenConnectionPoolingTest()
        {
            // Remove cred info and add invalid token
            string[] credKeys         = { "User ID", "Password", "UID", "PWD", "Authentication" };
            string   connectionString = DataTestUtility.RemoveKeysInConnStr(DataTestUtility.AADPasswordConnectionString, credKeys);

            SqlConnection connection = new SqlConnection(connectionString);

            connection.AccessToken = DataTestUtility.GetAccessToken();
            connection.Open();
            InternalConnectionWrapper internalConnection = new InternalConnectionWrapper(connection);
            ConnectionPoolWrapper     connectionPool     = new ConnectionPoolWrapper(connection);

            connection.Close();

            SqlConnection connection2 = new SqlConnection(connectionString);

            connection2.AccessToken = DataTestUtility.GetAccessToken();
            connection2.Open();
            Assert.True(internalConnection.IsInternalConnectionOf(connection2), "New connection does not use same internal connection");
            Assert.True(connectionPool.ContainsConnection(connection2), "New connection is in a different pool");
            connection2.Close();

            SqlConnection connection3 = new SqlConnection(connectionString + ";App=SqlConnectionPoolUnitTest;");

            connection3.AccessToken = DataTestUtility.GetAccessToken();
            connection3.Open();
            Assert.False(internalConnection.IsInternalConnectionOf(connection3), "Connection with different connection string uses same internal connection");
            Assert.False(connectionPool.ContainsConnection(connection3), "Connection with different connection string uses same connection pool");
            connection3.Close();

            connectionPool.Cleanup();

            SqlConnection connection4 = new SqlConnection(connectionString);

            connection4.AccessToken = DataTestUtility.GetAccessToken();
            connection4.Open();
            Assert.True(internalConnection.IsInternalConnectionOf(connection4), "New connection does not use same internal connection");
            Assert.True(connectionPool.ContainsConnection(connection4), "New connection is in a different pool");
            connection4.Close();
        }