blob: 3d44f6c983433b7f80aeba18d7e83ff5358adbb4 [file] [log] [blame]
// 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.
#include "chromeos/network/network_event_log.h"
#include <algorithm>
#include "base/basictypes.h"
#include "base/compiler_specific.h"
#include "base/format_macros.h"
#include "base/string_split.h"
#include "base/stringprintf.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace chromeos {
class NetworkEventLogTest : public testing::Test {
public:
NetworkEventLogTest() {
}
virtual void SetUp() OVERRIDE {
network_event_log::Initialize();
}
virtual void TearDown() OVERRIDE {
network_event_log::Shutdown();
}
protected:
std::string SkipTime(const std::string& input) {
std::string output;
std::vector<std::string> lines;
base::SplitString(input, '\n', &lines);
for (size_t i = 0; i < lines.size(); ++i) {
size_t n = lines[i].find(']');
if (n != std::string::npos)
output += lines[i].substr(n+2) + '\n';
}
return output;
}
size_t CountLines(const std::string& input) {
return std::count(input.begin(), input.end(), '\n');
}
private:
DISALLOW_COPY_AND_ASSIGN(NetworkEventLogTest);
};
TEST_F(NetworkEventLogTest, TestNetworkEvents) {
std::string output_none = network_event_log::GetAsString(
network_event_log::OLDEST_FIRST, 0);
EXPECT_EQ("No Log Entries.", output_none);
network_event_log::AddEntry("module1", "event1", "description1");
network_event_log::AddEntry("module2", "event2", "description2");
network_event_log::AddEntry("module3", "event3", "description3");
network_event_log::AddEntry("module3", "event3", "description3");
const std::string expected_output_oldest_first(
"module1.event1: description1\n"
"module2.event2: description2\n"
"module3.event3: description3 (2)\n");
std::string output_oldest_first = network_event_log::GetAsString(
network_event_log::OLDEST_FIRST, 0);
output_oldest_first = SkipTime(output_oldest_first);
EXPECT_EQ(expected_output_oldest_first, output_oldest_first);
const std::string expected_output_oldest_first_short(
"module2.event2: description2\n"
"module3.event3: description3 (2)\n");
std::string output_oldest_first_short = network_event_log::GetAsString(
network_event_log::OLDEST_FIRST, 2);
output_oldest_first_short = SkipTime(output_oldest_first_short);
EXPECT_EQ(expected_output_oldest_first_short, output_oldest_first_short);
const std::string expected_output_newest_first(
"module3.event3: description3 (2)\n"
"module2.event2: description2\n"
"module1.event1: description1\n");
std::string output_newest_first = network_event_log::GetAsString(
network_event_log::NEWEST_FIRST, 0);
output_newest_first = SkipTime(output_newest_first);
EXPECT_EQ(expected_output_newest_first, output_newest_first);
const std::string expected_output_newest_first_short(
"module3.event3: description3 (2)\n"
"module2.event2: description2\n");
std::string output_newest_first_short = network_event_log::GetAsString(
network_event_log::NEWEST_FIRST, 2);
output_newest_first_short = SkipTime(output_newest_first_short);
EXPECT_EQ(expected_output_newest_first_short, output_newest_first_short);
}
TEST_F(NetworkEventLogTest, TestMaxNetworkEvents) {
const size_t entries_to_add =
network_event_log::kMaxNetworkEventLogEntries + 3;
for (size_t i = 0; i < entries_to_add; ++i)
network_event_log::AddEntry("test", StringPrintf("event_%"PRIuS, i), "");
std::string output = GetAsString(network_event_log::OLDEST_FIRST, 0);
size_t output_lines = CountLines(output);
EXPECT_EQ(network_event_log::kMaxNetworkEventLogEntries, output_lines);
}
} // namespace chromeos