mirror of https://github.com/apache/druid.git
125 lines
4.2 KiB
Markdown
125 lines
4.2 KiB
Markdown
<!--
|
|
~ Licensed to the Apache Software Foundation (ASF) under one
|
|
~ or more contributor license agreements. See the NOTICE file
|
|
~ distributed with this work for additional information
|
|
~ regarding copyright ownership. The ASF licenses this file
|
|
~ to you under the Apache License, Version 2.0 (the
|
|
~ "License"); you may not use this file except in compliance
|
|
~ with the License. You may obtain a copy of the License at
|
|
~
|
|
~ http://www.apache.org/licenses/LICENSE-2.0
|
|
~
|
|
~ Unless required by applicable law or agreed to in writing,
|
|
~ software distributed under the License is distributed on an
|
|
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
~ KIND, either express or implied. See the License for the
|
|
~ specific language governing permissions and limitations
|
|
~ under the License.
|
|
-->
|
|
|
|
# Revised Integration Tests
|
|
|
|
This directory builds a Docker image for Druid, then uses that image, along
|
|
with test configuration to run tests. This version greatly evolves the
|
|
integration tests from the earlier form. See the [History](docs/history.md)
|
|
section for details.
|
|
|
|
## Shortcuts
|
|
|
|
List of the most common commands once you're familiar with the framework.
|
|
If you are new to the framework, see [Quickstart](docs/quickstart.md) for
|
|
an explanation.
|
|
|
|
### Build Druid
|
|
|
|
```bash
|
|
./it.sh build
|
|
```
|
|
|
|
### Build the Test Image
|
|
|
|
```bash
|
|
./it.sh image
|
|
```
|
|
|
|
Note: If you are running it on Apple Silicon processors, you would also need to uncomment all occurrences of `platform: linux/x86_64` in [dependencies.yaml](https://github.com/apache/druid/blob/master/integration-tests-ex/cases/cluster/Common/dependencies.yaml).
|
|
|
|
### Run an IT from the Command Line
|
|
|
|
```bash
|
|
./it.sh test <category>
|
|
```
|
|
|
|
Where `<category>` is one of the test categories. You can see the list of test categories at [`src/test/java/org/apache/druid/testsEx/categories`](https://github.com/apache/druid/tree/master/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/categories). The corresponding test classes are also annotated with `@Category` like `@Category(HighAvailability.class)`.
|
|
|
|
For example, a sample command for running IT for `@Category(HighAvailability.class)` would be:
|
|
```bash
|
|
./it.sh test HighAvailability
|
|
```
|
|
|
|
### Run an IT from the IDE
|
|
|
|
Start the cluster:
|
|
|
|
```bash
|
|
./it.sh up <category>
|
|
```
|
|
|
|
Where `<category>` is one of the test categories. Then launch the
|
|
test as a JUnit test.
|
|
|
|
## Contents
|
|
|
|
* [Goals](#Goals)
|
|
* [Quickstart](docs/quickstart.md)
|
|
* [Create a new test](docs/guide.md)
|
|
* [Maven configuration](docs/maven.md)
|
|
* [Docker image](docs/docker.md)
|
|
* [Druid configuration](docs/druid-config.md)
|
|
* [Docker Compose configuration](docs/compose.md)
|
|
* [Test configuration](docs/test-config.md)
|
|
* [Test structure](docs/tests.md)
|
|
* [Test runtime semantics](docs/runtime.md)
|
|
* [Scripts](docs/scripts.md)
|
|
* [Dependencies](docs/dependencies.md)
|
|
* [Debugging](docs/debugging.md)
|
|
|
|
Background information
|
|
|
|
* [Next steps](docs/next-steps.md)
|
|
* [Test conversion](docs/conversion.md) - How to convert existing tests.
|
|
* [History](docs/history.md) - Comparison with prior integration tests.
|
|
|
|
## Goals
|
|
|
|
The goal of the present version is to simplify development.
|
|
|
|
* Speed up the Druid test image build by avoiding download of
|
|
dependencies. (Instead, any such dependencies are managed by
|
|
Maven and reside in the local build cache.)
|
|
* Use official images for dependencies to avoid the need to
|
|
download, install, and manage those dependencies.
|
|
* Make it is easy to manually build the image, launch
|
|
a cluster, and run a test against the cluster.
|
|
* Convert tests to JUnit so that they will easily run in your
|
|
favorite IDE, just like other Druid tests.
|
|
* Use the actual Druid build from `distribution` so we know
|
|
what is tested.
|
|
* Leverage, don't fight, Maven.
|
|
* Run the integration tests easily on a typical development machine.
|
|
|
|
By meeting these goals, you can quickly:
|
|
|
|
* Build the Druid distribution.
|
|
* Build the Druid image. (< 1 minute)
|
|
* Launch the cluster for the particular test. (a few seconds)
|
|
* Run the test any number of times in your debugger.
|
|
* Clean up the test artifacts.
|
|
|
|
The result is that the fastest path to develop a Druid patch or
|
|
feature is:
|
|
|
|
* Create a normal unit test and run it to verify your code.
|
|
* Create an integration test that double-checks the code in
|
|
a live cluster.
|