78df7f6165
- Switch to using Druid parent POM - Add required fields for Sonatype - Common plugin versions and settings have been moved to the parent pom - Cleanup artifacts and POMs for consistent formatting - Remove org.hyperic.sigar dependency and update docs to reflect necessary jars to add at runtime when sigar is needed |
||
---|---|---|
.. | ||
docker | ||
src | ||
README.md | ||
pom.xml | ||
run_cluster.sh | ||
stop_cluster.sh |
README.md
Integration Testing
Installing Docker and Running
Please refer to instructions at https://github.com/druid-io/docker-druid/blob/master/docker-install.md
Instead of running
boot2docker init
run instead
boot2docker init -m 6000
Make sure that you have at least 6GB of memory available before you run the tests.
Set the docker ip via:
export DOCKER_IP=$(boot2docker ip 2>/dev/null)
Verify that docker is running by issuing the following command:
docker info
Running Integration tests
Running tests using mvn
To run all the tests using mvn run the following command - ''''' mvn verify -P integration-tests '''''
To run only a single test using mvn run following command - ''''' mvn verify -P integration-tests -Dit.test=<test_name> '''''
Writing a New Test
What should we cover in integration tests
For every end-user functionality provided by druid we should have an integration-test verifying the correctness.
Rules to be followed while writing a new integration test
Every Integration Test must follow these rules
- Name of the test must start with a prefix "IT"
- A test should be independent of other tests
- Tests are to be written in TestNG style (http://testng.org/doc/documentation-main.html#methods)
- If a test loads some data it is the responsibility of the test to clean up the data from the cluster
How to use Guice Dependency Injection in a test
A test can access different helper and utility classes provided by test-framework in order to access Coordinator,Broker etc.. To mark a test be able to use Guice Dependency Injection - Annotate the test class with the below annotation
''''''' @Guice(moduleFactory = DruidTestModuleFactory.class) ''''''' This will tell the test framework that the test class needs to be constructed using guice.
Helper Classes provided
- IntegrationTestingConfig - configuration of the test
- CoordinatorResourceTestClient - httpclient for coordinator endpoints
- OverlordResourceTestClient - httpclient for indexer endpoints
- QueryResourceTestClient - httpclient for broker endpoints
Static Utility classes
- RetryUtil - provides methods to retry an operation until it succeeds for configurable no. of times
- FromFileTestQueryHelper - reads queries with expected results from file and executes them and verifies the results using ResultVerifier
Refer ITIndexerTest as an example on how to use dependency Injection
TODOS
- Remove the patch for TestNG after resolution of Surefire-622