We need to make continuous integration testing functional for all components. Currently many components that have external dependencies do not have CI capabilities due to the external dependencies. For example, oak-blob-cloud unit tests only run if the user environment is configured with credentials to access an S3 account; oak-store-document has some unit tests that only run if a MongoDB instance is available on localhost.
To the extent possible we would like to leverage Docker containers to provide or emulate the external dependencies so that it is easy to run a more complete suite of the tests. A developer should be able to do this simply by issuing mvn test from the command-line at the project root, probably with some type of flag or other option to indicate that all the tests with external dependencies should run. So long as a Docker instance is running, these tests should run also - meaning it would be the responsibility of the tests to pull the appropriate Docker image, start it, and shut it down and remove it when the tests are complete.
By default tests should run as they currently do. A developer should not be required to have Docker installed in order to run the tests successfully. Tests that require external capabilities should only run if the external dependencies flag has been set - and should fail if the flag is set but Docker could not be found or otherwise did not run correctly.
The work for this issue is to identify the modules that need to adopt this capability and implement a solution for testing against external dependencies in all of these modules in a unified way.
|Use azurite for unit testing for AzureDataStore||Open||Unassigned|
|Implement S3 storage emulator for unit testing of S3DataStore||Open||Unassigned|
|Use docker for MongoDB based tests when available||Closed|