config root man

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
Upload File :
Current File : //usr/opt/mysql57/mysql-test/suite/x/t/crud_debug.test

########### ../t/crud_debug.test                             #########
##                                                                   #
## This test aims to run crud message with debug sync point.         #
## debug sync point from server code will be set for crash and       #
#  xmessage which touches this debug sync point will be run through  #
#  mysqlxtest client.                                                #
##  - DEBUG='+d,crash_commit_before'                                 #
##  - DEBUG='+d,crash_commit_after'                                  #
#######################################################################


# # 1. Need to create table with Innodb
# # 2. Valgrind would complain about memory leaks when we crash on purpose.
# # 3. DEBUG_SYNC must be compiled in.
# # 4. Avoid CrashReporter popup on Mac
--source include/have_innodb.inc
--source include/not_valgrind.inc
--source include/have_debug_sync.inc
--source include/not_crashrep.inc

--source ../include/xplugin_preamble.inc


## Test starts here
--write_file $MYSQL_TMP_DIR/mysqlx-in.tmp
-->sql
-- "Creating database for testcase"
DROP DATABASE IF EXISTS xplugintest;
CREATE DATABASE xplugintest;
USE xplugintest;
CREATE TABLE table1 ( _id INT PRIMARY KEY, doc JSON ) ;
-->endsql

-- "Create table table2 in xplugintest "

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"
}
-->recvresult

-- "Set debyg sync point in server code to crash before committing record"
Mysqlx.Sql.StmtExecute {
   stmt : "SET DEBUG='+d,crash_commit_before'";
}
-->recvresult

-- "Insert will cause commit point to hit and server crashes"
-- "Records not saved as DEBUG='+d,crash_commit_before'"
-->echo Insert multiple rows into a Document column
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}"
        }
    }}
  }
}
-->recvresult
-->sql
SELECT * FROM xplugintest.table2;
-->endsql

EOF

# Request a crash, and restart the server.
# Write file to make mysql-test-run.pl restart the server
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
--source ../include/xplugin_wait_for_interfaces.inc
--error 1
--exec $MYSQLXTEST -u root --password='' --file=$MYSQL_TMP_DIR/mysqlx-in.tmp >$MYSQL_TMP_DIR/mysqlx-out.tmp 2>&1
#--cat_file $MYSQL_TMP_DIR/mysqlx-out.tmp
--remove_file $MYSQL_TMP_DIR/mysqlx-in.tmp
--remove_file $MYSQL_TMP_DIR/mysqlx-out.tmp
--enable_reconnect
--source include/wait_until_connected_again.inc
# No rows
SELECT * FROM xplugintest.table2;

--write_file $MYSQL_TMP_DIR/mysqlx-in.tmp
-- "Index with  unique(true), index column NOT NULL (true)"
Mysqlx.Sql.StmtExecute {
  stmt: "create_collection_index"
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "xplugintest"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "table2"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "name_index"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_BOOL
      v_bool: true
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "$.name"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "TEXT(50)"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_BOOL
      v_bool: true
    }
  }
  namespace: "xplugin"
}
-->recvresult

-->echo Insert multiple rows into a Document column
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}"
        }
    }}
  }
}
-->recvresult

-->sql
SHOW CREATE TABLE xplugintest.table2;
SELECT * FROM xplugintest.table2;
-->endsql
-- "Set crash point after commit. Update will hit this point"
Mysqlx.Sql.StmtExecute {
   stmt : "SET DEBUG='+d,crash_commit_after'";
}
-->recvresult
-- "Update will cause commit point to hit and server crashes"
-- "Records not saved as DEBUG='+d,crash_commit_before'"
-->echo Update decimal value with a corner value plus 1
Mysqlx.Crud.Update {
  collection {
    name: "table2"
    schema: "xplugintest"
  }
  data_model: DOCUMENT
  criteria {
    type: OPERATOR
    operator {
      name: "=="
      param {
        type: IDENT
        identifier {
            name: "_id"
        }
      }
      param {
        type: LITERAL
        literal {
               type: V_SINT
               v_signed_int: 2
        }
      }
    }
  }
  operation {
    source {
      document_path {
        type: MEMBER
        value: "name"
      }
    }
    operation: ITEM_SET
    value {
      type: LITERAL
      literal {
          type: V_STRING
          v_string {
            value: "\"Omar Argentina\""
          }
      }
    }
  }


}
-->recvresult

EOF

# Request a crash, and restart the server.
# Write file to make mysql-test-run.pl restart the server
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
--source ../include/xplugin_wait_for_interfaces.inc
--error 1
--exec $MYSQLXTEST -u root --password='' --file=$MYSQL_TMP_DIR/mysqlx-in.tmp >$MYSQL_TMP_DIR/mysqlx-out.tmp 2>&1
#--cat_file $MYSQL_TMP_DIR/mysqlx-out.tmp
--remove_file $MYSQL_TMP_DIR/mysqlx-in.tmp
--remove_file $MYSQL_TMP_DIR/mysqlx-out.tmp
--enable_reconnect
--source include/wait_until_connected_again.inc


#cleanup
USE xplugintest;
SHOW TABLES;
# Updated record found
SELECT * FROM xplugintest.table2;
DROP DATABASE IF EXISTS xplugintest;
## Postamble
UNINSTALL PLUGIN mysqlx;

Man Man