public void ValidateMultiDatabaseData_EmptyOverrideSequence() { MultiDbData dbData = new MultiDbData(); ServerData srv1 = new ServerData(); srv1.ServerName = "server1"; dbData["server1"] = srv1; ServerData srv2 = new ServerData(); srv2.ServerName = "server2"; dbData["server2"] = srv2; DbOverrideSequence ovr = new DbOverrideSequence(); ovr.Add("1", new DatabaseOverride("default", "target")); ovr.Add("2", new DatabaseOverride("default2", "target2")); dbData["server1"].OverrideSequence = ovr; DbOverrideSequence ovr2 = new DbOverrideSequence(); ovr.Add("3", new DatabaseOverride("default", "target")); ovr.Add("4", new DatabaseOverride("", "")); dbData["server2"].OverrideSequence = ovr2; bool expected = false; bool actual = MultiDbHelper.ValidateMultiDatabaseData(dbData); Assert.AreEqual(expected, actual); }
public void ValidateMultiDatabaseData_BadConfuguration() { string[] fileContents = new string[] { "SERVER:default,target;default2,target2", "SERVER2:,;default2,target2" }; MultiDbData dbData = MultiDbHelper.ImportMultiDbTextConfig(fileContents); bool expected = false; bool actual = MultiDbHelper.ValidateMultiDatabaseData(dbData); Assert.AreEqual(expected, actual); }
/// <summary> /// Accepts a Multi-Database configuration file, processes it and outputs a populated MultiDbData object /// </summary> /// <param name="multiDbOverrideSettingFileName">Valid Multi-database file (.multiDb, .multiDbQ, .cfg)</param> /// <param name="multiData">Out parameter of populated MultiDbData object</param> /// <param name="errorMessages">Out parameter or error messages (if any)</param> /// <returns>Zero (0) if no errors, otherwise an error code</returns> public static int ValidateAndLoadMultiDbData(string multiDbOverrideSettingFileName, CommandLineArgs cmdLine, out MultiDbData multiData, out string[] errorMessages) { log.LogInformation("Validating target database settings"); string message = string.Empty; string error; errorMessages = new string[0]; multiData = null; string extension = Path.GetExtension(multiDbOverrideSettingFileName).ToLowerInvariant(); switch (extension) { case ".multidb": multiData = MultiDbHelper.DeserializeMultiDbConfiguration(multiDbOverrideSettingFileName); break; case ".multidbq": multiData = MultiDbHelper.CreateMultiDbConfigFromQueryFile(multiDbOverrideSettingFileName, out message); break; case ".sql": if (cmdLine != null) { ConnectionData connData = new ConnectionData() { DatabaseName = cmdLine.Database, SQLServerName = cmdLine.Server, UserId = cmdLine.AuthenticationArgs.UserName, Password = cmdLine.AuthenticationArgs.Password, AuthenticationType = cmdLine.AuthenticationArgs.AuthenticationType }; multiData = MultiDbHelper.CreateMultiDbConfigFromQuery(connData, File.ReadAllText(cmdLine.MultiDbRunConfigFileName), out message); } break; case ".cfg": default: multiData = MultiDbHelper.ImportMultiDbTextConfig(multiDbOverrideSettingFileName); break; } //if (multiDbOverrideSettingFileName.EndsWith(".multidb", StringComparison.InvariantCultureIgnoreCase)) // multiData = MultiDbHelper.DeserializeMultiDbConfiguration(multiDbOverrideSettingFileName); //else if (multiDbOverrideSettingFileName.EndsWith(".multidbq", StringComparison.InvariantCultureIgnoreCase)) // multiData = MultiDbHelper.CreateMultiDbConfigFromQueryFile(multiDbOverrideSettingFileName, out message); //else if (multiDbOverrideSettingFileName.EndsWith(".cfg", StringComparison.InvariantCultureIgnoreCase)) // multiData = MultiDbHelper.ImportMultiDbTextConfig(multiDbOverrideSettingFileName); if (multiData == null || multiData.Count() == 0) { error = "Unable to read in configuration file " + multiDbOverrideSettingFileName + ((message.Length > 0) ? " :: " + message : ""); errorMessages = new string[] { error, "Returning error code: " + (int)ExecutionReturn.NullMultiDbConfig }; log.LogError(error); return((int)ExecutionReturn.NullMultiDbConfig); } if (!MultiDbHelper.ValidateMultiDatabaseData(multiData)) { error = "One or more scripts is missing a default or target override database setting. Run has been halted. Please correct the error and try again"; errorMessages = new string[] { error, "Returning error code: " + (int)ExecutionReturn.MissingTargetDbOverrideSetting }; log.LogError(error); return((int)ExecutionReturn.MissingTargetDbOverrideSetting); } return(0); }