diff --git a/src/main/java/io/fabric8/maven/docker/access/log/LogRequestor.java b/src/main/java/io/fabric8/maven/docker/access/log/LogRequestor.java index 128095e59..229c2b35f 100644 --- a/src/main/java/io/fabric8/maven/docker/access/log/LogRequestor.java +++ b/src/main/java/io/fabric8/maven/docker/access/log/LogRequestor.java @@ -190,14 +190,20 @@ private void parseResponse(HttpResponse response) throws LogCallback.DoneExcepti } } - private void callLogCallback(int type, String txt) throws LogCallback.DoneException { + protected void callLogCallback(int type, String txt) throws LogCallback.DoneException { Matcher matcher = LOG_LINE.matcher(txt); if (!matcher.matches()) { callback.error(String.format("Invalid log format for '%s' (expected: \" \") [%04x %04x]", txt,(int) (txt.toCharArray())[0],(int) (txt.toCharArray())[1])); throw new LogCallback.DoneException(); } - ZonedDateTime ts = TimestampFactory.createTimestamp(matcher.group("timestamp")); + ZonedDateTime ts; + try { + ts = TimestampFactory.createTimestamp(matcher.group("timestamp")); + } + catch (java.time.format.DateTimeParseException ex1) { + ts = TimestampFactory.createTimestamp(); + } String logTxt = matcher.group("entry"); callback.log(type, ts, logTxt); } diff --git a/src/test/java/io/fabric8/maven/docker/access/log/LogRequestorTest.java b/src/test/java/io/fabric8/maven/docker/access/log/LogRequestorTest.java index 7e95bd68c..593e662a2 100644 --- a/src/test/java/io/fabric8/maven/docker/access/log/LogRequestorTest.java +++ b/src/test/java/io/fabric8/maven/docker/access/log/LogRequestorTest.java @@ -2,6 +2,7 @@ import com.google.common.base.Charsets; import io.fabric8.maven.docker.access.UrlBuilder; +import io.fabric8.maven.docker.access.log.LogCallback.DoneException; import io.fabric8.maven.docker.access.util.RequestUtil; import mockit.Expectations; import mockit.Mocked; @@ -29,6 +30,8 @@ import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertThrows; import static org.junit.Assert.assertTrue; import java.time.ZonedDateTime; @@ -298,6 +301,27 @@ public void runCanHandleIOException() throws Exception { new LogRequestor(client, urlBuilder, containerId, callback).run(); } + @Test + public void testcallLogCallbackDoneException() throws DoneException + { + final LogRequestor requestor = new LogRequestor(client,urlBuilder, "containerId",callback); + assertNotNull(requestor); + + assertThrows(DoneException.class, ()-> requestor.callLogCallback(-1, "txt")); + } + + /* + * Should roll-over and use default timestamp + */ + @Test + public void testcallLogCallbackInvalidTimestamp() throws DoneException + { + final LogRequestor requestor = new LogRequestor(client,urlBuilder, "containerId",callback); + assertNotNull(requestor); + + requestor.callLogCallback(-1, " "); + } + private void setupMocks(final InputStream inputStream) throws Exception { new Expectations() {{ RequestUtil.newGet(anyString); diff --git a/src/test/java/io/fabric8/maven/docker/service/JibBuildServiceTest.java b/src/test/java/io/fabric8/maven/docker/service/JibBuildServiceTest.java index 93618b2af..1344021f7 100644 --- a/src/test/java/io/fabric8/maven/docker/service/JibBuildServiceTest.java +++ b/src/test/java/io/fabric8/maven/docker/service/JibBuildServiceTest.java @@ -103,7 +103,7 @@ public void testGetBuildTarArchive() throws IOException { // Then assertNotNull(tarArchive); - assertEquals("/target/test/testimage/0.0.1/tmp/docker-build.tar", tarArchive.getAbsolutePath().substring(projectBaseDir.getAbsolutePath().length())); + assertEquals("/target/test/testimage/0.0.1/tmp/docker-build.tar", tarArchive.getAbsolutePath().substring(projectBaseDir.getAbsolutePath().length()).replace('\\','/')); } @@ -119,7 +119,7 @@ public void testGetAssemblyTarArchive() throws IOException, MojoExecutionExcepti // Then assertNotNull(tarArchive); - assertEquals("/target/test/testimage/0.0.1/tmp/docker-build.tar", tarArchive.getAbsolutePath().substring(projectBaseDir.getAbsolutePath().length())); + assertEquals("/target/test/testimage/0.0.1/tmp/docker-build.tar", tarArchive.getAbsolutePath().substring(projectBaseDir.getAbsolutePath().length()).replace('\\','/')); } @Test