druid/integration-tests-ex/docs/scripts.md

75 lines
3.3 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.
-->
# Scripts
The IT framework uses a number of scripts and it can be a bit of a mystery
what each one does. This guide lists each of them.
## `integration-tests-ex`
* `it.sh` - Utility to perform many IT-related actions such as building Druid,
running ITs, starting a cluster, etc. Use `it.sh help` to see the list of commands.
### `it-image`
* `build-image.sh` - Internal script to (you guessed it), build the image.
Creates the `target/env.sh` file above, then invokes `docker-build.sh`.
* `rebuild.sh` - Rebuilds the image after the above script has created the
`env.sh` file. Used to debug changes to the image build itself: use `rebuild.sh`
rather than waiting for Maven to do its thing.
* `docker-build.sh` - Internal script to set up the needed environment
variables and invoke Docker to build the image. Modify this if you ned to change
the information passed into Docker via the command line.
* `docker/Dockerfile` - Docker script to build the image.
* `docker/test-setup.sh` - Script copied into the image at build time and run to
set up the image. Keeps the `Dockerfile` simpler (and, it is somewhat easier to
debug this script than the `Dockerfile` itself.)
* `docker/launch.sh` - Container entrypoint which runs inside the container.
Sets up configuration and calls `druid.sh` to launch Druid itself.
* `druid.sh` - Creates a Druid configuration file from environment variables,
then runs Druid within the container.
* `target/env.sh` - Created when the image is built. Provides environment
variables for things like the image name, versions and so on. Used to
quickly rebuild the image (see [Maven configuration](docs/maven.md)) and
to launch tests.
### `test-cases`
* `cluster/<category>/*.yaml` - Base Docker Compose scripts that define the "standard"
Druid cluster. Tests use these files to avoid redundant copy/past of the
standard items.
* `cluster.sh` - Launches or tears down a cluster for a test. Called from Maven
and `it.sh`. Can be used manually. See below.
The options for `cluster.sh` are:
```bash
cluster.sh [-h|help|up|down|status|compose-cmd] category
```
* `up` - starts the cluster.
* `down` - shuts down the cluster.
* `status` - displays cluster status for debugging. Expecially useful for debugging
issues in Travis where we cannot directly inspect the Docker cluster itself.
* `help` - repeats the usage line.
* Others - passes the command on to Docker Compose.
* `category` - the test category to launch. Performs mapping from the category name
to cluster name when categories share definitions.