diff --git a/mysql-test/suite/funcs_1/datadict/processlist_val.inc b/mysql-test/suite/funcs_1/datadict/processlist_val.inc index da2c2950095..62e5d95f875 100644 --- a/mysql-test/suite/funcs_1/datadict/processlist_val.inc +++ b/mysql-test/suite/funcs_1/datadict/processlist_val.inc @@ -94,14 +94,25 @@ connect (ddicttestuser1,localhost,ddicttestuser1,ddictpass,information_schema); --echo ----- switch to connection default (user = root) ----- connection default; # - We have now a second connection. -# - important values in second connection +# First working phase for this connection is "Connect". +# This is a very short phase and the likelihood to meet it is +# - nearly zero on average boxes with low parallel load +# - around some percent on weak or overloaded boxes +# (Bug#32153 Status output differs - scheduling ?) +# Therefore we poll till we reach the long lasting phase with: # - USER = ddicttestuser1 # - HOST = 'localhost' # - DB = 'information_schema' # - Command = 'Sleep' -# - TIME = 0, I hope the testing machines are all time fast enough +# - TIME >= 0 Overloaded boxes can cause that we do not hit TIME = 0. # - State IS NULL # - INFO must be empty +# +let $wait_condition= SELECT COUNT(*) FROM INFORMATION_SCHEMA.PROCESSLIST + WHERE COMMAND = 'Sleep' AND TIME > 0; +--source include/wait_condition.inc +# +# Expect to hit TIME = 1. --replace_column 1 SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; # Change the SQL command (affects content of INFO) @@ -109,25 +120,19 @@ SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; SHOW FULL PROCESSLIST; # --echo # Sleep some time -# The value of TIME must increase after some sleeps. -# So poll till TIME changes. -let $run= 10; -while ($run) -{ - dec $run; - if (`SELECT COUNT(*) FROM INFORMATION_SCHEMA.PROCESSLIST - WHERE ID = @my_proclist_id + 1 AND TIME > 0`) - { - let $run= 0; - } - --real_sleep 0.2 -} -# Either we have now reached TIME = 1 or we fail with unexpected result. -# Expect to see now TIME = 1 +# The value of TIME must increase and reach 2 after some sleeps. +let $wait_timeout= 2; +let $wait_condition= SELECT COUNT(*) FROM INFORMATION_SCHEMA.PROCESSLIST + WHERE TIME > 1; +--source include/wait_condition.inc +# +# Expect to hit TIME = 2. --replace_column 1 SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; --replace_column 1 SHOW FULL PROCESSLIST; +# +# # The second connection must have an ID = my ID + 1; SELECT ID = @my_proclist_id + 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE USER = 'ddicttestuser1'; @@ -150,6 +155,12 @@ SHOW FULL PROCESSLIST; --echo --echo ----- establish connection con2 (user = ddicttestuser1) ------ connect (con2,localhost,ddicttestuser1,ddictpass,information_schema); +# +# If the testing box is under heavy load we might see connection ddicttestuser1 +# within the short phase INFO = 'SHOW FULL PROCESSLIST' and STATE = 'Writing to net'. +let $wait_condition= SELECT COUNT(*) FROM INFORMATION_SCHEMA.PROCESSLIST + WHERE COMMAND = 'Sleep'; +--source include/wait_condition.inc --replace_column 1 6