###############################################################################
#                                                                             #
# Variable Name: Host_Cache_Size                                              #
# Scope: Global                                                               #
# Access Type: Dynamic                                                        #
# Data Type: numeric                                                          #
#                                                                             #
#                                                                             #
# Creation Date: 2012-08-31                                                   #
# Author : Tanjot Singh Uppal                                                 #
#                                                                             #
#                                                                             #
# Description:Test Cases of Dynamic System Variable Host_Cache_Size           #
#             that checks the behavior of this variable in the following ways #
#              * Value Check                                                  #
#              * Scope Check                                                  #
#              * Functionality Check                                          #
#              * Accessability Check                                          #
#                                                                             #               
# This test does not perform the crash recovery on this variable              # 
# For crash recovery test on default change please run the ibtest             #
###############################################################################

-- source include/have_innodb.inc
-- source include/not_embedded.inc
-- source include/have_innodb_16k.inc
--disable_warnings
echo '#________________________VAR_06_Host_Cache_Size__________________#'
echo '##'
--echo '#---------------------WL6372_VAR_6_01----------------------#'
####################################################################
#   Checking default value                                         #
####################################################################

select @@global.Host_Cache_Size > 0;
--echo 1 Expected


--echo '#---------------------WL6372_VAR_6_02----------------------#'
#################################################################################
# Checking the Default value post starting the server with other value          #
#################################################################################
--echo # Restart server with Host_Cache_Size 1

let $restart_file= $MYSQLTEST_VARDIR/tmp/mysqld.1.expect;
--write_line wait $restart_file
--shutdown_server
--source include/wait_until_disconnected.inc
--write_line "restart:--host_cache_size=1  " $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
-- enable_reconnect
-- source include/wait_until_connected_again.inc

--disable_warnings

SELECT @@GLOBAL.Host_Cache_Size;
--echo 1 Expected

#set @Default_host_cache_size=(select if(if(@@global.max_connections<500,128+@@global.max_connections,128+@@global.max_connections+floor((@@global.max_connections-500)/20))>2000,2000,if(@@global.max_connections<500,128+@@global.max_connections,128+@@global.max_connections+floor((@@global.max_connections-500)/20))));
set @Default_host_cache_size=128;
SET @@GLOBAL.Host_Cache_Size=DEFAULT;
select @@global.Host_Cache_Size=@Default_host_cache_size;
--echo 1 Expected


--echo '#---------------------WL6372_VAR_6_03----------------------#'
####################################################################
#   Checking Value can be set - Dynamic                            #
####################################################################
--error ER_GLOBAL_VARIABLE 
SET @@local.Host_Cache_Size=1;
--echo Expected error 'Global variable'

--error ER_GLOBAL_VARIABLE 
SET @@session.Host_Cache_Size=1;
--echo Expected error 'Global variable'

SET @@GLOBAL.Host_Cache_Size=1;
SET @@GLOBAL.Host_Cache_Size=DEFAULT;

SELECT COUNT(@@GLOBAL.Host_Cache_Size);
--echo 1 Expected

select @@global.Host_Cache_Size=@Default_host_cache_size;
--echo 1 Expected

--echo '#---------------------WL6372_VAR_6_04----------------------#'
#################################################################
# Check if the value in GLOBAL Table matches value in variable  #
#################################################################
SELECT @@GLOBAL.Host_Cache_Size = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='Host_Cache_Size';
--echo 1 Expected

SELECT COUNT(@@GLOBAL.Host_Cache_Size);
--echo 1 Expected

SELECT COUNT(VARIABLE_VALUE)
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES 
WHERE VARIABLE_NAME='Host_Cache_Size';
--echo 1 Expected

--echo '#---------------------WL6372_VAR_6_05----------------------#'
################################################################################
#  Checking Variable Scope                                                     #
################################################################################
SELECT @@Host_Cache_Size = @@GLOBAL.Host_Cache_Size;
--echo 1 Expected

--Error ER_INCORRECT_GLOBAL_LOCAL_VAR
SELECT COUNT(@@local.Host_Cache_Size);
--echo Expected error 'Variable is a GLOBAL variable'

--Error ER_INCORRECT_GLOBAL_LOCAL_VAR
SELECT COUNT(@@SESSION.Host_Cache_Size);
--echo Expected error 'Variable is a GLOBAL variable'

SELECT COUNT(@@GLOBAL.Host_Cache_Size);
--echo 1 Expected

--Error ER_BAD_FIELD_ERROR
SELECT Host_Cache_Size = @@SESSION.Host_Cache_Size;
--echo Expected error 'Unknown column Host_Cache_Size in field list'

#The below check has been commented out as the IP fetch is different in a P2P connection than BroadBand connection
#--echo '#---------------------WL6372_VAR_6_06----------------------#'
###############################################################################
# Checking the Host   cahce functionality                                     #
###############################################################################

#SET @@GLOBAL.Host_Cache_Size=2;
#--disable_warnings

#--perl
#my $ip=`ifconfig | egrep "inet addr|inet" | sed -e 's/^.*inet addr://' -e 's/^.*inet//'| sed 's/ .*\$//'|egrep -i "broadcast|bcast"|head -1|awk '{print $1}'`;
#open (LOGFH, ">" . $ENV{'MYSQL_TMP_DIR'} . "/bind_ip");
#print LOGFH "let \$bind_ip = $ip;\n";
#close LOGFH;
#EOF

#--source $MYSQL_TMP_DIR/bind_ip
#--remove_file $MYSQL_TMP_DIR/bind_ip

#let $restart_file= $MYSQLTEST_VARDIR/tmp/mysqld.1.expect;
#--write_line wait $restart_file
#--shutdown_server
#--source include/wait_until_disconnected.inc
#-- write_line "restart:--bind-address=$bind_ip  " $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
#-- enable_reconnect
#-- source include/wait_until_connected_again.inc

#connection default;
#--disable_warnings

#create user binduser;
#grant all on *.* to binduser;

#select count(IP) from performance_schema.host_cache;
#--echo 0 Expected

#connect (con1,$bind_ip,binduser,,);
#select count(IP) from performance_schema.host_cache;
#--echo 1 Expected

#disconnect con1;
#connection default;

#--disable_warnings

# The below check is hashed until the BUG14689561# is fixed
#
#flush hosts;

#connect (con2,$bind_ip,binduser,,);
#select count(IP) from performance_schema.host_cache;
#--echo 1 Expected

#disconnect con2;

SET @@GLOBAL.Host_Cache_Size=DEFAULT;
