| Index: test/cctest/test-log.cc
|
| diff --git a/test/cctest/test-log.cc b/test/cctest/test-log.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..0370cbec45196ed67ea1cd790366f40bd996e943
|
| --- /dev/null
|
| +++ b/test/cctest/test-log.cc
|
| @@ -0,0 +1,102 @@
|
| +// Copyright 2006-2009 the V8 project authors. All rights reserved.
|
| +//
|
| +// Tests of logging functions from log.h
|
| +
|
| +#ifdef ENABLE_LOGGING_AND_PROFILING
|
| +
|
| +#include "v8.h"
|
| +
|
| +#include "log.h"
|
| +
|
| +#include "cctest.h"
|
| +
|
| +using v8::internal::Logger;
|
| +
|
| +static void SetUp() {
|
| + // Log to memory buffer.
|
| + v8::internal::FLAG_logfile = "*";
|
| + v8::internal::FLAG_log = true;
|
| + Logger::Setup();
|
| +}
|
| +
|
| +static void TearDown() {
|
| + Logger::TearDown();
|
| +}
|
| +
|
| +TEST(EmptyLog) {
|
| + SetUp();
|
| + CHECK_EQ(0, Logger::GetLogLines(0, NULL, 0));
|
| + CHECK_EQ(0, Logger::GetLogLines(100, NULL, 0));
|
| + CHECK_EQ(0, Logger::GetLogLines(0, NULL, 100));
|
| + CHECK_EQ(0, Logger::GetLogLines(100, NULL, 100));
|
| + TearDown();
|
| +}
|
| +
|
| +
|
| +TEST(GetMessages) {
|
| + SetUp();
|
| + Logger::StringEvent("aaa", "bbb");
|
| + Logger::StringEvent("cccc", "dddd");
|
| + CHECK_EQ(0, Logger::GetLogLines(0, NULL, 0));
|
| + char log_lines[100];
|
| + memset(log_lines, 0, sizeof(log_lines));
|
| + // Requesting data size which is smaller than first log message length.
|
| + CHECK_EQ(0, Logger::GetLogLines(0, log_lines, 3));
|
| + // See Logger::StringEvent.
|
| + const char* line_1 = "aaa,\"bbb\"\n";
|
| + const int line_1_len = strlen(line_1);
|
| + // Still smaller than log message length.
|
| + CHECK_EQ(0, Logger::GetLogLines(0, log_lines, line_1_len - 1));
|
| + // The exact size.
|
| + CHECK_EQ(line_1_len, Logger::GetLogLines(0, log_lines, line_1_len));
|
| + CHECK_EQ(line_1, log_lines);
|
| + memset(log_lines, 0, sizeof(log_lines));
|
| + // A bit more than the first line length.
|
| + CHECK_EQ(line_1_len, Logger::GetLogLines(0, log_lines, line_1_len + 3));
|
| + CHECK_EQ(line_1, log_lines);
|
| + memset(log_lines, 0, sizeof(log_lines));
|
| + const char* line_2 = "cccc,\"dddd\"\n";
|
| + const int line_2_len = strlen(line_2);
|
| + // Now start with line_2 beginning.
|
| + CHECK_EQ(0, Logger::GetLogLines(line_1_len, log_lines, 0));
|
| + CHECK_EQ(0, Logger::GetLogLines(line_1_len, log_lines, 3));
|
| + CHECK_EQ(0, Logger::GetLogLines(line_1_len, log_lines, line_2_len - 1));
|
| + CHECK_EQ(line_2_len, Logger::GetLogLines(line_1_len, log_lines, line_2_len));
|
| + CHECK_EQ(line_2, log_lines);
|
| + memset(log_lines, 0, sizeof(log_lines));
|
| + CHECK_EQ(line_2_len,
|
| + Logger::GetLogLines(line_1_len, log_lines, line_2_len + 3));
|
| + CHECK_EQ(line_2, log_lines);
|
| + memset(log_lines, 0, sizeof(log_lines));
|
| + // Now get entire buffer contents.
|
| + const char* all_lines = "aaa,\"bbb\"\ncccc,\"dddd\"\n";
|
| + const int all_lines_len = strlen(all_lines);
|
| + CHECK_EQ(all_lines_len, Logger::GetLogLines(0, log_lines, all_lines_len));
|
| + CHECK_EQ(all_lines, log_lines);
|
| + memset(log_lines, 0, sizeof(log_lines));
|
| + CHECK_EQ(all_lines_len, Logger::GetLogLines(0, log_lines, all_lines_len + 3));
|
| + CHECK_EQ(all_lines, log_lines);
|
| + memset(log_lines, 0, sizeof(log_lines));
|
| + TearDown();
|
| +}
|
| +
|
| +
|
| +TEST(BeyondWritePosition) {
|
| + SetUp();
|
| + Logger::StringEvent("aaa", "bbb");
|
| + Logger::StringEvent("cccc", "dddd");
|
| + // See Logger::StringEvent.
|
| + const char* all_lines = "aaa,\"bbb\"\ncccc,\"dddd\"\n";
|
| + const int all_lines_len = strlen(all_lines);
|
| + CHECK_EQ(0, Logger::GetLogLines(all_lines_len, NULL, 1));
|
| + CHECK_EQ(0, Logger::GetLogLines(all_lines_len, NULL, 100));
|
| + CHECK_EQ(0, Logger::GetLogLines(all_lines_len + 1, NULL, 1));
|
| + CHECK_EQ(0, Logger::GetLogLines(all_lines_len + 1, NULL, 100));
|
| + CHECK_EQ(0, Logger::GetLogLines(all_lines_len + 100, NULL, 1));
|
| + CHECK_EQ(0, Logger::GetLogLines(all_lines_len + 100, NULL, 100));
|
| + CHECK_EQ(0, Logger::GetLogLines(10 * 1024 * 1024, NULL, 1));
|
| + CHECK_EQ(0, Logger::GetLogLines(10 * 1024 * 1024, NULL, 100));
|
| + TearDown();
|
| +}
|
| +
|
| +#endif // ENABLE_LOGGING_AND_PROFILING
|
|
|