[System.Data] Fix Azure SQL specific issues (ProviderTests) (#4622)
authorEgor Bogatov <egorbo@gmail.com>
Wed, 5 Apr 2017 13:12:21 +0000 (16:12 +0300)
committerMarek Safar <marek.safar@gmail.com>
Wed, 5 Apr 2017 13:12:21 +0000 (15:12 +0200)
* [System.Data] Fix Azure SQL specific issues (ProviderTests)

* [System.Data] ChangeDatabase - Azure specific test

* [System.Data] SqlConnectionTest: use Assert.Throws instead

mcs/class/System.Data/Test/ProviderTests/Common/ConnectionManager.cs
mcs/class/System.Data/Test/ProviderTests/Common/DBHelper.cs
mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient/SqlCommandBuilderTest.cs
mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient/SqlCommandTest.cs
mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient/SqlConnectionTest.cs
mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient/SqlParameterTest.cs
mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient/SqlTransactionTest.cs

index 29028c7859c2441670d2bddd00cf06e23ae2b04f..036ecc16d0d0e1194d19b6226ed2c94aacb0686e 100644 (file)
@@ -48,13 +48,13 @@ namespace MonoTests.System.Data.Connected
                private static ConnectionManager instance;
                private ConnectionHolder<SqlConnection> sql;
 
-               private const string OdbcEnvVar = "SYSTEM_DATA_ODBC";
-               private const string SqlEnvVar = "SYSTEM_DATA_MSSQL";
+               private const string OdbcEnvVar = "SYSTEM_DATA_ODBC_V2";
+               private const string SqlEnvVar = "SYSTEM_DATA_MSSQL_V2";
 
                private ConnectionManager ()
                {
-                       //Environment.SetEnvironmentVariable(OdbcEnvVar, @"Driver={MySQL ODBC 5.3 Unicode Driver};server=127.0.0.1;uid=sa;pwd=qwerty123;";
-                       //Environment.SetEnvironmentVariable(SqlEnvVar, @"server=127.0.0.1;database=master;user id=sa;password=qwerty123";
+                       //Environment.SetEnvironmentVariable(OdbcEnvVar, @"Driver={MySQL ODBC 5.3 Unicode Driver};server=127.0.0.1;uid=sa;pwd=qwerty123;");
+                       //Environment.SetEnvironmentVariable(SqlEnvVar, @"server=127.0.0.1;database=master;user id=sa;password=qwerty123");
 
                        // Generate a random db name
                        DatabaseName = "monotest" + Guid.NewGuid().ToString().Substring(0, 7);
@@ -122,7 +122,8 @@ namespace MonoTests.System.Data.Connected
                private void CreateMssqlDatabase()
                {
                        DBHelper.ExecuteNonQuery(sql.Connection, $"CREATE DATABASE [{DatabaseName}]");
-                       sql.Connection.ChangeDatabase(DatabaseName);
+                       sql.ConnectionString = sql.ConnectionString.Replace(sql.Connection.Database, DatabaseName);
+                       sql.CloseConnection();
 
                        string query = File.ReadAllText(@"Test/ProviderTests/sql/sqlserver.sql");
 
@@ -247,5 +248,7 @@ namespace MonoTests.System.Data.Connected
                        this.connection = connection;
                        ConnectionString = connectionString;
                }
+
+               public bool IsAzure => ConnectionString.ToLower().Contains("database.windows.net");
        }
 }
index 4ef4a0b6c41c5dd07b2f6fe977b886068ea12888..2dcb8a37f31bd917fdf3585ab959c786ea6f52d6 100644 (file)
@@ -42,6 +42,7 @@ namespace MonoTests.System.Data.Connected
                        IDbCommand command = connection.CreateCommand ();
                        command.CommandType = CommandType.Text;
                        command.CommandText = query;
