public void SetUp(DiscoveredServer server) { _server = server; var databaseToLoadName = "HICPipelineTests"; // Create the databases server.ExpectDatabase(databaseToLoadName).Create(true); server.ChangeDatabase(databaseToLoadName); // Create the dataset table DatabaseToLoad = server.ExpectDatabase(databaseToLoadName); using (var con = DatabaseToLoad.Server.GetConnection()) { con.Open(); const string createDatasetTableQuery = "CREATE TABLE TestData ([Col1] [int], [hic_dataLoadRunID] [int] NULL, [hic_validFrom] [datetime] NULL, CONSTRAINT [PK_TestData] PRIMARY KEY CLUSTERED ([Col1] ASC))"; const string addValidFromDefault = "ALTER TABLE TestData ADD CONSTRAINT [DF_TestData__hic_validFrom] DEFAULT (getdate()) FOR [hic_validFrom]"; using (var cmd = DatabaseCommandHelper.GetCommand(createDatasetTableQuery, con)) cmd.ExecuteNonQuery(); using (var cmd = DatabaseCommandHelper.GetCommand(addValidFromDefault, con)) cmd.ExecuteNonQuery(); } // Ensure the dataset table has been created var datasetTable = DatabaseToLoad.ExpectTable("TestData"); Assert.IsTrue(datasetTable.Exists()); }
public void ServerHelper_ChangeDatabase_AdHoc(DatabaseType type, bool useApiFirst) { if (type == DatabaseType.Oracle) { Assert.Inconclusive("FAnsiSql understanding of Database cannot be encoded in DbConnectionStringBuilder sadly so we can end up with DiscoveredServer with no GetCurrentDatabase"); } //create initial server reference var helper = ImplementationManager.GetImplementation(type).GetServerHelper(); var server = new DiscoveredServer(helper.GetConnectionStringBuilder("loco", "bob", "franko", "wacky")); Assert.AreEqual("loco", server.Name); Assert.AreEqual("bob", server.GetCurrentDatabase().GetRuntimeName()); //Use API to change databases if (useApiFirst) { server.ChangeDatabase("omgggg"); Assert.AreEqual("loco", server.Name); Assert.AreEqual("omgggg", server.GetCurrentDatabase().GetRuntimeName()); } //adhoc changes to builder server.Builder["Database"] = "Fisss"; Assert.AreEqual("loco", server.Name); Assert.AreEqual("Fisss", server.GetCurrentDatabase().GetRuntimeName()); server.Builder["Server"] = "Amagad"; Assert.AreEqual("Amagad", server.Name); Assert.AreEqual("Fisss", server.GetCurrentDatabase().GetRuntimeName()); }
public void EqualityTest_DiscoveredServer_AreEqual(string constr1, DatabaseType type1, string constr2, DatabaseType type2) { ImplementationManager.Load( typeof(MicrosoftSQLImplementation).Assembly, typeof(OracleImplementation).Assembly, typeof(MySqlImplementation).Assembly ); var s1 = new DiscoveredServer(constr1, type1); var s2 = new DiscoveredServer(constr2, type2); Assert.AreEqual(s1, s2); Assert.AreEqual(s1.GetHashCode(), s2.GetHashCode()); Assert.AreEqual(s1.ExpectDatabase("MyDb"), s2.ExpectDatabase("MyDb")); Assert.AreEqual(s1.ExpectDatabase("MyDb").GetHashCode(), s2.ExpectDatabase("MyDb").GetHashCode()); Assert.AreEqual(s1.ExpectDatabase("Mydb"), s2.ExpectDatabase("MyDb")); Assert.AreEqual(s1.ExpectDatabase("Mydb").GetHashCode(), s2.ExpectDatabase("MyDb").GetHashCode()); Assert.AreNotEqual(s1.ExpectDatabase("MyDb"), s2.ExpectDatabase("MyDb2")); //This does not affect things since we are expecting a specific database anyway s1.ChangeDatabase("Dave"); Assert.AreNotEqual(s1, s2); Assert.AreEqual(s1.ExpectDatabase("MyDb"), s2.ExpectDatabase("MyDb")); Assert.AreEqual(s1.ExpectDatabase("MyDb").GetHashCode(), s2.ExpectDatabase("MyDb").GetHashCode()); }
public void ServerHelper_ChangeDatabase_AdHoc(DatabaseType type, bool useApiFirst) { //create initial server reference var helper = ImplementationManager.GetImplementation(type).GetServerHelper(); var server = new DiscoveredServer(helper.GetConnectionStringBuilder("loco", "bob", "franko", "wacky")); Assert.AreEqual("loco", server.Name); Assert.AreEqual("bob", server.GetCurrentDatabase().GetRuntimeName()); //Use API to change databases if (useApiFirst) { server.ChangeDatabase("omgggg"); Assert.AreEqual("loco", server.Name); Assert.AreEqual("omgggg", server.GetCurrentDatabase().GetRuntimeName()); } //adhoc changes to builder server.Builder["Database"] = "Fisss"; Assert.AreEqual("loco", server.Name); Assert.AreEqual("Fisss", server.GetCurrentDatabase().GetRuntimeName()); server.Builder["Server"] = "Amagad"; Assert.AreEqual("Amagad", server.Name); Assert.AreEqual("Fisss", server.GetCurrentDatabase().GetRuntimeName()); }
/// <summary> /// Gets an empty database on the test server of the appropriate DBMS /// </summary> /// <param name="type">The DBMS you want a server of (a valid connection string must exist in TestDatabases.txt)</param> /// <param name="dbnName">null for default test database name (recommended unless you are testing moving data from one database to another on the same test server)</param> /// <param name="server"></param> /// <param name="database"></param> /// <param name="justDropTablesIfPossible">Determines behaviour when the test database already exists. False to drop and recreate it. True to just drop tables (faster)</param> /// <returns></returns> protected DiscoveredDatabase GetCleanedServer(DatabaseType type, string dbnName, out DiscoveredServer server, out DiscoveredDatabase database, bool justDropTablesIfPossible = false) { switch (type) { case DatabaseType.MicrosoftSQLServer: server = new DiscoveredServer(DiscoveredServerICanCreateRandomDatabasesAndTablesOn.Builder); break; case DatabaseType.MySql: server = _discoveredMySqlServer == null ? null : new DiscoveredServer(_discoveredMySqlServer.Builder); break; case DatabaseType.Oracle: server = _discoveredOracleServer == null ? null : new DiscoveredServer(_discoveredOracleServer.Builder); break; default: throw new ArgumentOutOfRangeException("type"); } if (server == null) { Assert.Inconclusive(); } //the microsoft one should exist! others are optional if (!server.Exists() && type != DatabaseType.MicrosoftSQLServer) { Assert.Inconclusive(); } server.TestConnection(); database = server.ExpectDatabase(dbnName); if (justDropTablesIfPossible && database.Exists()) { foreach (var t in database.DiscoverTables(true)) { t.Drop(); } foreach (var t in database.DiscoverTableValuedFunctions()) { t.Drop(); } } else { database.Create(true); } server.ChangeDatabase(dbnName); Assert.IsTrue(database.Exists()); return(database); }
public void ServerHelper_ChangeDatabase(DatabaseType type, bool expectCaps) { var server = new DiscoveredServer("loco", "bob", type, "franko", "wacky"); Assert.AreEqual("loco", server.Name); //this failure is already exposed by Server_Helper_GetConnectionStringBuilder Assert.AreEqual(expectCaps?"BOB":"bob", server.GetCurrentDatabase().GetRuntimeName()); Assert.AreEqual("franko", server.ExplicitUsernameIfAny); Assert.AreEqual("wacky", server.ExplicitPasswordIfAny); server.ChangeDatabase("omgggg"); Assert.AreEqual(server.Name, "loco"); Assert.AreEqual(expectCaps?"OMGGGG":"omgggg", server.GetCurrentDatabase().GetRuntimeName()); Assert.AreEqual("franko", server.ExplicitUsernameIfAny); Assert.AreEqual("wacky", server.ExplicitPasswordIfAny); }
void ThrowIfDatabaseLock() { var serverCopy = new DiscoveredServer(new SqlConnectionStringBuilder(DiscoveredServerICanCreateRandomDatabasesAndTablesOn.Builder.ConnectionString)); serverCopy.ChangeDatabase("master"); using (var con = serverCopy.GetConnection()) { con.Open(); var r = serverCopy.GetCommand("exec sp_who2", con).ExecuteReader(); while (r.Read()) { if (r["DBName"].Equals(testDbName)) { object[] vals = new object[r.VisibleFieldCount]; r.GetValues(vals); throw new Exception("Someone is locking " + testDbName + ":" + Environment.NewLine + string.Join(",", vals)); } } } }
private SqlConnection GetConnection() { _server.ChangeDatabase(_database.GetRuntimeName()); return((SqlConnection)_server.GetConnection()); }