Integration tests
This folder contains all tests which relies on external processes such as TiDB.
Preparations
-
The following executables must be copied or linked into these locations:
bin/tidb-serverbin/tikv-serverbin/pd-serverbin/tiflashbin/miniobin/mc
The versions must be ≥2.1.0.
Only some tests requires
minio/mcwhich can be downloaded from the official site, you can skip them if you don't need to run those cases.You can use
tiupto download binaries related to TiDB cluster, and then link them to thebindirectory:cluster_version=v8.1.0 # change to the version you need tiup install tidb:$cluster_version tikv:$cluster_version pd:$cluster_version tiflash:$cluster_version ln -s ~/.tiup/components/tidb/$cluster_version/tidb-server bin/tidb-server ln -s ~/.tiup/components/tikv/$cluster_version/tikv-server bin/tikv-server ln -s ~/.tiup/components/pd/$cluster_version/pd-server bin/pd-server ln -s ~/.tiup/components/tiflash/$cluster_version/tiflash/tiflash bin/tiflash -
make build_for_lightning_integration_testmake serverto build the latest TiDB server if your test requires it. -
The following programs must be installed:
mysql(the CLI client)curlopensslwgetlsof
-
The user executing the tests must have permission to create the folder
/tmp/lightning_test. All test artifacts will be written into this folder.
Running
Run make lightning_integration_test to execute all the integration tests.
- Logs will be written into
/tmp/lightning_testdirectory.
Run tests/run.sh --debug to pause immediately after all servers are started.
If you only want to run some tests, you can use:
TEST_NAME="lightning_gcs lightning_view" lightning/tests/run.sh
Case names are separated by spaces.
Writing new tests
- New integration tests can be written as shell scripts in
tests/TEST_NAME/run.sh.TEST_NAMEshould start withlightning_.- The script should exit with a nonzero error code on failure.
- Add TEST_NAME to existing group in run_group_lightning_tests.sh(Recommended), or add a new group for it.
- If you add a new group, the name of the new group must be added to CI lightning-integration-test.
Several convenient commands are provided in utils:
run_sql <SQL>— Executes an SQL query on the TiDB databaserun_lightning [CONFIG]— Startstidb-lightningusingtests/TEST_NAME/CONFIG.tomlcheck_contains <TEXT>— Checks if the previousrun_sqlresult contains the given text (in-Eformat)check_not_contains <TEXT>— Checks if the previousrun_sqlresult does not contain the given text (in-Eformat)check_lightning_log_contains <TEXT>— Checks if the current lightning log contains the given text (in-Eformat)