mirror of
https://github.com/percona/percona-toolkit.git
synced 2025-09-10 21:19:59 +00:00
Add lib/, t/lib/, and sandbox/. All modules are updated and passing on MySQL 5.1.
This commit is contained in:
843
t/lib/MySQLConfig.t
Normal file
843
t/lib/MySQLConfig.t
Normal file
@@ -0,0 +1,843 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
BEGIN {
|
||||
die "The PERCONA_TOOLKIT_BRANCH environment variable is not set.\n"
|
||||
unless $ENV{PERCONA_TOOLKIT_BRANCH} && -d $ENV{PERCONA_TOOLKIT_BRANCH};
|
||||
unshift @INC, "$ENV{PERCONA_TOOLKIT_BRANCH}/lib";
|
||||
};
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
use English qw(-no_match_vars);
|
||||
use Test::More tests => 29;
|
||||
|
||||
use MySQLConfig;
|
||||
use DSNParser;
|
||||
use Sandbox;
|
||||
use TextResultSetParser;
|
||||
use MaatkitTest;
|
||||
|
||||
my $dp = new DSNParser(opts=>$dsn_opts);
|
||||
my $sb = new Sandbox(basedir => '/tmp', DSNParser => $dp);
|
||||
my $dbh = $sb->get_dbh_for('master');
|
||||
|
||||
use Data::Dumper;
|
||||
$Data::Dumper::Indent = 1;
|
||||
$Data::Dumper::Sortkeys = 1;
|
||||
$Data::Dumper::Quotekeys = 0;
|
||||
|
||||
my $output;
|
||||
my $sample = "t/lib/samples/configs/";
|
||||
my $trp = new TextResultSetParser();
|
||||
|
||||
throws_ok(
|
||||
sub {
|
||||
my $config = new MySQLConfig(
|
||||
TextResultSetParser => $trp,
|
||||
);
|
||||
},
|
||||
qr/I need a/,
|
||||
'Must specify an input'
|
||||
);
|
||||
|
||||
throws_ok(
|
||||
sub {
|
||||
my $config = new MySQLConfig(
|
||||
file => 'foo',
|
||||
output => 'bar',
|
||||
TextResultSetParser => $trp,
|
||||
);
|
||||
},
|
||||
qr/Specify only one/,
|
||||
'Must specify only one input'
|
||||
);
|
||||
|
||||
throws_ok(
|
||||
sub {
|
||||
my $config = new MySQLConfig(
|
||||
file => 'fooz',
|
||||
TextResultSetParser => $trp,
|
||||
);
|
||||
},
|
||||
qr/Cannot open/,
|
||||
'Dies if file cannot be opened'
|
||||
);
|
||||
|
||||
# #############################################################################
|
||||
# parse_show_variables()
|
||||
# #############################################################################
|
||||
$output = load_file("t/lib/samples/show-variables/vars003.txt");
|
||||
is_deeply(
|
||||
MySQLConfig::parse_show_variables(
|
||||
output => $output,
|
||||
TextResultSetParser => $trp,
|
||||
),
|
||||
{
|
||||
auto_increment_increment => '1',
|
||||
auto_increment_offset => '1',
|
||||
automatic_sp_privileges => 'ON',
|
||||
back_log => '50',
|
||||
basedir => '/home/daniel/mysql_binaries/mysql-5.0.82-linux-x86_64-glibc23/',
|
||||
binlog_cache_size => '32768',
|
||||
bulk_insert_buffer_size => '8388608',
|
||||
character_set_client => 'latin1',
|
||||
character_set_connection => 'latin1',
|
||||
character_set_database => 'latin1',
|
||||
character_set_filesystem => 'binary',
|
||||
character_set_results => 'latin1',
|
||||
character_set_server => 'latin1',
|
||||
character_set_system => 'utf8',
|
||||
character_sets_dir => '/home/daniel/mysql_binaries/mysql-5.0.82-linux-x86_64-glibc23/share/mysql/charsets/',
|
||||
collation_connection => 'latin1_swedish_ci',
|
||||
collation_database => 'latin1_swedish_ci',
|
||||
collation_server => 'latin1_swedish_ci',
|
||||
completion_type => '0',
|
||||
concurrent_insert => '1',
|
||||
connect_timeout => '10',
|
||||
datadir => '/tmp/12345/data/',
|
||||
date_format => '%Y-%m-%d',
|
||||
datetime_format => '%Y-%m-%d %H:%i:%s',
|
||||
default_week_format => '0',
|
||||
delay_key_write => 'ON',
|
||||
delayed_insert_limit => '100',
|
||||
delayed_insert_timeout => '300',
|
||||
delayed_queue_size => '1000',
|
||||
div_precision_increment => '4',
|
||||
engine_condition_pushdown => 'OFF',
|
||||
expire_logs_days => '0',
|
||||
flush => 'OFF',
|
||||
flush_time => '0',
|
||||
ft_boolean_syntax => '',
|
||||
ft_max_word_len => '84',
|
||||
ft_min_word_len => '4',
|
||||
ft_query_expansion_limit => '20',
|
||||
ft_stopword_file => '(built-in)',
|
||||
group_concat_max_len => '1024',
|
||||
have_archive => 'YES',
|
||||
have_bdb => 'NO',
|
||||
have_blackhole_engine => 'YES',
|
||||
have_community_features => 'YES',
|
||||
have_compress => 'YES',
|
||||
have_crypt => 'YES',
|
||||
have_csv => 'YES',
|
||||
have_dynamic_loading => 'YES',
|
||||
have_example_engine => 'NO',
|
||||
have_federated_engine => 'YES',
|
||||
have_geometry => 'YES',
|
||||
have_innodb => 'YES',
|
||||
have_isam => 'NO',
|
||||
have_merge_engine => 'YES',
|
||||
have_ndbcluster => 'DISABLED',
|
||||
have_openssl => 'DISABLED',
|
||||
have_profiling => 'YES',
|
||||
have_query_cache => 'YES',
|
||||
have_raid => 'NO',
|
||||
have_rtree_keys => 'YES',
|
||||
have_ssl => 'DISABLED',
|
||||
have_symlink => 'YES',
|
||||
hostname => 'dante',
|
||||
init_connect => '',
|
||||
init_file => '',
|
||||
init_slave => '',
|
||||
innodb_adaptive_hash_index => 'ON',
|
||||
innodb_additional_mem_pool_size => '1048576',
|
||||
innodb_autoextend_increment => '8',
|
||||
innodb_buffer_pool_awe_mem_mb => '0',
|
||||
innodb_buffer_pool_size => '16777216',
|
||||
innodb_checksums => 'ON',
|
||||
innodb_commit_concurrency => '0',
|
||||
innodb_concurrency_tickets => '500',
|
||||
innodb_data_file_path => 'ibdata1:10M:autoextend',
|
||||
innodb_data_home_dir => '/tmp/12345/data',
|
||||
innodb_doublewrite => 'ON',
|
||||
innodb_fast_shutdown => '1',
|
||||
innodb_file_io_threads => '4',
|
||||
innodb_file_per_table => 'OFF',
|
||||
innodb_flush_log_at_trx_commit => '1',
|
||||
innodb_flush_method => '',
|
||||
innodb_force_recovery => '0',
|
||||
innodb_lock_wait_timeout => '50',
|
||||
innodb_locks_unsafe_for_binlog => 'OFF',
|
||||
innodb_log_arch_dir => '',
|
||||
innodb_log_archive => 'OFF',
|
||||
innodb_log_buffer_size => '1048576',
|
||||
innodb_log_file_size => '5242880',
|
||||
innodb_log_files_in_group => '2',
|
||||
innodb_log_group_home_dir => '/tmp/12345/data',
|
||||
innodb_max_dirty_pages_pct => '90',
|
||||
innodb_max_purge_lag => '0',
|
||||
innodb_mirrored_log_groups => '1',
|
||||
innodb_open_files => '300',
|
||||
innodb_rollback_on_timeout => 'OFF',
|
||||
innodb_support_xa => 'ON',
|
||||
innodb_sync_spin_loops => '20',
|
||||
innodb_table_locks => 'ON',
|
||||
innodb_thread_concurrency => '8',
|
||||
innodb_thread_sleep_delay => '10000',
|
||||
innodb_use_legacy_cardinality_algorithm => 'ON',
|
||||
interactive_timeout => '28800',
|
||||
join_buffer_size => '131072',
|
||||
keep_files_on_create => 'OFF',
|
||||
key_buffer_size => '16777216',
|
||||
key_cache_age_threshold => '300',
|
||||
key_cache_block_size => '1024',
|
||||
key_cache_division_limit => '100',
|
||||
language => '/home/daniel/mysql_binaries/mysql-5.0.82-linux-x86_64-glibc23/share/mysql/english/',
|
||||
large_files_support => 'ON',
|
||||
large_page_size => '0',
|
||||
large_pages => 'OFF',
|
||||
lc_time_names => 'en_US',
|
||||
license => 'GPL',
|
||||
local_infile => 'ON',
|
||||
locked_in_memory => 'OFF',
|
||||
log => 'OFF',
|
||||
log_bin => 'ON',
|
||||
log_bin_trust_function_creators => 'OFF',
|
||||
log_error => '',
|
||||
log_queries_not_using_indexes => 'OFF',
|
||||
log_slave_updates => 'ON',
|
||||
log_slow_queries => 'OFF',
|
||||
log_warnings => '1',
|
||||
long_query_time => '10',
|
||||
low_priority_updates => 'OFF',
|
||||
lower_case_file_system => 'OFF',
|
||||
lower_case_table_names => '0',
|
||||
max_allowed_packet => '1048576',
|
||||
max_binlog_cache_size => '18446744073709547520',
|
||||
max_binlog_size => '1073741824',
|
||||
max_connect_errors => '10',
|
||||
max_connections => '100',
|
||||
max_delayed_threads => '20',
|
||||
max_error_count => '64',
|
||||
max_heap_table_size => '16777216',
|
||||
max_insert_delayed_threads => '20',
|
||||
max_join_size => '18446744073709551615',
|
||||
max_length_for_sort_data => '1024',
|
||||
max_prepared_stmt_count => '16382',
|
||||
max_relay_log_size => '0',
|
||||
max_seeks_for_key => '18446744073709551615',
|
||||
max_sort_length => '1024',
|
||||
max_sp_recursion_depth => '0',
|
||||
max_tmp_tables => '32',
|
||||
max_user_connections => '0',
|
||||
max_write_lock_count => '18446744073709551615',
|
||||
multi_range_count => '256',
|
||||
myisam_data_pointer_size => '6',
|
||||
myisam_max_sort_file_size => '9223372036853727232',
|
||||
myisam_recover_options => 'OFF',
|
||||
myisam_repair_threads => '1',
|
||||
myisam_sort_buffer_size => '8388608',
|
||||
myisam_stats_method => 'nulls_unequal',
|
||||
ndb_autoincrement_prefetch_sz => '1',
|
||||
ndb_cache_check_time => '0',
|
||||
ndb_connectstring => '',
|
||||
ndb_force_send => 'ON',
|
||||
ndb_use_exact_count => 'ON',
|
||||
ndb_use_transactions => 'ON',
|
||||
net_buffer_length => '16384',
|
||||
net_read_timeout => '30',
|
||||
net_retry_count => '10',
|
||||
net_write_timeout => '60',
|
||||
new => 'OFF',
|
||||
old_passwords => 'OFF',
|
||||
open_files_limit => '1024',
|
||||
optimizer_prune_level => '1',
|
||||
optimizer_search_depth => '62',
|
||||
pid_file => '/tmp/12345/data/mysql_sandbox12345.pid',
|
||||
plugin_dir => '',
|
||||
port => '12345',
|
||||
preload_buffer_size => '32768',
|
||||
profiling => 'OFF',
|
||||
profiling_history_size => '15',
|
||||
protocol_version => '10',
|
||||
query_alloc_block_size => '8192',
|
||||
query_cache_limit => '1048576',
|
||||
query_cache_min_res_unit => '4096',
|
||||
query_cache_size => '0',
|
||||
query_cache_type => 'ON',
|
||||
query_cache_wlock_invalidate => 'OFF',
|
||||
query_prealloc_size => '8192',
|
||||
range_alloc_block_size => '4096',
|
||||
read_buffer_size => '131072',
|
||||
read_only => 'OFF',
|
||||
read_rnd_buffer_size => '262144',
|
||||
relay_log => 'mysql-relay-bin',
|
||||
relay_log_index => '',
|
||||
relay_log_info_file => 'relay-log.info',
|
||||
relay_log_purge => 'ON',
|
||||
relay_log_space_limit => '0',
|
||||
rpl_recovery_rank => '0',
|
||||
secure_auth => 'OFF',
|
||||
secure_file_priv => '',
|
||||
server_id => '12345',
|
||||
skip_external_locking => 'ON',
|
||||
skip_networking => 'OFF',
|
||||
skip_show_database => 'OFF',
|
||||
slave_compressed_protocol => 'OFF',
|
||||
slave_load_tmpdir => '/tmp/',
|
||||
slave_net_timeout => '3600',
|
||||
slave_skip_errors => 'OFF',
|
||||
slave_transaction_retries => '10',
|
||||
slow_launch_time => '2',
|
||||
socket => '/tmp/12345/mysql_sandbox12345.sock',
|
||||
sort_buffer_size => '2097144',
|
||||
sql_big_selects => 'ON',
|
||||
sql_mode => '',
|
||||
sql_notes => 'ON',
|
||||
sql_warnings => 'OFF',
|
||||
ssl_ca => '',
|
||||
ssl_capath => '',
|
||||
ssl_cert => '',
|
||||
ssl_cipher => '',
|
||||
ssl_key => '',
|
||||
storage_engine => 'MyISAM',
|
||||
sync_binlog => '0',
|
||||
sync_frm => 'ON',
|
||||
system_time_zone => 'MDT',
|
||||
table_cache => '64',
|
||||
table_lock_wait_timeout => '50',
|
||||
table_type => 'MyISAM',
|
||||
thread_cache_size => '0',
|
||||
thread_stack => '262144',
|
||||
time_format => '%H:%i:%s',
|
||||
time_zone => 'SYSTEM',
|
||||
timed_mutexes => 'OFF',
|
||||
tmp_table_size => '33554432',
|
||||
tmpdir => '/tmp/',
|
||||
transaction_alloc_block_size => '8192',
|
||||
transaction_prealloc_size => '4096',
|
||||
tx_isolation => 'REPEATABLE-READ',
|
||||
updatable_views_with_limit => 'YES',
|
||||
version => '5.0.82-log',
|
||||
version_comment => 'MySQL Community Server (GPL)',
|
||||
version_compile_machine => 'x86_64',
|
||||
version_compile_os => 'unknown-linux-gnu',
|
||||
wait_timeout => '28800'
|
||||
},
|
||||
'parse_show_variables()',
|
||||
);
|
||||
|
||||
# #############################################################################
|
||||
# Config from mysqld --help --verbose
|
||||
# #############################################################################
|
||||
my $config = new MySQLConfig(
|
||||
file => "$trunk/$sample/mysqldhelp001.txt",
|
||||
TextResultSetParser => $trp,
|
||||
);
|
||||
|
||||
is(
|
||||
$config->format(),
|
||||
'mysqld',
|
||||
"Detect mysqld type"
|
||||
);
|
||||
|
||||
is_deeply(
|
||||
$config->variables(),
|
||||
{
|
||||
abort_slave_event_count => '0',
|
||||
allow_suspicious_udfs => 'FALSE',
|
||||
auto_increment_increment => '1',
|
||||
auto_increment_offset => '1',
|
||||
automatic_sp_privileges => 'TRUE',
|
||||
back_log => '50',
|
||||
basedir => '/home/daniel/mysql_binaries/mysql-5.0.82-linux-x86_64-glibc23',
|
||||
bdb => 'FALSE',
|
||||
bind_address => '',
|
||||
binlog_cache_size => '32768',
|
||||
bulk_insert_buffer_size => '8388608',
|
||||
character_set_client_handshake => 'TRUE',
|
||||
character_set_filesystem => 'binary',
|
||||
character_set_server => 'latin1',
|
||||
character_sets_dir => '/home/daniel/mysql_binaries/mysql-5.0.82-linux-x86_64-glibc23/share/mysql/charsets/',
|
||||
chroot => '',
|
||||
collation_server => 'latin1_swedish_ci',
|
||||
completion_type => '0',
|
||||
concurrent_insert => '1',
|
||||
connect_timeout => '10',
|
||||
console => 'FALSE',
|
||||
datadir => '/tmp/12345/data/',
|
||||
date_format => '',
|
||||
datetime_format => '',
|
||||
default_character_set => 'latin1',
|
||||
default_collation => 'latin1_swedish_ci',
|
||||
default_time_zone => '',
|
||||
default_week_format => '0',
|
||||
delayed_insert_limit => '100',
|
||||
delayed_insert_timeout => '300',
|
||||
delayed_queue_size => '1000',
|
||||
des_key_file => '',
|
||||
disconnect_slave_event_count => '0',
|
||||
div_precision_increment => '4',
|
||||
enable_locking => 'FALSE',
|
||||
enable_pstack => 'FALSE',
|
||||
engine_condition_pushdown => 'FALSE',
|
||||
expire_logs_days => '0',
|
||||
external_locking => 'FALSE',
|
||||
federated => 'TRUE',
|
||||
flush_time => '0',
|
||||
ft_max_word_len => '84',
|
||||
ft_min_word_len => '4',
|
||||
ft_query_expansion_limit => '20',
|
||||
ft_stopword_file => '',
|
||||
gdb => 'FALSE',
|
||||
group_concat_max_len => '1024',
|
||||
help => 'TRUE',
|
||||
init_connect => '',
|
||||
init_file => '',
|
||||
init_slave => '',
|
||||
innodb => 'TRUE',
|
||||
innodb_adaptive_hash_index => 'TRUE',
|
||||
innodb_additional_mem_pool_size => '1048576',
|
||||
innodb_autoextend_increment => '8',
|
||||
innodb_buffer_pool_awe_mem_mb => '0',
|
||||
innodb_buffer_pool_size => '16777216',
|
||||
innodb_checksums => 'TRUE',
|
||||
innodb_commit_concurrency => '0',
|
||||
innodb_concurrency_tickets => '500',
|
||||
innodb_data_home_dir => '/tmp/12345/data',
|
||||
innodb_doublewrite => 'TRUE',
|
||||
innodb_fast_shutdown => '1',
|
||||
innodb_file_io_threads => '4',
|
||||
innodb_file_per_table => 'FALSE',
|
||||
innodb_flush_log_at_trx_commit => '1',
|
||||
innodb_flush_method => '',
|
||||
innodb_force_recovery => '0',
|
||||
innodb_lock_wait_timeout => '3',
|
||||
innodb_locks_unsafe_for_binlog => 'FALSE',
|
||||
innodb_log_arch_dir => '',
|
||||
innodb_log_buffer_size => '1048576',
|
||||
innodb_log_file_size => '5242880',
|
||||
innodb_log_files_in_group => '2',
|
||||
innodb_log_group_home_dir => '/tmp/12345/data',
|
||||
innodb_max_dirty_pages_pct => '90',
|
||||
innodb_max_purge_lag => '0',
|
||||
innodb_mirrored_log_groups => '1',
|
||||
innodb_open_files => '300',
|
||||
innodb_rollback_on_timeout => 'FALSE',
|
||||
innodb_status_file => 'FALSE',
|
||||
innodb_support_xa => 'TRUE',
|
||||
innodb_sync_spin_loops => '20',
|
||||
innodb_table_locks => 'TRUE',
|
||||
innodb_thread_concurrency => '8',
|
||||
innodb_thread_sleep_delay => '10000',
|
||||
innodb_use_legacy_cardinality_algorithm => 'TRUE',
|
||||
interactive_timeout => '28800',
|
||||
isam => 'FALSE',
|
||||
join_buffer_size => '131072',
|
||||
keep_files_on_create => 'FALSE',
|
||||
key_buffer_size => '16777216',
|
||||
key_cache_age_threshold => '300',
|
||||
key_cache_block_size => '1024',
|
||||
key_cache_division_limit => '100',
|
||||
language => '/home/daniel/mysql_binaries/mysql-5.0.82-linux-x86_64-glibc23/share/mysql/english/',
|
||||
large_pages => 'FALSE',
|
||||
lc_time_names => 'en_US',
|
||||
local_infile => 'TRUE',
|
||||
log => 'OFF',
|
||||
log_bin => 'mysql-bin',
|
||||
log_bin_index => 'OFF',
|
||||
log_bin_trust_function_creators => 'FALSE',
|
||||
log_bin_trust_routine_creators => 'FALSE',
|
||||
log_error => '',
|
||||
log_isam => 'myisam.log',
|
||||
log_queries_not_using_indexes => 'FALSE',
|
||||
log_short_format => 'FALSE',
|
||||
log_slave_updates => 'TRUE',
|
||||
log_slow_admin_statements => 'FALSE',
|
||||
log_slow_queries => 'OFF',
|
||||
log_tc => 'tc.log',
|
||||
log_tc_size => '24576',
|
||||
log_update => 'OFF',
|
||||
log_warnings => '1',
|
||||
long_query_time => '10',
|
||||
low_priority_updates => 'FALSE',
|
||||
lower_case_table_names => '0',
|
||||
master_connect_retry => '60',
|
||||
master_host => '',
|
||||
master_info_file => 'master.info',
|
||||
master_password => '',
|
||||
master_port => '3306',
|
||||
master_retry_count => '86400',
|
||||
master_ssl => 'FALSE',
|
||||
master_ssl_ca => '',
|
||||
master_ssl_capath => '',
|
||||
master_ssl_cert => '',
|
||||
master_ssl_cipher => '',
|
||||
master_ssl_key => '',
|
||||
master_user => 'test',
|
||||
max_allowed_packet => '1048576',
|
||||
max_binlog_cache_size => '18446744073709547520',
|
||||
max_binlog_dump_events => '0',
|
||||
max_binlog_size => '1073741824',
|
||||
max_connect_errors => '10',
|
||||
max_connections => '100',
|
||||
max_delayed_threads => '20',
|
||||
max_error_count => '64',
|
||||
max_heap_table_size => '16777216',
|
||||
max_join_size => '18446744073709551615',
|
||||
max_length_for_sort_data => '1024',
|
||||
max_prepared_stmt_count => '16382',
|
||||
max_relay_log_size => '0',
|
||||
max_seeks_for_key => '18446744073709551615',
|
||||
max_sort_length => '1024',
|
||||
max_sp_recursion_depth => '0',
|
||||
max_tmp_tables => '32',
|
||||
max_user_connections => '0',
|
||||
max_write_lock_count => '18446744073709551615',
|
||||
memlock => 'FALSE',
|
||||
merge => 'TRUE',
|
||||
multi_range_count => '256',
|
||||
myisam_block_size => '1024',
|
||||
myisam_data_pointer_size => '6',
|
||||
myisam_max_extra_sort_file_size => '2147483648',
|
||||
myisam_max_sort_file_size => '9223372036853727232',
|
||||
myisam_recover => 'OFF',
|
||||
myisam_repair_threads => '1',
|
||||
myisam_sort_buffer_size => '8388608',
|
||||
myisam_stats_method => 'nulls_unequal',
|
||||
ndb_autoincrement_prefetch_sz => '1',
|
||||
ndb_cache_check_time => '0',
|
||||
ndb_connectstring => '',
|
||||
ndb_force_send => 'TRUE',
|
||||
ndb_mgmd_host => '',
|
||||
ndb_nodeid => '0',
|
||||
ndb_optimized_node_selection => 'TRUE',
|
||||
ndb_shm => 'FALSE',
|
||||
ndb_use_exact_count => 'TRUE',
|
||||
ndb_use_transactions => 'TRUE',
|
||||
ndbcluster => 'FALSE',
|
||||
net_buffer_length => '16384',
|
||||
net_read_timeout => '30',
|
||||
net_retry_count => '10',
|
||||
net_write_timeout => '60',
|
||||
new => 'FALSE',
|
||||
old_passwords => 'FALSE',
|
||||
old_style_user_limits => 'FALSE',
|
||||
open_files_limit => '0',
|
||||
optimizer_prune_level => '1',
|
||||
optimizer_search_depth => '62',
|
||||
pid_file => '/tmp/12345/data/mysql_sandbox12345.pid',
|
||||
plugin_dir => '',
|
||||
port => '12345',
|
||||
port_open_timeout => '0',
|
||||
preload_buffer_size => '32768',
|
||||
profiling_history_size => '15',
|
||||
query_alloc_block_size => '8192',
|
||||
query_cache_limit => '1048576',
|
||||
query_cache_min_res_unit => '4096',
|
||||
query_cache_size => '0',
|
||||
query_cache_type => '1',
|
||||
query_cache_wlock_invalidate => 'FALSE',
|
||||
query_prealloc_size => '8192',
|
||||
range_alloc_block_size => '4096',
|
||||
read_buffer_size => '131072',
|
||||
read_only => 'FALSE',
|
||||
read_rnd_buffer_size => '262144',
|
||||
record_buffer => '131072',
|
||||
relay_log => 'mysql-relay-bin',
|
||||
relay_log_index => '',
|
||||
relay_log_info_file => 'relay-log.info',
|
||||
relay_log_purge => 'TRUE',
|
||||
relay_log_space_limit => '0',
|
||||
replicate_same_server_id => 'FALSE',
|
||||
report_host => '127.0.0.1',
|
||||
report_password => '',
|
||||
report_port => '12345',
|
||||
report_user => '',
|
||||
rpl_recovery_rank => '0',
|
||||
safe_user_create => 'FALSE',
|
||||
secure_auth => 'FALSE',
|
||||
secure_file_priv => '',
|
||||
server_id => '12345',
|
||||
show_slave_auth_info => 'FALSE',
|
||||
skip_grant_tables => 'FALSE',
|
||||
skip_slave_start => 'FALSE',
|
||||
slave_compressed_protocol => 'FALSE',
|
||||
slave_load_tmpdir => '/tmp/',
|
||||
slave_net_timeout => '3600',
|
||||
slave_transaction_retries => '10',
|
||||
slow_launch_time => '2',
|
||||
socket => '/tmp/12345/mysql_sandbox12345.sock',
|
||||
sort_buffer_size => '2097144',
|
||||
sporadic_binlog_dump_fail => 'FALSE',
|
||||
sql_mode => 'OFF',
|
||||
ssl => 'FALSE',
|
||||
ssl_ca => '',
|
||||
ssl_capath => '',
|
||||
ssl_cert => '',
|
||||
ssl_cipher => '',
|
||||
ssl_key => '',
|
||||
symbolic_links => 'TRUE',
|
||||
sync_binlog => '0',
|
||||
sync_frm => 'TRUE',
|
||||
sysdate_is_now => 'FALSE',
|
||||
table_cache => '64',
|
||||
table_lock_wait_timeout => '50',
|
||||
tc_heuristic_recover => '',
|
||||
temp_pool => 'TRUE',
|
||||
thread_cache_size => '0',
|
||||
thread_concurrency => '10',
|
||||
thread_stack => '262144',
|
||||
time_format => '',
|
||||
timed_mutexes => 'FALSE',
|
||||
tmp_table_size => '33554432',
|
||||
tmpdir => '',
|
||||
transaction_alloc_block_size => '8192',
|
||||
transaction_prealloc_size => '4096',
|
||||
updatable_views_with_limit => '1',
|
||||
use_symbolic_links => 'TRUE',
|
||||
verbose => 'TRUE',
|
||||
wait_timeout => '28800',
|
||||
warnings => '1'
|
||||
},
|
||||
'mysqldhelp001.txt'
|
||||
);
|
||||
|
||||
is(
|
||||
$config->value_of('wait_timeout'),
|
||||
28800,
|
||||
'value_of() from mysqld'
|
||||
);
|
||||
|
||||
ok(
|
||||
$config->has('wait_timeout'),
|
||||
'has() from mysqld'
|
||||
);
|
||||
|
||||
ok(
|
||||
!$config->has('foo'),
|
||||
"has(), doesn't have it"
|
||||
);
|
||||
|
||||
# #############################################################################
|
||||
# Config from SHOW VARIABLES
|
||||
# #############################################################################
|
||||
$config = new MySQLConfig(
|
||||
result_set => [ [qw(foo bar)], [qw(a z)] ],
|
||||
TextResultSetParser => $trp,
|
||||
);
|
||||
|
||||
is(
|
||||
$config->format(),
|
||||
'show_variables',
|
||||
"Detect show_variables type (arrayref)"
|
||||
);
|
||||
|
||||
is_deeply(
|
||||
$config->variables(),
|
||||
{
|
||||
foo => 'bar',
|
||||
a => 'z',
|
||||
},
|
||||
'Variables from arrayref'
|
||||
);
|
||||
|
||||
is(
|
||||
$config->value_of('foo'),
|
||||
'bar',
|
||||
'value_of() from arrayref',
|
||||
);
|
||||
|
||||
ok(
|
||||
$config->has('foo'),
|
||||
'has() from arrayref',
|
||||
);
|
||||
|
||||
# #############################################################################
|
||||
# Config from my_print_defaults
|
||||
# #############################################################################
|
||||
$config = new MySQLConfig(
|
||||
file => "$trunk/$sample/myprintdef001.txt",
|
||||
TextResultSetParser => $trp,
|
||||
);
|
||||
|
||||
is(
|
||||
$config->format(),
|
||||
'my_print_defaults',
|
||||
"Detect my_print_defaults type"
|
||||
);
|
||||
|
||||
is(
|
||||
$config->value_of('port'),
|
||||
'12349',
|
||||
"Duplicate var's last value used"
|
||||
);
|
||||
|
||||
is(
|
||||
$config->value_of('innodb_buffer_pool_size'),
|
||||
'16777216',
|
||||
'Converted size char to int'
|
||||
);
|
||||
|
||||
is(
|
||||
$config->value_of('log_slave_updates'),
|
||||
'ON',
|
||||
"Var is ON if specified in my_print_defaults"
|
||||
);
|
||||
|
||||
is_deeply(
|
||||
$config->duplicate_variables(),
|
||||
{
|
||||
'port' => [12345],
|
||||
},
|
||||
'duplicate_variables()'
|
||||
);
|
||||
|
||||
# #############################################################################
|
||||
# Config from option file (my.cnf)
|
||||
# #############################################################################
|
||||
$config = new MySQLConfig(
|
||||
file => "$trunk/$sample/mycnf001.txt",
|
||||
TextResultSetParser => $trp,
|
||||
);
|
||||
|
||||
is(
|
||||
$config->format(),
|
||||
'option_file',
|
||||
"Detect option_file type"
|
||||
);
|
||||
|
||||
is_deeply(
|
||||
$config->variables(),
|
||||
{
|
||||
'user' => 'mysql',
|
||||
'pid_file' => '/var/run/mysqld/mysqld.pid',
|
||||
'socket' => '/var/run/mysqld/mysqld.sock',
|
||||
'port' => 3306,
|
||||
'basedir' => '/usr',
|
||||
'datadir' => '/var/lib/mysql',
|
||||
'tmpdir' => '/tmp',
|
||||
'skip_external_locking' => 'ON',
|
||||
'bind_address' => '127.0.0.1',
|
||||
'key_buffer' => 16777216,
|
||||
'max_allowed_packet' => 16777216,
|
||||
'thread_stack' => 131072,
|
||||
'thread_cache_size' => 8,
|
||||
'myisam_recover' => 'BACKUP',
|
||||
'query_cache_limit' => 1048576,
|
||||
'query_cache_size' => 16777216,
|
||||
'expire_logs_days' => 10,
|
||||
'max_binlog_size' => 104857600,
|
||||
'skip_federated' => 'ON',
|
||||
},
|
||||
"Vars from option file"
|
||||
) or print Dumper($config->variables());
|
||||
|
||||
$config = new MySQLConfig(
|
||||
file => "$trunk/$sample/mycnf002.txt",
|
||||
TextResultSetParser => $trp,
|
||||
);
|
||||
|
||||
is_deeply(
|
||||
$config->variables(),
|
||||
{
|
||||
var1 => '16777216', # 16 Mb
|
||||
var2 => '16777216',
|
||||
var3 => '16777216',
|
||||
var4 => '16777216',
|
||||
var5 => '16384', # 16 Kb
|
||||
var6 => '16384',
|
||||
var7 => '16384',
|
||||
var8 => '16384',
|
||||
var9 => '1073741824', # 1 Gb
|
||||
var10 => '1073741824',
|
||||
var11 => '1073741824',
|
||||
var12 => '1073741824',
|
||||
},
|
||||
"Size postfixes MB, KB, etc."
|
||||
) or print Dumper($config->variables());
|
||||
|
||||
# ############################################################################
|
||||
# Baron's test cases.
|
||||
# ############################################################################
|
||||
$config = new MySQLConfig(
|
||||
file => "$trunk/$sample/mycnf-baron-001.txt",
|
||||
TextResultSetParser => $trp,
|
||||
);
|
||||
|
||||
is_deeply(
|
||||
$config->variables(),
|
||||
{
|
||||
'datadir' => '/home/baron/etc/mysql/server/5.1.50/data/',
|
||||
'port' => '5150',
|
||||
'socket' => '/home/baron/etc/mysql/server/5.1.50/data/mysql.sock',
|
||||
'language' => './share/english',
|
||||
'basedir' => '/home/baron/etc/mysql/server/5.1.50',
|
||||
'log_bin' => 'ON',
|
||||
'plugin_load' => 'innodb=ha_innodb_plugin.so.0;innodb_trx=ha_innodb_plugin.so.0;innodb_locks=ha_innodb_plugin.so.0;innodb_cmp=ha_innodb_plugin.so.0;innodb_cmp_reset=ha_innodb_plugin.so.0;innodb_cmpmem=ha_innodb_plugin.so.0;innodb_cmpmem_reset=ha_innodb_plugin.so.0',
|
||||
'ignore_builtin_innodb' => 'ON',
|
||||
},
|
||||
"mycnf-baron-001.cnf"
|
||||
);
|
||||
|
||||
$config = new MySQLConfig(
|
||||
file => "$trunk/t/lib/samples/show-variables/vars-baron-001.txt",
|
||||
TextResultSetParser => $trp,
|
||||
);
|
||||
|
||||
is(
|
||||
$config->format(),
|
||||
'show_variables',
|
||||
'Detect show_variables type for unformatted SHOW VARIABLES output'
|
||||
);
|
||||
|
||||
is(
|
||||
$config->value_of('wait_timeout'),
|
||||
28800,
|
||||
"Get vars from unformatted SHOW VARIABLES output"
|
||||
);
|
||||
|
||||
$config = new MySQLConfig(
|
||||
file => "$trunk/$sample/mycnf-baron-002.txt",
|
||||
TextResultSetParser => $trp,
|
||||
);
|
||||
|
||||
is_deeply(
|
||||
$config->value_of('innodb_file_per_table'),
|
||||
'ON',
|
||||
"innodb_file_per_table (mycnf-baron-002.cnf)"
|
||||
);
|
||||
|
||||
# #############################################################################
|
||||
# Online test.
|
||||
# #############################################################################
|
||||
SKIP: {
|
||||
skip 'Cannot connect to sandbox master', 3 unless $dbh;
|
||||
|
||||
$config = new MySQLConfig(
|
||||
dbh => $dbh,
|
||||
);
|
||||
|
||||
is(
|
||||
$config->format(),
|
||||
"show_variables",
|
||||
"Detect show_variables type (dbh)"
|
||||
);
|
||||
|
||||
is(
|
||||
$config->value_of('datadir'),
|
||||
'/tmp/12345/data/',
|
||||
"Vars from dbh"
|
||||
);
|
||||
|
||||
like(
|
||||
$config->mysql_version(),
|
||||
qr/5\.\d+\.\d+/,
|
||||
"MySQL version from dbh"
|
||||
);
|
||||
}
|
||||
|
||||
# #############################################################################
|
||||
# Done.
|
||||
# #############################################################################
|
||||
{
|
||||
local *STDERR;
|
||||
open STDERR, '>', \$output;
|
||||
$config->_d('Complete test coverage');
|
||||
}
|
||||
like(
|
||||
$output,
|
||||
qr/Complete test coverage/,
|
||||
'_d() works'
|
||||
);
|
||||
exit;
|
Reference in New Issue
Block a user