diff options
author | unknown <magnus@neptunus.(none)> | 2004-04-14 10:53:21 +0200 |
---|---|---|
committer | unknown <magnus@neptunus.(none)> | 2004-04-14 10:53:21 +0200 |
commit | 6386c55cee50bad6a9979d1fab28e03bb8612ca7 (patch) | |
tree | 3fbbacf704304b69228474b9f03549ccd585a017 /ndb/src/mgmapi/test/keso.c | |
parent | 0ba6cb48d84f1ff951d09871a96be6cdef3f2c3c (diff) | |
download | mariadb-git-6386c55cee50bad6a9979d1fab28e03bb8612ca7.tar.gz |
Initial revision of NDB Cluster files
BitKeeper/etc/logging_ok:
Logging to logging@openlogging.org accepted
Diffstat (limited to 'ndb/src/mgmapi/test/keso.c')
-rw-r--r-- | ndb/src/mgmapi/test/keso.c | 457 |
1 files changed, 457 insertions, 0 deletions
diff --git a/ndb/src/mgmapi/test/keso.c b/ndb/src/mgmapi/test/keso.c new file mode 100644 index 00000000000..f4b192e3db8 --- /dev/null +++ b/ndb/src/mgmapi/test/keso.c @@ -0,0 +1,457 @@ +/* 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 <mgmapi.h> + +#ifdef VM_TRACE +#include <mgmapi_debug.h> +#endif + +#include <NdbOut.hpp> +#include <NdbStdio.h> + +#include <stdlib.h> + +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); +#ifdef VM_TRACE +static 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); +#endif +static 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"; + +int +main(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; +} + +static +int testDisconnect(NdbMgmHandle h, struct ndb_mgm_reply* reply) { + ndb_mgm_disconnect(h); + + 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_TRACE + +static +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; +} + +#endif + +static +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; +} |