46 LogStream stream(log.debug());
47
48 verify_stream(&stream);
49 }
50
51 TEST_VM_F(LogStreamTest, from_logtarget) {
52 LogTarget(Debug, gc) log;
53 LogStream stream(log);
54
55 verify_stream(&stream);
56 }
57
58 TEST_VM_F(LogStreamTest, handle) {
59 LogStreamHandle(Debug, gc) stream;
60
61 verify_stream(&stream);
62 }
63
64 TEST_VM_F(LogStreamTest, no_rm) {
65 ResourceMark rm;
66 outputStream* stream = LogTarget(Debug, gc)::stream();
67
68 verify_stream(stream);
69 }
70
71 TEST_VM_F(LogStreamTest, c_heap_stream) {
72 Log(gc) log;
73 LogStreamCHeap stream(log.debug());
74
75 verify_stream(&stream);
76 }
77
78 TEST_VM_F(LogStreamTest, c_heap_stream_target) {
79 LogTarget(Debug, gc) log;
80 LogStreamCHeap stream(log);
81
82 verify_stream(&stream);
83 }
|
46 LogStream stream(log.debug());
47
48 verify_stream(&stream);
49 }
50
51 TEST_VM_F(LogStreamTest, from_logtarget) {
52 LogTarget(Debug, gc) log;
53 LogStream stream(log);
54
55 verify_stream(&stream);
56 }
57
58 TEST_VM_F(LogStreamTest, handle) {
59 LogStreamHandle(Debug, gc) stream;
60
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 }
|