61 verify_stream(&stream);
62 }
63
64 TEST_VM_F(LogStreamTest, no_rm) {
65 ResourceMark rm;
66 LogStream ls(Log(gc)::debug());
67 verify_stream(&ls);
68 }
69
70 TEST_VM_F(LogStreamTest, TestLineBufferAllocation) {
71 const int max_line_len = 1024;
72 char* const test_string = (char*) os::malloc(max_line_len, mtLogging);
73 memset(test_string, 'A', max_line_len);
74 for (int interval = 1; interval < max_line_len; interval++) {
75 LogStream ls(Log(logging)::info());
76 int written = 0;
77 while (written < max_line_len) {
78 const int to_write = MIN2(interval, max_line_len - written);
79 ls.write(test_string, interval);
80 written += interval;
81 const char* const line_buffer = ls._current_line.ptr();
82 for (int i = 0; i < written; i++) {
83 ASSERT_TRUE(line_buffer[i] == 'A');
84 }
85 ASSERT_TRUE(line_buffer[written] == '\0');
86 }
87 ls.cr(); // I do not expect printout, nor do I care. Just call cr() to flush and avoid assert in ~LogStream().
88 }
89 }
90
91 // Test, in release build, that the internal line buffer of a LogStream
92 // object caps out at 1M.
93 TEST_VM_F(LogStreamTest, TestLineBufferAllocationCap) {
94 LogStream ls(Log(logging)::info());
95 for (size_t i = 0; i < (1*M + 512); i ++) {
96 ls.print_raw("A");
97 }
98 const char* const line_buffer = ls._current_line.ptr();
99 ASSERT_TRUE(strlen(line_buffer) == 1*M - 1);
100 // reset to prevent assert for unflushed content
101 ls._current_line.reset();
102 }
|
61 verify_stream(&stream);
62 }
63
64 TEST_VM_F(LogStreamTest, no_rm) {
65 ResourceMark rm;
66 LogStream ls(Log(gc)::debug());
67 verify_stream(&ls);
68 }
69
70 TEST_VM_F(LogStreamTest, TestLineBufferAllocation) {
71 const int max_line_len = 1024;
72 char* const test_string = (char*) os::malloc(max_line_len, mtLogging);
73 memset(test_string, 'A', max_line_len);
74 for (int interval = 1; interval < max_line_len; interval++) {
75 LogStream ls(Log(logging)::info());
76 int written = 0;
77 while (written < max_line_len) {
78 const int to_write = MIN2(interval, max_line_len - written);
79 ls.write(test_string, interval);
80 written += interval;
81 const char* const line_buffer = ls._current_line.buffer();
82 for (int i = 0; i < written; i++) {
83 ASSERT_TRUE(line_buffer[i] == 'A');
84 }
85 ASSERT_TRUE(line_buffer[written] == '\0');
86 }
87 ls.cr(); // I do not expect printout, nor do I care. Just call cr() to flush and avoid assert in ~LogStream().
88 }
89 }
90
91 // Test, in release build, that the internal line buffer of a LogStream
92 // object caps out at 1M.
93 TEST_VM_F(LogStreamTest, TestLineBufferAllocationCap) {
94 LogStream ls(Log(logging)::info());
95 for (size_t i = 0; i < (1*M + 512); i ++) {
96 ls.print_raw("A");
97 }
98 const char* const line_buffer = ls._current_line.buffer();
99 ASSERT_TRUE(strlen(line_buffer) == 1*M - 1);
100 // reset to prevent assert for unflushed content
101 ls._current_line.reset();
102 }
|