RFR: JDK-8266536: Provide a variant of os::iso8601_time which works with arbitrary timestamps

Volker Simonis simonis at openjdk.java.net
Thu May 6 09:08:52 UTC 2021


On Wed, 5 May 2021 04:31:57 GMT, Thomas Stuefe <stuefe at openjdk.org> wrote:

> We have os::iso8601_time(), which gives an ISO8601 timestamp of the current time. It would be very useful to have a second variant which can be fed an arbitrary numerical timestamp.
> 
> This is useful in the context of making asynchronous UL logging cheaper (see JDK-8229517)
> 
> This patch provides an additional API: 
> `char* os::iso8601_time(jlong milliseconds_since_19700101, char* buffer, size_t buffer_length, bool utc);`
> alongside the existing
> `char* os::iso8601_time(char* buffer, size_t buffer_length, bool utc);`
> and implements the latter using the former. Not much code added.
> 
> In addition, it adds a regression gtest for these APIs.
> 
> Please ignore the harfbuzz change, its a build fix needed for older gcc, will be removed before final push.
> 
> Testing: GHA, manual gtests, SAP nightlies on all our platforms.
> 
> Thanks, Thomas

Change looks good. I have just two minor questions (see inline).

Thanks for adding the gtest!

test/hotspot/gtest/runtime/test_os.cpp line 766:

> 764:   const size_t lp = strlen(pattern);
> 765:   const size_t ls = strlen(s);
> 766:   if (ls < lp) {

Shouldn't this be `!=`?

test/hotspot/gtest/runtime/test_os.cpp line 800:

> 798:   tty->print_cr("%s", result);
> 799:   EXPECT_EQ(result, buffer);
> 800:   EXPECT_TRUE(very_simple_string_matcher(pattern, result));

Do you intentionally repeat this same test for a second time? Does it provide any benefit?

-------------

Changes requested by simonis (Reviewer).

PR: https://git.openjdk.java.net/jdk/pull/3869


More information about the hotspot-runtime-dev mailing list