From 12a0bfb008e3bb1d215e5a03406e1aac7f08da2c Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Mon, 4 Jan 2021 13:06:12 +0000 Subject: [PATCH] Put back date format hack Signed-off-by: Dave Syer --- .../leaderelection/LeaderElectorTest.java | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/e2e/src/test/java/io/kubernetes/client/e2e/extended/leaderelection/LeaderElectorTest.java b/e2e/src/test/java/io/kubernetes/client/e2e/extended/leaderelection/LeaderElectorTest.java index cf255e61b3..142ed75755 100644 --- a/e2e/src/test/java/io/kubernetes/client/e2e/extended/leaderelection/LeaderElectorTest.java +++ b/e2e/src/test/java/io/kubernetes/client/e2e/extended/leaderelection/LeaderElectorTest.java @@ -26,6 +26,8 @@ import java.io.IOException; import java.net.HttpURLConnection; import java.time.Duration; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeFormatterBuilder; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -76,14 +78,28 @@ public LeaderElectorTest(LockType lockType) { } catch (IOException ex) { throw new RuntimeException("Couldn't create ApiClient", ex); } + // Lease resource requires special care with DateTime + if (lockType == LockType.Lease) { + // TODO: switch date-time library so that micro-sec timestamp can be serialized + // in RFC3339 + // format w/ correct precision without the hacks + + // This formatter is used for Lease resource spec's acquire/renewTime + DateTimeFormatter formatter = + new DateTimeFormatterBuilder() + .appendOptional(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z'")) + .appendOptional(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'Z'")) + .toFormatter(); + + apiClient.setOffsetDateTimeFormat(formatter); + } this.lockType = lockType; } @Before public void setup() throws Exception { // delete the lock resource if it exists, or else first leader candidate might need to wait for - // a whole - // leaseDuration configured + // a whole leaseDuration configured switch (lockType) { case ConfigMap: deleteConfigMapLockResource(); @@ -169,8 +185,8 @@ public void testMultiCandidateLeaderElection() throws Exception { Assert.assertNotNull(leaderRef.get()); Assert.assertTrue(candidate1.equals(leaderRef.get()) || candidate2.equals(leaderRef.get())); - // stop both LeaderElectors, in order .. non-leader, then leader so that non-leader doesn't get - // to become leader + // stop both LeaderElectors, in order .. non-leader, then leader so that + // non-leader doesn't get to become leader if (candidate1.equals(leaderRef.get())) { leaderElector2.close(); leaderElector1.close();