1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include <string>
6#include <vector>
7
8#include "base/memory/linked_ptr.h"
9#include "chrome/browser/extensions/api/log_private/filter_handler.h"
10#include "chrome/browser/extensions/api/log_private/log_parser.h"
11#include "chrome/browser/extensions/api/log_private/syslog_parser.h"
12#include "testing/gtest/include/gtest/gtest.h"
13
14namespace extensions {
15namespace {
16
17const char kKernelLogEntry[] =
18    "2014-08-18T14:04:58.606132-07:00 kernel: [269374.012690] "
19    "cfg80211: World regulatory domain updated:";
20
21const char kShillLogEntry[] =
22    "2014-08-15T11:20:24.575058-07:00 shill[1018]: "
23    "[INFO:service.cc(290)] Disconnecting from service 32: Unload";
24
25const char kWpaSupplicantLogEntry[] =
26    "2014-08-15T12:36:06.137021-07:00 wpa_supplicant[818]: "
27    "nl80211: Received scan results (0 BSSes)";
28
29}  // namespace
30
31class ExtensionSyslogParserTest : public testing::Test {
32};
33
34TEST_F(ExtensionSyslogParserTest, ParseLog) {
35  std::vector<linked_ptr<api::log_private::LogEntry> > output;
36  api::log_private::Filter filter;
37  FilterHandler filter_handler(filter);
38  SyslogParser p;
39
40  // Test kernel log
41  p.Parse(kKernelLogEntry, &output, &filter_handler);
42  ASSERT_EQ(1u, output.size());
43  EXPECT_EQ("unknown", output[0]->level);
44  EXPECT_EQ("kernel", output[0]->process);
45  EXPECT_EQ("unknown", output[0]->process_id);
46  EXPECT_EQ(kKernelLogEntry, output[0]->full_entry);
47  EXPECT_DOUBLE_EQ(1408395898606.132, output[0]->timestamp);
48
49  // Test shill log
50  p.Parse(kShillLogEntry, &output, &filter_handler);
51  ASSERT_EQ(2u, output.size());
52  EXPECT_EQ("info", output[1]->level);
53  EXPECT_EQ("shill", output[1]->process);
54  EXPECT_EQ("1018", output[1]->process_id);
55  EXPECT_EQ(kShillLogEntry, output[1]->full_entry);
56  EXPECT_DOUBLE_EQ(1408126824575.058, output[1]->timestamp);
57
58  // Test WpaSupplicant log
59  p.Parse(kWpaSupplicantLogEntry, &output, &filter_handler);
60  ASSERT_EQ(3u, output.size());
61  EXPECT_EQ("unknown", output[2]->level);
62  EXPECT_EQ("wpa_supplicant", output[2]->process);
63  EXPECT_EQ("818", output[2]->process_id);
64  EXPECT_EQ(kWpaSupplicantLogEntry, output[2]->full_entry);
65  EXPECT_DOUBLE_EQ(1408131366137.021, output[2]->timestamp);
66}
67
68}  // namespace extensions
69