From 665d4223ada90171af38bf31e72bb87af87209e3 Mon Sep 17 00:00:00 2001 From: Karina Zhou Date: Thu, 3 Oct 2019 14:15:52 -0700 Subject: [PATCH 1/2] Fix leaking for CspProviderExt --- .../ManualTests/AlwaysEncrypted/CspProviderExt.cs | 8 ++++---- .../TestFixtures/SQLSetupStrategyCspExt.cs | 12 +----------- 2 files changed, 5 insertions(+), 15 deletions(-) diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/AlwaysEncrypted/CspProviderExt.cs b/src/Microsoft.Data.SqlClient/tests/ManualTests/AlwaysEncrypted/CspProviderExt.cs index 3b90ec1507..04a68417ab 100644 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/AlwaysEncrypted/CspProviderExt.cs +++ b/src/Microsoft.Data.SqlClient/tests/ManualTests/AlwaysEncrypted/CspProviderExt.cs @@ -16,8 +16,6 @@ namespace Microsoft.Data.SqlClient.ManualTesting.Tests.AlwaysEncrypted [PlatformSpecific(TestPlatforms.Windows)] public class CspProviderExt { - private string GenerateUniqueName(string baseName) => string.Concat("AE-", baseName, "-", Guid.NewGuid().ToString()); - // [Fact(Skip="Run this in non-parallel mode")] or [ConditionalFact()] [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] public void TestKeysFromCertificatesCreatedWithMultipleCryptoProviders() @@ -102,7 +100,8 @@ public void TestKeysFromCertificatesCreatedWithMultipleCryptoProviders() finally { CertificateUtilityWin.RemoveCertificate(certificateName, StoreLocation.CurrentUser); - sqlSetupStrategyCsp?.DropTable(); + // clean up database resources + sqlSetupStrategyCsp?.Dispose(); } } @@ -187,7 +186,8 @@ public void TestEncryptDecryptWithCSP() } finally { - sqlSetupStrategyCsp.DropTable(); + // clean up database resources + sqlSetupStrategyCsp.Dispose(); } } finally diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/AlwaysEncrypted/TestFixtures/SQLSetupStrategyCspExt.cs b/src/Microsoft.Data.SqlClient/tests/ManualTests/AlwaysEncrypted/TestFixtures/SQLSetupStrategyCspExt.cs index 278d7a872c..a393aeccef 100644 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/AlwaysEncrypted/TestFixtures/SQLSetupStrategyCspExt.cs +++ b/src/Microsoft.Data.SqlClient/tests/ManualTests/AlwaysEncrypted/TestFixtures/SQLSetupStrategyCspExt.cs @@ -9,7 +9,6 @@ namespace Microsoft.Data.SqlClient.ManualTesting.Tests.AlwaysEncrypted { public class SQLSetupStrategyCspExt : SQLSetupStrategy { - //public string keyPath {get; private set;} public Table CspProviderTable { get; private set; } public SqlColumnEncryptionCspProvider keyStoreProvider { get; } @@ -21,7 +20,7 @@ public SQLSetupStrategyCspExt(string cspKeyPath) : base(cspKeyPath) internal override void SetupDatabase() { - ColumnMasterKey columnMasterKey = new CspColumnMasterKey(GenerateUniqueName("CMK"), SqlColumnEncryptionCspProvider.ProviderName, keyPath); + ColumnMasterKey columnMasterKey = new CspColumnMasterKey(GenerateUniqueName("CspExt"), SqlColumnEncryptionCspProvider.ProviderName, keyPath); databaseObjects.Add(columnMasterKey); List columnEncryptionKeys = CreateColumnEncryptionKeys(columnMasterKey, 2, keyStoreProvider); @@ -43,14 +42,5 @@ private Table CreateTable(IList columnEncryptionKeys) return CspProviderTable; } - - public void DropTable() - { - using (SqlConnection sqlConnection = new SqlConnection(DataTestUtility.TcpConnStr)) - { - sqlConnection.Open(); - CspProviderTable.Drop(sqlConnection); - } - } } } From 98383455114bf677d52df8dc54ff0722db3c9142 Mon Sep 17 00:00:00 2001 From: Karina Zhou Date: Thu, 3 Oct 2019 14:54:50 -0700 Subject: [PATCH 2/2] Clean stored procedures for APIShould --- .../tests/ManualTests/AlwaysEncrypted/ApiShould.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/AlwaysEncrypted/ApiShould.cs b/src/Microsoft.Data.SqlClient/tests/ManualTests/AlwaysEncrypted/ApiShould.cs index 2fa7640275..0b0be819ec 100644 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/AlwaysEncrypted/ApiShould.cs +++ b/src/Microsoft.Data.SqlClient/tests/ManualTests/AlwaysEncrypted/ApiShould.cs @@ -1882,7 +1882,9 @@ private void DropHelperProcedures(string[] procNames) sqlConnection.Open(); foreach (string name in procNames) { - using (SqlCommand cmd = new SqlCommand(string.Format("IF EXISTS (SELECT * FROM sys.procedures WHERE name = '{0}') \n DROP PROCEDURE {0}", name), sqlConnection)) + string procedureName = name.Trim( new Char[] { '[', ']'}); + + using (SqlCommand cmd = new SqlCommand(string.Format("IF EXISTS (SELECT * FROM sys.procedures WHERE name = '{0}') \n DROP PROCEDURE {0}", procedureName), sqlConnection)) { cmd.ExecuteNonQuery(); }