hotspot/test/native/logging/test_logMessageTest.cpp
changeset 43431 5ffa076f526d
parent 42908 22186844c94c
child 46560 388aa8d67c80
equal deleted inserted replaced
43430:a815cfd97cd1 43431:5ffa076f526d
    63   }
    63   }
    64 }
    64 }
    65 
    65 
    66 // Verify that messages with multiple levels are written
    66 // Verify that messages with multiple levels are written
    67 // to outputs configured for all the corresponding levels
    67 // to outputs configured for all the corresponding levels
    68 TEST_F(LogMessageTest, level_inclusion) {
    68 TEST_VM_F(LogMessageTest, level_inclusion) {
    69   const size_t message_count = 10;
    69   const size_t message_count = 10;
    70   LogMessageBuffer msg[message_count];
    70   LogMessageBuffer msg[message_count];
    71 
    71 
    72   struct {
    72   struct {
    73     int message_number;
    73     int message_number;
   117     }
   117     }
   118   }
   118   }
   119 }
   119 }
   120 
   120 
   121 // Verify that messages are logged in the order they are added to the log message
   121 // Verify that messages are logged in the order they are added to the log message
   122 TEST_F(LogMessageTest, line_order) {
   122 TEST_VM_F(LogMessageTest, line_order) {
   123   LogMessageBuffer msg;
   123   LogMessageBuffer msg;
   124   msg.info("info line").error("error line").trace("trace line")
   124   msg.info("info line").error("error line").trace("trace line")
   125       .error("another error").warning("warning line").debug("debug line");
   125       .error("another error").warning("warning line").debug("debug line");
   126   _log.write(msg);
   126   _log.write(msg);
   127 
   127 
   129                              "another error", "warning line", "debug line", NULL };
   129                              "another error", "warning line", "debug line", NULL };
   130   EXPECT_TRUE(file_contains_substrings_in_order(_level_filename[LogLevel::Trace], expected))
   130   EXPECT_TRUE(file_contains_substrings_in_order(_level_filename[LogLevel::Trace], expected))
   131     << "output missing or in incorrect order";
   131     << "output missing or in incorrect order";
   132 }
   132 }
   133 
   133 
   134 TEST_F(LogMessageTest, long_message) {
   134 TEST_VM_F(LogMessageTest, long_message) {
   135   // Write 10K bytes worth of log data
   135   // Write 10K bytes worth of log data
   136   LogMessageBuffer msg;
   136   LogMessageBuffer msg;
   137   const size_t size = 10 * K;
   137   const size_t size = 10 * K;
   138   const char* start_marker = "#start#";
   138   const char* start_marker = "#start#";
   139   const char* end_marker = "#the end#";
   139   const char* end_marker = "#the end#";
   153   EXPECT_TRUE(file_contains_substrings_in_order(_level_filename[LogLevel::Trace], expected))
   153   EXPECT_TRUE(file_contains_substrings_in_order(_level_filename[LogLevel::Trace], expected))
   154     << "unable to print long line";
   154     << "unable to print long line";
   155   FREE_C_HEAP_ARRAY(char, data);
   155   FREE_C_HEAP_ARRAY(char, data);
   156 }
   156 }
   157 
   157 
   158 TEST_F(LogMessageTest, message_with_many_lines) {
   158 TEST_VM_F(LogMessageTest, message_with_many_lines) {
   159   const size_t lines = 100;
   159   const size_t lines = 100;
   160   const size_t line_length = 16;
   160   const size_t line_length = 16;
   161 
   161 
   162   LogMessageBuffer msg;
   162   LogMessageBuffer msg;
   163   for (size_t i = 0; i < lines; i++) {
   163   for (size_t i = 0; i < lines; i++) {
   186   }
   186   }
   187   jio_snprintf(buf, len, "%s", prefix);
   187   jio_snprintf(buf, len, "%s", prefix);
   188   return prefix_len;
   188   return prefix_len;
   189 }
   189 }
   190 
   190 
   191 TEST_F(LogMessageTest, prefixing) {
   191 TEST_VM_F(LogMessageTest, prefixing) {
   192   LogMessageBuffer msg;
   192   LogMessageBuffer msg;
   193   msg.set_prefix(dummy_prefixer);
   193   msg.set_prefix(dummy_prefixer);
   194   for (int i = 0; i < 3; i++) {
   194   for (int i = 0; i < 3; i++) {
   195     msg.info("test %d", i);
   195     msg.info("test %d", i);
   196   }
   196   }
   207   };
   207   };
   208   EXPECT_TRUE(file_contains_substrings_in_order(_level_filename[LogLevel::Trace], expected))
   208   EXPECT_TRUE(file_contains_substrings_in_order(_level_filename[LogLevel::Trace], expected))
   209     << "error in prefixed output";
   209     << "error in prefixed output";
   210 }
   210 }
   211 
   211 
   212 TEST_F(LogMessageTest, scoped_messages) {
   212 TEST_VM_F(LogMessageTest, scoped_messages) {
   213   {
   213   {
   214     LogMessage(logging) msg;
   214     LogMessage(logging) msg;
   215     msg.info("scoped info");
   215     msg.info("scoped info");
   216     msg.warning("scoped warn");
   216     msg.warning("scoped warn");
   217     EXPECT_FALSE(file_contains_substring(_level_filename[LogLevel::Info], "scoped info"))
   217     EXPECT_FALSE(file_contains_substring(_level_filename[LogLevel::Info], "scoped info"))
   221     << "missing output from scoped log message";
   221     << "missing output from scoped log message";
   222   EXPECT_TRUE(file_contains_substring(_level_filename[LogLevel::Warning], "scoped warn"))
   222   EXPECT_TRUE(file_contains_substring(_level_filename[LogLevel::Warning], "scoped warn"))
   223     << "missing output from scoped log message";
   223     << "missing output from scoped log message";
   224 }
   224 }
   225 
   225 
   226 TEST_F(LogMessageTest, scoped_flushing) {
   226 TEST_VM_F(LogMessageTest, scoped_flushing) {
   227   {
   227   {
   228     LogMessage(logging) msg;
   228     LogMessage(logging) msg;
   229     msg.info("manual flush info");
   229     msg.info("manual flush info");
   230     msg.flush();
   230     msg.flush();
   231     EXPECT_TRUE(file_contains_substring(_level_filename[LogLevel::Info], "manual flush info"))
   231     EXPECT_TRUE(file_contains_substring(_level_filename[LogLevel::Info], "manual flush info"))
   234   const char* tmp[] = {"manual flush info", "manual flush info", NULL};
   234   const char* tmp[] = {"manual flush info", "manual flush info", NULL};
   235   EXPECT_FALSE(file_contains_substrings_in_order(_level_filename[LogLevel::Info], tmp))
   235   EXPECT_FALSE(file_contains_substrings_in_order(_level_filename[LogLevel::Info], tmp))
   236     << "log file contains duplicate lines from single scoped log message";
   236     << "log file contains duplicate lines from single scoped log message";
   237 }
   237 }
   238 
   238 
   239 TEST_F(LogMessageTest, scoped_reset) {
   239 TEST_VM_F(LogMessageTest, scoped_reset) {
   240   {
   240   {
   241     LogMessage(logging) msg, partial;
   241     LogMessage(logging) msg, partial;
   242     msg.info("%s", "info reset msg");
   242     msg.info("%s", "info reset msg");
   243     msg.reset();
   243     msg.reset();
   244     partial.info("%s", "info reset msg");
   244     partial.info("%s", "info reset msg");