diff --git a/mysql-test/lib/mtr_cases.pl b/mysql-test/lib/mtr_cases.pl
index d6068c9691a1a2a3ccbb43cc85d0de2fbe40aedc..3978700c3e8a616202416612b7c3025f7b9c7f86 100644
--- a/mysql-test/lib/mtr_cases.pl
+++ b/mysql-test/lib/mtr_cases.pl
@@ -252,19 +252,27 @@ sub collect_one_test_case($$$$$$$) {
     $tinfo->{'slave_restart'}= 1;
   }
 
-  if ( ( $::opt_with_ndbcluster or $::glob_use_running_ndbcluster ) and
-       ( $::opt_with_ndbcluster_all or defined mtr_match_substring($tname,"ndb") ))
+  if ( $::opt_with_ndbcluster_all or defined mtr_match_substring($tname,"ndb") )
   {
+    # This is an ndb test or all tests should be run with ndb cluster started
     $tinfo->{'ndb_test'}= 1;
+    if ( $::opt_skip_ndbcluster )
+    {
+      # All ndb test's should be skipped
+      $tinfo->{'skip'}= 1;
+      return;
+    }
   }
   else
   {
+    # This is not a ndb test
+    $tinfo->{'ndb_test'}= 0;
     if ( $::opt_with_ndbcluster_only )
-    {
+    { 
+      # Only the ndb test should be run, all other should be skipped
       $tinfo->{'skip'}= 1;
       return;
     }
-    $tinfo->{'ndb_test'}= 0;
   }
 
   # FIXME what about embedded_server + ndbcluster, skip ?!
diff --git a/mysql-test/lib/mtr_report.pl b/mysql-test/lib/mtr_report.pl
index 88ddbf63d0fe646123b416b0531bd22d5eeeb762..92ce7437365381fc1fce9785cea4b79d76ac220c 100644
--- a/mysql-test/lib/mtr_report.pl
+++ b/mysql-test/lib/mtr_report.pl
@@ -114,6 +114,11 @@ sub mtr_report_test_failed ($) {
   {
     print "[ fail ]  timeout\n";
   }
+  elsif ( $tinfo->{'ndb_test'} and  !$::flag_ndb_status_ok)
+  {
+    print "[ fail ]  ndbcluster start failure\n";
+    return;
+  }
   else
   {
     print "[ fail ]\n";
diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl
index 9054b5877ea96c90b978c17a3e6307e8efdff903..5d1b8ac977100c043d839d9ffdd5dca2efe9ef63 100755
--- a/mysql-test/mysql-test-run.pl
+++ b/mysql-test/mysql-test-run.pl
@@ -1471,7 +1471,6 @@ sub ndbcluster_install () {
 	         "--core"],
 		"", "", "", "") )
   {
-    mtr_error("Error ndbcluster_install");
     return 1;
   }
 
@@ -1567,7 +1566,6 @@ sub ndbcluster_install_slave () {
 		 "--core"],
 		"", "", "", "") )
   {
-    mtr_error("Error ndbcluster_install_slave");
     return 1;
   }
 
@@ -1780,16 +1778,37 @@ sub mysql_install_db () {
 
   if ( ndbcluster_install() )
   {
-    # failed to install, disable usage but flag that its no ok
-    $opt_with_ndbcluster= 0;
-    $flag_ndb_status_ok= 0;
+    if ( $opt_force)
+    {
+      # failed to install, disable usage and flag that its no ok
+      mtr_report("ndbcluster_install failed, continuing without cluster");
+      $opt_with_ndbcluster= 0;
+      $flag_ndb_status_ok= 0;
+    }
+    else
+    {
+      print "Aborting: Failed to install ndb cluster\n";
+      print "To continue, re-run with '--force'.\n";
+      mtr_exit(1);
+    }
   }
 
   if ( ndbcluster_install_slave() )
   {
-    # failed to install, disable usage but flag that its no ok
-    $opt_with_ndbcluster_slave= 0;
-    $flag_ndb_slave_status_ok= 0;
+    if ( $opt_force)
+    {
+      # failed to install, disable usage and flag that its no ok
+      mtr_report("ndbcluster_install_slave failed, " .
+		 "continuing without slave cluster");
+      $opt_with_ndbcluster_slave= 0;
+      $flag_ndb_slave_status_ok= 0;
+    }
+    else
+    {
+      print "Aborting: Failed to install ndb cluster\n";
+      print "To continue, re-run with '--force'.\n";
+      mtr_exit(1);
+    }
   }
 
   return 0;
@@ -1992,6 +2011,13 @@ sub run_testcase ($) {
     return;
   }
 
+  if ( $tinfo->{'ndb_test'}  and ! $flag_ndb_status_ok )
+  {
+    mtr_report_test_name($tinfo);
+    mtr_report_test_failed($tinfo);
+    return;
+  }
+
   # ----------------------------------------------------------------------
   # If not using a running servers we may need to stop and restart.
   # We restart in the case we have initiation scripts, server options