Add README for integration test (#24441)

Signed-off-by: Congqi Xia <congqi.xia@zilliz.com>
pull/24457/head
congqixia 2023-05-26 15:55:27 +08:00 committed by GitHub
parent aad2e5d961
commit f1d657beb0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 70 additions and 0 deletions

View File

@ -0,0 +1,70 @@
# Integration test
This folder contains the integration test for Milvus components.
## How to run integration test locally
Integration test still need some thirdparty components to start:
```bash
cd [milvus-folder]/deployments/docker/dev && docker-compose up -d
```
Run following script to start the full integration test:
```bash
cd [milvus-folder]
make milvus # milvus needs to be compiled to make cpp build ready
./scripts/run_intergration_test.sh
```
If you want to run single test case, you could execute command like this example
```bash
# mq, etcd, minio ready before
cd [milvus-folder]
source scripts/setenv.sh
cd tests/integration/[testcase-folder]/
go test -run "$testCaseName^" -testify.m "$subTestifyCaseName^" -race -v
```
## Recommended coding style for add new cases
### Using `suite`
MiniCluster` and `MiniClusterSuite` provides lots of comment preset tool function to execute intergration test.
It is recommend to add a new test with `testify/suite`
```go
import (
// ...
"github.com/milvus-io/milvus/tests/integration"
)
type NewSuite struct {
integration.MiniClusterSuite
}
// Setups and teardowns, optional if no custom logic needed
// example to suite setup & teardown, same logic applies to test setup&teardown
func (s *NewSuite) SetupSuite() {
s.MiniClusterSuite.SetupSuite()
// customized setup
}
func (s *NewSuite) TearDownSuite() {
s.MiniClusterSuite.TearDownSuite()
// customized teardown
}
```
### New folder for each new scenario
It's a known issue that integration test cases run in same process might affect due to some singleton component not fully cleaned.
As a temp solution, test cases are separated into different packages to run independently.