Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        /// <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);
        }