Commit 20fdedb7 authored by unknown's avatar unknown
Browse files

Improved testing of ssl and compression

 - Added show status variable "compression" for checking that compression is turned on.
 - Updated show status variable "have_openssl" to be set to DISABLED if server supports ssl but it's not turned on to accept incoming ssl connections.  
 - Setup server to accept ssl connections from clients ig that is supported by server
 - New tests 
   - ssl - Run with ssl turned on
   - ssl_compress - Run with ssl and compression turned on
   - compress - Run with compression turned in 
 - Updated test 
   - openssl_1, rpl_openssl1 - Changed to run if server supports ssl


BitKeeper/deleted/.del-have_openssl_1.inc~55590efedeec9ee0:
  Delete: mysql-test/include/have_openssl_1.inc
BitKeeper/deleted/.del-have_openssl_1.require~e8cdeb0adba99ac5:
  Delete: mysql-test/r/have_openssl_1.require
client/mysqltest.c:
  Add commands to enable/disable ssl for the follwing connect's
  Add commands to enable/disable compression for the  following connect's
mysql-test/mysql-test-run.pl:
  Test if ssl is supported by the server
  If ssl is supported by the server, start server with ability to accept ssl connections from clients
  Cleanup check of supported features check_ssl_support, check_ndbcluster_support
  Flags and helptext for mysl-test-run.pl updated 
    --ssl, turn on ssl encryption between server and client
    --skip-ssl, don'r turn on ssl or setup ssl even if it's supported
    --with-openssl, deprecated, synonym with --ssl
mysql-test/r/openssl_1.result:
  Update test results
mysql-test/t/openssl_1.test:
  Run this if server reports it has support for ssl
  Enable ssl before connecting
  Check that ssl encryption has been turned on
mysql-test/t/rpl_openssl.test:
  Run this if server reports it supports ssl
sql-common/client.c:
  Add DBUG_PRINT's
sql/mysqld.cc:
  If server can't accept ssl connection set have_openssl to SHOW_OPTION_DISABLED
  Add status variable to show if connection with server is using compressed protocol
sql/sql_show.cc:
  Add status variable to show if connection with server is using compressed protocol
sql/structs.h:
  Add status variable to show if connection with server is using compressed protocol
mysql-test/r/compress.result:
  New BitKeeper file ``mysql-test/r/compress.result''
mysql-test/r/ssl.result:
  New BitKeeper file ``mysql-test/r/ssl.result''
mysql-test/r/ssl_compress.result:
  New BitKeeper file ``mysql-test/r/ssl_compress.result''
mysql-test/t/compress.test:
  New BitKeeper file ``mysql-test/t/compress.test''
mysql-test/t/ssl.test:
  New BitKeeper file ``mysql-test/t/ssl.test''
mysql-test/t/ssl_compress.test:
  New BitKeeper file ``mysql-test/t/ssl_compress.test''
parent dd37fca2
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -309,6 +309,8 @@ Q_ENABLE_INFO, Q_DISABLE_INFO,
Q_ENABLE_METADATA, Q_DISABLE_METADATA,
Q_EXEC, Q_DELIMITER,
Q_DISABLE_ABORT_ON_ERROR, Q_ENABLE_ABORT_ON_ERROR,
Q_DISABLE_SSL, Q_ENABLE_SSL,
Q_DISABLE_COMPRESS, Q_ENABLE_COMPRESS,
Q_DISPLAY_VERTICAL_RESULTS, Q_DISPLAY_HORIZONTAL_RESULTS,
Q_QUERY_VERTICAL, Q_QUERY_HORIZONTAL,
Q_START_TIMER, Q_END_TIMER,
@@ -395,6 +397,10 @@ const char *command_names[]=
  "delimiter",
  "disable_abort_on_error",
  "enable_abort_on_error",
  "disable_ssl",
  "enable_ssl",
  "disable_compress",
  "enable_compress",
  "vertical_results",
  "horizontal_results",
  "query_vertical",
@@ -4047,6 +4053,12 @@ int main(int argc, char **argv)
      case Q_DISABLE_QUERY_LOG:  disable_query_log=1; break;
      case Q_ENABLE_ABORT_ON_ERROR:  abort_on_error=1; break;
      case Q_DISABLE_ABORT_ON_ERROR: abort_on_error=0; break;
#ifdef HAVE_OPENSSL
      case Q_ENABLE_SSL:  opt_use_ssl=1; break;
      case Q_DISABLE_SSL: opt_use_ssl=0; break;