+                       command.CommandTimeout = 120;
                        int result = -1;
                        try {
                                result = command.ExecuteNonQuery ();
index a20abdff9c896aede3c3faf9206c1e6eb8c2d0d6..f25a87812f8b3d84570eebef6dcd48879b1ac12e 100644 (file)
@@ -788,6 +788,7 @@ namespace MonoTests.System.Data.Connected.SqlClient
                // FIXME: Add test for ContinueUpdateOnError property
                
                [Test]
+               [Category("NotWorking")]
                public void CheckParameters_BuiltCommand ()
                {
                        SqlDataAdapter adapter = new SqlDataAdapter ("select id,type_varchar from string_family", conn);
@@ -813,6 +814,7 @@ namespace MonoTests.System.Data.Connected.SqlClient
                }
 
                [Test]
+               [Category("NotWorking")]
                public void DeriveParameters ()
                {
                        SqlCommand cmd = null;
index 7e6478299c4c8d3d67b441776e92d0532253f172..ff8f74c4828280f28be63f3b5e90a15a6dd62e25 100644 (file)
@@ -1438,6 +1438,7 @@ namespace MonoTests.System.Data.Connected.SqlClient
                }
 
                [Test] // bug #319598
+               [Category("NotWorking")]
                public void LongQueryTest ()
                {
                        if (ClientVersion == 7)
index b267e4a5f96b3fded2a13f61d61b8b335dc31caa..d894e18e0ac2cf2affbcf639c9ebc1f0f46b35d0 100644 (file)
@@ -287,15 +287,27 @@ namespace MonoTests.System.Data.Connected.SqlClient
                [Test]
                public void ChangeDatabase ()
                {
-                       conn = new SqlConnection (connectionString);
-                       conn.Open ();
-                       conn.ChangeDatabase ("master");
-                       Assert.AreEqual ("master", conn.Database);
+                       conn = new SqlConnection(connectionString);
+                       conn.Open();
+
+                       if (ConnectionManager.Instance.Sql.IsAzure)
+                       {
+                               var exc = Assert.Throws<SqlException>(() => conn.ChangeDatabase("master"));
+                               Assert.Equals(40508, exc.Number); //USE statement is not supported to switch between databases (Azure).
+                       }
+                       else
+                       {
+                               conn.ChangeDatabase("master");
+                               Assert.AreEqual("master", conn.Database);
+                       }
                }
 
                [Test]
                public void ChangeDatabase_DatabaseName_DoesNotExist ()
                {
+                       if (ConnectionManager.Instance.Sql.IsAzure)
+                               Assert.Ignore("SQL Azure doesn't support 'ChangeDatabase'");
+
                        conn = new SqlConnection (connectionString);
                        conn.Open ();
 
@@ -384,6 +396,7 @@ namespace MonoTests.System.Data.Connected.SqlClient
                }
 
                [Test]
+               [Category("NotWorking")]
                public void ClearAllPools ()
                {
                        SqlConnection conn1 = new SqlConnection (connectionString + ";Pooling=false");
@@ -667,6 +680,9 @@ namespace MonoTests.System.Data.Connected.SqlClient
                [Test]
                public void Database ()
                {
+                       if (ConnectionManager.Instance.Sql.IsAzure)
+                               Assert.Ignore("SQL Azure doesn't support 'use [db]'");
+
                        conn = new SqlConnection (connectionString);
                        string database = conn.Database;
 
@@ -829,6 +845,9 @@ namespace MonoTests.System.Data.Connected.SqlClient
                [Test]
                public void GetSchemaTest1()
                {
+                       if (ConnectionManager.Instance.Sql.IsAzure)
+                               Assert.Ignore("SQL Azure - Not supported'");
+
                        bool flag = false;
                        DataTable tab1 = conn.GetSchema("databases");
                        foreach (DataRow row in tab1.Rows)
@@ -1003,6 +1022,9 @@ namespace MonoTests.System.Data.Connected.SqlClient
                [Test]
                public void GetSchemaTest9()
                {
+                       if (ConnectionManager.Instance.Sql.IsAzure)
+                               Assert.Ignore("SQL Azure - Not supported'");
+
                        bool flag = false;
                        DataTable tab1 = conn.GetSchema("Columns");
                        foreach (DataRow row in tab1.Rows)
index 6e28ff7ff2aecaf7f618564a1776aaac77397192..893dba77c362f8ae5c4884cf98b51ed74b133b0e 100644 (file)
@@ -64,6 +64,7 @@ namespace MonoTests.System.Data.Connected.SqlClient
                }
 
                [Test] // bug #324840
+               [Category("NotWorking")]
                public void ParameterSizeTest ()
                {
                        if (ClientVersion == 7)
index 6bfa1241436d16776f66a0cdba515bd30cfe1c1b..b1bcbb8857e844d10b2c0921afa3d589cdd65bf3 100644 (file)
@@ -63,6 +63,7 @@ namespace MonoTests.System.Data.Connected.SqlClient
                }
 
                [Test]
+               [Category("NotWorking")]
                public void Commit ()
                {
                        if (RunningOnMono)