Hi Team,

As part of supporting JDK 11 I am seeing some test failure due to
change in behavior of way java.time.Instant now works. As noted in [1]
[2] with JDK 11 Instant.now is constructed with microsecond precision
[3] compared to millisecond in JDK 8 [4].

This causes issue when entities in test are compared after and before
persisting in DB. When we store the entity in DB then its stored with
millisecond precision while the in memory entity refers to Instant
value with microsecond precision which leads to test failures [5] when
such entity instances are checked for equality.

So far my understanding is that this change in behaviour impacts on
test code and most likely it should not impact production code.

So need to find a way to retain old behaviour for Instant. Possible options

1. Create an extension method for Instant like `Instant.nowInMillis`
and use that in Test case
2. Use a custom `WhiskInstant` in our entity classes to have full
control on precision

Any other which team may suggest

Thoughts?

Chetan Mehrotra
[1] 
https://github.com/apache/incubator-openwhisk/issues/4217#issuecomment-496469481
[2] https://github.com/h2database/h2database/issues/1178
[3] 
https://github.com/openjdk/jdk/blob/jdk-11%2B28/src/java.base/share/classes/java/time/Clock.java#L524
[4] 
https://github.com/openjdk/jdk/blob/jdk8-b120/jdk/src/share/classes/java/time/Clock.java#L470
[5] https://scans.gradle.com/s/sf7udehikj6g2/tests/failed

Reply via email to