public void SqlLocalDbProvider_As_ISqlLocalDbFactory_GetInstance_Returns_Specified_Instance() { // Arrange Helpers.EnsureLocalDBInstalled(); ISqlLocalDbProvider target = new SqlLocalDbProvider(); string instanceName = Guid.NewGuid().ToString(); // Act SqlLocalDbApi.CreateInstance(instanceName); try { // Assert ISqlLocalDbInstance result = target.GetInstance(instanceName); Assert.IsNotNull(result, "CreateInstance() returned null."); Assert.AreEqual(instanceName, result.Name, "SqlLocalDbInstance.Name is incorrect."); ISqlLocalDbInstanceInfo info = result.GetInstanceInfo(); Assert.IsTrue(info.Exists, "ISqlLocalDbInstanceInfo.Exists is incorrect."); Assert.IsFalse(info.IsRunning, "ISqlLocalDbInstanceInfo.IsRunning is incorrect."); Assert.IsTrue(Guid.TryParse(result.Name, out Guid unused), "SqlLocalDbInstance.Name is not a valid GUID."); } finally { SqlLocalDbApi.DeleteInstance(instanceName); } }
/// <summary> /// Creates a new open connection to the configured SQLServer instance. /// </summary> /// <returns>A newly opened SqlConnection.</returns> public SqlConnection CreateConnection() { ProviderConfiguration config = (ProviderConfiguration)ConfigurationManager.GetSection("dbTestMonkey/" + ConfigurationSectionName); if (string.IsNullOrWhiteSpace(config.ConnectionString) && !config.IsLocalDbInstance) { string errorMessage = "Configured connection string was empty or whitespace and database has not been configured as localdb. " + "Connection string is required in this instance."; throw new InvalidOperationException(errorMessage); } SqlConnection connection = null; if (config.IsLocalDbInstance) { if (!string.IsNullOrWhiteSpace(config.ConnectionString)) { connection = new SqlConnection(config.ConnectionString); } else if (!string.IsNullOrWhiteSpace(config.LocalDbInstanceName)) { var localDbProvider = new System.Data.SqlLocalDb.SqlLocalDbProvider(); connection = localDbProvider.GetInstance(config.LocalDbInstanceName).CreateConnection(); } else { throw new InvalidOperationException( "IsLocalDbInstance was true in configuration but no instance name or connection string was configured."); } connection.Open(); } else { if (!string.IsNullOrWhiteSpace(config.ConnectionString)) { connection = new SqlConnection(config.ConnectionString); connection.Open(); } else { throw new InvalidOperationException( "IsLocalDbInstance was false in configuration but no connection string was configured."); } } return(connection); }
private void CleanupLocalDbDatabase() { SqlLocalDbApi.AutomaticallyDeleteInstanceFiles = true; SqlLocalDbApi.StopOptions=StopInstanceOptions.KillProcess; var localDbProvider = new SqlLocalDbProvider(); var localDbInstanceInfo = localDbProvider.GetInstances().FirstOrDefault(instance => instance.Name==DatabaseName); if (localDbInstanceInfo != null) { var localDbInstance = localDbProvider.GetInstance(DatabaseName); if (!localDbInstance.IsRunning) { localDbInstance.Start(); } this.CleanupMsSqlDatabase(localDbInstance.CreateConnectionStringBuilder().ConnectionString); SqlLocalDbApi.StopInstance(DatabaseName,TimeSpan.FromSeconds(20.0)); SqlLocalDbApi.DeleteInstance(DatabaseName); } }
public void SqlLocalDbProvider_As_ISqlLocalDbFactory_GetInstance_Returns_Specified_Instance() { // Arrange Helpers.EnsureLocalDBInstalled(); ISqlLocalDbProvider target = new SqlLocalDbProvider(); string instanceName = Guid.NewGuid().ToString(); // Act SqlLocalDbApi.CreateInstance(instanceName); try { // Assert ISqlLocalDbInstance result = target.GetInstance(instanceName); Assert.IsNotNull(result, "CreateInstance() returned null."); Assert.AreEqual(instanceName, result.Name, "SqlLocalDbInstance.Name is incorrect."); ISqlLocalDbInstanceInfo info = result.GetInstanceInfo(); Assert.IsTrue(info.Exists, "ISqlLocalDbInstanceInfo.Exists is incorrect."); Assert.IsFalse(info.IsRunning, "ISqlLocalDbInstanceInfo.IsRunning is incorrect."); Guid guid; Assert.IsTrue(Guid.TryParse(result.Name, out guid), "SqlLocalDbInstance.Name is not a valid GUID."); } finally { SqlLocalDbApi.DeleteInstance(instanceName); } }