hi,
the additional debugging printouts are good,
but you changed the indentation from "mysql-coding-standard" to something else
i prefer it the way it was...
/Jonas
Jonathan Miller wrote:
> Below is the list of changes that have just been committed into a local
> 5.1 repository of root. When root does a push these changes will
> be propagated to the main repository and, within 24 hours after the
> push, to the public repository.
> For information on how to access the public repository
> see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
>
> ChangeSet@stripped, 2007-11-26 13:23:13-06:00, jmiller@stripped +2 -0
> main.cpp, setup.cpp:
> Fixed code formatting and added additional info, debug and error messages
>
> storage/ndb/test/run-test/main.cpp@stripped, 2007-11-26 13:22:54-06:00,
> jmiller@stripped +189 -214
> Fixed code formatting and added additional info, debug and error messages
>
> storage/ndb/test/run-test/setup.cpp@stripped, 2007-11-26 13:23:03-06:00,
> jmiller@stripped +290 -415
> Fixed code formatting and added additional info, debug and error messages
>
> diff -Nrup a/storage/ndb/test/run-test/main.cpp b/storage/ndb/test/run-test/main.cpp
> --- a/storage/ndb/test/run-test/main.cpp 2007-08-01 02:23:55 -05:00
> +++ b/storage/ndb/test/run-test/main.cpp 2007-11-26 13:22:54 -06:00
> @@ -140,8 +140,7 @@ const int p_servers = atrt_process::AP_M
> const int p_clients = atrt_process::AP_CLIENT | atrt_process::AP_NDB_API;
>
> int
> -main(int argc, char ** argv)
> -{
> +main(int argc, char ** argv){
> ndb_init();
>
> bool restart = true;
> @@ -159,9 +158,11 @@ main(int argc, char ** argv)
> g_logger.info("Starting...");
> g_config.m_generated = false;
> g_config.m_replication = g_replicate;
> + g_logger.info("Running Setup Configuration");
> if (!setup_config(g_config))
> goto end;
>
> + g_logger.info("Running configure");
> if (!configure(g_config, g_do_setup))
> goto end;
>
> @@ -169,37 +170,35 @@ main(int argc, char ** argv)
> if (!setup_directories(g_config, g_do_setup))
> goto end;
>
> - if (g_do_setup)
> - {
> + if (g_do_setup){
> g_logger.info("Setting up files");
> if (!setup_files(g_config, g_do_setup, g_do_sshx))
> goto end;
> }
>
> - if (g_do_deploy)
> - {
> + if (g_do_deploy){
> + g_logger.info("Running deploy");
> if (!deploy(g_config))
> goto end;
> }
>
> - if (g_do_quit)
> - {
> + if (g_do_quit){
> return_code = 0;
> goto end;
> }
>
> - if(!setup_hosts(g_config))
> + if(!setup_hosts(g_config)){
> + g_logger.info("Setting up hosts");
> goto end;
> + }
>
> - if (g_do_sshx)
> - {
> + if (g_do_sshx){
> g_logger.info("Starting xterm-ssh");
> if (!sshx(g_config, g_do_sshx))
> goto end;
>
> g_logger.info("Done...sleeping");
> - while(true)
> - {
> + while(true){
> NdbSleep_SecSleep(1);
> }
> return_code = 0;
> @@ -210,15 +209,13 @@ main(int argc, char ** argv)
> if(!connect_hosts(g_config))
> goto end;
>
> - if (g_do_start && !g_test_case_filename)
> - {
> + if (g_do_start && !g_test_case_filename){
> g_logger.info("Starting server processes: %x", g_do_start);
> if (!start(g_config, g_do_start))
> goto end;
>
> g_logger.info("Done...sleeping");
> - while(true)
> - {
> + while(true){
> NdbSleep_SecSleep(1);
> }
> return_code = 0;
> @@ -237,35 +234,42 @@ main(int argc, char ** argv)
> if(restart){
> g_logger.info("(Re)starting server processes processes");
> if(!stop_processes(g_config, ~0))
> - goto end;
> + goto end;
>
> + g_logger.info("Setting up Directories");
> if (!setup_directories(g_config, 2))
> - goto end;
> -
> + goto end;
> +
> + g_logger.info("Setting up Files");
> if (!setup_files(g_config, 2, 1))
> - goto end;
> + goto end;
>
> + g_logger.info("Setting up Hosts");
> if(!setup_hosts(g_config))
> goto end;
> -
> +
> + g_logger.info("Starting Servers");
> if (!start(g_config, p_ndb | p_servers))
> - goto end;
> + goto end;
> g_logger.info("All servers start completed");
> }
>
> // const int start_line = lineno;
> atrt_testcase test_case;
> + g_logger.info("Reading Test Case");
> if(!read_test_case(g_test_case_file, test_case, lineno))
> goto end;
>
> - g_logger.info("#%d - %s %s",
> - test_no,
> - test_case.m_command.c_str(), test_case.m_args.c_str());
> + g_logger.info("#%d - %s %s",test_no,
> + test_case.m_command.c_str(),
> + test_case.m_args.c_str());
>
> // Assign processes to programs
> + g_logger.info("Setting up Test Case");
> if(!setup_test_case(g_config, test_case))
> goto end;
>
> + g_logger.info("Starting client process(es)");
> if(!start_processes(g_config, p_clients))
> goto end;
>
> @@ -274,29 +278,32 @@ main(int argc, char ** argv)
> const time_t start = time(0);
> time_t now = start;
> do {
> - if(!update_status(g_config, atrt_process::AP_ALL))
> - goto end;
> -
> + if(!update_status(g_config, atrt_process::AP_ALL)){
> + g_logger.error("Update status failed");
> + goto end;
> + }
> int count = 0;
> -
> if((count = is_running(g_config, p_ndb)) != 2){
> - result = ERR_NDB_FAILED;
> - break;
> + result = ERR_NDB_FAILED;
> + g_logger.debug("setting result = ERR_NDB_FAILED");
> + break;
> }
>
> if((count = is_running(g_config, p_servers)) != 2){
> - result = ERR_SERVERS_FAILED;
> - break;
> + result = ERR_SERVERS_FAILED;
> + g_logger.debug("setting result = ERR_SERVERS_FAILED");
> + break;
> }
>
> if((count = is_running(g_config, p_clients)) == 0){
> - break;
> + break;
> }
>
> now = time(0);
> if(now > (start + test_case.m_max_time)){
> - result = ERR_MAX_TIME_ELAPSED;
> - break;
> + result = ERR_MAX_TIME_ELAPSED;
> + g_logger.debug("setting result = ERR_MAX_TIME_ELAPSED");
> + break;
> }
> NdbSleep_SecSleep(1);
> } while(true);
> @@ -322,7 +329,7 @@ main(int argc, char ** argv)
>
> if(g_mode == 0 && result){
> g_logger.info
> - ("Encountered failed test in interactive mode - terminating");
> + ("Encountered failed test in interactive mode - terminating");
> break;
> }
>
> @@ -330,23 +337,21 @@ main(int argc, char ** argv)
> resdir.assfmt("result.%d", test_no);
> remove_dir(resdir.c_str(), true);
>
> - if(test_case.m_report || g_mode == 2 || (g_mode && result))
> - {
> - if(rename("result", resdir.c_str()) != 0)
> - {
> - g_logger.critical("Failed to rename %s as %s",
> - "result", resdir.c_str());
> - goto end;
> + if(test_case.m_report || g_mode == 2 || (g_mode && result)){
> + if(rename("result", resdir.c_str()) != 0){
> + g_logger.critical("Failed to rename %s as %s",
> + "result", resdir.c_str());
> + goto end;
> }
> }
> - else
> - {
> + else{
> remove_dir("result", true);
> }
>
> if(result != 0){
> restart = true;
> - } else {
> + }
> + else {
> restart = false;
> }
> test_no++;
> @@ -369,24 +374,20 @@ main(int argc, char ** argv)
>
> static
> my_bool
> -get_one_option(int arg, const struct my_option * opt, char * value)
> -{
> - if (arg == 1024)
> - {
> +get_one_option(int arg, const struct my_option * opt, char * value){
> + if (arg == 1024){
> if (g_replicate.length())
> g_replicate.append(";");
> - g_replicate.append(value);
> - return 1;
> + g_replicate.append(value);
> + return 1;
> }
> return 0;
> }
>
> bool
> -parse_args(int argc, char** argv)
> -{
> +parse_args(int argc, char** argv){
> char buf[2048];
> - if (getcwd(buf, sizeof(buf)) == 0)
> - {
> + if (getcwd(buf, sizeof(buf)) == 0){
> g_logger.error("Unable to get current working directory");
> return false;
> }
> @@ -394,19 +395,16 @@ parse_args(int argc, char** argv)
>
> struct stat sbuf;
> BaseString mycnf;
> - if (argc > 1 && lstat(argv[argc-1], &sbuf) == 0)
> - {
> + if (argc > 1 && lstat(argv[argc-1], &sbuf) == 0){
> mycnf.append(g_cwd);
> mycnf.append(PATH_SEPARATOR);
> mycnf.append(argv[argc-1]);
> }
> - else
> - {
> + else{
> mycnf.append(g_cwd);
> mycnf.append(PATH_SEPARATOR);
> mycnf.append("my.cnf");
> - if (lstat(mycnf.c_str(), &sbuf) != 0)
> - {
> + if (lstat(mycnf.c_str(), &sbuf) != 0){
> g_logger.error("Unable to stat %s", mycnf.c_str());
> return false;
> }
> @@ -421,62 +419,56 @@ parse_args(int argc, char** argv)
> save_extra_file = my_defaults_extra_file;
> save_group_suffix = my_defaults_group_suffix;
>
> - if (save_extra_file)
> - {
> - g_logger.error("--defaults-extra-file(%s) is not supported...",
> - save_extra_file);
> + if (save_extra_file){
> + g_logger.error("--defaults-extra-file(%s) is not
> supported...",save_extra_file);
> return false;
> }
>
> - if (ret || handle_options(&argc, &argv, g_options, get_one_option))
> - {
> + if (ret || handle_options(&argc, &argv, g_options, get_one_option)){
> g_logger.error("Failed to load defaults/handle_options");
> return false;
> }
>
> - if (argc >= 2)
> - {
> + if (argc >= 2){
> const char * arg = argv[argc-2];
> - while(* arg)
> - {
> + while(* arg){
> switch(* arg){
> - case 'c':
> - g_do_setup = (g_do_setup == 0) ? 1 : g_do_setup;
> - break;
> - case 'C':
> - g_do_setup = 2;
> - break;
> - case 'd':
> - g_do_deploy = 1;
> - break;
> - case 'x':
> - g_do_sshx = atrt_process::AP_CLIENT | atrt_process::AP_NDB_API;
> - break;
> - case 'X':
> - g_do_sshx = atrt_process::AP_ALL;
> - break;
> - case 's':
> - g_do_start = p_ndb;
> - break;
> - case 'S':
> - g_do_start = p_ndb | p_servers;
> - break;
> - case 'f':
> - g_fqpn = 1;
> - break;
> - case 'q':
> - g_do_quit = 1;
> - break;
> - default:
> - g_logger.error("Unknown switch '%c'", *arg);
> - return false;
> + case 'c':
> + g_do_setup = (g_do_setup == 0) ? 1 : g_do_setup;
> + break;
> + case 'C':
> + g_do_setup = 2;
> + break;
> + case 'd':
> + g_do_deploy = 1;
> + break;
> + case 'x':
> + g_do_sshx = atrt_process::AP_CLIENT | atrt_process::AP_NDB_API;
> + break;
> + case 'X':
> + g_do_sshx = atrt_process::AP_ALL;
> + break;
> + case 's':
> + g_do_start = p_ndb;
> + break;
> + case 'S':
> + g_do_start = p_ndb | p_servers;
> + break;
> + case 'f':
> + g_fqpn = 1;
> + break;
> + case 'q':
> + g_do_quit = 1;
> + break;
> + default:
> + g_logger.error("Unknown switch '%c'", *arg);
> + return false;
> }
> arg++;
> }
> }
>
> - if(g_log_filename != 0)
> - {
> + if(g_log_filename != 0){
> g_logger.removeConsoleHandler();
> g_logger.addHandler(new FileLogHandler(g_log_filename));
> }
> @@ -489,14 +481,12 @@ parse_args(int argc, char** argv)
> g_logger.enable((Logger::LoggerLevel)tmp, Logger::LL_ALERT);
> }
>
> - if(!g_basedir)
> - {
> + if(!g_basedir){
> g_basedir = g_cwd;
> g_logger.info("basedir not specified, using %s", g_basedir);
> }
>
> - if (!g_prefix)
> - {
> + if (!g_prefix){
> g_prefix = DEFAULT_PREFIX;
> }
>
> @@ -506,31 +496,25 @@ parse_args(int argc, char** argv)
> {
> BaseString tmp;
> const char* env = getenv("PATH");
> - if (env && strlen(env))
> - {
> - tmp.assfmt("PATH=%s:%s/mysql-test/ndb",
> - env, g_prefix);
> + if (env && strlen(env)){
> + tmp.assfmt("PATH=%s:%s/mysql-test/ndb",env, g_prefix);
> }
> - else
> - {
> + else{
> tmp.assfmt("PATH=%s/mysql-test/ndb", g_prefix);
> }
> g_env_path = strdup(tmp.c_str());
> putenv(g_env_path);
> }
>
> - if (g_help)
> - {
> + if (g_help){
> my_print_help(g_options);
> my_print_variables(g_options);
> return 0;
> }
>
> - if(g_test_case_filename)
> - {
> + if(g_test_case_filename){
> g_test_case_file = fopen(g_test_case_filename, "r");
> - if(g_test_case_file == 0)
> - {
> + if(g_test_case_file == 0){
> g_logger.critical("Unable to open file: %s", g_test_case_filename);
> return false;
> }
> @@ -543,27 +527,23 @@ parse_args(int argc, char** argv)
> if (g_mode == 0)
> g_mode = 1;
>
> - if (g_do_sshx)
> - {
> + if (g_do_sshx){
> g_logger.critical("ssx specified...not possible with testfile");
> return false;
> }
> }
>
> - if (g_do_setup == 0)
> - {
> + if (g_do_setup == 0){
> BaseString tmp;
> tmp.append(g_basedir);
> tmp.append(PATH_SEPARATOR);
> tmp.append("my.cnf");
> - if (lstat(tmp.c_str(), &sbuf) != 0)
> - {
> + if (lstat(tmp.c_str(), &sbuf) != 0){
> g_logger.error("Unable to stat %s", tmp.c_str());
> return false;
> }
>
> - if (!S_ISREG(sbuf.st_mode))
> - {
> + if (!S_ISREG(sbuf.st_mode)){
> g_logger.error("%s is not a regular file", tmp.c_str());
> return false;
> }
> @@ -571,31 +551,26 @@ parse_args(int argc, char** argv)
> g_my_cnf = strdup(tmp.c_str());
> g_logger.info("Using %s", tmp.c_str());
> }
> - else
> - {
> + else{
> g_my_cnf = strdup(mycnf.c_str());
> }
>
> g_logger.info("Using --prefix=\"%s\"", g_prefix);
>
> - if(g_report_filename)
> - {
> + if(g_report_filename){
> g_report_file = fopen(g_report_filename, "w");
> - if(g_report_file == 0)
> - {
> + if(g_report_file == 0){
> g_logger.critical("Unable to create report file: %s", g_report_filename);
> return false;
> }
> }
>
> - if (g_clusters == 0)
> - {
> + if (g_clusters == 0){
> g_logger.critical("No clusters specified");
> return false;
> }
>
> g_user = strdup(getenv("LOGNAME"));
> -
> return true;
> }
>
> @@ -612,7 +587,6 @@ connect_hosts(atrt_config& config){
> config.m_hosts[i]->m_cpcd->getHost(),
> config.m_hosts[i]->m_cpcd->getPort());
> }
> -
> return true;
> }
>
> @@ -627,19 +601,14 @@ connect_ndb_mgm(atrt_process & proc){
> const char * val;
> proc.m_options.m_loaded.get("--PortNumber=", &val);
> tmp.appfmt(":%s", val);
> -
> - if (ndb_mgm_set_connectstring(handle,tmp.c_str()))
> - {
> + if (ndb_mgm_set_connectstring(handle,tmp.c_str())){
> g_logger.critical("Unable to create parse connectstring");
> return false;
> }
> -
> - if(ndb_mgm_connect(handle, 30, 1, 0) != -1)
> - {
> + if(ndb_mgm_connect(handle, 30, 1, 0) != -1){
> proc.m_ndb_mgm_handle = handle;
> return true;
> }
> -
> g_logger.critical("Unable to connect to ndb mgm %s", tmp.c_str());
> return false;
> }
> @@ -650,11 +619,11 @@ connect_ndb_mgm(atrt_config& config){
> atrt_process & proc = *config.m_processes[i];
> if((proc.m_type & atrt_process::AP_NDB_MGMD) != 0){
> if(!connect_ndb_mgm(proc)){
> - return false;
> + g_logger.error("connect_ndb_mgm failed");
> + return false;
> }
> }
> }
> -
> return true;
> }
>
> @@ -670,6 +639,7 @@ wait_ndb(atrt_config& config, int goal){
> goal = remap(goal);
>
> size_t cnt = 0;
> + g_logger.debug("Inside of wait_ndb()");
> for (size_t i = 0; i<config.m_clusters.size(); i++)
> {
> atrt_cluster* cluster = config.m_clusters[i];
> @@ -680,8 +650,8 @@ wait_ndb(atrt_config& config, int goal){
> for(size_t j = 0; j<cluster->m_processes.size(); j++){
> atrt_process & proc = *cluster->m_processes[j];
> if((proc.m_type & atrt_process::AP_NDB_MGMD) != 0){
> - handle = proc.m_ndb_mgm_handle;
> - break;
> + handle = proc.m_ndb_mgm_handle;
> + break;
> }
> }
>
> @@ -697,8 +667,7 @@ wait_ndb(atrt_config& config, int goal){
> * 3) wait STARTED
> */
> if(!wait_ndb(config, NDB_MGM_NODE_STATUS_NOT_STARTED))
> - return false;
> -
> + return false;
> ndb_mgm_start(handle, 0, 0);
> }
>
> @@ -715,50 +684,47 @@ wait_ndb(atrt_config& config, int goal){
> */
> state = 0;
> do {
> - state = ndb_mgm_get_status(handle);
> - if(state == 0){
> - const int err = ndb_mgm_get_latest_error(handle);
> - g_logger.error("Unable to poll db state: %d %s %s",
> - ndb_mgm_get_latest_error(handle),
> - ndb_mgm_get_latest_error_msg(handle),
> - ndb_mgm_get_latest_error_desc(handle));
> - if(err == NDB_MGM_SERVER_NOT_CONNECTED && connect_ndb_mgm(config)){
> - g_logger.error("Reconnected...");
> - continue;
> - }
> - return false;
> - }
> + state = ndb_mgm_get_status(handle);
> + if(state == 0){
> + const int err = ndb_mgm_get_latest_error(handle);
> + g_logger.error("Unable to poll db state: %d %s %s",
> + ndb_mgm_get_latest_error(handle),
> + ndb_mgm_get_latest_error_msg(handle),
> + ndb_mgm_get_latest_error_desc(handle));
> + if(err == NDB_MGM_SERVER_NOT_CONNECTED && connect_ndb_mgm(config)){
> + g_logger.error("Reconnected...");
> + continue;
> + }
> + return false;
> + }
> } while(state == 0);
> NdbAutoPtr<void> tmp(state);
>
> min2 = goal;
> for(int j = 0; j<state->no_of_nodes; j++){
> - if(state->node_states[j].node_type == NDB_MGM_NODE_TYPE_NDB){
> - const int s = remap(state->node_states[j].node_status);
> - min2 = (min2 < s ? min2 : s );
> -
> - if(s < remap(NDB_MGM_NODE_STATUS_NO_CONTACT) ||
> - s > NDB_MGM_NODE_STATUS_STARTED){
> - g_logger.critical("Strange DB status during start: %d %d",
> - j, min2);
> - return false;
> - }
> -
> - if(min2 < min){
> - g_logger.critical("wait ndb failed node: %d %d %d %d",
> - state->node_states[j].node_id, min, min2, goal);
> - }
> - }
> + if(state->node_states[j].node_type == NDB_MGM_NODE_TYPE_NDB){
> + const int s = remap(state->node_states[j].node_status);
> + min2 = (min2 < s ? min2 : s );
> + if(s < remap(NDB_MGM_NODE_STATUS_NO_CONTACT) ||
> + s > NDB_MGM_NODE_STATUS_STARTED){
> + g_logger.critical("Strange DB status during start: %d %d",j, min2);
> + return false;
> + }
> + if(min2 < min){
> + g_logger.critical("wait ndb failed node: %d %d %d %d",
> + state->node_states[j].node_id, min, min2, goal);
> + }
> + }
> }
>
> if(min2 < min){
> - g_logger.critical("wait ndb failed %d %d %d", min, min2, goal);
> - return false;
> + g_logger.critical("wait ndb failed %d %d %d", min, min2, goal);
> + return false;
> }
>
> if(min2 == goal){
> - cnt++;
> - goto next;
> + cnt++;
> + goto next;
> }
>
> min = min2;
> @@ -778,7 +744,7 @@ next:
> bool
> start_process(atrt_process & proc){
> if(proc.m_proc.m_id != -1){
> - g_logger.critical("starting already started process: %d", proc.m_index);
> + g_logger.critical("Process already started: %d", proc.m_index);
> return false;
> }
>
> @@ -822,7 +788,8 @@ start_processes(atrt_config& config, int
> atrt_process & proc = *config.m_processes[i];
> if((types & proc.m_type) != 0 && proc.m_proc.m_path != ""){
> if(!start_process(proc)){
> - return false;
> + g_logger.error("Start Process Failed");
> + return false;
> }
> }
> }
> @@ -831,9 +798,8 @@ start_processes(atrt_config& config, int
>
> bool
> stop_process(atrt_process & proc){
> - if(proc.m_proc.m_id == -1){
> + if(proc.m_proc.m_id == -1)
> return true;
> - }
>
> {
> Properties reply;
> @@ -841,10 +807,10 @@ stop_process(atrt_process & proc){
> Uint32 status;
> reply.get("status", &status);
> if(status != 4){
> - BaseString msg;
> - reply.get("errormessage", msg);
> - g_logger.error("Unable to stop process: %s(%d)", msg.c_str(), status);
> - return false;
> + BaseString msg;
> + reply.get("errormessage", msg);
> + g_logger.error("Unable to stop process: %s(%d)", msg.c_str(), status);
> + return false;
> }
> }
> }
> @@ -867,7 +833,8 @@ stop_processes(atrt_config& config, int
> atrt_process & proc = *config.m_processes[i];
> if((types & proc.m_type) != 0){
> if(!stop_process(proc)){
> - return false;
> + g_logger.error("Stop Process Failed");
> + return false;
> }
> }
> }
> @@ -892,23 +859,23 @@ update_status(atrt_config& config, int){
> Vector<SimpleCpcClient::Process> &h_procs=
> m_procs[proc.m_host->m_index];
> bool found = false;
> for(size_t j = 0; j<h_procs.size(); j++){
> - if(proc.m_proc.m_id == h_procs[j].m_id){
> - found = true;
> - proc.m_proc.m_status = h_procs[j].m_status;
> - break;
> - }
> + if(proc.m_proc.m_id == h_procs[j].m_id){
> + found = true;
> + proc.m_proc.m_status = h_procs[j].m_status;
> + break;
> + }
> }
> if(!found){
> - g_logger.error("update_status: not found");
> - g_logger.error("id: %d host: %s cmd: %s",
> - proc.m_proc.m_id,
> - proc.m_host->m_hostname.c_str(),
> - proc.m_proc.m_path.c_str());
> - for(size_t j = 0; j<h_procs.size(); j++){
> - g_logger.error("found: %d %s", h_procs[j].m_id,
> - h_procs[j].m_path.c_str());
> - }
> - return false;
> + g_logger.error("update_status: not found");
> + g_logger.error("id: %d host: %s cmd: %s",
> + proc.m_proc.m_id,
> + proc.m_host->m_hostname.c_str(),
> + proc.m_proc.m_path.c_str());
> + for(size_t j = 0; j<h_procs.size(); j++){
> + g_logger.error("found: %d %s", h_procs[j].m_id,
> + h_procs[j].m_path.c_str());
> + }
> + return false;
> }
> }
> }
> @@ -944,8 +911,10 @@ insert(const char * pair, Properties & p
> Vector<BaseString> split;
> tmp.split(split, ":=", 2);
>
> - if(split.size() != 2)
> + if(split.size() != 2){
> + g_logger.error("insert split.size != 2");
> return -1;
> + }
>
> p.put(split[0].trim().c_str(), split[1].trim().c_str());
>
> @@ -958,6 +927,7 @@ read_test_case(FILE * file, atrt_testcas
> Properties p;
> int elements = 0;
> char buf[1024];
> + g_logger.debug("Reading Test Case file %s",g_test_case_filename);
> while(!feof(file)){
> if(!fgets(buf, 1024, file))
> break;
> @@ -988,6 +958,7 @@ read_test_case(FILE * file, atrt_testcas
> tc.m_max_time = 60000;
> return true;
> }
> + g_logger.critical("File != stdin and elements = %d", elements);
> return false;
> }
>
> @@ -1000,11 +971,15 @@ read_test_case(FILE * file, atrt_testcas
> tc.m_args = "";
>
> const char * mt = 0;
> - if(!p.get("max-time", &mt))
> + if(!p.get("max-time", &mt)){
> tc.m_max_time = 60000;
> - else
> + g_logger.debug("tc.m_max_time set to default = %d",tc.m_max_time);
> + }
> + else{
> tc.m_max_time = atoi(mt);
> -
> + g_logger.debug("tc.m_max_time set to = %d",tc.m_max_time);
> + }
> +
> if(p.get("type", &mt) && strcmp(mt, "bench") == 0)
> tc.m_report= true;
> else
> diff -Nrup a/storage/ndb/test/run-test/setup.cpp
> b/storage/ndb/test/run-test/setup.cpp
> --- a/storage/ndb/test/run-test/setup.cpp 2007-02-12 19:38:48 -06:00
> +++ b/storage/ndb/test/run-test/setup.cpp 2007-11-26 13:23:03 -06:00
> @@ -18,8 +18,7 @@ enum {
> ,PO_REP = (atrt_options::AO_REPLICATION | PO_REP_SLAVE | PO_REP_MASTER)
> };
>
> -struct proc_option
> -{
> +struct proc_option{
> const char * name;
> int type;
> int options;
> @@ -46,8 +45,7 @@ struct proc_option f_options[] = {
> const char * ndbcs = "--ndb-connectstring=";
>
> bool
> -setup_config(atrt_config& config)
> -{
> +setup_config(atrt_config& config){
> BaseString tmp(g_clusters);
> Vector<BaseString> clusters;
> tmp.split(clusters, ",");
> @@ -55,18 +53,15 @@ setup_config(atrt_config& config)
> bool fqpn = clusters.size() > 1 || g_fqpn;
>
> size_t j,k;
> - for (size_t i = 0; i<clusters.size(); i++)
> - {
> + for (size_t i = 0; i<clusters.size(); i++){
> struct atrt_cluster *cluster = new atrt_cluster;
> config.m_clusters.push_back(cluster);
>
> cluster->m_name = clusters[i];
> - if (fqpn)
> - {
> + if (fqpn){
> cluster->m_dir.assfmt("cluster%s/", cluster->m_name.c_str());
> }
> - else
> - {
> + else{
> cluster->m_dir = "";
> }
>
> @@ -79,15 +74,13 @@ setup_config(atrt_config& config)
> char ** tmp = (char**)argv;
> const char *groups[] = { "cluster_config", 0 };
> int ret = load_defaults(g_my_cnf, groups, &argc, &tmp);
> - if (ret)
> - {
> + if (ret){
> g_logger.error("Unable to load defaults for cluster: %s",
> clusters[i].c_str());
> return false;
> }
>
> - struct
> - {
> + struct{
> atrt_process::Type type;
> const char * name;
> const char * value;
> @@ -103,32 +96,27 @@ setup_config(atrt_config& config)
> /**
> * Find all processes...
> */
> - for (j = 0; j<(size_t)argc; j++)
> - {
> - for (k = 0; proc_args[k].name; k++)
> - {
> - if (!strncmp(tmp[j], proc_args[k].name, strlen(proc_args[k].name)))
> - {
> - proc_args[k].value = tmp[j] + strlen(proc_args[k].name);
> - break;
> - }
> + for (j = 0; j<(size_t)argc; j++){
> + for (k = 0; proc_args[k].name; k++){
> + if (!strncmp(tmp[j], proc_args[k].name, strlen(proc_args[k].name))){
> + proc_args[k].value = tmp[j] + strlen(proc_args[k].name);
> + break;
> + }
> }
> }
>
> /**
> * Load each process
> */
> - for (j = 0; proc_args[j].name; j++)
> - {
> - if (proc_args[j].value)
> - {
> - BaseString tmp(proc_args[j].value);
> - Vector<BaseString> list;
> - tmp.split(list, ",");
> - for (k = 0; k<list.size(); k++)
> - if (!load_process(config, *cluster, proc_args[j].type,
> - k + 1, list[k].c_str()))
> - return false;
> + for (j = 0; proc_args[j].name; j++){
> + if (proc_args[j].value){
> + BaseString tmp(proc_args[j].value);
> + Vector<BaseString> list;
> + tmp.split(list, ",");
> + for (k = 0; k<list.size(); k++)
> + if (!load_process(config, *cluster, proc_args[j].type,
> + k + 1, list[k].c_str()))
> + return false;
> }
> }
>
> @@ -142,11 +130,10 @@ setup_config(atrt_config& config)
> const char *groups[] = { "mysql_cluster", 0 };
> ret = load_defaults(g_my_cnf, groups, &argc, &tmp);
>
> - if (ret)
> - {
> - g_logger.error("Unable to load defaults for cluster: %s",
> - clusters[i].c_str());
> - return false;
> + if (ret){
> + g_logger.error("Unable to load defaults for cluster: %s",
> + clusters[i].c_str());
> + return false;
> }
>
> load_options(argc, tmp, atrt_process::AP_CLUSTER, cluster->m_options);
> @@ -216,42 +203,41 @@ load_process(atrt_config& config, atrt_c
> char ** tmp = (char**)argv;
> const char *groups[] = { 0, 0, 0, 0 };
> switch(type){
> - case atrt_process::AP_NDB_MGMD:
> - groups[0] = "cluster_config";
> - buf[1].assfmt("cluster_config.ndb_mgmd.%d", idx);
> - groups[1] = buf[1].c_str();
> - buf[0].assfmt("--defaults-group-suffix=%s", cluster.m_name.c_str());
> - argv[argc++] = buf[0].c_str();
> - break;
> - case atrt_process::AP_NDBD:
> - groups[0] = "cluster_config";
> - buf[1].assfmt("cluster_config.ndbd.%d", idx);
> - groups[1] = buf[1].c_str();
> - buf[0].assfmt("--defaults-group-suffix=%s", cluster.m_name.c_str());
> - argv[argc++] = buf[0].c_str();
> - break;
> - case atrt_process::AP_MYSQLD:
> - groups[0] = "mysqld";
> - groups[1] = "mysql_cluster";
> - buf[0].assfmt("--defaults-group-suffix=.%d%s",idx,cluster.m_name.c_str());
> - argv[argc++] = buf[0].c_str();
> - break;
> - case atrt_process::AP_CLIENT:
> - buf[0].assfmt("client.%d%s", idx, cluster.m_name.c_str());
> - groups[0] = buf[0].c_str();
> - break;
> - case atrt_process::AP_NDB_API:
> - break;
> - default:
> - g_logger.critical("Unhandled process type: %d", type);
> - return false;
> + case atrt_process::AP_NDB_MGMD:
> + groups[0] = "cluster_config";
> + buf[1].assfmt("cluster_config.ndb_mgmd.%d", idx);
> + groups[1] = buf[1].c_str();
> + buf[0].assfmt("--defaults-group-suffix=%s", cluster.m_name.c_str());
> + argv[argc++] = buf[0].c_str();
> + break;
> + case atrt_process::AP_NDBD:
> + groups[0] = "cluster_config";
> + buf[1].assfmt("cluster_config.ndbd.%d", idx);
> + groups[1] = buf[1].c_str();
> + buf[0].assfmt("--defaults-group-suffix=%s", cluster.m_name.c_str());
> + argv[argc++] = buf[0].c_str();
> + break;
> + case atrt_process::AP_MYSQLD:
> + groups[0] = "mysqld";
> + groups[1] = "mysql_cluster";
> + buf[0].assfmt("--defaults-group-suffix=.%d%s",idx,cluster.m_name.c_str());
> + argv[argc++] = buf[0].c_str();
> + break;
> + case atrt_process::AP_CLIENT:
> + buf[0].assfmt("client.%d%s", idx, cluster.m_name.c_str());
> + groups[0] = buf[0].c_str();
> + break;
> + case atrt_process::AP_NDB_API:
> + break;
> + default:
> + g_logger.critical("Unhandled process type: %d", type);
> + return false;
> }
>
> int ret = load_defaults(g_my_cnf, groups, &argc, &tmp);
> - if (ret)
> - {
> + if (ret){
> g_logger.error("Unable to load defaults for cluster: %s",
> - cluster.m_name.c_str());
> + cluster.m_name.c_str());
> return false;
> }
>
> @@ -263,129 +249,108 @@ load_process(atrt_config& config, atrt_c
> cluster.m_dir.c_str());
>
> switch(type){
> - case atrt_process::AP_NDB_MGMD:
> - {
> - proc.m_proc.m_name.assfmt("%d-%s", proc_no, "ndb_mgmd");
> - proc.m_proc.m_path.assign(g_prefix).append("/libexec/ndb_mgmd");
> - proc.m_proc.m_args.assfmt("--defaults-file=%s/my.cnf",
> - proc.m_host->m_basedir.c_str());
> - proc.m_proc.m_args.appfmt(" --defaults-group-suffix=%s",
> - cluster.m_name.c_str());
> - proc.m_proc.m_args.append(" --nodaemon --mycnf");
> - proc.m_proc.m_cwd.assfmt("%sndb_mgmd.%d", dir.c_str(), proc.m_index);
> - proc.m_proc.m_env.appfmt(" MYSQL_GROUP_SUFFIX=%s",
> - cluster.m_name.c_str());
> - break;
> - }
> - case atrt_process::AP_NDBD:
> - {
> - proc.m_proc.m_name.assfmt("%d-%s", proc_no, "ndbd");
> - proc.m_proc.m_path.assign(g_prefix).append("/libexec/ndbd");
> - proc.m_proc.m_args.assfmt("--defaults-file=%s/my.cnf",
> - proc.m_host->m_basedir.c_str());
> - proc.m_proc.m_args.appfmt(" --defaults-group-suffix=%s",
> - cluster.m_name.c_str());
> - proc.m_proc.m_args.append(" --nodaemon -n");
> - proc.m_proc.m_cwd.assfmt("%sndbd.%d", dir.c_str(), proc.m_index);
> - proc.m_proc.m_env.appfmt(" MYSQL_GROUP_SUFFIX=%s",
> - cluster.m_name.c_str());
> - break;
> - }
> - case atrt_process::AP_MYSQLD:
> - {
> - proc.m_proc.m_name.assfmt("%d-%s", proc_no, "mysqld");
> - proc.m_proc.m_path.assign(g_prefix).append("/libexec/mysqld");
> - proc.m_proc.m_args.assfmt("--defaults-file=%s/my.cnf",
> - proc.m_host->m_basedir.c_str());
> - proc.m_proc.m_args.appfmt(" --defaults-group-suffix=.%d%s",
> - proc.m_index,
> - cluster.m_name.c_str());
> - proc.m_proc.m_args.append(" --core-file");
> - proc.m_proc.m_cwd.appfmt("%smysqld.%d", dir.c_str(), proc.m_index);
> - proc.m_proc.m_shutdown_options = "SIGKILL"; // not nice
> - proc.m_proc.m_env.appfmt(" MYSQL_GROUP_SUFFIX=.%d%s",
> - proc.m_index,
> - cluster.m_name.c_str());
> - break;
> - }
> - case atrt_process::AP_NDB_API:
> - {
> - proc.m_proc.m_name.assfmt("%d-%s", proc_no, "ndb_api");
> - proc.m_proc.m_path = "";
> - proc.m_proc.m_args = "";
> - proc.m_proc.m_cwd.appfmt("%sndb_api.%d", dir.c_str(), proc.m_index);
> - proc.m_proc.m_env.appfmt(" MYSQL_GROUP_SUFFIX=%s",
> - cluster.m_name.c_str());
> - break;
> - }
> - case atrt_process::AP_CLIENT:
> - {
> - proc.m_proc.m_name.assfmt("%d-%s", proc_no, "mysql");
> - proc.m_proc.m_path = "";
> - proc.m_proc.m_args = "";
> - proc.m_proc.m_cwd.appfmt("%s/client.%d", dir.c_str(), proc.m_index);
> - proc.m_proc.m_env.appfmt(" MYSQL_GROUP_SUFFIX=.%d%s",
> - proc.m_index,
> - cluster.m_name.c_str());
> - break;
> - }
> - case atrt_process::AP_ALL:
> - case atrt_process::AP_CLUSTER:
> - g_logger.critical("Unhandled process type: %d", proc.m_type);
> - return false;
> + case atrt_process::AP_NDB_MGMD:{
> + proc.m_proc.m_name.assfmt("%d-%s", proc_no, "ndb_mgmd");
> + proc.m_proc.m_path.assign(g_prefix).append("/libexec/ndb_mgmd");
> + proc.m_proc.m_args.assfmt("--defaults-file=%s/my.cnf",
> + proc.m_host->m_basedir.c_str());
> + proc.m_proc.m_args.appfmt(" --defaults-group-suffix=%s",
> + cluster.m_name.c_str());
> + proc.m_proc.m_args.append(" --nodaemon --mycnf");
> + proc.m_proc.m_cwd.assfmt("%sndb_mgmd.%d", dir.c_str(), proc.m_index);
> + proc.m_proc.m_env.appfmt(" MYSQL_GROUP_SUFFIX=%s",
> + cluster.m_name.c_str());
> + break;
> + }
> + case atrt_process::AP_NDBD:{
> + proc.m_proc.m_name.assfmt("%d-%s", proc_no, "ndbd");
> + proc.m_proc.m_path.assign(g_prefix).append("/libexec/ndbd");
> + proc.m_proc.m_args.assfmt("--defaults-file=%s/my.cnf",
> + proc.m_host->m_basedir.c_str());
> + proc.m_proc.m_args.appfmt(" --defaults-group-suffix=%s",
> + cluster.m_name.c_str());
> + proc.m_proc.m_args.append(" --nodaemon -n");
> + proc.m_proc.m_cwd.assfmt("%sndbd.%d", dir.c_str(), proc.m_index);
> + proc.m_proc.m_env.appfmt(" MYSQL_GROUP_SUFFIX=%s",
> + cluster.m_name.c_str());
> + break;
> + }
> + case atrt_process::AP_MYSQLD:{
> + proc.m_proc.m_name.assfmt("%d-%s", proc_no, "mysqld");
> + proc.m_proc.m_path.assign(g_prefix).append("/libexec/mysqld");
> + proc.m_proc.m_args.assfmt("--defaults-file=%s/my.cnf",
> + proc.m_host->m_basedir.c_str());
> + proc.m_proc.m_args.appfmt(" --defaults-group-suffix=.%d%s",
> + proc.m_index,cluster.m_name.c_str());
> + proc.m_proc.m_args.append(" --core-file");
> + proc.m_proc.m_cwd.appfmt("%smysqld.%d", dir.c_str(), proc.m_index);
> + proc.m_proc.m_shutdown_options = "SIGKILL"; // not nice
> + proc.m_proc.m_env.appfmt(" MYSQL_GROUP_SUFFIX=.%d%s",
> + proc.m_index, cluster.m_name.c_str());
> + break;
> + }
> + case atrt_process::AP_NDB_API:{
> + proc.m_proc.m_name.assfmt("%d-%s", proc_no, "ndb_api");
> + proc.m_proc.m_path = "";
> + proc.m_proc.m_args = "";
> + proc.m_proc.m_cwd.appfmt("%sndb_api.%d", dir.c_str(), proc.m_index);
> + proc.m_proc.m_env.appfmt(" MYSQL_GROUP_SUFFIX=%s",cluster.m_name.c_str());
> + break;
> + }
> + case atrt_process::AP_CLIENT:{
> + proc.m_proc.m_name.assfmt("%d-%s", proc_no, "mysql");
> + proc.m_proc.m_path = "";
> + proc.m_proc.m_args = "";
> + proc.m_proc.m_cwd.appfmt("%s/client.%d", dir.c_str(), proc.m_index);
> + proc.m_proc.m_env.appfmt(" MYSQL_GROUP_SUFFIX=.%d%s", proc.m_index,
> + cluster.m_name.c_str());
> + break;
> + }
> + case atrt_process::AP_ALL:
> + case atrt_process::AP_CLUSTER:
> + g_logger.critical("Unhandled process type: %d", proc.m_type);
> + return false;
> }
>
> - if (proc.m_proc.m_path.length())
> - {
> + if (proc.m_proc.m_path.length()){
> proc.m_proc.m_env.appfmt(" CMD=\"%s", proc.m_proc.m_path.c_str());
> if (proc.m_proc.m_args.length())
> proc.m_proc.m_env.append(" ");
> - proc.m_proc.m_env.append(proc.m_proc.m_args);
> - proc.m_proc.m_env.append("\" ");
> + proc.m_proc.m_env.append(proc.m_proc.m_args);
> + proc.m_proc.m_env.append("\" ");
> }
>
> - if (type == atrt_process::AP_MYSQLD)
> - {
> + if (type == atrt_process::AP_MYSQLD){
> /**
> * Add a client for each mysqld
> */
> if (!load_process(config, cluster, atrt_process::AP_CLIENT, idx, hostname))
> - {
> return false;
> - }
> }
>
> if (type == atrt_process::AP_CLIENT)
> - {
> proc.m_mysqld = cluster.m_processes[cluster.m_processes.size()-2];
> - }
> -
> +
> return true;
> }
>
> static
> bool
> -load_options(int argc, char** argv, int type, atrt_options& opts)
> -{
> - for (size_t i = 0; i<(size_t)argc; i++)
> - {
> - for (size_t j = 0; f_options[j].name; j++)
> - {
> +load_options(int argc, char** argv, int type, atrt_options& opts){
> + for (size_t i = 0; i<(size_t)argc; i++){
> + for (size_t j = 0; f_options[j].name; j++){
> const char * name = f_options[j].name;
> const size_t len = strlen(name);
> -
> - if ((f_options[j].type & type) && strncmp(argv[i], name, len) ==
> 0)
> - {
> - opts.m_loaded.put(name, argv[i]+len, true);
> - break;
> + if ((f_options[j].type & type) && strncmp(argv[i], name, len) ==
> 0){
> + opts.m_loaded.put(name, argv[i]+len, true);
> + break;
> }
> }
> }
> return true;
> }
>
> -struct proc_rule_ctx
> -{
> +struct proc_rule_ctx{
> int m_setup;
> atrt_config* m_config;
> atrt_host * m_host;
> @@ -393,8 +358,7 @@ struct proc_rule_ctx
> atrt_process* m_process;
> };
>
> -struct proc_rule
> -{
> +struct proc_rule{
> int type;
> bool (* func)(Properties& prop, proc_rule_ctx&, int extra);
> int extra;
> @@ -424,107 +388,92 @@ proc_rule f_rules[] =
> };
>
> bool
> -configure(atrt_config& config, int setup)
> -{
> +configure(atrt_config& config, int setup){
> Properties props;
> -
> - for (size_t i = 0; f_rules[i].func; i++)
> - {
> - bool ok = true;
> + bool ok = true;
> + for (size_t i = 0; f_rules[i].func; i++){
> + ok = true;
> proc_rule_ctx ctx;
> bzero(&ctx, sizeof(ctx));
> ctx.m_setup = setup;
> ctx.m_config = &config;
> -
> - for (size_t j = 0; j < config.m_clusters.size(); j++)
> - {
> + for (size_t j = 0; j < config.m_clusters.size(); j++){
> ctx.m_cluster = config.m_clusters[j];
> -
> - if (f_rules[i].type & atrt_process::AP_CLUSTER)
> - {
> - g_logger.debug("applying rule %d to cluster %s", i,
> - ctx.m_cluster->m_name.c_str());
> - if (! (* f_rules[i].func)(props, ctx, f_rules[i].extra))
> - ok = false;
> - }
> - else
> - {
> - atrt_cluster& cluster = *config.m_clusters[j];
> - for (size_t k = 0; k<cluster.m_processes.size(); k++)
> - {
> - atrt_process& proc = *cluster.m_processes[k];
> - ctx.m_process = cluster.m_processes[k];
> - if (proc.m_type & f_rules[i].type)
> - {
> - g_logger.debug("applying rule %d to %s", i,
> - proc.m_proc.m_cwd.c_str());
> - if (! (* f_rules[i].func)(props, ctx, f_rules[i].extra))
> + if (f_rules[i].type & atrt_process::AP_CLUSTER){
> + g_logger.debug("applying rule %d to cluster %s", i,
> + ctx.m_cluster->m_name.c_str());
> + if (! (* f_rules[i].func)(props, ctx, f_rules[i].extra)){
> ok = false;
> - }
> - }
> + g_logger.error("Failed applying rule %d to cluster %s", i,
> + ctx.m_cluster->m_name.c_str());
> + }
> + }
> + else{
> + atrt_cluster& cluster = *config.m_clusters[j];
> + for (size_t k = 0; k<cluster.m_processes.size(); k++){
> + atrt_process& proc = *cluster.m_processes[k];
> + ctx.m_process = cluster.m_processes[k];
> + if (proc.m_type & f_rules[i].type){
> + g_logger.debug("applying rule %d to %s", i,
> + proc.m_proc.m_cwd.c_str());
> + if (! (* f_rules[i].func)(props, ctx, f_rules[i].extra)){
> + ok = false;
> + g_logger.error("Failed applying rule %d to %s", i,
> + proc.m_proc.m_cwd.c_str());
> + }
> + }
> + }
> }
> }
> -
> - if (!ok)
> - {
> - return false;
> - }
> }
> +
> + if (!ok)
> + return false;
>
> return true;
> }
>
> static
> atrt_process*
> -find(atrt_config& config, int type, const char * name)
> -{
> +find(atrt_config& config, int type, const char * name){
> BaseString tmp(name);
> Vector<BaseString> src;
> Vector<BaseString> dst;
> tmp.split(src, ".");
>
> if (src.size() != 2)
> - {
> return 0;
> - }
> atrt_cluster* cluster = 0;
> BaseString cl;
> cl.appfmt(".%s", src[1].c_str());
> - for (size_t i = 0; i<config.m_clusters.size(); i++)
> - {
> - if (config.m_clusters[i]->m_name == cl)
> - {
> + for (size_t i = 0; i<config.m_clusters.size(); i++){
> + if (config.m_clusters[i]->m_name == cl){
> cluster = config.m_clusters[i];
> break;
> }
> }
>
> if (cluster == 0)
> - {
> return 0;
> - }
>
> int idx = atoi(src[0].c_str()) - 1;
> - for (size_t i = 0; i<cluster->m_processes.size(); i++)
> - {
> - if (cluster->m_processes[i]->m_type & type)
> - {
> - if (idx == 0)
> - return cluster->m_processes[i];
> - else
> - idx --;
> + for (size_t i = 0; i<cluster->m_processes.size(); i++){
> + if (cluster->m_processes[i]->m_type & type){
> + if (idx == 0){
> + return cluster->m_processes[i];
> + }
> + else{
> + idx --;
> + }
> }
> }
> -
> return 0;
> }
>
> static
> bool
> -pr_check_replication(Properties& props, proc_rule_ctx& ctx, int)
> -{
> - if (! (ctx.m_config->m_replication == ""))
> - {
> +pr_check_replication(Properties& props, proc_rule_ctx& ctx, int){
> + if (! (ctx.m_config->m_replication == "")){
> Vector<BaseString> list;
> ctx.m_config->m_replication.split(list, ";");
> atrt_config& config = *ctx.m_config;
> @@ -532,40 +481,32 @@ pr_check_replication(Properties& props,
> ctx.m_config->m_replication = "";
>
> const char * msg = "Invalid replication specification";
> - for (size_t i = 0; i<list.size(); i++)
> - {
> + for (size_t i = 0; i<list.size(); i++){
> Vector<BaseString> rep;
> list[i].split(rep, ":");
> - if (rep.size() != 2)
> - {
> - g_logger.error("%s: %s (split: %d)", msg, list[i].c_str(), rep.size());
> - return false;
> + if (rep.size() != 2){
> + g_logger.error("%s: %s (split: %d)", msg, list[i].c_str(), rep.size());
> + return false;
> }
>
> atrt_process* src = find(config, atrt_process::AP_MYSQLD,rep[0].c_str());
> atrt_process* dst = find(config, atrt_process::AP_MYSQLD,rep[1].c_str());
>
> - if (src == 0 || dst == 0)
> - {
> - g_logger.error("%s: %s (%d %d)",
> - msg, list[i].c_str(), src != 0, dst != 0);
> - return false;
> + if (src == 0 || dst == 0){
> + g_logger.error("%s: %s (%d %d)",
> + msg, list[i].c_str(), src != 0, dst != 0);
> + return false;
> }
>
> -
> - if (dst->m_rep_src != 0)
> - {
> - g_logger.error("%s: %s : %s already has replication src (%s)",
> - msg,
> - list[i].c_str(),
> - dst->m_proc.m_cwd.c_str(),
> - dst->m_rep_src->m_proc.m_cwd.c_str());
> - return false;
> + if (dst->m_rep_src != 0){
> + g_logger.error("%s: %s : %s already has replication src (%s)",
> + msg,list[i].c_str(),dst->m_proc.m_cwd.c_str(),
> + dst->m_rep_src->m_proc.m_cwd.c_str());
> + return false;
> }
>
> dst->m_rep_src = src;
> src->m_rep_dst.push_back(dst);
> -
> src->m_options.m_features |= PO_REP_MASTER;
> dst->m_options.m_features |= PO_REP_SLAVE;
> }
> @@ -575,26 +516,21 @@ pr_check_replication(Properties& props,
>
> static
> bool
> -pr_check_features(Properties& props, proc_rule_ctx& ctx, int)
> -{
> +pr_check_features(Properties& props, proc_rule_ctx& ctx, int){
> int features = 0;
> atrt_cluster& cluster = *ctx.m_cluster;
> - for (size_t i = 0; i<cluster.m_processes.size(); i++)
> - {
> + for (size_t i = 0; i<cluster.m_processes.size(); i++){
> if (cluster.m_processes[i]->m_type == atrt_process::AP_NDB_MGMD ||
> - cluster.m_processes[i]->m_type == atrt_process::AP_NDB_API ||
> - cluster.m_processes[i]->m_type == atrt_process::AP_NDBD)
> - {
> + cluster.m_processes[i]->m_type == atrt_process::AP_NDB_API ||
> + cluster.m_processes[i]->m_type == atrt_process::AP_NDBD){
> features |= atrt_options::AO_NDBCLUSTER;
> break;
> }
> }
>
> - if (features)
> - {
> + if (features){
> cluster.m_options.m_features |= features;
> - for (size_t i = 0; i<cluster.m_processes.size(); i++)
> - {
> + for (size_t i = 0; i<cluster.m_processes.size(); i++){
> cluster.m_processes[i]->m_options.m_features |= features;
> }
> }
> @@ -603,45 +539,37 @@ pr_check_features(Properties& props, pro
>
> static
> bool
> -pr_fix_client(Properties& props, proc_rule_ctx& ctx, int)
> -{
> - for (size_t i = 0; f_options[i].name; i++)
> - {
> +pr_fix_client(Properties& props, proc_rule_ctx& ctx, int){
> + for (size_t i = 0; f_options[i].name; i++){
> proc_option& opt = f_options[i];
> const char * name = opt.name;
> - if (opt.type & atrt_process::AP_CLIENT)
> - {
> + if (opt.type & atrt_process::AP_CLIENT){
> const char * val;
> atrt_process& proc = *ctx.m_process;
> - if (!proc.m_options.m_loaded.get(name, &val))
> - {
> - require(proc.m_mysqld->m_options.m_loaded.get(name, &val));
> - proc.m_options.m_loaded.put(name, val);
> - proc.m_options.m_generated.put(name, val);
> + if (!proc.m_options.m_loaded.get(name, &val)){
> + require(proc.m_mysqld->m_options.m_loaded.get(name, &val));
> + proc.m_options.m_loaded.put(name, val);
> + proc.m_options.m_generated.put(name, val);
> }
> }
> }
> -
> return true;
> }
>
> static
> Uint32
> -try_default_port(atrt_process& proc, const char * name)
> -{
> +try_default_port(atrt_process& proc, const char * name){
> Uint32 port =
> strcmp(name, "--port=") == 0 ? 3306 :
> strcmp(name, "--PortNumber=") == 0 ? 1186 :
> 0;
>
> atrt_host * host = proc.m_host;
> - for (size_t i = 0; i<host->m_processes.size(); i++)
> - {
> + for (size_t i = 0; i<host->m_processes.size(); i++){
> const char * val;
> - if (host->m_processes[i]->m_options.m_loaded.get(name, &val))
> - {
> + if (host->m_processes[i]->m_options.m_loaded.get(name, &val)){
> if ((Uint32)atoi(val) == port)
> - return 0;
> + return 0;
> }
> }
> return port;
> @@ -649,34 +577,28 @@ try_default_port(atrt_process& proc, con
>
> static
> bool
> -generate(atrt_process& proc, const char * name, Properties& props)
> -{
> +generate(atrt_process& proc, const char * name, Properties& props){
> atrt_options& opts = proc.m_options;
> if (strcmp(name, "--port=") == 0 ||
> - strcmp(name, "--PortNumber=") == 0)
> - {
> + strcmp(name, "--PortNumber=") == 0){
> Uint32 val;
> - if (g_default_ports == 0 || (val = try_default_port(proc, name)) == 0)
> - {
> + if (g_default_ports == 0 || (val = try_default_port(proc, name)) == 0){
> val = g_baseport;
> props.get("--PortNumber=", &val);
> props.put("--PortNumber=", (val + 1), true);
> }
> -
> char buf[255];
> snprintf(buf, sizeof(buf), "%u", val);
> opts.m_loaded.put(name, buf);
> opts.m_generated.put(name, buf);
> return true;
> }
> - else if (strcmp(name, "--datadir=") == 0)
> - {
> + else if (strcmp(name, "--datadir=") == 0){
> opts.m_loaded.put(name, proc.m_proc.m_cwd.c_str());
> opts.m_generated.put(name, proc.m_proc.m_cwd.c_str());
> return true;
> }
> - else if (strcmp(name, "--FileSystemPath=") == 0)
> - {
> + else if (strcmp(name, "--FileSystemPath=") == 0){
> BaseString dir;
> dir.append(proc.m_host->m_basedir);
> dir.append("/");
> @@ -685,40 +607,31 @@ generate(atrt_process& proc, const char
> opts.m_generated.put(name, dir.c_str());
> return true;
> }
> - else if (strcmp(name, "--socket=") == 0)
> - {
> + else if (strcmp(name, "--socket=") == 0){
> const char * sock = 0;
> - if (g_default_ports)
> - {
> + if (g_default_ports){
> sock = "/tmp/mysql.sock";
> atrt_host * host = proc.m_host;
> - for (size_t i = 0; i<host->m_processes.size(); i++)
> - {
> - const char * val;
> - if (host->m_processes[i]->m_options.m_loaded.get(name, &val))
> - {
> - if (strcmp(sock, val) == 0)
> - {
> - sock = 0;
> - break;
> - }
> - }
> + for (size_t i = 0; i<host->m_processes.size(); i++){
> + const char * val;
> + if (host->m_processes[i]->m_options.m_loaded.get(name, &val)){
> + if (strcmp(sock, val) == 0){
> + sock = 0;
> + break;
> + }
> + }
> }
> }
> -
> BaseString tmp;
> - if (sock == 0)
> - {
> + if (sock == 0){
> tmp.assfmt("%s/mysql.sock", proc.m_proc.m_cwd.c_str());
> sock = tmp.c_str();
> }
> -
> opts.m_loaded.put(name, sock);
> opts.m_generated.put(name, sock);
> return true;
> }
> - else if (strcmp(name, "--server-id=") == 0)
> - {
> + else if (strcmp(name, "--server-id=") == 0){
> Uint32 val = 1;
> props.get(name, &val);
> char buf[255];
> @@ -728,64 +641,52 @@ generate(atrt_process& proc, const char
> props.put(name, (val + 1), true);
> return true;
> }
> - else if (strcmp(name, "--log-bin") == 0)
> - {
> + else if (strcmp(name, "--log-bin") == 0){
> opts.m_loaded.put(name, "");
> opts.m_generated.put(name, "");
> return true;
> }
> - else if (strcmp(name, "--master-host=") == 0)
> - {
> + else if (strcmp(name, "--master-host=") == 0){
> require(proc.m_rep_src != 0);
> opts.m_loaded.put(name, proc.m_rep_src->m_host->m_hostname.c_str());
> opts.m_generated.put(name, proc.m_rep_src->m_host->m_hostname.c_str());
> return true;
> }
> - else if (strcmp(name, "--master-port=") == 0)
> - {
> + else if (strcmp(name, "--master-port=") == 0){
> const char* val;
> require(proc.m_rep_src->m_options.m_loaded.get("--port=", &val));
> opts.m_loaded.put(name, val);
> opts.m_generated.put(name, val);
> return true;
> }
> - else if (strcmp(name, "--master-user=") == 0)
> - {
> + else if (strcmp(name, "--master-user=") == 0){
> opts.m_loaded.put(name, "root");
> opts.m_generated.put(name, "root");
> return true;
> }
> - else if (strcmp(name, "--master-password=") == 0)
> - {
> + else if (strcmp(name, "--master-password=") == 0){
> opts.m_loaded.put(name, "\"\"");
> opts.m_generated.put(name, "\"\"");
> return true;
> }
> -
> g_logger.warning("Unknown parameter: %s", name);
> return true;
> }
>
> static
> bool
> -pr_proc_options(Properties& props, proc_rule_ctx& ctx, int extra)
> -{
> - for (size_t i = 0; f_options[i].name; i++)
> - {
> +pr_proc_options(Properties& props, proc_rule_ctx& ctx, int extra){
> + for (size_t i = 0; f_options[i].name; i++){
> proc_option& opt = f_options[i];
> atrt_process& proc = *ctx.m_process;
> const char * name = opt.name;
> - if (opt.type & proc.m_type)
> - {
> + if (opt.type & proc.m_type){
> if (opt.options == 0 ||
> - (opt.options & extra & proc.m_options.m_features))
> - {
> - const char * val;
> - if (!proc.m_options.m_loaded.get(name, &val))
> - {
> - generate(proc, name, props);
> - }
> - }
> + (opt.options & extra & proc.m_options.m_features)){
> + const char * val;
> + if (!proc.m_options.m_loaded.get(name, &val))
> + generate(proc, name, props);
> + }
> }
> }
> return true;
> @@ -793,42 +694,32 @@ pr_proc_options(Properties& props, proc_
>
> static
> bool
> -pr_fix_ndb_connectstring(Properties& props, proc_rule_ctx& ctx, int)
> -{
> +pr_fix_ndb_connectstring(Properties& props, proc_rule_ctx& ctx, int){
> const char * val;
> atrt_cluster& cluster = *ctx.m_cluster;
> -
> - if (cluster.m_options.m_features & atrt_options::AO_NDBCLUSTER)
> - {
> - if (!cluster.m_options.m_loaded.get(ndbcs, &val))
> - {
> + if (cluster.m_options.m_features & atrt_options::AO_NDBCLUSTER){
> + if (!cluster.m_options.m_loaded.get(ndbcs, &val)){
> /**
> * Construct connect string for this cluster
> */
> BaseString str;
> - for (size_t i = 0; i<cluster.m_processes.size(); i++)
> - {
> - atrt_process* tmp = cluster.m_processes[i];
> - if (tmp->m_type == atrt_process::AP_NDB_MGMD)
> - {
> - if (str.length())
> - {
> - str.append(";");
> - }
> - const char * port;
> - require(tmp->m_options.m_loaded.get("--PortNumber=", &port));
> - str.appfmt("%s:%s", tmp->m_host->m_hostname.c_str(), port);
> - }
> + for (size_t i = 0; i<cluster.m_processes.size(); i++){
> + atrt_process* tmp = cluster.m_processes[i];
> + if (tmp->m_type == atrt_process::AP_NDB_MGMD){
> + if (str.length()){
> + str.append(";");
> + }
> + const char * port;
> + require(tmp->m_options.m_loaded.get("--PortNumber=", &port));
> + str.appfmt("%s:%s", tmp->m_host->m_hostname.c_str(), port);
> + }
> }
> cluster.m_options.m_loaded.put(ndbcs, str.c_str());
> cluster.m_options.m_generated.put(ndbcs, str.c_str());
> cluster.m_options.m_loaded.get(ndbcs, &val);
> }
> -
> - for (size_t i = 0; i<cluster.m_processes.size(); i++)
> - {
> - cluster.m_processes[i]->m_proc.m_env.appfmt(" NDB_CONNECTSTRING=%s",
> - val);
> + for (size_t i = 0; i<cluster.m_processes.size(); i++){
> + cluster.m_processes[i]->m_proc.m_env.appfmt(" NDB_CONNECTSTRING=%s",val);
> }
> }
> return true;
> @@ -836,22 +727,16 @@ pr_fix_ndb_connectstring(Properties& pro
>
> static
> bool
> -pr_set_ndb_connectstring(Properties& props, proc_rule_ctx& ctx, int)
> -{
> +pr_set_ndb_connectstring(Properties& props, proc_rule_ctx& ctx, int){
> const char * val;
> -
> atrt_process& proc = *ctx.m_process;
> - if (proc.m_options.m_features & atrt_options::AO_NDBCLUSTER)
> - {
> - if (!proc.m_options.m_loaded.get(ndbcs, &val))
> - {
> + if (proc.m_options.m_features & atrt_options::AO_NDBCLUSTER){
> + if (!proc.m_options.m_loaded.get(ndbcs, &val)){
> require(proc.m_cluster->m_options.m_loaded.get(ndbcs, &val));
> proc.m_options.m_loaded.put(ndbcs, val);
> proc.m_options.m_generated.put(ndbcs, val);
> }
> -
> - if (!proc.m_options.m_loaded.get("--ndbcluster", &val))
> - {
> + if (!proc.m_options.m_loaded.get("--ndbcluster", &val)){
> proc.m_options.m_loaded.put("--ndbcluster", "");
> proc.m_options.m_generated.put("--ndbcluster", "");
> }
> @@ -861,49 +746,39 @@ pr_set_ndb_connectstring(Properties& pro
>
> static
> bool
> -pr_check_proc(Properties& props, proc_rule_ctx& ctx, int)
> -{
> +pr_check_proc(Properties& props, proc_rule_ctx& ctx, int){
> bool ok = true;
> bool generated = false;
> const int setup = ctx.m_setup;
> atrt_process& proc = *ctx.m_process;
> - for (size_t i = 0; f_options[i].name; i++)
> - {
> + for (size_t i = 0; f_options[i].name; i++){
> proc_option& opt = f_options[i];
> const char * name = opt.name;
> if ((ctx.m_process->m_type & opt.type) &&
> - (opt.options == 0 || (ctx.m_process->m_options.m_features & opt.options)))
> - {
> + (opt.options == 0 ||
> + (ctx.m_process->m_options.m_features & opt.options))){
> const char * val;
> - if (!proc.m_options.m_loaded.get(name, &val))
> - {
> - ok = false;
> - g_logger.warning("Missing paramter: %s for %s",
> - name, proc.m_proc.m_cwd.c_str());
> - }
> - else if (proc.m_options.m_generated.get(name, &val))
> - {
> - if (setup == 0)
> - {
> - ok = false;
> - g_logger.warning("Missing paramter: %s for %s",
> - name, proc.m_proc.m_cwd.c_str());
> - }
> - else
> - {
> - generated = true;
> - }
> + if (!proc.m_options.m_loaded.get(name, &val)){
> + ok = false;
> + g_logger.warning("Missing paramter: %s for %s",
> + name, proc.m_proc.m_cwd.c_str());
> + }
> + else if (proc.m_options.m_generated.get(name, &val)){
> + if (setup == 0){
> + ok = false;
> + g_logger.warning("Missing paramter: %s for %s",
> + name, proc.m_proc.m_cwd.c_str());
> + }
> + else{
> + generated = true;
> + }
> }
> }
> }
> -
> - if (generated)
> - {
> + if (generated){
> ctx.m_config->m_generated = true;
> }
> -
> //ndbout << proc << endl;
> -
> return ok;
> }
>
> @@ -913,23 +788,23 @@ operator<<(NdbOut& out, const atrt_proce
> {
> out << "[ atrt_process: ";
> switch(proc.m_type){
> - case atrt_process::AP_NDB_MGMD:
> - out << "ndb_mgmd";
> - break;
> - case atrt_process::AP_NDBD:
> - out << "ndbd";
> - break;
> - case atrt_process::AP_MYSQLD:
> - out << "mysqld";
> - break;
> - case atrt_process::AP_NDB_API:
> - out << "ndbapi";
> - break;
> - case atrt_process::AP_CLIENT:
> - out << "client";
> - break;
> - default:
> - out << "<unknown: " << (int)proc.m_type << " >";
> + case atrt_process::AP_NDB_MGMD:
> + out << "ndb_mgmd";
> + break;
> + case atrt_process::AP_NDBD:
> + out << "ndbd";
> + break;
> + case atrt_process::AP_MYSQLD:
> + out << "mysqld";
> + break;
> + case atrt_process::AP_NDB_API:
> + out << "ndbapi";
> + break;
> + case atrt_process::AP_CLIENT:
> + out << "client";
> + break;
> + default:
> + out << "<unknown: " << (int)proc.m_type << " >";
> }
>
> out << " cluster: " << proc.m_cluster->m_name.c_str()
>