--- old/test/hotspot/gtest/logging/test_logMessageTest.cpp 2020-02-24 07:47:46.841117556 +0000 +++ new/test/hotspot/gtest/logging/test_logMessageTest.cpp 2020-02-24 07:47:46.581116130 +0000 @@ -215,6 +215,39 @@ << "error in prefixed output"; } +TEST_VM_F(LogMessageTest, nwrite) { + const char* msg = "The quick brown fox jumps over the lazy dog"; + const char* msg2 = "test-without-prefix"; + Arena* arena = new (mtLogging)Arena(mtLogging); + LogMessageBuffer buf(arena); + + buf.set_prefix(dummy_prefixer); + size_t len = strlen(msg); + // keep writing until reallocation + while (buf._message_buffer_size + < LogMessageBuffer::InitialMessageBufferCapacity * 3) { + buf.write_n(LogLevel::Trace, msg, len); + } + + buf.set_prefix(NULL); + len = strlen(msg2); + buf.write_n(LogLevel::Trace, msg2, len); + _log.write(buf); + + const char* expected[] = { + "] some prefix: The quick brown fox jumps over the lazy dog", + "] some prefix: The quick brown fox jumps over the lazy dog", + "] some prefix: The quick brown fox jumps over the lazy dog", + "] test-without-prefix", + NULL + }; + + EXPECT_TRUE(file_contains_substrings_in_order(_level_filename[LogLevel::Trace], expected)) + << "error in prefixed output"; + + delete arena; +} + TEST_VM_F(LogMessageTest, scoped_messages) { { LogMessage(logging) msg;