<!--
  ~ 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.
  -->

# Future Work

The present version establishes the new IT framework. Work completed to
date includes:

* Restructure the Docker images to use the Druid produced from the
  Maven build. Use "official" images for dependencies.
* Restructure the Docker compose files.
* Create the cluster configuration mechanisms.
* Convert one "test group" to a sub-module: "high-availability".
* Create the `pom.xml`, scripts and other knick-knacks needed to tie
  everything together.
* Create the initial test without using security settings to aid
  debugging.

However, *much* work remains:

* Convert remaining tests.
* Decide when we need full security. Convert the many certificate
  setup scripts.
* Support cluster types other than Docker.

## Open Tasks

The following detail items are open:

* Disable a test if the `disabled` type is set in the test configuration
  file. Apply it to disable the HA tests for all but Docker.
* Handle missing config files: generate a "dummy" that is disabled.
* When launching a container build or test run from Maven, write
  environment variables to a `target/env.sh` file so that the user
  doesn't have to find them manually to run the helper scripts.
* There is some redundancy in each test group project. Figure out
  solutions:
  * The `cluster.sh` script
  * Boilerplate in the `pom.xml` file.
* Move test data from `/resources` to `/shared/data`. Build up the
  data directory from multiple sources during cluster launch.
* Sort out which data and spec files are actually used. Remove those
  which are not used. Sort the files by test-specific and shared
  across tests by moving them into different directories.

## Later Tasks

The "public" and "integration test" versions of the Docker images have diverged significantly,
which makes it harder to "test what we ship." Differences include:

* Different base image
* Different ways to set up dependencies.
* Different paths within the container.
* Different launch scripts.
* The test images place Druid in `/usr/local`, the public images in `/opt`.

The tests do want to do things beyond what the "public" image does. However, this should
not require a fork of the builds. To address this issue:

* Extend this project to create a base common to the "public" and integration test images.
* Extend the integration test image to build on top of the public image.