Skip to content

Latest commit

 

History

History
430 lines (355 loc) · 34 KB

CHANGELOG.md

File metadata and controls

430 lines (355 loc) · 34 KB

Change Log

All notable changes to this project will be documented in this file.

UNRELEASED

Fixed

  • Fixed extraneous insertion of useSSL=false in all JDBC URL strings, even for DBs that do not understand it. Usage is now restricted to MySQL by default and can be overridden by authors of JdbcDatabaseContainer subclasses (#568)

Changed

  • Abstracted and changed database init script functionality to support use of SQL-like scripts with non-JDBC connections. (#551)
  • Added JdbcDatabaseContainer(Future) constructor. (#543)

[1.6.0] - 2018-01-28

Fixed

  • Fixed incompatibility of Docker-Compose container with JDK9. (#562)
  • Fixed retrieval of Docker host IP when running inside Docker. (#479)
  • Compose is now able to pull images from private repositories. (#536)
  • Fixed overriding MySQL image command. (#534)
  • Fixed shading for javax.annotation.CheckForNull (#563 and testcontainers/testcontainers-scala#11).

Changed

  • Added JDK9 build and tests to Travis-CI. (#562)
  • Added Kafka module (#546)
  • Added "Death Note" to track & kill spawned containers even if the JVM was "kill -9"ed (#545)
  • Environment variables are now stored as Map instead of List (#550)
  • Added withEnv(String name, Function<Optional<String>, String> mapper) with optional previous value (#550)
  • Added withFileSystemBind overloaded method with READ_WRITE file mode by default (#550)
  • All connections to JDBC containers (e.g. MySQL) don't use SSL anymore. (#374)

1.5.1 - 2017-12-19

Fixed

  • Fixed problem with case-sensitivity when checking internal port. (#524)
  • Add retry logic around checkExposedPort pre-flight check for improved robustness (#513)

Changed

  • Added getDatabaseName method to JdbcDatabaseContainer, MySQLContainer, PostgreSQLContainer (#473)
  • Added VncRecordingContainer - Network-based, attachable re-implementation of VncRecordingSidekickContainer (#526)

1.5.0 - 2017-12-12

Fixed

  • Fixed problems with using container based docker-compose on Windows (#514)
  • Fixed problems with copying files on Windows (#514)
  • Fixed regression in 1.4.3 when using Docker Compose on Windows (#439)
  • Fixed local Docker Compose executable name resolution on Windows (#416)
  • Fixed TAR composition on Windows (#444)
  • Allowing addExposedPort to be used after ports have been specified with withExposedPorts (#453)
  • Stopping creation of temporary directory prior to creating temporary file (#443)
  • Ensure that temp files are created in a temp directory (#423)
  • Added WaitAllStrategy as a mechanism for composing multiple startup WaitStrategy objects together
  • Changed BrowserWebDriverContainer to use improved wait strategies, to eliminate race conditions when starting VNC recording containers. This should lead to far fewer 'error' messages logged when starting up selenium containers, and less exposure to race related bugs (fixes #466).

Changed

  • Make Network instances reusable (i.e. work with @ClassRule) (#469)
  • Added support for explicitly setting file mode when copying file into container (#446, #467)
  • Use Visible Assertions 2.1.0 for pre-flight test output (eliminating Jansi/JNR-POSIX dependencies for lower likelihood of conflict. JNA is now used internally by Visible Assertions instead).
  • Mark all links functionality as deprecated. This is pending removal in a later release. Please see #465. Network features should be used instead.
  • Added support for copying files to/from running containers (#378)
  • Add getLivenessCheckPorts as an eventual replacement for getLivenessCheckPort; this allows multiple ports to be included in post-startup wait strategies.
  • Refactor wait strategy port checking and improve test coverage.
  • Added support for customising the recording file name (#500)

[1.4.3] - 2017-10-14

Fixed

  • Fixed local Docker Compose executable name resolution on Windows (#416, #460)
  • Fixed TAR composition on Windows (#444)
  • Allowing addExposedPort to be used after ports have been specified with withExposedPorts (#453)
  • Stopping creation of temporary directory prior to creating temporary file (#443)

Changed

  • Added forResponsePredicate method to HttpWaitStrategy to test response body (#441)
  • Changed DockerClientProviderStrategy to be loaded via Service Loader (#434, #435)
  • Made it possible to specify docker compose container in configuration (#422, #425)
  • Clarified wording of pre-flight check messages (#457, #436)
  • Added caching of failure to find a docker daemon, so that subsequent tests fail fast. This is likely to be a significant improvement in situations where there is no docker daemon available, dramatically reducing run time and log output when further attempts to find the docker daemon cannot succeed.
  • Allowing JDBC containers' username, password and DB name to be customized (#400, #354)

1.4.2 - 2017-07-25

Fixed

  • Worked around incompatibility between Netty's Unix socket support and OS X 10.11. Reinstated use of TCP-Unix Socket proxy when running on OS X prior to v10.12. (Fixes #402)
  • Changed to use version 2.0 of the Visible Assertions library for startup pre-flight checks. This no longer has a dependency on Jansi, and is intended to resolve a JVM crash issue apparently caused by native lib version conflicts (#395). Please note that the newer ANSI code is less mature and thus has had less testing, particularly in interesting terminal environments such as Windows. If issues are encountered, coloured assertion output may be disabled by setting the system property visibleassertions.ansi.enabled to true.
  • Fixed NullPointerException when calling GenericContainer#isRunning on not started container (#411)

Changed

  • Removed Guava usage from jdbc module (#401)

1.4.1 - 2017-07-10

Fixed

  • Fixed Guava shading in jdbc module

1.4.0 - 2017-07-09

Fixed

  • Fixed the case when disk's size is bigger than Integer's max value (#379, #380)
  • Fixed erroneous version reference used during CI testing of shaded dependencies
  • Fixed leakage of Vibur and Tomcat JDBC test dependencies in jdbc-test and mysql modules (#382)
  • Added timeout and retries for creation of RemoteWebDriver (#381, #373, #257)
  • Fixed various shading issues
  • Improved removal of containers/networks when using Docker Compose, eliminating irrelevant errors during cleanup (#342, #394)

Changed

[1.3.1] - 2017-06-22

Fixed

  • Fixed non-POSIX fallback for file attribute reading (#371)
  • Fixed NullPointerException in AuditLogger when running using slf4j-log4j12 bridge (#375)
  • Improved cleanup of JDBC connections during database container startup checks

Changed

  • Extracted MariaDB into a separate repository (#337)
  • Added TC_DAEMON JDBC URL flag to prevent ContainerDatabaseDriver from shutting down containers at the time all connections are closed. (#359, #360)
  • Added pre-flight checks (can be disabled with checks.disable configuration property) (#363)
  • Improved startup time by adding dynamic priorities to DockerClientProviderStrategy (#362)
  • Added global configuration file ~/.testcontainers.properties (#362)
  • Added container arguments to specify SELinux contexts for mounts (#334)
  • Removed unused Jersey dependencies (#361)
  • Removed deprecated, wrongly-generated setters from GenericContainer

[1.3.0] - 2017-06-05

Fixed

  • Improved container cleanup if startup failed (#336, #335)

Changed

  • Upgraded docker-java library to 3.0.10 (#349)
  • Added basic audit logging of Testcontainers' actions via a specific SLF4J logger name with metadata captured via MDC. Intended for use in highly shared Docker environments.
  • Use string-based detection of Selenium container startup (#328, #351)
  • Use string-based detection of PostgreSQL container startup (#327, #317)
  • Update libraries to recent versions (#333)
  • Introduce abstraction over files and classpath resources, allowing recursive copying of directories (#313)

[1.2.1] - 2017-04-06

Fixed

  • Fix bug in space detection when alpine:3.5 image has not yet been pulled (#323, #324)
  • Minor documentation fixes

Changed

  • Add AOP Alliance dependencies to shaded deps to reduce chance of conflicts (#315)

1.2.0 - 2017-03-12

Fixed

  • Fix various escaping issues that may arise when paths contain spaces (#263, #279)
  • General documentation fixes/improvements (#300, #303, #304)
  • Improve reliability of ResourceReaper when there are a large number of containers returned by docker ps -a (#295)

Changed

  • Support Docker for Windows via TCP socket connection (#291, #297, #309). _Note that Docker Compose is not yet supported under Docker for Windows (see #306)
  • Expose docker-java's CreateContainerCmd API for low-level container tweaking (#301)
  • Shade org.newsclub and Guava dependencies (#299, #292)
  • Add org.testcontainers label to all containers created by Testcontainers (#294)

1.1.9 - 2017-02-12

Fixed

  • Fix inability to run Testcontainers on Alpine linux. Unix-socket-over-TCP is now used in linux environments where netty fails due to lack of glibc libraries (#290)
  • Fix slow feedback in the case of missing JDBC drivers by failing-fast if the required driver cannot be found (#280, #230)

Changed

  • Add ability to change 'tiny image' used for disk space checks (#287)
  • Add ability to attach volumes to a container using 'volumes from' (#244, #289)

1.1.8 - 2017-01-22

Fixed

  • Compatibility fixes for Docker for Mac v1.13.0 (#272)
  • Relax docker environment disk space check to accomodate unusual empty df output observed on Docker for Mac with OverlayFS (#273, #278)
  • Fix inadvertent private-scoping of startup checks' StartupStatus, which made implementation of custom startup checks impossible (#266)
  • Fix potential resource lead/deadlock when errors are encountered building images from a Dockerfile (#274)

Changed

  • Add support for execution within a Docker container (#267), correcting resolution of container addresses
  • Add support for version 2 of private docker registries, configured via $HOME/.docker/config.json (#270)
  • Use current classloader instead of system classloader for loading JDBC drivers (#261)
  • Allow hardcoded container image names for Ambassador and VNC recorder containers to be changed via a configuration file (#277, #259)
  • Allow Selenium Webdriver container image name to be specified as a constructor parameter (#249, #171)

1.1.7 - 2016-11-19

Fixed

  • Compensate for premature TCP socket opening in Docker for Mac (#160, #236)
  • (Internal) Stabilise various parts of Testcontainers' self test suite (#241)
  • Fix mounting of classpath resources when those resources are in a JAR file (#213)
  • Reduce misleading error messages caused mainly by trying to perform operations on stopped containers (#243)

Changed

  • Uses a default MySQL and MariaDB configuration to reduce memory footprint (#209, #243)
  • Docker Compose can optionally now use a local docker-compose executable rather than running inside a container (#200)
  • Add support for privileged mode containers (#234, #235)
  • Allow container/network cleanup (ResourceReaper) to be triggered programmatically (#231)
  • Add optional tailing of logs for containers spawned by Docker Compose (#233)
  • (Internal) Relocate non-proprietary database container tests to a single module

1.1.6 - 2016-09-22

Fixed

  • Fix logging of discovered Docker environment variables (#218)
  • Adopt longer timeout periods for testing docker client configurations, and allow these to be further customised through system properties (#217, see *ClientProviderStrategy classes)
  • Fix docker compose directory mounting on windows (#224)
  • Handle and ignore further categories of failure in retrieval of docker environment disk space (#225)

Changed

  • Add extra configurability options (database name, username, password) for PostgreSQL DB containers (#220)
  • Add MariaDB container type (#215)
  • Use Docker Compose down action for more robust teardown of compose environments
  • Ensure that Docker Compose operations run sequentially rather than concurrently if JUnit tests are parallelized (#226)
  • Allow multiple Docker Compose files to be specified, to allow for extension/composition of services (#227)

1.1.5 - 2016-08-22

Fixed

  • Fix Docker Compose environment variable passthrough (#208)

Changed

  • Remove Docker Compose networks when containers are shut down (#211) as well as at JVM shutdown

1.1.4 - 2016-08-16

Fixed

  • Fix JDBC proxy driver behaviour when used with Tomcat connection pool to avoid spawning excessive numbers of containers (#195)
  • Shade Jersey dependencies in JDBC module to avoid classpath conflicts (#202)
  • Fix NullPointerException when docker host has untagged images (#201)
  • Fix relative paths for volumes mounted in docker-compose containers (#189)

Changed

  • Update to v3.0.2 of docker-java library
  • Switch to a shared, single instance docker client rather than a separate client instance per container rule (#193)
  • Ensure that docker-compose pulls images (with no timeout), prior to trying to start (#188)
  • Use official docker/compose image for running docker-compose (#190)

1.1.3 - 2016-07-27

Fixed

  • Further fix for shading of netty Linux native libs, specifically when run using Docker Compose support
  • Ensure that file mode permissions are retained for Dockerfile builder

Changed

  • Add support for specifying container working directory, and set this to match the /compose directory for Docker Compose
  • Improve resilience of Selenium container startup
  • Add withLogConsumer(...) to allow a log consumer to be attached to a container from the moment of startup

1.1.2 - 2016-07-19

Fixed

  • Fix shading of netty Linux native libs

Changed

  • Shade guava artifacts to prevent classloader conflicts

1.1.1 - 2016-07-17

Fixed

  • Improve shutdown of unnecessary docker clients (#170)
  • Shade io.netty dependencies into the testcontainers core JAR to reduce conflicts (#170 and #157)
  • Remove timeouts for docker compose execution, particularly useful when image pulls are involved
  • Improve output logging from docker-compose, pausing to log output in case of failure rather than letting logs intermingle.

Changed

  • Reinstate container startup retry (removed in v1.1.0) as an optional setting, only used by default for Selenium webdriver containers

1.1.0 - 2016-07-05

Fixed

  • Apply shade relocation to Jersey repackaged Guava libs
  • General logging and stability improvements to Docker Compose support
  • Fix liveness checks to use specific IP address obtained using getContainerIpAddress()

Changed

  • Integrate interim support for Docker for Mac beta and Docker Machine for Windows. See docs for known limitations.
  • Add support for Docker Compose v2 and scaling of compose containers
  • Add support for attaching containers to specific networks.
  • Allow container environment variables to be set using a Map

1.0.5 - 2016-05-02

Fixed

  • Fix problems associated with changes to tenforce/virtuoso:latest container, and replace with a pinned version.
  • Fix build-time dependency on visible-assertions library, which had downstream dependencies that started to break the Testcontainers build.

Changed

  • Add support for pluggable wait strategies, i.e. overriding the default TCP connect wait strategy with HTTP ping or any user-defined approach.
  • Add 'self-typing' to allow easy use of fluent-style options even when GenericContainer is subclassed.
  • Add support for defining extra entries for containers' /etc/hosts files.
  • Add fluent setter for setting file-system file/directory binding

1.0.4 - 2016-04-17

Fixed

  • Prevent unnecessary and erroneous reconfiguration of container if startup needs to be retried
  • Consolidate container cleanup to ensure that ambassador containers used for Docker Compose are cleaned up appropriately
  • Fix container liveness check port lookup for FixedHostPortGenericContainer.
  • Upgrade docker-compose container to dduportal/docker-compose:1.6.0 for compatibility with docker compose file format v2.

Changed

  • Add docker exec support for running commands against running containers
  • Add support for building container images on the fly from Dockerfiles, including optional Dockerfile builder DSL
  • Add container name as prefix for container logs that are streamed to SLF4J
  • Improve container startup failure detection, including adding the option to specify a minimum up time that the container should achieve before being considered started successfully

1.0.3 - 2016-03-31

Fixed

  • Resolve issues where containers would not be cleaned up on JVM shutdown if they failed to start correctly
  • Fix validation problem where docker image names that contained private registry URLs with port number would be rejected
  • Resolve bug where docker pull would try infinitely for a non-existent image name

Changed

  • Set startup free disk space check to ensure that the Docker environment has a minimum of 2GB available rather than 10%
  • Add streaming of container logs to SLF4J loggers, capture as Strings, and also the ability to wait for container log content to satisfy an expected predicate
  • Allow configuration of docker container startup timeout
  • Add detection of classpath Selenium version, and automatic selection of correct Selenium docker containers for compatibility

1.0.2 - 2016-02-27

Fixed

  • If a container fail to start up correctly, startup will now be retried up to a limit of 3 times
  • Add resilience around getMappedPort method to fail fast when a port is not yet mapped, rather than generate misleading errors

Changed

  • Add JDBC container module for OpenLink Virtuoso
  • Add additional debug level logging to aid with diagnosis of docker daemon discovery problems
  • Add support for using a local Unix socket to connect to the Docker daemon

1.0.1 - 2016-02-18

Fixed

  • Remove extraneous service loader entries in the shaded JAR
  • Upgrade to v2.2.0 of docker-java client library to take advantage of unix socket fixes (see docker-java/docker-java#456)
  • Validate that docker image names include a tag on creation

Changed

  • By default, use docker machine name from DOCKER_MACHINE_NAME environment, or default if it exists
  • Allow container ports to map to a fixed port on the host through use of the FixedHostPortGenericContainer subclass of GenericContainer

1.0.0 - 2016-02-07

Fixed

  • Resolve Jersey/Jackson dependency clashes by shading (relocating) a version of these libraries into the core Testcontainers JAR
  • Improve documentation and logging concerning discovery of Docker daemon

Changed

  • Rename container getIpAddress() method to getContainerIpAddress() and deprecate original method name.
  • Rename container getHostIpAddress() method to getTestHostIpAddress()

0.9.9 - 2016-01-12

Fixed

  • Resolve thread safety issues associated with use of a singleton docker client
  • Resolve disk space check problems when running on a Debian-based docker host
  • Fix CircleCI problems where the build could hit memory limits

Changed

  • Remove bundled logback.xml to allow users more control over logging
  • Add Travis CI support for improved breadth of testing

0.9.8 - 2015-08-12

Changed

  • Change from Spotify docker client library to docker-java, for improved compatibility with latest versions of Docker
  • Change from JDK 1.7 minimum requirement to JDK 1.8
  • Replace boot2docker support with docker-machine support
  • Docker images are now prefetched when a @Rule is instantiated
  • Combined Rule and Container classes throughout, for a reduced set of public classes and removal of some duplication
  • Improvements to container cleanup, especially removal of data volumes
  • General improvements to error handling, logging etc throughout

Added

  • Docker Compose support
  • Automatic docker environment disk space check

0.9.7 - 2015-08-07

Added

  • Support for overriding MySQL container configuration (my.cnf file overrides)

Changed

  • Replace dependency on org.testpackage with org.rnorth.visible-assertions

0.9.6 - 2015-07-22

Added

  • Generic container support (allows use of any docker image) using a GenericContainerRule.

Changed

  • Renamed from org.rnorth.test-containers to org.testcontainers
  • Explicit support for usage on linux and use with older versions of Docker (v1.2.0 tested)

0.9.5 - 2015-06-28

Added

  • Oracle XE container support

Changed

  • Support for JDK 1.7 (previously was JDK 1.8+)

0.9.4 and 0.9.3 - 2015-06-23

Changed

  • Refactored for better modularization

0.9.2 - 2015-06-13

Added

  • 'Sidekick' VNC recording container to record video of Selenium test sessions

Changed

  • Alter timezone used for time display inside Selenium containers

0.9.1 - 2015-06-07

Added

  • Support for Selenium webdriver containers
  • Recording of Selenium test sessions using vnc2flv

0.9 - 2015-04-29

Initial release