mgmsrvapi.cpp

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

CPP
127
字号
/* 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 *//**************************************************** *  Name:  *       mgmSrvApi.cpp * *  Description: *      Test the bahaviour of the Management Server  *      API based on the tests specified in the  *      "Test Specification for the Management  *       Server API" document *   *****************************************************/#include <ndb_global.h>#include "mgmapi.h"#include "mgmapi_commands.h"#include <NdbMain.h>#include <NdbOut.hpp>/** * The pupose of this test program is to  * verify that the Management Server * API is functioning properly, i.e. a handle  * can be created/destroyed properly, the  * connection to the NDB nodes is established  * correctly, and all the errors are handled in  * a proper way. * USE: mgmSrvApi -n -i  * * @param       n     Number of nodes to crash * **/NDB_COMMAND(mgmSrvApi, "mgmSrvApi", "mgmSrvApi -n <Number of nodes to crash> -i <Node ID to be crashed> -p <IP address:port number>", "Management Server API testing", 65535){  const char *Addr = 0;  int i;  int nodesNo = 0; // Number of nodes to crash  int ndbID = 0;  // Node ID to be crashed   i = 1;  while (argc > 1) {    if (strcmp(argv[i], "-n") == 0)       nodesNo = atoi(argv[i+1]);     if (strcmp(argv[i], "-i") == 0)       ndbID = atoi(argv[i+1]);    if (strcmp(argv[i], "-p") == 0)       Addr = argv[i+1];        argc -= 1;    i = i + 1;   }  /*     * Create a handle   */  ndbout << "Creating handle..." << endl;  NdbMgmHandle h = ndb_mgm_create_handle();      /*     * Perfom the connection   */  ndbout << "Connecting..." << endl;  if (ndb_mgm_connect(h, Addr) == -1) {    ndbout << "Connection to " << Addr << " failed" << endl;    exit(-1);  }  /*     * Get status of a node   */  ndbout << "Getting status..." << endl;    struct ndb_mgm_cluster_state * status;  struct ndb_mgm_node_state * nodes;  status = ndb_mgm_get_status(h);  nodes = status->node_states;  if (nodes->node_status == 1) {    ndbout << "No contact established" << endl;    //  exit(-1);  }      /*     * Stop the NDB nodes   */  ndbout << "Stopping the node(s)" << endl;  const int * list;  if (nodesNo == 0) // all nodes stopped by definition    ndbID = 0;  list = &ndbID;  if (ndb_mgm_stop(h, nodesNo, list) != 1) {    ndbout << nodesNo << " NDB node(s) not stopped " << endl;  }   /*     * Disconnect from the management server   */  ndbout << "Disconnecting..." << endl;  ndb_mgm_disconnect(h);  /*     * Destroy the handle   */  ndbout << "Destroying the handle..." << endl;  ndb_mgm_destroy_handle(&h);  return 0;}

⌨️ 快捷键说明

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