keso.c

来自「MySQL数据库开发源码 值得一看哦」· C语言 代码 · 共 471 行

C
471
字号
/* Copyright (C) 2003 MySQL AB   This program is free software; you can redistribute it and/or modify   it under the terms of the GNU General Public License as published by   the Free Software Foundation; either version 2 of the License, or   (at your option) any later version.   This program is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   GNU General Public License for more details.   You should have received a copy of the GNU General Public License   along with this program; if not, write to the Free Software   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */#include <ndb_global.h>#include <mgmapi.h>#ifdef VM_TRACE#include <mgmapi_debug.h>#endif#include <NdbOut.hpp>static int testConnect(NdbMgmHandle h, struct ndb_mgm_reply* reply);static int testDisconnect(NdbMgmHandle h, struct ndb_mgm_reply* reply);static int testStatus(NdbMgmHandle h, struct ndb_mgm_reply* reply);static int testGetConfig(NdbMgmHandle h, struct ndb_mgm_reply* reply);#ifdef VM_TRACEstatic int testLogSignals(NdbMgmHandle h, struct ndb_mgm_reply* reply);static int testStartSignalLog(NdbMgmHandle h, struct ndb_mgm_reply* reply);static int testStopSignalLog(NdbMgmHandle h, struct ndb_mgm_reply* reply);static int testSetTrace(NdbMgmHandle h, struct ndb_mgm_reply* reply);static int testInsertError(NdbMgmHandle h, struct ndb_mgm_reply* reply);static int testDumpState(NdbMgmHandle h, struct ndb_mgm_reply* reply);#endifstatic int testFilterClusterLog(NdbMgmHandle h, struct ndb_mgm_reply* reply);static int testSetLogLevelClusterLog(NdbMgmHandle h, 				     struct ndb_mgm_reply* reply);static int testSetLogLevelNode(NdbMgmHandle h, struct ndb_mgm_reply* reply);static int testRestartNode(NdbMgmHandle h, struct ndb_mgm_reply* reply);static int testGetStatPort(NdbMgmHandle h, struct ndb_mgm_reply* reply);typedef int (*FUNC)(NdbMgmHandle h, struct ndb_mgm_reply* reply);struct test_case {  char name[255];  FUNC func;};struct test_case test_connect_disconnect[] = {  {"testConnect", &testConnect},  {"testDisconnect", &testDisconnect}};struct test_case tests[] = {  { "testStatus",           &testStatus           },  { "testFilterClusterLog", &testFilterClusterLog },  /*{ "testSetLogLevelClusterLog", &testSetLogLevelClusterLog },*/  /*{ "testSetLogLevelNode",  &testSetLogLevelNode  },*/  { "testRestartNode",      &testRestartNode      },  { "testGetStatPort",      &testGetStatPort      },#ifdef VM_TRACE  { "testLogSignals",       &testLogSignals       },  { "testStartSignalLog",   &testStartSignalLog   },  { "testStopSignalLog",    &testStopSignalLog    },  { "testSetTrace",         &testSetTrace         },  { "testDumpState",        &testDumpState        },  { "testInsertError",      &testInsertError      }#endif};static int no_of_tests = sizeof(tests) / sizeof(struct test_case);static int testFailed = 0;static const char * g_connect_string = "localhost:2200";intmain(int argc, const char** argv){  struct ndb_mgm_reply reply;  int i = 0;  NdbMgmHandle h = NULL;  if(argc > 1)    g_connect_string = argv[1];  ndbout_c("Using connectstring: %s", g_connect_string);  for (i = 0; i < 2; i++) {    ndbout_c("-- %s --", test_connect_disconnect[i].name);    if (test_connect_disconnect[i].func(h, &reply) == 0) {      ndbout_c("-- Passed --");    } else {      testFailed++;      ndbout_c("-- Failed --");    }  }  ndbout_c("-- %d passed, %d failed --", (2 - testFailed),  testFailed);  h = ndb_mgm_create_handle();  ndb_mgm_connect(h, g_connect_string);    for (i = 0; i < no_of_tests; i ++) {    ndbout_c("-- %s --", tests[i].name);    if (tests[i].func(h, &reply) == 0) {      ndbout_c("-- Passed --");    } else {      testFailed++;      ndbout_c("-- Failed --");      ndb_mgm_disconnect(h);      ndb_mgm_connect(h, g_connect_string);          }  }  ndbout_c("-- %d passed, %d failed --", (no_of_tests - testFailed),  	   testFailed);    ndb_mgm_disconnect(h);  return 0;}static int testConnect(NdbMgmHandle h, struct ndb_mgm_reply* reply) {  h = ndb_mgm_create_handle();  if (h != NULL) {    if (ndb_mgm_connect(h, g_connect_string) == -1) {      ndbout_c(g_connect_string);      /*ndbout_c("last_error: %d", h->last_error); */      return -1;    } else {      ndbout_c("Connected to localhost:37123");    }      } else {    ndbout_c("Unable to create a NdbMgmHandle...");    return -1;  }  return 0;}staticint testDisconnect(NdbMgmHandle h, struct ndb_mgm_reply* reply) {  ndb_mgm_disconnect(h);     return 0;}static int testGetConfig(NdbMgmHandle h, struct ndb_mgm_reply* reply) {  int i = 0;  struct ndb_mgm_configuration * config =  ndb_mgm_get_configuration(h, 0);  if (config != NULL) {    free(config);  } else {    ndbout_c("Unable to get config");    return -1;  }  return 0;}static int testStatus(NdbMgmHandle h, struct ndb_mgm_reply* reply) {  int i = 0;  struct ndb_mgm_cluster_state* cluster =  ndb_mgm_get_status(h);  if (cluster != NULL) {    ndbout_c("Number of nodes: %d", cluster->no_of_nodes);    for (i = 0; i < cluster->no_of_nodes; i++) {      struct ndb_mgm_node_state state = cluster->node_states[i];      ndbout_c("NodeId: %d (%s)-- %s", state.node_id,	       ndb_mgm_get_node_type_string(state.node_type),	       ndb_mgm_get_node_status_string(state.node_status));	          }         free(cluster);  } else {    ndbout_c("Unable to get node status.");    return -1;  }  return 0;}#ifdef VM_TRACEstatic int testLogSignals(NdbMgmHandle h, struct ndb_mgm_reply* reply) {  int rc = 0;  int nodeId = 0;  struct ndb_mgm_cluster_state* cluster =  ndb_mgm_get_status(h);  if (cluster != NULL) {    if (cluster->no_of_nodes != 0) {      nodeId = cluster->node_states[0].node_id;    }    free(cluster);  } else {    ndbout_c("Unable to get node status.");    return -1;  }        rc = ndb_mgm_log_signals(h, nodeId, NDB_MGM_SIGNAL_LOG_MODE_INOUT, 			   "CMVMI QMGR", 			   reply);  if (rc != 0) {    ndbout_c("rc = %d", reply->return_code);  }   ndbout_c("%s", reply->message);   return rc;}static int testStartSignalLog(NdbMgmHandle h, struct ndb_mgm_reply* reply) {  int rc = 0;  int nodeId = 0;  struct ndb_mgm_cluster_state* cluster =  ndb_mgm_get_status(h);  if (cluster != NULL) {    if (cluster->no_of_nodes != 0) {      nodeId = cluster->node_states[0].node_id;    }    free(cluster);  } else {    ndbout_c("Unable to get node status.");    return -1;  }  rc = ndb_mgm_start_signallog(h, nodeId, reply);  if (rc != 0) {    ndbout_c("rc = %d", reply->return_code);  }   ndbout_c("%s", reply->message);   return rc;}static int testStopSignalLog(NdbMgmHandle h, struct ndb_mgm_reply* reply) {  int rc = 0;  int nodeId = 0;  struct ndb_mgm_cluster_state* cluster =  ndb_mgm_get_status(h);  if (cluster != NULL) {    if (cluster->no_of_nodes != 0) {      nodeId = cluster->node_states[0].node_id;    }    free(cluster);  } else {    ndbout_c("Unable to get node status.");    return -1;  }  rc = ndb_mgm_stop_signallog(h, nodeId, reply);  if (rc != 0) {    ndbout_c("rc = %d", reply->return_code);  }   ndbout_c("%s", reply->message);   return rc;}static int testSetTrace(NdbMgmHandle h, struct ndb_mgm_reply* reply) {  int rc = 0;  int nodeId = 0;  struct ndb_mgm_cluster_state* cluster =  ndb_mgm_get_status(h);  if (cluster != NULL) {    if (cluster->no_of_nodes != 0) {      nodeId = cluster->node_states[0].node_id;    }    free(cluster);  } else {    ndbout_c("Unable to get node status.");    return -1;  }    rc = ndb_mgm_set_trace(h, nodeId, 2, reply);  if (rc != 0) {    ndbout_c("rc = %d", reply->return_code);  }   ndbout_c("%s", reply->message);   return rc;}static int testInsertError(NdbMgmHandle h, struct ndb_mgm_reply* reply) {  int rc = 0;  int nodeId = 0;  struct ndb_mgm_cluster_state* cluster =  ndb_mgm_get_status(h);  if (cluster != NULL) {    if (cluster->no_of_nodes != 0) {      nodeId = cluster->node_states[0].node_id;    }    free(cluster);  } else {    ndbout_c("Unable to get node status.");    return -1;  }    rc = ndb_mgm_insert_error(h, nodeId, 9999, reply);  if (rc != 0) {    ndbout_c("rc = %d", reply->return_code);  }   ndbout_c("%s", reply->message);   return rc;}static int testDumpState(NdbMgmHandle h, struct ndb_mgm_reply* reply) {    int rc = 0;  int nodeId = 0;  int dump[3];  struct ndb_mgm_cluster_state* cluster =  ndb_mgm_get_status(h);  if (cluster != NULL) {    if (cluster->no_of_nodes != 0) {      nodeId = cluster->node_states[0].node_id;    }    free(cluster);  } else {    ndbout_c("Unable to get node status.");    return -1;  }    dump[0] = 1;  dump[1] = 2;  dump[2] = 3;  rc = ndb_mgm_dump_state(h, nodeId, dump, 3, reply);  if (rc != 0) {    ndbout_c("rc = %d", reply->return_code);  }   ndbout_c("%s", reply->message);   return rc;}#endifstatic int testFilterClusterLog(NdbMgmHandle h, struct ndb_mgm_reply* reply) {  int rc = 0;    rc = ndb_mgm_filter_clusterlog(h, NDB_MGM_CLUSTERLOG_INFO, reply);  if (rc == -1) {    ndbout_c("rc = %d", reply->return_code);    ndbout_c("%s", reply->message);       return -1;  }   ndbout_c("%s", reply->message);   rc = ndb_mgm_filter_clusterlog(h, NDB_MGM_CLUSTERLOG_DEBUG, reply);  if (rc == -1) {    ndbout_c("rc = %d", reply->return_code);    ndbout_c("%s", reply->message);       return -1;  }   ndbout_c("%s", reply->message);   return rc;}static int testSetLogLevelClusterLog(NdbMgmHandle h, 			      struct ndb_mgm_reply* reply) {  int rc = 0;  int nodeId = 0;  struct ndb_mgm_cluster_state* cluster =  ndb_mgm_get_status(h);  if (cluster != NULL) {    if (cluster->no_of_nodes != 0) {      nodeId = cluster->node_states[0].node_id;    }    free(cluster);  } else {    ndbout_c("Unable to get node status.");    return -1;  }  rc = ndb_mgm_set_loglevel_clusterlog(h, nodeId,				       NDB_MGM_EVENT_CATEGORY_CHECKPOINT,				       5,				       reply);  if (rc != 0) {    ndbout_c("rc = %d", reply->return_code);  }   ndbout_c("%s", reply->message);   return rc;}static int testSetLogLevelNode(NdbMgmHandle h, struct ndb_mgm_reply* reply) {  int rc = 0;  int nodeId = 0;  struct ndb_mgm_cluster_state* cluster =  ndb_mgm_get_status(h);  if (cluster != NULL) {    if (cluster->no_of_nodes != 0) {      nodeId = cluster->node_states[0].node_id;    }    free(cluster);  } else {    ndbout_c("Unable to get node status.");    return -1;  }  rc = ndb_mgm_set_loglevel_node(h, nodeId,				 NDB_MGM_EVENT_CATEGORY_STATISTIC,				 15,				 reply);  if (rc != 0) {    ndbout_c("rc = %d", reply->return_code);  }   ndbout_c("%s", reply->message);   return rc;}static int testRestartNode(NdbMgmHandle h, struct ndb_mgm_reply* reply) {  int restarts = 0;  restarts = ndb_mgm_restart(h, 0, 0); /* Restart all */  if (restarts == 0) {    ndbout_c("No nodes restarted...");    return -1;  } else {    ndbout_c("%d nodes restarted...", restarts);  }    return 0;}static int testGetStatPort(NdbMgmHandle h, struct ndb_mgm_reply* reply) {  int rc = 0;  rc = ndb_mgm_get_stat_port(h, reply);  if (rc == 0) {    ndbout_c("stat port %s", reply->message);  } else {    ndbout_c("failed");  }  return rc;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?