#!/bin/sh
source ./util.sh
function test_gs_stat_walsender()
{
echo -e '\n------------------------------------------------------------\n'
sqls=(
'select is_enable_stat,send_times,first_send_time,last_send_time,last_reset_time,avg_send_interval,since_last_send_interval from gs_stat_walsender() limit 1;'
'select is_enable_stat from gs_stat_walsender() limit 1;'
'select is_enable_stat from gs_stat_walsender(1) limit 1;'
)
expecteds=(
'f|0|||||'
'f'
't'
)
sql_num=${#sqls[@]}
exp_num=${#expecteds[@]}
if test $sql_num != $exp_num
then
echo "sqls array size($sql_num) not equals expecteds size($exp_num) ... $failed_keyword"
fi
for (( i=0; i<$sql_num; i++ ))
do
output=$(gsql -d $db -p $dn1_primary_port -Atc "${sqls[$i]}")
echo "${sqls[$i]}"
echo "expected:"
echo "${expecteds[$i]}"
echo "output:"
echo "${output}"
if [ "$output" != "${expecteds[$i]}" ]
then
echo "case-se$i: $failed_keyword"
else
echo "case-se$i: success"
fi
echo ''
done
data_sql="create table walstat_t1(a int, b varchar(100), c text);
insert into walstat_t1 values(1, 'hello', 'test'), (1, 'hello', 'test');
insert into walstat_t1 values(1, 'hello', 'test'), (1, 'hello', 'test');
insert into walstat_t1 values(1, 'hello', 'test'), (1, 'hello', 'test');"
gsql -d $db -p $dn1_primary_port -c "$data_sql"
echo ''
sleep 5
sqls=(
'select send_times from gs_stat_walsender() limit 1;'
'select first_send_time as has_value from gs_stat_walsender() limit 1;'
'select last_send_time as has_value from gs_stat_walsender() limit 1;'
'select avg_send_interval as has_value from gs_stat_walsender() limit 1;'
'select since_last_send_interval as has_value from gs_stat_walsender() limit 1;'
'select is_enable_stat from gs_stat_walsender(-1) limit 1;'
'select last_reset_time from gs_stat_walsender(0) limit 1;'
'select cur_time from gs_stat_walsender() limit 1;'
'select channel from gs_stat_walsender() limit 1;'
)
unexpecteds=(
'0'
'0'
'0'
'0'
'0'
't'
''
''
''
)
sql_num=${#sqls[@]}
for (( i=0; i<$sql_num; i++ ))
do
output=$(gsql -d $db -p $dn1_primary_port -Atc "${sqls[$i]}")
echo "${sqls[$i]}"
echo "unexpected:"
echo "${unexpecteds[$i]}"
echo "output:"
echo "${output}"
if [ "$output" = "${unexpecteds[$i]}" ]
then
echo "case-su$i: $failed_keyword"
else
echo "case-su$i: success"
fi
echo ''
done
sql='select count(1) from gs_stat_walsender(2);'
expected='4'
output=$(gsql -d $db -p $dn1_primary_port -Atc "${sql}")
echo "${sql}"
echo "expected:"
echo "${expected}"
echo "output:"
echo "${output}"
if [ "$output" != "${expected}" ]
then
echo "case-sx: $failed_keyword"
else
echo "case-sx: success"
fi
gsql -d $db -p $dn1_primary_port -Atc "select * from gs_stat_walsender();"
sql='select is_enable_stat,send_times,first_send_time,last_send_time,last_reset_time,avg_send_interval,since_last_send_interval from gs_stat_walsender(-1)'
echo $sql
output_s1=$(gsql -d $db -p $dn1_primary_port -Atc "$sql")
echo 'output_s1:'
echo $output_s1
echo ''
sql='select is_enable_stat,send_times,first_send_time,last_send_time,last_reset_time,avg_send_interval,since_last_send_interval from gs_stat_walsender()'
echo $sql
output_s2=$(gsql -d $db -p $dn1_primary_port -Atc "$sql")
echo 'output_s2:'
echo $output_s2
if [ "$output_s1" = "$output_s2" ]
then
echo "disable gs_stat_walsender: success"
else
echo "disable gs_stat_walsender: $failed_keyword"
fi
echo ''
echo 'case reset receiver, writer:'
sql='select send_times,first_send_time,last_send_time,avg_send_interval,since_last_send_interval from gs_stat_walsender(0)'
expected='0||||
0||||
0||||
0||||'
output=$(gsql -d $db -p $dn1_primary_port -Atc "$sql")
echo $sql
echo 'expected:'
echo $expected
echo 'output:'
echo $output
if [ "$output" = "$expected" ]
then
echo "reset gs_stat_walsender: success"
else
echo "reset gs_stat_walsender: $failed_keyword"
fi
echo ''
sql='select gs_stat_walsender(666);'
expected="ERROR: illegal value \"666\" for parameter \"operation\".
HINT: -1: disable, 0: reset, 1: enable, 2: get
CONTEXT: referenced column: gs_stat_walsender"
output=$(gsql -d $db -p $dn1_standby_port -c "$sql" 2>&1)
echo "$sql"
echo 'expected:'
echo "$expected"
echo 'output:'
echo "$output"
if [ "$output" = "$expected" ]
then
echo "gs_stat_walsender check params: success"
else
echo "gs_stat_walsender check params: $failed_keyword"
fi
echo ''
echo -e '\n------------------------------------------------------------\n'
}
function test_gs_stat_walreceiver_and_walwriter()
{
echo -e '\n------------------------------------------------------------\n'
sqls=(
'select count(1) from gs_stat_walreceiver();'
'select is_enable_stat from gs_stat_walreceiver();'
'select buffer_full_times from gs_stat_walreceiver(2);'
'select wake_writer_times from gs_stat_walreceiver();'
'select first_wake_time from gs_stat_walreceiver(2);'
'select last_wake_time from gs_stat_walreceiver();'
'select last_reset_time from gs_stat_walreceiver();'
'select since_last_wake_interval from gs_stat_walreceiver();'
'select is_enable_stat from gs_stat_walreceiver(1);'
'select count(1) from gs_stat_walrecvwriter();'
'select is_enable_stat from gs_stat_walrecvwriter(2);'
'select total_write_bytes from gs_stat_walrecvwriter();'
'select write_times from gs_stat_walrecvwriter();'
'select total_write_time from gs_stat_walrecvwriter();'
'select avg_write_time from gs_stat_walrecvwriter();'
'select avg_write_bytes from gs_stat_walrecvwriter(2);'
'select total_sync_bytes from gs_stat_walrecvwriter();'
'select sync_times from gs_stat_walrecvwriter();'
'select total_sync_time from gs_stat_walrecvwriter(2);'
'select avg_sync_time from gs_stat_walrecvwriter();'
'select avg_sync_bytes from gs_stat_walrecvwriter(2);'
'select is_enable_stat from gs_stat_walrecvwriter(0);'
'select is_enable_stat from gs_stat_walrecvwriter(1);'
)
expecteds=(
'1'
'f'
'0'
'0'
''
''
''
''
't'
'1'
'f'
'0'
'0'
'0'
''
''
'0'
'0'
'0'
''
''
'f'
't'
)
sql_num=${#sqls[@]}
exp_num=${#expecteds[@]}
if test $sql_num != $exp_num
then
echo "test_gs_stat_walreceiver_and_walwriter sqls array size($sql_num) not equals expecteds size($exp_num) ... $failed_keyword"
fi
for (( i=0; i<$sql_num; i++ ))
do
output=$(gsql -d $db -p $dn1_standby_port -Atc "${sqls[$i]}")
echo "${sqls[$i]}"
echo "expected:"
echo "${expecteds[$i]}"
echo "output:"
echo "${output}"
if [ "$output" != "${expecteds[$i]}" ]
then
echo "case-re$i: $failed_keyword"
else
echo "case-re$i: success"
fi
echo ''
done
data_sql="create table if not exists walstat_t1(a int, b varchar(100), c text);
insert into walstat_t1 values(1, 'hello', 'test'), (1, 'hello', 'test');
insert into walstat_t1 values(1, 'hello', 'test'), (1, 'hello', 'test');
insert into walstat_t1 values(1, 'hello', 'test'), (1, 'hello', 'test');"
gsql -d $db -p $dn1_primary_port -c "$data_sql"
echo ''
sleep 3
gsql -d $db -p $dn1_primary_port -c "$data_sql"
echo ''
sleep 3
sqls=(
'select is_enable_stat from gs_stat_walreceiver();'
'select buffer_current_size from gs_stat_walreceiver(2);'
'select buffer_full_times from gs_stat_walreceiver(2);'
'select wake_writer_times from gs_stat_walreceiver(1);'
'select avg_wake_interval from gs_stat_walreceiver();'
'select since_last_wake_interval from gs_stat_walreceiver(2);'
'select first_wake_time from gs_stat_walreceiver();'
'select last_wake_time from gs_stat_walreceiver(1);'
'select is_enable_stat from gs_stat_walrecvwriter(2);'
'select total_write_bytes from gs_stat_walrecvwriter();'
'select write_times from gs_stat_walrecvwriter(1);'
'select total_write_time from gs_stat_walrecvwriter(2);'
'select avg_write_time from gs_stat_walrecvwriter();'
'select avg_write_bytes from gs_stat_walrecvwriter(2);'
'select total_sync_bytes from gs_stat_walrecvwriter();'
'select sync_times from gs_stat_walrecvwriter(1);'
'select total_sync_time from gs_stat_walrecvwriter(2);'
'select avg_sync_time from gs_stat_walrecvwriter();'
'select avg_sync_bytes from gs_stat_walrecvwriter(2);'
'select cur_time from gs_stat_walrecvwriter(2);'
)
unexpecteds=(
'f'
''
''
'0'
'0'
'0'
''
''
'f'
'0'
'0'
'0'
'0'
'0'
'0'
'0'
'0'
'0'
'0'
''
)
sql_num=${#sqls[@]}
unexp_num=${#unexpecteds[@]}
if test $sql_num != $unexp_num
then
echo "sqls array size($sql_num) not equals unexpecteds size($unexp_num) ... $failed_keyword"
fi
for (( i=0; i<$sql_num; i++ ))
do
output=$(gsql -d $db -p $dn1_standby_port -Atc "${sqls[$i]}")
echo "${sqls[$i]}"
echo "unexpected:"
echo "${unexpecteds[$i]}"
echo "output:"
echo "${output}"
if [ "$output" = "${unexpecteds[$i]}" ]
then
echo "case-ru$i: $failed_keyword"
else
echo "case-ru$i: success"
fi
echo ''
done
echo 'case: disable receiver, writer'
sql='select is_enable_stat, buffer_full_times, wake_writer_times, avg_wake_interval,first_wake_time,last_wake_time,last_reset_time from gs_stat_walreceiver(-1);'
echo $sql
output_r1=$(gsql -d $db -p $dn1_standby_port -Atc "$sql")
echo 'output_r1:'
echo $output_r1
echo ''
sql='select is_enable_stat,total_write_bytes,write_times,total_write_time,avg_write_time,avg_write_bytes,total_sync_bytes,sync_times,total_sync_time,avg_sync_time,avg_sync_bytes,last_reset_time from gs_stat_walrecvwriter(-1);'
echo $sql
output_w1=$(gsql -d $db -p $dn1_standby_port -Atc "$sql")
echo 'output_w1:'
echo $output_w1
echo ''
gsql -d $db -p $dn1_primary_port -c "$data_sql"
sleep 3
echo ''
sql='select is_enable_stat, buffer_full_times, wake_writer_times, avg_wake_interval,first_wake_time,last_wake_time,last_reset_time from gs_stat_walreceiver();'
echo $sql
output_r2=$(gsql -d $db -p $dn1_standby_port -Atc "$sql")
echo 'output_r2:'
echo $output_r2
echo ''
sql='select is_enable_stat,total_write_bytes,write_times,total_write_time,avg_write_time,avg_write_bytes,total_sync_bytes,sync_times,total_sync_time,avg_sync_time,avg_sync_bytes,last_reset_time from gs_stat_walrecvwriter();'
echo $sql
output_w2=$(gsql -d $db -p $dn1_standby_port -Atc "$sql")
echo 'output_w2:'
echo $output_w2
echo ''
if [ "$output_r1" = "$output_r2" ]
then
echo "disable gs_stat_walreceiver: success"
else
echo "disable gs_stat_walreceiver: $failed_keyword"
fi
if [ "$output_w1" = "$output_w2" ]
then
echo "disable gs_stat_walrecvwriter: success"
else
echo "disable gs_stat_walrecvwriter: $failed_keyword"
fi
echo ''
echo 'case reset receiver, writer:'
sql='select buffer_full_times, wake_writer_times, avg_wake_interval,first_wake_time,last_wake_time from gs_stat_walreceiver(0);'
expected='0|0|||'
output=$(gsql -d $db -p $dn1_standby_port -Atc "$sql")
echo $sql
echo 'expected:'
echo $expected
echo 'output:'
echo $output
if [ "$output" = "$expected" ]
then
echo "reset gs_stat_walreceiver: success"
else
echo "reset gs_stat_walreceiver: $failed_keyword"
fi
sql='select total_write_bytes,write_times,total_write_time,avg_write_time,avg_write_bytes,total_sync_bytes,sync_times,total_sync_time,avg_sync_time,avg_sync_bytes from gs_stat_walrecvwriter(0);'
expected='0|0|0|||0|0|0||'
output=$(gsql -d $db -p $dn1_standby_port -Atc "$sql")
echo $sql
echo 'expected:'
echo $expected
echo 'output:'
echo $output
if [ "$output" = "$expected" ]
then
echo "reset gs_stat_walrecvwriter: success"
else
echo "reset gs_stat_walrecvwriter: $failed_keyword"
fi
echo ''
sql='select gs_stat_walreceiver(3);'
expected="ERROR: illegal value \"3\" for parameter \"operation\".
HINT: -1: disable, 0: reset, 1: enable, 2: get
CONTEXT: referenced column: gs_stat_walreceiver"
output=$(gsql -d $db -p $dn1_standby_port -c "$sql" 2>&1)
echo "$sql"
echo 'expected:'
echo "$expected"
echo 'output:'
echo "$output"
if [ "$output" = "$expected" ]
then
echo "gs_stat_walreceiver check params: success"
else
echo "gs_stat_walreceiver check params: $failed_keyword"
fi
echo ''
sql='select gs_stat_walrecvwriter(-100);'
expected="ERROR: illegal value \"-100\" for parameter \"operation\".
HINT: -1: disable, 0: reset, 1: enable, 2: get
CONTEXT: referenced column: gs_stat_walrecvwriter"
output=$(gsql -d $db -p $dn1_standby_port -c "$sql" 2>&1)
echo "$sql"
echo 'expected:'
echo "$expected"
echo 'output:'
echo "$output"
if [ "$output" = "$expected" ]
then
echo "gs_stat_walrecvwriter check params: success"
else
echo "gs_stat_walrecvwriter check params: $failed_keyword"
fi
echo -e '\n------------------------------------------------------------\n'
}
function tear_down()
{
echo 'tear down'
gsql -d $db -p $dn1_primary_port -c "drop table if exists walstat_t1;"
gsql -d $db -p $dn1_primary_port -c "select gs_stat_walsender(-1);"
gsql -d $db -p $dn1_primary_port -c "select gs_stat_walsender(0);"
gsql -d $db -p $dn1_standby_port -c "select gs_stat_walreceiver(-1);"
gsql -d $db -p $dn1_standby_port -c "select gs_stat_walreceiver(0);"
gsql -d $db -p $dn1_standby_port -c "select gs_stat_walrecvwriter(-1);"
gsql -d $db -p $dn1_standby_port -c "select gs_stat_walrecvwriter(0);"
}
test_gs_stat_walsender
test_gs_stat_walreceiver_and_walwriter
tear_down