#endif
      case Q_ENABLE_COMPRESS:  opt_compress=1; break;
      case Q_DISABLE_COMPRESS: opt_compress=0; break;
      case Q_ENABLE_RESULT_LOG:  disable_result_log=0; break;
      case Q_DISABLE_RESULT_LOG: disable_result_log=1; break;
      case Q_ENABLE_WARNINGS:    disable_warnings=0; break;
+0 −4
Original line number Diff line number Diff line
-- require r/have_openssl_1.require
disable_query_log;
SHOW STATUS LIKE 'Ssl_cipher';
enable_query_log;
+100 −23
Original line number Diff line number Diff line
@@ -188,6 +188,12 @@ our $opt_big_test= 0; # Send --big-test to mysqltest
our @opt_extra_mysqld_opt;

our $opt_compress;
our $opt_ssl;
our $opt_skip_ssl;
our $opt_ssl_supported;
our $opt_with_openssl;           # Deprecated flag
our $opt_ps_protocol;

our $opt_current_test;
our $opt_ddd;
our $opt_debug;
@@ -237,7 +243,6 @@ our $opt_skip_rpl;
our $opt_skip_test;

our $opt_sleep;
our $opt_ps_protocol;

our $opt_sleep_time_after_restart=  1;
our $opt_sleep_time_for_delete=    10;
@@ -275,7 +280,6 @@ our $opt_udiff;

our $opt_skip_ndbcluster;
our $opt_with_ndbcluster;
our $opt_with_openssl;

