diff --git a/external/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/DockerJDBCIntegrationSuite.scala b/external/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/DockerJDBCIntegrationSuite.scala index d6270313cabea..2020c9b6c34af 100644 --- a/external/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/DockerJDBCIntegrationSuite.scala +++ b/external/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/DockerJDBCIntegrationSuite.scala @@ -99,6 +99,8 @@ abstract class DockerJDBCIntegrationSuite extends SharedSparkSession with Eventu val connectionTimeout = timeout(5.minutes) val keepContainer = sys.props.getOrElse("spark.test.docker.keepContainer", "false").toBoolean + val removePulledImage = + sys.props.getOrElse("spark.test.docker.removePulledImage", "true").toBoolean private var docker: DockerClient = _ // Configure networking (necessary for boot2docker / Docker Machine) @@ -109,6 +111,7 @@ abstract class DockerJDBCIntegrationSuite extends SharedSparkSession with Eventu port } private var containerId: String = _ + private var pulled: Boolean = false protected var jdbcUrl: String = _ override def beforeAll(): Unit = { @@ -130,6 +133,7 @@ abstract class DockerJDBCIntegrationSuite extends SharedSparkSession with Eventu case e: ImageNotFoundException => log.warn(s"Docker image ${db.imageName} not found; pulling image from registry") docker.pull(db.imageName) + pulled = true } val hostConfigBuilder = HostConfig.builder() .privileged(db.privileged) @@ -215,6 +219,9 @@ abstract class DockerJDBCIntegrationSuite extends SharedSparkSession with Eventu } } finally { docker.removeContainer(containerId) + if (removePulledImage && pulled) { + docker.removeImage(db.imageName) + } } } } diff --git a/pom.xml b/pom.xml index 1e052a684edf3..796e0f2f647d1 100644 --- a/pom.xml +++ b/pom.xml @@ -264,6 +264,7 @@ ${session.executionRootDirectory} false + true 1g @@ -2728,6 +2729,7 @@ true ${spark.test.webdriver.chrome.driver} ${spark.test.docker.keepContainer} + ${spark.test.docker.removePulledImage} __not_used__