- add sources.
[platform/framework/web/crosswalk.git] / src / net / base / net_log_logger_unittest.cc
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 "net/base/net_log_logger.h"
6
7 #include "base/file_util.h"
8 #include "base/files/file_path.h"
9 #include "base/files/scoped_temp_dir.h"
10 #include "base/json/json_reader.h"
11 #include "base/values.h"
12 #include "testing/gtest/include/gtest/gtest.h"
13
14 namespace net {
15
16 class NetLogLoggerTest : public testing::Test {
17  public:
18   virtual void SetUp() {
19     ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
20     log_path_ = temp_dir_.path().AppendASCII("NetLogFile");
21   }
22
23  protected:
24   base::ScopedTempDir temp_dir_;
25   base::FilePath log_path_;
26 };
27
28 TEST_F(NetLogLoggerTest, GeneratesValidJSONForNoEvents) {
29   {
30     // Create and destroy a logger.
31     FILE* file = file_util::OpenFile(log_path_, "w");
32     ASSERT_TRUE(file);
33     scoped_ptr<base::Value> constants(NetLogLogger::GetConstants());
34     NetLogLogger logger(file, *constants);
35   }
36
37   std::string input;
38   ASSERT_TRUE(base::ReadFileToString(log_path_, &input));
39
40   base::JSONReader reader;
41   scoped_ptr<base::Value> root(reader.ReadToValue(input));
42   ASSERT_TRUE(root) << reader.GetErrorMessage();
43
44   base::DictionaryValue* dict;
45   ASSERT_TRUE(root->GetAsDictionary(&dict));
46   base::ListValue* events;
47   ASSERT_TRUE(dict->GetList("events", &events));
48   ASSERT_EQ(0u, events->GetSize());
49 }
50
51 TEST_F(NetLogLoggerTest, GeneratesValidJSONWithOneEvent) {
52   {
53     FILE* file = file_util::OpenFile(log_path_, "w");
54     ASSERT_TRUE(file);
55     scoped_ptr<base::Value> constants(NetLogLogger::GetConstants());
56     NetLogLogger logger(file, *constants);
57
58     const int kDummyId = 1;
59     NetLog::Source source(NetLog::SOURCE_SPDY_SESSION, kDummyId);
60     NetLog::Entry entry(NetLog::TYPE_PROXY_SERVICE,
61                         source,
62                         NetLog::PHASE_BEGIN,
63                         base::TimeTicks::Now(),
64                         NULL,
65                         NetLog::LOG_BASIC);
66     logger.OnAddEntry(entry);
67   }
68
69   std::string input;
70   ASSERT_TRUE(base::ReadFileToString(log_path_, &input));
71
72   base::JSONReader reader;
73   scoped_ptr<base::Value> root(reader.ReadToValue(input));
74   ASSERT_TRUE(root) << reader.GetErrorMessage();
75
76   base::DictionaryValue* dict;
77   ASSERT_TRUE(root->GetAsDictionary(&dict));
78   base::ListValue* events;
79   ASSERT_TRUE(dict->GetList("events", &events));
80   ASSERT_EQ(1u, events->GetSize());
81 }
82
83 TEST_F(NetLogLoggerTest, GeneratesValidJSONWithMultipleEvents) {
84   {
85     FILE* file = file_util::OpenFile(log_path_, "w");
86     ASSERT_TRUE(file);
87     scoped_ptr<base::Value> constants(NetLogLogger::GetConstants());
88     NetLogLogger logger(file, *constants);
89
90     const int kDummyId = 1;
91     NetLog::Source source(NetLog::SOURCE_SPDY_SESSION, kDummyId);
92     NetLog::Entry entry(NetLog::TYPE_PROXY_SERVICE,
93                         source,
94                         NetLog::PHASE_BEGIN,
95                         base::TimeTicks::Now(),
96                         NULL,
97                         NetLog::LOG_BASIC);
98
99     // Add the entry multiple times.
100     logger.OnAddEntry(entry);
101     logger.OnAddEntry(entry);
102   }
103
104   std::string input;
105   ASSERT_TRUE(base::ReadFileToString(log_path_, &input));
106
107   base::JSONReader reader;
108   scoped_ptr<base::Value> root(reader.ReadToValue(input));
109   ASSERT_TRUE(root) << reader.GetErrorMessage();
110
111   base::DictionaryValue* dict;
112   ASSERT_TRUE(root->GetAsDictionary(&dict));
113   base::ListValue* events;
114   ASSERT_TRUE(dict->GetList("events", &events));
115   ASSERT_EQ(2u, events->GetSize());
116 }
117
118 }  // namespace net