summaryrefslogtreecommitdiff
path: root/storage/ndb/src/mgmapi/test/keso.c
diff options
context:
space:
mode:
Diffstat (limited to 'storage/ndb/src/mgmapi/test/keso.c')
-rw-r--r--storage/ndb/src/mgmapi/test/keso.c470
1 files changed, 470 insertions, 0 deletions
diff --git a/storage/ndb/src/mgmapi/test/keso.c b/storage/ndb/src/mgmapi/test/keso.c
new file mode 100644
index 00000000000..d2675b2ca8a
--- /dev/null
+++ b/storage/ndb/src/mgmapi/test/keso.c
@@ -0,0 +1,470 @@
+/* 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_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 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_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;
+}