Index: jingle/glue/logging_unittest.cc |
=================================================================== |
--- jingle/glue/logging_unittest.cc (revision 0) |
+++ jingle/glue/logging_unittest.cc (revision 0) |
@@ -0,0 +1,158 @@ |
+// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+// Note: this test tests LOG_V and LOG_E since all other logs are expressed |
+// in forms of them. LOG is also tested for good measure. |
+// Also note that we are only allowed to call InitLogging() twice so the test |
+// cases are more dense than normal. |
+ |
+// The following include must be first in this file. It ensures that |
+// libjingle style logging is used. |
+#define LOGGING_INSIDE_LIBJINGLE |
+ |
+#include "third_party/libjingle/overrides/talk/base/logging.h" |
+ |
+#include "base/command_line.h" |
+#include "base/file_util.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+#if defined(OS_WIN) |
+static const wchar_t* const log_file_name = L"libjingle_logging.log"; |
+#else |
+static const char* const log_file_name = "libjingle_logging.log"; |
+#endif |
+ |
+static const int kDefaultVerbosity = 0; |
+ |
+static const char* AsString(talk_base::LoggingSeverity severity) { |
+ switch (severity) { |
+ case talk_base::LS_ERROR: |
+ return "LS_ERROR"; |
+ case talk_base::LS_WARNING: |
+ return "LS_WARNING"; |
+ case talk_base::LS_INFO: |
+ return "LS_INFO"; |
+ case talk_base::LS_VERBOSE: |
+ return "LS_VERBOSE"; |
+ case talk_base::LS_SENSITIVE: |
+ return "LS_SENSITIVE"; |
+ default: |
+ return ""; |
+ } |
+} |
+ |
+static bool ContainsString(const std::string& original, |
+ const char* string_to_match) { |
+ return original.find(string_to_match) != std::string::npos; |
+} |
+ |
+static bool Initialize(int verbosity_level) { |
+ if (verbosity_level != kDefaultVerbosity) { |
+ // Update the command line with specified verbosity level for this file. |
+ CommandLine* command_line = CommandLine::ForCurrentProcess(); |
+ std::ostringstream value_stream; |
+ value_stream << "logging_unittest=" << verbosity_level; |
+ const std::string& value = value_stream.str(); |
+ command_line->AppendSwitchASCII("vmodule", value); |
+ } |
+ |
+ // The command line flags are parsed here and the log file name is set. |
+ if (!InitLogging(log_file_name, logging::LOG_ONLY_TO_FILE, |
+ logging::DONT_LOCK_LOG_FILE, logging::DELETE_OLD_LOG_FILE, |
+ logging::DISABLE_DCHECK_FOR_NON_OFFICIAL_RELEASE_BUILDS)) { |
+ return false; |
+ } |
+ EXPECT_TRUE(VLOG_IS_ON(verbosity_level)); |
+ EXPECT_FALSE(VLOG_IS_ON(verbosity_level + 1)); |
+ return true; |
+} |
+ |
+TEST(LibjingleLogTest, DefaultConfiguration) { |
+ ASSERT_TRUE(Initialize(kDefaultVerbosity)); |
+ |
+ // In the default configuration nothing should be logged. |
+ LOG_V(talk_base::LS_ERROR) << AsString(talk_base::LS_ERROR); |
+ LOG_V(talk_base::LS_WARNING) << AsString(talk_base::LS_WARNING); |
+ LOG_V(talk_base::LS_INFO) << AsString(talk_base::LS_INFO); |
+ LOG_V(talk_base::LS_VERBOSE) << AsString(talk_base::LS_VERBOSE); |
+ LOG_V(talk_base::LS_SENSITIVE) << AsString(talk_base::LS_SENSITIVE); |
+ |
+ // Read file to string. |
+ FilePath file_path(log_file_name); |
+ std::string contents_of_file; |
+ file_util::ReadFileToString(file_path, &contents_of_file); |
+ |
+ // Make sure string contains the expected values. |
+ EXPECT_FALSE(ContainsString(contents_of_file, AsString(talk_base::LS_ERROR))); |
+ EXPECT_FALSE(ContainsString(contents_of_file, |
+ AsString(talk_base::LS_WARNING))); |
+ EXPECT_FALSE(ContainsString(contents_of_file, AsString(talk_base::LS_INFO))); |
+ EXPECT_FALSE(ContainsString(contents_of_file, |
+ AsString(talk_base::LS_VERBOSE))); |
+ EXPECT_FALSE(ContainsString(contents_of_file, |
+ AsString(talk_base::LS_SENSITIVE))); |
+} |
+ |
+TEST(LibjingleLogTest, InfoConfiguration) { |
+ ASSERT_TRUE(Initialize(talk_base::LS_INFO)); |
+ |
+ // In this configuration everything lower or equal to LS_INFO should be |
+ // logged. |
+ LOG_V(talk_base::LS_ERROR) << AsString(talk_base::LS_ERROR); |
+ LOG_V(talk_base::LS_WARNING) << AsString(talk_base::LS_WARNING); |
+ LOG_V(talk_base::LS_INFO) << AsString(talk_base::LS_INFO); |
+ LOG_V(talk_base::LS_VERBOSE) << AsString(talk_base::LS_VERBOSE); |
+ LOG_V(talk_base::LS_SENSITIVE) << AsString(talk_base::LS_SENSITIVE); |
+ |
+ // Read file to string. |
+ FilePath file_path(log_file_name); |
+ std::string contents_of_file; |
+ file_util::ReadFileToString(file_path, &contents_of_file); |
+ |
+ // Make sure string contains the expected values. |
+ EXPECT_TRUE(ContainsString(contents_of_file, AsString(talk_base::LS_ERROR))); |
+ EXPECT_TRUE(ContainsString(contents_of_file, |
+ AsString(talk_base::LS_WARNING))); |
+ EXPECT_TRUE(ContainsString(contents_of_file, AsString(talk_base::LS_INFO))); |
+ EXPECT_FALSE(ContainsString(contents_of_file, |
+ AsString(talk_base::LS_VERBOSE))); |
+ EXPECT_FALSE(ContainsString(contents_of_file, |
+ AsString(talk_base::LS_SENSITIVE))); |
+ |
+ // Also check that the log is proper. |
+ EXPECT_TRUE(ContainsString(contents_of_file, "logging_unittest.cc")); |
+ EXPECT_FALSE(ContainsString(contents_of_file, "logging.h")); |
+ EXPECT_FALSE(ContainsString(contents_of_file, "logging.cc")); |
+} |
+ |
+TEST(LibjingleLogTest, LogEverythingConfiguration) { |
+ ASSERT_TRUE(Initialize(talk_base::LS_SENSITIVE)); |
+ |
+ // In this configuration everything should be logged. |
+ LOG_V(talk_base::LS_ERROR) << AsString(talk_base::LS_ERROR); |
+ LOG_V(talk_base::LS_WARNING) << AsString(talk_base::LS_WARNING); |
+ LOG(LS_INFO) << AsString(talk_base::LS_INFO); |
+ static const int kFakeError = 1; |
+ LOG_E(LS_INFO, EN, kFakeError) << "LOG_E(" << AsString(talk_base::LS_INFO) << |
+ ")"; |
+ LOG_V(talk_base::LS_VERBOSE) << AsString(talk_base::LS_VERBOSE); |
+ LOG_V(talk_base::LS_SENSITIVE) << AsString(talk_base::LS_SENSITIVE); |
+ |
+ // Read file to string. |
+ FilePath file_path(log_file_name); |
+ std::string contents_of_file; |
+ file_util::ReadFileToString(file_path, &contents_of_file); |
+ |
+ // Make sure string contains the expected values. |
+ EXPECT_TRUE(ContainsString(contents_of_file, AsString(talk_base::LS_ERROR))); |
+ EXPECT_TRUE(ContainsString(contents_of_file, |
+ AsString(talk_base::LS_WARNING))); |
+ EXPECT_TRUE(ContainsString(contents_of_file, AsString(talk_base::LS_INFO))); |
+ // LOG_E |
+ EXPECT_TRUE(ContainsString(contents_of_file, strerror(kFakeError))); |
+ EXPECT_TRUE(ContainsString(contents_of_file, |
+ AsString(talk_base::LS_VERBOSE))); |
+ EXPECT_TRUE(ContainsString(contents_of_file, |
+ AsString(talk_base::LS_SENSITIVE))); |
+} |
Property changes on: jingle/glue/logging_unittest.cc |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |