summaryrefslogtreecommitdiff
path: root/storage/ndb/test/ndbnet/testNR1.run
diff options
context:
space:
mode:
Diffstat (limited to 'storage/ndb/test/ndbnet/testNR1.run')
-rw-r--r--storage/ndb/test/ndbnet/testNR1.run61
1 files changed, 61 insertions, 0 deletions
diff --git a/storage/ndb/test/ndbnet/testNR1.run b/storage/ndb/test/ndbnet/testNR1.run
new file mode 100644
index 00000000000..8819a92c8ca
--- /dev/null
+++ b/storage/ndb/test/ndbnet/testNR1.run
@@ -0,0 +1,61 @@
+# Node recovery killing 1 node out of 4 at the time and waiting for recover
+
+use strict;
+use NDB::Run;
+
+my $env = NDB::Run->getenv;
+my $log = $env->getlog;
+$log->setpart(time => 1, line => 0);
+$log->setprio("info");
+
+my $database = $ENV{NDB_DATABASE};
+$log->put("start test database=$database");
+$env->init or $log->push("init failed")->fatal;
+
+my $db = $env->getdb($database) or $log->push->fatal;
+my $mgm = $db->getnode(1) or $log->push->fatal;
+my $db1 = $db->getnode(2) or $log->push->fatal;
+my $api = $db->getnode(6) or $log->push->fatal;
+
+$db->kill;
+$db->start({init_rm=>1}) or $log->push->fatal;
+sleep 10;
+
+# should be option (or default) in $db->start
+sub wait_until_started {
+ my $local_cnt = 100;
+ while (--$local_cnt > 0) {
+ sleep 2;
+ my $ret = $mgm->write("all status", { wait => 2 });
+ $ret or $log->fatal;
+ my $output = $ret->{output};
+ if ($output =~ /((.|\n)*\bstarted\b(.|\n)*){1}/i) {
+# if all 4 nodes started
+ $log->put("*** db is started ***")->info;
+ return;
+ }
+ if ($output =~ /((.|\n)*\bno.contact\b(.|\n)*){1}/i) {
+#if all 4 nodes no contact
+ print "NDBT_ProgramExit: 1 - test error\n";
+ $log->put("*** db is dead ***")->fatal;
+ }
+ }
+ print "NDBT_ProgramExit: 1 - test error\n";
+ $log->put("*** node recovery failed ***")->fatal;
+}
+
+my $cnt = 0;
+wait_until_started();
+$api->start({run=>"flexBench -t 32 -l 800"});
+while (1) {
+ wait_until_started();
+ sleep 10;
+ $db1->kill or $log->fatal;
+ sleep 10;
+ $db1->start; # start the node
+ sleep 10;
+}
+
+$db->kill;
+
+# vim: set sw=4: