From 05dcc79280a7a44ebd8f474b0862dce9e35cde6f Mon Sep 17 00:00:00 2001 From: Craig Andrews Date: Mon, 10 May 2021 09:32:46 -0400 Subject: [PATCH] Allow for docker timestamps with timezone offsets Docker prefers to use UTC time when making images/containers, but it's happy to parse non-UTC times too. It will then pass those on in its output. DateTimeFormatter.ISO_OFFSET_DATE_TIME accepts a superset of what DateTimeFormatter.ISO_INSTANT accepts, so replace use of ISO_INSTANT with ISO_OFFSET_DATE_TIME. --- .../main/java/org/testcontainers/utility/DockerStatus.java | 4 ++-- .../java/org/testcontainers/utility/DockerStatusTest.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/org/testcontainers/utility/DockerStatus.java b/core/src/main/java/org/testcontainers/utility/DockerStatus.java index 63b19db410b..a410597dcfb 100644 --- a/core/src/main/java/org/testcontainers/utility/DockerStatus.java +++ b/core/src/main/java/org/testcontainers/utility/DockerStatus.java @@ -40,7 +40,7 @@ public static boolean isContainerRunning(InspectContainerResponse.ContainerState if (minimumRunningDuration == null) { return true; } - Instant startedAt = DateTimeFormatter.ISO_INSTANT.parse( + Instant startedAt = DateTimeFormatter.ISO_OFFSET_DATE_TIME.parse( state.getStartedAt(), Instant::from); if (startedAt.isBefore(now.minus(minimumRunningDuration))) { @@ -75,7 +75,7 @@ public static boolean isDockerTimestampNonEmpty(String dockerTimestamp) { return dockerTimestamp != null && !dockerTimestamp.isEmpty() && !dockerTimestamp.equals(DOCKER_TIMESTAMP_ZERO) - && DateTimeFormatter.ISO_INSTANT.parse(dockerTimestamp, Instant::from).getEpochSecond() >= 0L; + && DateTimeFormatter.ISO_OFFSET_DATE_TIME.parse(dockerTimestamp, Instant::from).getEpochSecond() >= 0L; } public static boolean isContainerExitCodeSuccess(InspectContainerResponse.ContainerState state) { diff --git a/core/src/test/java/org/testcontainers/utility/DockerStatusTest.java b/core/src/test/java/org/testcontainers/utility/DockerStatusTest.java index 4b63719f928..96cb2dbf422 100644 --- a/core/src/test/java/org/testcontainers/utility/DockerStatusTest.java +++ b/core/src/test/java/org/testcontainers/utility/DockerStatusTest.java @@ -66,7 +66,7 @@ public void testStopped() throws Exception { } private static String buildTimestamp(Instant instant) { - return DateTimeFormatter.ISO_INSTANT.format(instant); + return DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(instant); } // ContainerState is a non-static inner class, with private member variables, in a different package.