Skip to content

Latest commit

 

History

History

integrationtest2

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

IntegrationTest

IntegrationTest is a integration test command tool, also with some useful test cases for TiDB execute plan logic, we can run case via run-tests.sh.

Usage: ./run-tests.sh [options]

    -h: Print this help message.

    -s <tidb-server-path>: Use tidb-server in <tidb-server-path> for testing.
                           eg. "./run-tests.sh -s ./integrationtest_tidb-server"

    -b <y|Y|n|N>: "y" or "Y" for building test binaries [default "y" if this option is not specified].
                  "n" or "N" for not to build.
                  The building of tidb-server will be skiped if "-s <tidb-server-path>" is provided.

    -r <test-name>|all: Run tests in file "t/<test-name>.test" and record result to file "r/<test-name>.result".
                        "all" for running all tests and record their results.

    -t <test-name>: Run tests in file "t/<test-name>.test".
                    This option will be ignored if "-r <test-name>" is provided.
                    Run all tests if this option is not provided.

    -v <vendor-path>: Add <vendor-path> to $GOPATH.

    -p <portgenerator-path>: Use port generator in <portgenerator-path> for generating port numbers.

How it works

IntegrationTest will read test case in t/*.test, and execute them in TiDB server with s/*.json stat, and compare integration result in r/*.result.

For convenience, we can generate new *.result and *.json from execute by use -r parameter for run-tests.sh

Usage

Regression Execute Plan Modification

After modify code and before commit, please run this command under TiDB root folder.

make dev

or

make integrationtest

It will identify execute plan change.

Generate New Result from Execute

Add a new test file in t/ folder, file name should ended with .test. Or add new test queries at the end of some files. Then run shell below, it will generate results based on last execution.

cd tests/integrationtest
./run-tests.sh -r [casename]

How to debug integration test

Visual Studio Code

  1. Add or create a configuration to .vscode/launch.json, an example is shown below. If you want to change some configurations, such as using TiKV to run integration tests or others, you can modify pkg/config/config.toml.example.
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Debug TiDB With Default Config",
            "type": "go",
            "request": "launch",
            "mode": "auto",
            "program": "${fileWorkspaceFolder}/cmd/tidb-server",
            "args": ["--config=${fileWorkspaceFolder}/pkg/config/config.toml.example"]
        }
    ]
}
  1. To run TiDB-Server, you could bring up Run and Debug view, select the Run and Debug icon in the Activity Bar on the side of VS Code. You can also use shortcut F5.

  2. Use any mysql client application you like to run SQLs in integration test, the default port is 4000 and default user is root without password. Taking mysql as an example, you can use mysql --comments --host 127.0.0.1 --port 4000 -u root command to do this.

Goland

You could follow https://pingcap.github.io/tidb-dev-guide/get-started/setup-an-ide.html#run-or-debug to run a TiDB-Server with or without TiKV. Then use any mysql client application you like to run SQLs.