Index: net/log/bounded_file_net_log_observer_unittest.cc |
diff --git a/net/log/bounded_file_net_log_observer_unittest.cc b/net/log/bounded_file_net_log_observer_unittest.cc |
index 6296c446df110810c2da3204dd5d7e48033c6755..7e0ee9c8553e9adce008bd97baadbcde16b72740 100644 |
--- a/net/log/bounded_file_net_log_observer_unittest.cc |
+++ b/net/log/bounded_file_net_log_observer_unittest.cc |
@@ -17,6 +17,7 @@ |
#include "base/json/json_reader.h" |
#include "base/json/json_writer.h" |
#include "base/strings/string_util.h" |
+#include "base/strings/stringprintf.h" |
#include "base/values.h" |
#include "net/base/test_completion_callback.h" |
#include "net/log/net_log_entry.h" |
@@ -139,6 +140,35 @@ class BoundedFileNetLogObserverTest : public testing::Test { |
} |
} |
+ // Reads the NetLog data that was written to disk to |root|. |events| |
+ // points at the "events" section. |
+ ::testing::AssertionResult ReadNetLogFromDisk( |
+ std::unique_ptr<base::Value>* root, |
+ base::ListValue** events) { |
+ std::string input; |
+ AddAllFiles(&input); |
+ if (input.empty()) { |
+ return ::testing::AssertionFailure() << "input is empty"; |
+ } |
+ |
+ base::JSONReader reader; |
+ *root = reader.ReadToValue(input); |
+ if (!*root) { |
+ return ::testing::AssertionFailure() << reader.GetErrorMessage(); |
+ } |
+ |
+ base::DictionaryValue* dict; |
+ if (!(*root)->GetAsDictionary(&dict)) { |
+ return ::testing::AssertionFailure() << "Not a dictionary"; |
+ } |
+ |
+ if (!dict->GetList("events", events)) { |
+ return ::testing::AssertionFailure() << "No events list"; |
+ } |
+ |
+ return ::testing::AssertionSuccess(); |
+ } |
+ |
protected: |
base::FilePath log_path_; |
NetLog net_log_; |
@@ -176,23 +206,16 @@ TEST_F(BoundedFileNetLogObserverTest, GeneratesValidJSONForNoEvents) { |
closure.WaitForResult(); |
- std::string input; |
- AddAllFiles(&input); |
- ASSERT_FALSE(input.empty()); |
- |
- // Parse JSON |
- base::JSONReader reader; |
- std::unique_ptr<base::Value> root(reader.Read(input)); |
- ASSERT_TRUE(root) << reader.GetErrorMessage(); |
+ std::unique_ptr<base::Value> root; |
+ base::ListValue* events; |
+ ASSERT_TRUE(ReadNetLogFromDisk(&root, &events)); |
// Check that there are no events |
- base::DictionaryValue* dict; |
- ASSERT_TRUE(root->GetAsDictionary(&dict)); |
- base::ListValue* events; |
- ASSERT_TRUE(dict->GetList("events", &events)); |
ASSERT_EQ(0u, events->GetSize()); |
// Check that constants are printed |
+ base::DictionaryValue* dict; |
+ ASSERT_TRUE(root->GetAsDictionary(&dict)); |
base::DictionaryValue* constants; |
ASSERT_TRUE(dict->GetDictionary("constants", &constants)); |
} |
@@ -240,21 +263,11 @@ TEST_F(BoundedFileNetLogObserverTest, GeneratesValidJSONWithOneEvent) { |
closure.WaitForResult(); |
- std::string input; |
- AddAllFiles(&input); |
- ASSERT_FALSE(input.empty()); |
- |
- // Parse input. |
- base::JSONReader reader; |
- std::unique_ptr<base::Value> root(reader.ReadToValue(input)); |
- |
- ASSERT_TRUE(root) << reader.GetErrorMessage(); |
+ std::unique_ptr<base::Value> root; |
+ base::ListValue* events; |
+ ASSERT_TRUE(ReadNetLogFromDisk(&root, &events)); |
// Check that there is 1 event written. |
- base::DictionaryValue* dict; |
- ASSERT_TRUE(root->GetAsDictionary(&dict)); |
- base::ListValue* events; |
- ASSERT_TRUE(dict->GetList("events", &events)); |
ASSERT_EQ(1u, events->GetSize()); |
} |
@@ -271,19 +284,11 @@ TEST_F(BoundedFileNetLogObserverTest, GeneratesValidJSONWithMultipleEvents) { |
closure.WaitForResult(); |
- std::string input; |
- AddAllFiles(&input); |
- ASSERT_FALSE(input.empty()); |
- |
- base::JSONReader reader; |
- std::unique_ptr<base::Value> root(reader.ReadToValue(input)); |
- ASSERT_TRUE(root) << reader.GetErrorMessage(); |
+ std::unique_ptr<base::Value> root; |
+ base::ListValue* events; |
+ ASSERT_TRUE(ReadNetLogFromDisk(&root, &events)); |
// Check that 2 events are written. |
- base::DictionaryValue* dict; |
- ASSERT_TRUE(root->GetAsDictionary(&dict)); |
- base::ListValue* events; |
- ASSERT_TRUE(dict->GetList("events", &events)); |
ASSERT_EQ(2u, events->GetSize()); |
} |
@@ -305,24 +310,17 @@ TEST_F(BoundedFileNetLogObserverTest, EqualToOneFile) { |
closure.WaitForResult(); |
- std::string input; |
- AddAllFiles(&input); |
- ASSERT_FALSE(input.empty()); |
- |
- base::JSONReader reader; |
- std::unique_ptr<base::Value> root(reader.ReadToValue(input)); |
- ASSERT_TRUE(root) << reader.GetErrorMessage(); |
+ std::unique_ptr<base::Value> root; |
+ base::ListValue* events; |
+ ASSERT_TRUE(ReadNetLogFromDisk(&root, &events)); |
// Check that the correct number of events were written. |
- base::DictionaryValue* dict; |
- ASSERT_TRUE(root->GetAsDictionary(&dict)); |
- base::ListValue* events; |
- ASSERT_TRUE(dict->GetList("events", &events)); |
ASSERT_EQ(static_cast<size_t>(kNumEvents), events->GetSize()); |
// Check that the last event in array is the last event written. |
base::Value* last_event = nullptr; |
ASSERT_TRUE(events->Get(events->GetSize() - 1, &last_event)); |
+ base::DictionaryValue* dict; |
last_event->GetAsDictionary(&dict); |
base::Value* id_value = nullptr; |
ASSERT_TRUE(dict->Get("source.id", &id_value)); |
@@ -367,24 +365,17 @@ TEST_F(BoundedFileNetLogObserverTest, OneEventOverOneFile) { |
closure.WaitForResult(); |
- std::string input; |
- AddAllFiles(&input); |
- ASSERT_FALSE(input.empty()); |
- |
- base::JSONReader reader; |
- std::unique_ptr<base::Value> root(reader.ReadToValue(input)); |
- ASSERT_TRUE(root) << reader.GetErrorMessage(); |
+ std::unique_ptr<base::Value> root; |
+ base::ListValue* events; |
+ ASSERT_TRUE(ReadNetLogFromDisk(&root, &events)); |
// Check that the correct number of events were written. |
- base::DictionaryValue* dict; |
- ASSERT_TRUE(root->GetAsDictionary(&dict)); |
- base::ListValue* events; |
- ASSERT_TRUE(dict->GetList("events", &events)); |
ASSERT_EQ(static_cast<size_t>(kNumEvents), events->GetSize()); |
// Check that the last event in array is the last event written. |
base::Value* last_event = nullptr; |
ASSERT_TRUE(events->Get(events->GetSize() - 1, &last_event)); |
+ base::DictionaryValue* dict; |
last_event->GetAsDictionary(&dict); |
base::Value* id_value = nullptr; |
ASSERT_TRUE(dict->Get("source.id", &id_value)); |
@@ -417,24 +408,17 @@ TEST_F(BoundedFileNetLogObserverTest, EqualToTwoFiles) { |
closure.WaitForResult(); |
- std::string input; |
- AddAllFiles(&input); |
- ASSERT_FALSE(input.empty()); |
- |
- base::JSONReader reader; |
- std::unique_ptr<base::Value> root(reader.ReadToValue(input)); |
- ASSERT_TRUE(root) << reader.GetErrorMessage(); |
+ std::unique_ptr<base::Value> root; |
+ base::ListValue* events; |
+ ASSERT_TRUE(ReadNetLogFromDisk(&root, &events)); |
// Check that the correct number of events were written. |
- base::DictionaryValue* dict; |
- ASSERT_TRUE(root->GetAsDictionary(&dict)); |
- base::ListValue* events; |
- ASSERT_TRUE(dict->GetList("events", &events)); |
ASSERT_EQ(static_cast<size_t>(kNumEvents), events->GetSize()); |
// Check that the last event in array is the last event written. |
base::Value* last_event = nullptr; |
ASSERT_TRUE(events->Get(events->GetSize() - 1, &last_event)); |
+ base::DictionaryValue* dict; |
last_event->GetAsDictionary(&dict); |
base::Value* id_value = nullptr; |
ASSERT_TRUE(dict->Get("source.id", &id_value)); |
@@ -482,24 +466,17 @@ TEST_F(BoundedFileNetLogObserverTest, FillAllFilesNoOverwriting) { |
closure.WaitForResult(); |
- std::string input; |
- AddAllFiles(&input); |
- ASSERT_FALSE(input.empty()); |
- |
- base::JSONReader reader; |
- std::unique_ptr<base::Value> root(reader.ReadToValue(input)); |
- ASSERT_TRUE(root) << reader.GetErrorMessage(); |
+ std::unique_ptr<base::Value> root; |
+ base::ListValue* events; |
+ ASSERT_TRUE(ReadNetLogFromDisk(&root, &events)); |
// Check that the correct number of events were written. |
- base::DictionaryValue* dict; |
- ASSERT_TRUE(root->GetAsDictionary(&dict)); |
- base::ListValue* events; |
- ASSERT_TRUE(dict->GetList("events", &events)); |
ASSERT_EQ(static_cast<size_t>(kNumEvents), events->GetSize()); |
// Check that the last event in array is the last event written. |
base::Value* last_event = nullptr; |
ASSERT_TRUE(events->Get(events->GetSize() - 1, &last_event)); |
+ base::DictionaryValue* dict; |
last_event->GetAsDictionary(&dict); |
base::Value* id_value = nullptr; |
ASSERT_TRUE(dict->Get("source.id", &id_value)); |
@@ -540,19 +517,11 @@ TEST_F(BoundedFileNetLogObserverTest, DropOldEventsFromWriteQueue) { |
closure.WaitForResult(); |
- std::string input; |
- AddAllFiles(&input); |
- ASSERT_FALSE(input.empty()); |
- |
- base::JSONReader reader; |
- std::unique_ptr<base::Value> root(reader.ReadToValue(input)); |
- ASSERT_TRUE(root) << reader.GetErrorMessage(); |
+ std::unique_ptr<base::Value> root; |
+ base::ListValue* events; |
+ ASSERT_TRUE(ReadNetLogFromDisk(&root, &events)); |
// Check that the correct number of events were written. |
- base::DictionaryValue* dict; |
- ASSERT_TRUE(root->GetAsDictionary(&dict)); |
- base::ListValue* events; |
- ASSERT_TRUE(dict->GetList("events", &events)); |
ASSERT_EQ( |
static_cast<size_t>(kTotalNumFiles * ((kFileSize - 1) / kEventSize + 1)), |
events->GetSize()); |
@@ -560,6 +529,7 @@ TEST_F(BoundedFileNetLogObserverTest, DropOldEventsFromWriteQueue) { |
// Check that the oldest event was dropped from the queue. |
base::Value* event_to_check = nullptr; |
ASSERT_TRUE(events->Get(0, &event_to_check)); |
+ base::DictionaryValue* dict; |
event_to_check->GetAsDictionary(&dict); |
base::Value* id_value = nullptr; |
ASSERT_TRUE(dict->Get("source.id", &id_value)); |
@@ -599,19 +569,9 @@ TEST_F(BoundedFileNetLogObserverTest, OverwriteAllFiles) { |
closure.WaitForResult(); |
- std::string input; |
- AddAllFiles(&input); |
- ASSERT_FALSE(input.empty()); |
- |
- base::JSONReader reader; |
- std::unique_ptr<base::Value> root(reader.ReadToValue(input)); |
- ASSERT_TRUE(root) << reader.GetErrorMessage(); |
- |
- // Check that the correct number of events were written. |
- base::DictionaryValue* dict; |
- ASSERT_TRUE(root->GetAsDictionary(&dict)); |
+ std::unique_ptr<base::Value> root; |
base::ListValue* events; |
- ASSERT_TRUE(dict->GetList("events", &events)); |
+ ASSERT_TRUE(ReadNetLogFromDisk(&root, &events)); |
// Check that the minimum number of events that should fit in event files |
// have been written to all files. |
@@ -635,6 +595,7 @@ TEST_F(BoundedFileNetLogObserverTest, OverwriteAllFiles) { |
// file, mark the corresponding bool in |events_written| as true. |
for (size_t i = 0; i < events->GetSize(); i++) { |
ASSERT_TRUE(events->Get(i, &event)); |
+ base::DictionaryValue* dict; |
event->GetAsDictionary(&dict); |
ASSERT_TRUE(dict->Get("source.id", &id_value)); |
ASSERT_TRUE(id_value->GetAsInteger(&id)); |
@@ -685,18 +646,9 @@ TEST_F(BoundedFileNetLogObserverTest, PartiallyOverwriteFiles) { |
closure.WaitForResult(); |
- std::string input; |
- AddAllFiles(&input); |
- ASSERT_FALSE(input.empty()); |
- |
- base::JSONReader reader; |
- std::unique_ptr<base::Value> root(reader.ReadToValue(input)); |
- ASSERT_TRUE(root) << reader.GetErrorMessage(); |
- |
- base::DictionaryValue* dict; |
- ASSERT_TRUE(root->GetAsDictionary(&dict)); |
+ std::unique_ptr<base::Value> root; |
base::ListValue* events; |
- ASSERT_TRUE(dict->GetList("events", &events)); |
+ ASSERT_TRUE(ReadNetLogFromDisk(&root, &events)); |
// Check that the minimum number of events that should fit in event files |
// have been written to a file. |
@@ -712,6 +664,7 @@ TEST_F(BoundedFileNetLogObserverTest, PartiallyOverwriteFiles) { |
int id; |
for (size_t i = 0; i < events->GetSize(); i++) { |
ASSERT_TRUE(events->Get(i, &event)); |
+ base::DictionaryValue* dict; |
event->GetAsDictionary(&dict); |
ASSERT_TRUE(dict->Get("source.id", &id_value)); |
ASSERT_TRUE(id_value->GetAsInteger(&id)); |
@@ -748,13 +701,9 @@ TEST_F(BoundedFileNetLogObserverTest, CustomConstants) { |
closure.WaitForResult(); |
- std::string input; |
- AddAllFiles(&input); |
- ASSERT_FALSE(input.empty()); |
- |
- base::JSONReader reader; |
- std::unique_ptr<base::Value> root(reader.ReadToValue(input)); |
- ASSERT_TRUE(root) << reader.GetErrorMessage(); |
+ std::unique_ptr<base::Value> root; |
+ base::ListValue* events; |
+ ASSERT_TRUE(ReadNetLogFromDisk(&root, &events)); |
// Check that custom constant was correctly printed. |
base::DictionaryValue* dict; |
@@ -784,22 +733,16 @@ TEST_F(BoundedFileNetLogObserverTest, GeneratesValidJSONWithContext) { |
closure.WaitForResult(); |
- std::string input; |
- AddAllFiles(&input); |
- ASSERT_FALSE(input.empty()); |
- |
- base::JSONReader reader; |
- std::unique_ptr<base::Value> root(reader.ReadToValue(input)); |
- ASSERT_TRUE(root) << reader.GetErrorMessage(); |
+ std::unique_ptr<base::Value> root; |
+ base::ListValue* events; |
+ ASSERT_TRUE(ReadNetLogFromDisk(&root, &events)); |
// Check that no events were written. |
- base::DictionaryValue* dict; |
- ASSERT_TRUE(root->GetAsDictionary(&dict)); |
- base::ListValue* events; |
- ASSERT_TRUE(dict->GetList("events", &events)); |
ASSERT_EQ(0u, events->GetSize()); |
// Make sure additional information is present and validate it. |
+ base::DictionaryValue* dict; |
+ ASSERT_TRUE(root->GetAsDictionary(&dict)); |
base::DictionaryValue* tab_info; |
base::DictionaryValue* quic_info; |
ASSERT_TRUE(dict->GetDictionary("tabInfo", &tab_info)); |
@@ -835,22 +778,16 @@ TEST_F(BoundedFileNetLogObserverTest, |
closure.WaitForResult(); |
- std::string input; |
- AddAllFiles(&input); |
- ASSERT_FALSE(input.empty()); |
- |
- base::JSONReader reader; |
- std::unique_ptr<base::Value> root(reader.ReadToValue(input)); |
- ASSERT_TRUE(root) << reader.GetErrorMessage(); |
+ std::unique_ptr<base::Value> root; |
+ base::ListValue* events; |
+ ASSERT_TRUE(ReadNetLogFromDisk(&root, &events)); |
// Check that 1 event was written |
- base::DictionaryValue* dict; |
- ASSERT_TRUE(root->GetAsDictionary(&dict)); |
- base::ListValue* events; |
- ASSERT_TRUE(dict->GetList("events", &events)); |
ASSERT_EQ(1u, events->GetSize()); |
// Make sure additional information is present, but don't validate it. |
+ base::DictionaryValue* dict; |
+ ASSERT_TRUE(root->GetAsDictionary(&dict)); |
base::DictionaryValue* tab_info; |
ASSERT_TRUE(dict->GetDictionary("tabInfo", &tab_info)); |
} |