Current Path : /usr/opt/mysql57/mysql-test/suite/x/t/ |
FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64 |
Current File : //usr/opt/mysql57/mysql-test/suite/x/t/crud_pipe.test |
# Pipeline allows clients to send a batch of commands to the server all at once # and read their responses also all at once, minimizing the number of network # roundtrips and allowing for better performance, specially when network # latency is a bottleneck. ## Preamble --source ../include/xplugin_preamble.inc DROP DATABASE IF EXISTS xplugintest; CREATE DATABASE xplugintest; USE xplugintest; CREATE TABLE test.counttest1 ( i INT ); # Send xmessage in group and do -->recvresult --write_file $MYSQL_TMP_DIR/stmtexecute_select.tmp -->echo Send SELECT SLEEP (?) --"Select with sleep.Make server wait for 5 sec so other messages can be queued" Mysqlx.Sql.StmtExecute { stmt: " SELECT SLEEP (?) " args { type: SCALAR scalar { type: V_UINT v_unsigned_int: 5 } } } -- "Create table2" Mysqlx.Sql.StmtExecute { stmt: "create_collection" args { type: SCALAR scalar { type: V_STRING v_string { value: "xplugintest" } } } args { type: SCALAR scalar { type: V_STRING v_string { value: "table2" } } } namespace: "xplugin" } -- "Select" -->echo send SELECT (100+?) Mysqlx.Sql.StmtExecute { stmt: "SELECT (100+?) " args { type: SCALAR scalar { type: V_UINT v_unsigned_int: 10 } } } -->echo retrive result of send message at once -->recvresult -->recvresult -->recvresult -->echo send Insert Mysqlx.Crud.Insert { collection { name: "table2" schema: "xplugintest" } data_model: DOCUMENT row { field { type: LITERAL literal { type: V_STRING v_string { value: "\n{\n \"_id\": \"1\",\n \"name\": \"Omar Bras\", \"id\": \"1\"\n}" } } }} row { field { type: LITERAL literal { type: V_STRING v_string { value: "\n{\n \"_id\": \"2\",\n \"name\": \"Omar Mex\", \"id\": \"2\"\n}" } }} } } -->echo Send SELECT SLEEP (?) Mysqlx.Sql.StmtExecute { stmt: " SELECT SLEEP (?) " args { type: SCALAR scalar { type: V_UINT v_unsigned_int: 2 } } } -->echo Send SELECT FROM table2 Mysqlx.Sql.StmtExecute { stmt: " SELECT * FROM xplugintest.table2" } -->echo Send SELECT FROM table2 Mysqlx.Sql.StmtExecute { stmt: " DROP DATABASE xplugintest" } -->echo retrive result of send message at once -->recvresult -->recvresult -->recvresult -->recvresult EOF --exec $MYSQLXTEST -uroot --password='' --file=$MYSQL_TMP_DIR/stmtexecute_select.tmp 2>&1 --remove_file $MYSQL_TMP_DIR/stmtexecute_select.tmp # Send 100 select command and retrive result at the end perl; my $dir = $ENV{'MYSQL_TMP_DIR'}; open ( OUTPUT, ">$dir/mysqlx-in.tmp") ; $message = <<"END_MESSAGE"; Mysqlx.Sql.StmtExecute { stmt: "SELECT (100+?) " args { type: SCALAR scalar { type: V_UINT v_unsigned_int: -1 } } } END_MESSAGE for ($i=1;$i<=100;$i++) { if ($i%20==0) { print OUTPUT "\nMysqlx.Sql.StmtExecute { \n stmt: \" SELECT SLEEP (1) \"\n}\n"; # send invalid request print OUTPUT "\nMysqlx.Sql.StmtExecute { \n stmt: \" SELECT * FROM INVALID_TABLE \"\n}\n"; }else{ $str = $message; $replace = $i; $find = -1; $str =~ s/$find/$replace/g; print OUTPUT "$str\n"; } } for ($i=1;$i<=100;$i++) { print OUTPUT "\n-->recvresult\n"; if ($i%20==0) { print OUTPUT "\n-->expecterror 1046\n"; print OUTPUT "\n-->recvresult\n"; } } print OUTPUT "\n-->sql\n"; print OUTPUT "\nINSERT INTO test.counttest1 VALUES (1);\n"; print OUTPUT "\n-->endsql\n"; close(OUTPUT); EOF --exec $MYSQLXTEST -uroot --password='' --file=$MYSQL_TMP_DIR/mysqlx-in.tmp >$MYSQL_TMP_DIR/mysqlx-out1.tmp 2>&1 & --exec $MYSQLXTEST -uroot --password='' --file=$MYSQL_TMP_DIR/mysqlx-in.tmp >$MYSQL_TMP_DIR/mysqlx-out2.tmp 2>&1 let $wait_timeout= 90; let $wait_condition= select count(*)=2 from test.counttest1; --source include/wait_condition.inc --sleep 1 --remove_file $MYSQL_TMP_DIR/mysqlx-in.tmp --remove_file $MYSQL_TMP_DIR/mysqlx-out1.tmp --remove_file $MYSQL_TMP_DIR/mysqlx-out2.tmp ## Postamble DROP TABLE test.counttest1; UNINSTALL PLUGIN mysqlx;