From 9e79e8849434837125795445b6b241741ecfb75d Mon Sep 17 00:00:00 2001 From: Marek Safar Date: Fri, 24 Mar 2017 14:15:14 +0100 Subject: [PATCH] [System.Data] Update tests for mobile profiles --- .../ProviderTests/Common/ConnectionManager.cs | 97 +++++++++++-------- .../Test/ProviderTests/Common/EngineConfig.cs | 12 ++- ..._full_System.Data_test.dll.exclude.sources | 18 ---- ...ybrid_System.Data_test.dll.exclude.sources | 18 ---- 4 files changed, 66 insertions(+), 79 deletions(-) delete mode 100644 mcs/class/System.Data/testing_aot_full_System.Data_test.dll.exclude.sources delete mode 100644 mcs/class/System.Data/testing_aot_hybrid_System.Data_test.dll.exclude.sources diff --git a/mcs/class/System.Data/Test/ProviderTests/Common/ConnectionManager.cs b/mcs/class/System.Data/Test/ProviderTests/Common/ConnectionManager.cs index 1cf459e1ba8..29028c7859c 100644 --- a/mcs/class/System.Data/Test/ProviderTests/Common/ConnectionManager.cs +++ b/mcs/class/System.Data/Test/ProviderTests/Common/ConnectionManager.cs @@ -30,7 +30,6 @@ using System; using System.Collections.Generic; -using System.Configuration; using System.Data; using System.Data.Common; #if !NO_ODBC @@ -54,23 +53,72 @@ namespace MonoTests.System.Data.Connected private ConnectionManager () { - //Environment.SetEnvironmentVariable(OdbcEnvVar, @"mysql-odbc|Driver={MySQL ODBC 5.3 Unicode Driver};server=127.0.0.1;uid=sa;pwd=qwerty123;"); - //Environment.SetEnvironmentVariable(SqlEnvVar, @"sqlserver-tds|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); - sql = ConnectionHolder.FromEnvVar(SqlEnvVar); + sql = CreateSqlConfig (SqlEnvVar); if (sql != null) CreateMssqlDatabase(); #if !NO_ODBC - odbc = ConnectionHolder.FromEnvVar(OdbcEnvVar); + odbc = CreateOdbcConfig (OdbcEnvVar); if (odbc != null) CreateMysqlDatabase(); #endif } + static ConnectionHolder CreateSqlConfig (string envVarName) + { + string connectionString = Environment.GetEnvironmentVariable (envVarName); + if (string.IsNullOrEmpty (connectionString)) + return null; + + SqlConnection connection; +#if MOBILE + connection = new SqlConnection (); +#else + DbProviderFactory factory = DbProviderFactories.GetFactory ("System.Data.SqlClient"); + connection = (SqlConnection)factory.CreateConnection (); +#endif + + var engine = new EngineConfig { + Type = EngineType.SQLServer, + ClientVersion = 9, + QuoteCharacter = """, + SupportsMicroseconds = true, + SupportsUniqueIdentifier = true, + SupportsTimestamp = true, + }; + + return new ConnectionHolder (engine, connection, connectionString); + } + +#if !NO_ODBC + static ConnectionHolder CreateOdbcConfig (string envVarName) + { + string connectionString = Environment.GetEnvironmentVariable (envVarName); + if (string.IsNullOrEmpty (connectionString)) + return null; + + DbProviderFactory factory = DbProviderFactories.GetFactory ("System.Data.Odbc"); + var connection = (OdbcConnection)factory.CreateConnection (); + + var engine = new EngineConfig { + Type = EngineType.MySQL, + QuoteCharacter = "`", + RemovesTrailingSpaces = true, + EmptyBinaryAsNull = true, + SupportsDate = true, + SupportsTime = true + }; + + return new ConnectionHolder (engine, connection, connectionString); + } +#endif + private void CreateMssqlDatabase() { DBHelper.ExecuteNonQuery(sql.Connection, $"CREATE DATABASE [{DatabaseName}]"); @@ -193,46 +241,11 @@ namespace MonoTests.System.Data.Connected public string ConnectionString { get; set; } - public ConnectionHolder(EngineConfig engineConfig, DbProviderFactory dbProviderFactory, string connectionString) + public ConnectionHolder(EngineConfig engineConfig, TConnection connection, string connectionString) { EngineConfig = engineConfig; - connection = (TConnection)dbProviderFactory.CreateConnection(); + this.connection = connection; ConnectionString = connectionString; } - - public static ConnectionHolder FromEnvVar(string envVarName) - { -#if NO_CONFIGURATION - throw new NotImplementedException (); -#else - string variable = Environment.GetEnvironmentVariable(envVarName) ?? string.Empty; - var envParts = variable.Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries); - if (envParts.Length == 0 || string.IsNullOrEmpty(envParts[0])) - return null; - - string connectionName = envParts[0]; - string connectionString = variable.Remove(0, envParts[0].Length + 1); - - ConnectionConfig[] connections = null; - try - { - connections = (ConnectionConfig[]) ConfigurationManager.GetSection("providerTests"); - } - catch - { - return null; - } - - foreach (ConnectionConfig connConfig in connections) - { - if (connConfig.Name != connectionName) - continue; - - DbProviderFactory factory = DbProviderFactories.GetFactory(connConfig.Factory); - return new ConnectionHolder(connConfig.Engine, factory, connectionString); - } - throw new InvalidOperationException($"Connection {connectionName} not found"); -#endif - } } } diff --git a/mcs/class/System.Data/Test/ProviderTests/Common/EngineConfig.cs b/mcs/class/System.Data/Test/ProviderTests/Common/EngineConfig.cs index 7376505c3bb..6b426124ba1 100644 --- a/mcs/class/System.Data/Test/ProviderTests/Common/EngineConfig.cs +++ b/mcs/class/System.Data/Test/ProviderTests/Common/EngineConfig.cs @@ -47,7 +47,7 @@ namespace MonoTests.System.Data.Connected private EngineType type; private int clientVersion; - private EngineConfig () + public EngineConfig () { } @@ -60,42 +60,52 @@ namespace MonoTests.System.Data.Connected /// public string QuoteCharacter { get { return quoteCharacter; } + set { quoteCharacter = value; } } public EngineType Type { get { return type; } + set { type = value; } } public bool RemovesTrailingSpaces { get { return removesTrailingSpaces; } + set { removesTrailingSpaces = value; } } public bool EmptyBinaryAsNull { get { return emptyBinaryAsNull; } + set { emptyBinaryAsNull = value; } } public bool SupportsMicroseconds { get { return supportsMicroseconds; } + set { supportsMicroseconds = value; } } public bool SupportsUniqueIdentifier { get { return supportsUniqueIdentifier; } + set { supportsUniqueIdentifier = value; } } public bool SupportsDate { get { return supportsDate; } + set { supportsDate = value; } } public bool SupportsTime { get { return supportsTime; } + set { supportsTime = value; } } public bool SupportsTimestamp { get { return supportsTimestamp; } + set { supportsTimestamp = value; } } public int ClientVersion { get { return clientVersion; } + set { clientVersion = value; } } public static EngineConfig FromXml (XmlNode config) diff --git a/mcs/class/System.Data/testing_aot_full_System.Data_test.dll.exclude.sources b/mcs/class/System.Data/testing_aot_full_System.Data_test.dll.exclude.sources deleted file mode 100644 index 0022a9e9f1b..00000000000 --- a/mcs/class/System.Data/testing_aot_full_System.Data_test.dll.exclude.sources +++ /dev/null @@ -1,18 +0,0 @@ -System.Data.Odbc/OdbcCommandBuilderTest.cs -System.Data.Odbc/OdbcCommandTest.cs -System.Data.Odbc/OdbcConnectionStringBuilderTest.cs -System.Data.Odbc/OdbcConnectionTest.cs -System.Data.Odbc/OdbcDataAdapterTest.cs -System.Data.Odbc/OdbcDataReaderTest.cs -System.Data.Odbc/OdbcMetaDataCollectionNamesTest.cs -System.Data.Odbc/OdbcParameterCollectionTest.cs -System.Data.Odbc/OdbcParameterTest.cs -System.Data.Odbc/OdbcPermissionAttributeTest.cs -System.Data.Odbc/OdbcPermissionTest.cs -System.Data.OleDb/OleDbCommandTest.cs -System.Data.OleDb/OleDbConnectionTest.cs -System.Data.OleDb/OleDbDataAdapterTest.cs -System.Data.OleDb/OleDbMetaDataCollectionNamesTest.cs -System.Data.OleDb/OleDbParameterCollectionTest.cs -System.Data.OleDb/OleDbPermissionAttributeTest.cs -System.Data.OleDb/OleDbPermissionTest.cs diff --git a/mcs/class/System.Data/testing_aot_hybrid_System.Data_test.dll.exclude.sources b/mcs/class/System.Data/testing_aot_hybrid_System.Data_test.dll.exclude.sources deleted file mode 100644 index 0022a9e9f1b..00000000000 --- a/mcs/class/System.Data/testing_aot_hybrid_System.Data_test.dll.exclude.sources +++ /dev/null @@ -1,18 +0,0 @@ -System.Data.Odbc/OdbcCommandBuilderTest.cs -System.Data.Odbc/OdbcCommandTest.cs -System.Data.Odbc/OdbcConnectionStringBuilderTest.cs -System.Data.Odbc/OdbcConnectionTest.cs -System.Data.Odbc/OdbcDataAdapterTest.cs -System.Data.Odbc/OdbcDataReaderTest.cs -System.Data.Odbc/OdbcMetaDataCollectionNamesTest.cs -System.Data.Odbc/OdbcParameterCollectionTest.cs -System.Data.Odbc/OdbcParameterTest.cs -System.Data.Odbc/OdbcPermissionAttributeTest.cs -System.Data.Odbc/OdbcPermissionTest.cs -System.Data.OleDb/OleDbCommandTest.cs -System.Data.OleDb/OleDbConnectionTest.cs -System.Data.OleDb/OleDbDataAdapterTest.cs -System.Data.OleDb/OleDbMetaDataCollectionNamesTest.cs -System.Data.OleDb/OleDbParameterCollectionTest.cs -System.Data.OleDb/OleDbPermissionAttributeTest.cs -System.Data.OleDb/OleDbPermissionTest.cs -- 2.25.1