Framework changes and tests for RM queue selection (#571)

* Framework changes and tests for RM queue selection

- Added a new class for RM queue selection tests.
- Added new methods in ConnectionPool to create connections based on user, password, tags and groups.
- Refactored restartDrill out of TestDriver, since it is a utility.
- Create connection with schema, group and queryTags properties.
- Changes in JavaTestBase to get all Drillbits' hostnames.
- Fixed faulty tests in TestSSLProperties

* Cosmetic changes. Add comments for the tests.

* Add package to manage DrillCluster from SSH

- Added classes to manage SSH sessions from a user to a DrillCluster.
- Most of the code is re-used from mapr/ycsb-driver implementations.
- The DrillCluster instance should be used when the test framework has to talk to the cluster for copying files or running certain commands.
- Modified the test cases accordingly.
- Added ThrowingConsumer to support lambda for functions with checked exceptions.

* Cosmetic changes, add javadoc for new utility methods

* Existing TestDriver continue using older method

* Small change, missed synchronized

* Add a method for cleaning up cluster before every test

- Remove any existing RM config in DrillCluster.

* Add cleanup after class as well, other cosmetic changes

* Minor change, add description to testng methods

* Run cleanup once for a class

* Cleanup and add test case for unknown tag
20 files changed
tree: 5894cc51b1617cd17c2cf732f648d76be0568e1d
  1. bin/
  2. conf/
  3. framework/
  4. .gitignore
  5. after-run.sql
  6. AUTHORS.md
  7. before-run.sql
  8. CONTRIBUTING.md
  9. LICENSE.md
  10. README.md
README.md

Test Framework for Apache Drill

Test Framework for SQL on Hadoop technologies. Currently supports Apache Drill, a schema-free SQL query engine for Hadoop, NoSQL and cloud storage.

The framework is built for regression, integration & sanity testing. Includes test coverage (with baselines) for core Drill functionality, and supported features. And are used by the Apache Drill community for pre-commit regression and part of the release criteria.

Requirements

  1. The test framework requires a distributed file system such as HDFS or MapR-FS to be configured. Some of the tests can also be run against a local file system. By default, it's configured to run against MapR-FS. You can change the default behavior by modifying conf/core-site.xml. Refer to conf/core-site.xml.example for settings.
  2. To run all tests, Hive and HBase needs to be installed and running. To exclude Hive and HBase tests, please refer to the example in the Execute Tests section.
  3. The test framework should be run on a Drill cluster node. Refer to Drill documentation for details on how to setup Drill. It can also be run on a client node with additional configuration required.
  4. Cluster information are set in the conf/drillTestConfig.properties file. This is the main configuration file for the framework. It needs to be modified with local cluster info before compile the framework and run tests.

Build Project

To begin using the test framework, you need to build the project and download dependent datasets (configured in pom.xml).

git clone git@github.com:mapr/drill-test-framework.git
cd drill-test-framework
bin/build_framework -Pdownload

If you've already downloaded the datasets previously, you can simply skip the download.

Execute Tests

In the root directory of your repository, execute the following command to run tests:

bin/run_tests -s <suites> -g <groups> -t <Timeout> -x <Exclude> -n <Concurrency> -d

Example:

Contributing

We encourage contributions from users! You can fix bugs, make enhancements or add new tests. Create a PR here on GitHub for your change.

Refer to CONTRIBUTING.md for details on the test framework structure and instructions on how to contribute.

License

Licensed under the Apache License 2.0. Please see LICENSE.md