our $exe_ndb_mgm;
our $path_ndb_tools_dir;
@@ -296,7 +300,8 @@ sub executable_setup ();
sub environment_setup ();
sub kill_running_server ();
sub kill_and_cleanup ();
sub ndbcluster_support ();
sub check_ssl_support ();
sub check_ndbcluster_support ();
sub ndbcluster_install ();
sub ndbcluster_start ();
sub ndbcluster_stop ();
@@ -332,10 +337,8 @@ sub main () {
  command_line_setup();
  executable_setup();

  if (! $opt_skip_ndbcluster and ! $opt_with_ndbcluster)
  {
    $opt_with_ndbcluster= ndbcluster_support();
  }
  check_ndbcluster_support();
  check_ssl_support();

  environment_setup();
  signal_setup();
@@ -477,6 +480,10 @@ sub command_line_setup () {
             # Control what engine/variation to run
             'embedded-server'          => \$opt_embedded_server,
             'ps-protocol'              => \$opt_ps_protocol,
             'with-openssl'             => \$opt_with_openssl,
             'ssl'                      => \$opt_ssl,
             'skip-ssl'                 => \$opt_skip_ssl,
             'compress'                 => \$opt_compress,
             'bench'                    => \$opt_bench,
             'small-bench'              => \$opt_small_bench,
             'no-manager'               => \$opt_no_manager, # Currently not used
@@ -527,7 +534,6 @@ sub command_line_setup () {

             # Misc
             'big-test'                 => \$opt_big_test,
             'compress'                 => \$opt_compress,
             'debug'                    => \$opt_debug,
             'fast'                     => \$opt_fast,
             'local'                    => \$opt_local,
@@ -552,7 +558,6 @@ sub command_line_setup () {
             'testcase-timeout=i'       => \$opt_testcase_timeout,
             'suite-timeout=i'          => \$opt_suite_timeout,
             'warnings|log-warnings'    => \$opt_warnings,
             'with-openssl'             => \$opt_with_openssl,

             'help|h'                   => \$opt_usage,
            ) or usage("Can't read options");
@@ -1094,13 +1099,66 @@ sub kill_and_cleanup () {
}


sub check_ssl_support () {


  # Convert deprecated --with-openssl to --ssl
  if ( $opt_with_openssl )
  {
    $opt_ssl= 1;
  }

  if ($opt_skip_ssl)
  {
    mtr_report("Skipping SSL");
    $opt_ssl_supported= 0;
    $opt_ssl= 0;
    return;
  }

  # check ssl support by testing using a switch
  # that is only available in that case
  if ( mtr_run($exe_mysqld,
	       ["--no-defaults",
	        "--ssl",
	        "--help"],
	       "", "/dev/null", "/dev/null", "") != 0 )
  {
    if ( $opt_ssl)
    {
      mtr_error("Couldn't find support for SSL");
      return;
    }
    mtr_report("Skipping SSL, mysqld does not support it");
    $opt_ssl_supported= 0;
    $opt_ssl= 0;
    return;
  }
  mtr_report("Setting mysqld to support SSL connections");
  $opt_ssl_supported= 1;
}


##############################################################################
#
#  Start the ndb cluster
#
##############################################################################

sub ndbcluster_support () {
sub check_ndbcluster_support () {

  if ($opt_skip_ndbcluster)
  {
    mtr_report("Skipping ndbcluster");
    $opt_with_ndbcluster= 0;
    return;
  }

  if ($opt_with_ndbcluster)
  {
    mtr_report("Using ndbcluster");
    return;
  }

  # check ndbcluster support by testing using a switch
  # that is only available in that case
@@ -1110,11 +1168,13 @@ sub ndbcluster_support () {
	        "--help"],
	       "", "/dev/null", "/dev/null", "") != 0 )
  {
    mtr_report("No ndbcluster support");
    return 0;
    mtr_report("Skipping ndbcluster, mysqld does not support it");
    $opt_with_ndbcluster= 0;
    return;
  }
  mtr_report("Has ndbcluster support");
  return 1;
  mtr_report("Using ndbcluster, mysqld supports it");
  $opt_with_ndbcluster= 1;
  return;
}

# FIXME why is there a different start below?!
@@ -2003,7 +2063,7 @@ sub mysqld_arguments ($$$$$) {
  mtr_add_arg($args, "%s--max_heap_table_size=1M", $prefix);
  mtr_add_arg($args, "%s--log-bin-trust-routine-creators", $prefix);

  if ( $opt_with_openssl )
  if ( $opt_ssl_supported )
  {
    mtr_add_arg($args, "%s--ssl-ca=%s/std_data/cacert.pem", $prefix,
                $glob_mysql_test_dir);
@@ -2468,7 +2528,7 @@ sub run_mysqltest ($) {
    mtr_add_arg($args, "--debug=d:t:A,%s/log/mysqltest.trace", $opt_vardir);
  }

  if ( $opt_with_openssl )
  if ( $opt_ssl_supported )
  {
    mtr_add_arg($args, "--ssl-ca=%s/std_data/cacert.pem",
	        $glob_mysql_test_dir);
@@ -2478,6 +2538,18 @@ sub run_mysqltest ($) {
	        $glob_mysql_test_dir);
  }

  # Turn on SSL for all test cases
  if ( $opt_ssl )
  {
    mtr_add_arg($args, "--ssl",
		$glob_mysql_test_dir);
  }
  elsif ( $opt_ssl_supported )
  {
    mtr_add_arg($args, "--skip-ssl",
		$glob_mysql_test_dir);
  }

  mtr_add_arg($args, "-R");
  mtr_add_arg($args, $tinfo->{'result_file'});

@@ -2515,6 +2587,9 @@ Options to control what engine/variation to run

  embedded-server       Use the embedded server, i.e. no mysqld daemons
  ps-protocol           Use the binary protocol between client and server
  compress              Use the compressed protocol between client and server
  ssl                   Use ssl protocol between client and server
  skip-ssl              Dont start sterver with support for ssl connections
  bench                 Run the benchmark suite FIXME
  small-bench           FIXME

@@ -2522,6 +2597,7 @@ Options to control what test suites or cases to run

  force                 Continue to run the suite after failure
  with-ndbcluster       Use cluster, and enable test cases that requres it
  skip-ndb[cluster]     Use cluster, and enable test cases that requres it
  do-test=PREFIX        Run test cases which name are prefixed with PREFIX
  start-from=PREFIX     Run test cases starting from test prefixed with PREFIX
  suite=NAME            Run the test suite named NAME. The default is "main"
@@ -2570,7 +2646,6 @@ Misc options

  verbose               Verbose output from this script
  script-debug          Debug this script itself
  compress              Use the compressed protocol between client and server
  timer                 Show test case execution time
  start-and-exit        Only initiate and start the "mysqld" servers, use the startup
                        settings for the specified test case if any
@@ -2583,6 +2658,9 @@ Misc options
  testcase-timeout=MINUTES Max test case run time (default 5)
  suite-timeout=MINUTES    Max test suite run time (default 120)

Deprecated options
  with-openssl          Deprecated option for ssl


Options not yet described, or that I want to look into more

@@ -2599,7 +2677,6 @@ Options not yet described, or that I want to look into more
  wait-timeout=SECONDS  
  warnings              
  log-warnings          
  with-openssl          

HERE
  mtr_exit(1);
+2948 −0

File added.

Preview size limit exceeded, changes collapsed.

+0 −2
Original line number Diff line number Diff line
Variable_name	Value
Ssl_cipher	DHE-RSA-AES256-SHA
Loading