| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/base/load_log_unittest.h" | 5 #include "net/base/load_log_unittest.h" |
| 6 #include "testing/gtest/include/gtest/gtest.h" | 6 #include "testing/gtest/include/gtest/gtest.h" |
| 7 | 7 |
| 8 namespace net { | 8 namespace net { |
| 9 | 9 |
| 10 namespace { | 10 namespace { |
| (...skipping 23 matching lines...) Expand all Loading... |
| 34 LoadLog::PHASE_NONE))); | 34 LoadLog::PHASE_NONE))); |
| 35 log->Add( | 35 log->Add( |
| 36 LoadLog::Entry( | 36 LoadLog::Entry( |
| 37 MakeTime(11), | 37 MakeTime(11), |
| 38 LoadLog::Event(LoadLog::TYPE_HOST_RESOLVER_IMPL_OBSERVER_ONSTART, | 38 LoadLog::Event(LoadLog::TYPE_HOST_RESOLVER_IMPL_OBSERVER_ONSTART, |
| 39 LoadLog::PHASE_END))); | 39 LoadLog::PHASE_END))); |
| 40 | 40 |
| 41 EXPECT_EQ(3u, log->entries().size()); | 41 EXPECT_EQ(3u, log->entries().size()); |
| 42 EXPECT_EQ(0u, log->num_entries_truncated()); | 42 EXPECT_EQ(0u, log->num_entries_truncated()); |
| 43 | 43 |
| 44 ExpectLogContains(log, 0, MakeTime(0), LoadLog::TYPE_HOST_RESOLVER_IMPL, | 44 EXPECT_TRUE(LogContainsEventAtTime( |
| 45 LoadLog::PHASE_BEGIN); | 45 *log, 0, MakeTime(0), LoadLog::TYPE_HOST_RESOLVER_IMPL, |
| 46 LoadLog::PHASE_BEGIN)); |
| 46 | 47 |
| 47 ExpectLogContains(log, 1, MakeTime(2), LoadLog::TYPE_CANCELLED, | 48 EXPECT_TRUE(LogContainsEventAtTime( |
| 48 LoadLog::PHASE_NONE); | 49 *log, 1, MakeTime(2), LoadLog::TYPE_CANCELLED, LoadLog::PHASE_NONE)); |
| 49 | 50 |
| 50 ExpectLogContains(log, 2, MakeTime(11), | 51 EXPECT_TRUE(LogContainsEventAtTime( |
| 51 LoadLog::TYPE_HOST_RESOLVER_IMPL_OBSERVER_ONSTART, | 52 *log, 2, MakeTime(11), LoadLog::TYPE_HOST_RESOLVER_IMPL_OBSERVER_ONSTART, |
| 52 LoadLog::PHASE_END); | 53 LoadLog::PHASE_END)); |
| 53 } | 54 } |
| 54 | 55 |
| 55 // Test that the log's size is strictly bounded. | 56 // Test that the log's size is strictly bounded. |
| 56 TEST(LoadLogTest, Truncation) { | 57 TEST(LoadLogTest, Truncation) { |
| 57 size_t kMaxNumEntries = 10; | 58 size_t kMaxNumEntries = 10; |
| 58 scoped_refptr<LoadLog> log(new LoadLog(kMaxNumEntries)); | 59 scoped_refptr<LoadLog> log(new LoadLog(kMaxNumEntries)); |
| 59 | 60 |
| 60 // Max it out. | 61 // Max it out. |
| 61 for (size_t i = 0; i < kMaxNumEntries; ++i) { | 62 for (size_t i = 0; i < kMaxNumEntries; ++i) { |
| 62 log->Add(LoadLog::Entry(MakeTime(i), | 63 log->Add(LoadLog::Entry(MakeTime(i), |
| 63 LoadLog::Event(LoadLog::TYPE_CANCELLED, | 64 LoadLog::Event(LoadLog::TYPE_CANCELLED, |
| 64 LoadLog::PHASE_NONE))); | 65 LoadLog::PHASE_NONE))); |
| 65 } | 66 } |
| 66 | 67 |
| 67 EXPECT_EQ(kMaxNumEntries, log->entries().size()); | 68 EXPECT_EQ(kMaxNumEntries, log->entries().size()); |
| 68 EXPECT_EQ(0u, log->num_entries_truncated()); | 69 EXPECT_EQ(0u, log->num_entries_truncated()); |
| 69 | 70 |
| 70 // Check the last entry. | 71 // Check the last entry. |
| 71 ExpectLogContains(log, 9, MakeTime(9), | 72 EXPECT_TRUE(LogContainsEventAtTime( |
| 72 LoadLog::TYPE_CANCELLED, | 73 *log, 9, MakeTime(9), LoadLog::TYPE_CANCELLED, LoadLog::PHASE_NONE)); |
| 73 LoadLog::PHASE_NONE); | |
| 74 | 74 |
| 75 // Add three entries while maxed out (will cause truncation) | 75 // Add three entries while maxed out (will cause truncation) |
| 76 log->Add(LoadLog::Entry(MakeTime(0), | 76 log->Add(LoadLog::Entry(MakeTime(0), |
| 77 LoadLog::Event(LoadLog::TYPE_CANCELLED, | 77 LoadLog::Event(LoadLog::TYPE_CANCELLED, |
| 78 LoadLog::PHASE_NONE))); | 78 LoadLog::PHASE_NONE))); |
| 79 log->Add(LoadLog::Entry(MakeTime(1), | 79 log->Add(LoadLog::Entry(MakeTime(1), |
| 80 LoadLog::Event(LoadLog::TYPE_CANCELLED, | 80 LoadLog::Event(LoadLog::TYPE_CANCELLED, |
| 81 LoadLog::PHASE_NONE))); | 81 LoadLog::PHASE_NONE))); |
| 82 log->Add(LoadLog::Entry(MakeTime(2), | 82 log->Add(LoadLog::Entry(MakeTime(2), |
| 83 LoadLog::Event(LoadLog::TYPE_CANCELLED, | 83 LoadLog::Event(LoadLog::TYPE_CANCELLED, |
| 84 LoadLog::PHASE_NONE))); | 84 LoadLog::PHASE_NONE))); |
| 85 | 85 |
| 86 EXPECT_EQ(kMaxNumEntries, log->entries().size()); | 86 EXPECT_EQ(kMaxNumEntries, log->entries().size()); |
| 87 EXPECT_EQ(3u, log->num_entries_truncated()); | 87 EXPECT_EQ(3u, log->num_entries_truncated()); |
| 88 | 88 |
| 89 // Check the last entry -- it should be the final entry we added. | 89 // Check the last entry -- it should be the final entry we added. |
| 90 ExpectLogContains(log, 9, MakeTime(2), | 90 EXPECT_TRUE(LogContainsEventAtTime( |
| 91 LoadLog::TYPE_CANCELLED, | 91 *log, 9, MakeTime(2), LoadLog::TYPE_CANCELLED, LoadLog::PHASE_NONE)); |
| 92 LoadLog::PHASE_NONE); | |
| 93 } | 92 } |
| 94 | 93 |
| 95 TEST(LoadLogTest, Append) { | 94 TEST(LoadLogTest, Append) { |
| 96 scoped_refptr<LoadLog> log1(new LoadLog(10)); | 95 scoped_refptr<LoadLog> log1(new LoadLog(10)); |
| 97 scoped_refptr<LoadLog> log2(new LoadLog(10)); | 96 scoped_refptr<LoadLog> log2(new LoadLog(10)); |
| 98 | 97 |
| 99 log1->Add(LoadLog::Entry(MakeTime(0), | 98 log1->Add(LoadLog::Entry(MakeTime(0), |
| 100 LoadLog::Event(LoadLog::TYPE_HOST_RESOLVER_IMPL, | 99 LoadLog::Event(LoadLog::TYPE_HOST_RESOLVER_IMPL, |
| 101 LoadLog::PHASE_BEGIN))); | 100 LoadLog::PHASE_BEGIN))); |
| 102 | 101 |
| 103 log2->Add(LoadLog::Entry(MakeTime(3), | 102 log2->Add(LoadLog::Entry(MakeTime(3), |
| 104 LoadLog::Event(LoadLog::TYPE_CANCELLED, | 103 LoadLog::Event(LoadLog::TYPE_CANCELLED, |
| 105 LoadLog::PHASE_NONE))); | 104 LoadLog::PHASE_NONE))); |
| 106 log2->Add(LoadLog::Entry(MakeTime(9), | 105 log2->Add(LoadLog::Entry(MakeTime(9), |
| 107 LoadLog::Event(LoadLog::TYPE_HOST_RESOLVER_IMPL, | 106 LoadLog::Event(LoadLog::TYPE_HOST_RESOLVER_IMPL, |
| 108 LoadLog::PHASE_END))); | 107 LoadLog::PHASE_END))); |
| 109 | 108 |
| 110 log1->Append(log2); | 109 log1->Append(log2); |
| 111 | 110 |
| 112 // Add something else to log2 (should NOT be reflected in log1). | 111 // Add something else to log2 (should NOT be reflected in log1). |
| 113 log2->Add(LoadLog::Entry(MakeTime(19), | 112 log2->Add(LoadLog::Entry(MakeTime(19), |
| 114 LoadLog::Event(LoadLog::TYPE_CANCELLED, | 113 LoadLog::Event(LoadLog::TYPE_CANCELLED, |
| 115 LoadLog::PHASE_NONE))); | 114 LoadLog::PHASE_NONE))); |
| 116 | 115 |
| 117 EXPECT_EQ(3u, log1->entries().size()); | 116 EXPECT_EQ(3u, log1->entries().size()); |
| 118 EXPECT_EQ(0u, log1->num_entries_truncated()); | 117 EXPECT_EQ(0u, log1->num_entries_truncated()); |
| 119 | 118 |
| 120 ExpectLogContains(log1, 0, MakeTime(0), LoadLog::TYPE_HOST_RESOLVER_IMPL, | 119 EXPECT_TRUE(LogContainsEventAtTime( |
| 121 LoadLog::PHASE_BEGIN); | 120 *log1, 0, MakeTime(0), LoadLog::TYPE_HOST_RESOLVER_IMPL, |
| 121 LoadLog::PHASE_BEGIN)); |
| 122 | 122 |
| 123 ExpectLogContains(log1, 1, MakeTime(3), LoadLog::TYPE_CANCELLED, | 123 EXPECT_TRUE(LogContainsEventAtTime( |
| 124 LoadLog::PHASE_NONE); | 124 *log1, 1, MakeTime(3), LoadLog::TYPE_CANCELLED, |
| 125 LoadLog::PHASE_NONE)); |
| 125 | 126 |
| 126 ExpectLogContains(log1, 2, MakeTime(9), LoadLog::TYPE_HOST_RESOLVER_IMPL, | 127 EXPECT_TRUE(LogContainsEventAtTime( |
| 127 LoadLog::PHASE_END); | 128 *log1, 2, MakeTime(9), LoadLog::TYPE_HOST_RESOLVER_IMPL, |
| 129 LoadLog::PHASE_END)); |
| 128 } | 130 } |
| 129 | 131 |
| 130 TEST(LoadLogTest, AppendWithTruncation) { | 132 TEST(LoadLogTest, AppendWithTruncation) { |
| 131 // Append() should also respect the maximum number of entries bound. | 133 // Append() should also respect the maximum number of entries bound. |
| 132 // (This is basically the same test as LoadLogTest.Truncation). | 134 // (This is basically the same test as LoadLogTest.Truncation). |
| 133 | 135 |
| 134 // Create two load logs, which both have 6 out of 10 entries filled. | 136 // Create two load logs, which both have 6 out of 10 entries filled. |
| 135 size_t kMaxNumEntries = 10; | 137 size_t kMaxNumEntries = 10; |
| 136 scoped_refptr<LoadLog> log1(new LoadLog(kMaxNumEntries)); | 138 scoped_refptr<LoadLog> log1(new LoadLog(kMaxNumEntries)); |
| 137 scoped_refptr<LoadLog> log2(new LoadLog(kMaxNumEntries)); | 139 scoped_refptr<LoadLog> log2(new LoadLog(kMaxNumEntries)); |
| 138 for (size_t i = 0; i < 6; ++i) { | 140 for (size_t i = 0; i < 6; ++i) { |
| 139 log1->Add(LoadLog::Entry(MakeTime(i), | 141 log1->Add(LoadLog::Entry(MakeTime(i), |
| 140 LoadLog::Event(LoadLog::TYPE_CANCELLED, | 142 LoadLog::Event(LoadLog::TYPE_CANCELLED, |
| 141 LoadLog::PHASE_NONE))); | 143 LoadLog::PHASE_NONE))); |
| 142 log2->Add(LoadLog::Entry(MakeTime(2 * i), | 144 log2->Add(LoadLog::Entry(MakeTime(2 * i), |
| 143 LoadLog::Event(LoadLog::TYPE_CANCELLED, | 145 LoadLog::Event(LoadLog::TYPE_CANCELLED, |
| 144 LoadLog::PHASE_NONE))); | 146 LoadLog::PHASE_NONE))); |
| 145 } | 147 } |
| 146 | 148 |
| 147 // Append log2 to log1. | 149 // Append log2 to log1. |
| 148 log1->Append(log2); | 150 log1->Append(log2); |
| 149 | 151 |
| 150 // The combined log totalled 12 entries, so 2 must have been dropped. | 152 // The combined log totalled 12 entries, so 2 must have been dropped. |
| 151 EXPECT_EQ(10u, log1->entries().size()); | 153 EXPECT_EQ(10u, log1->entries().size()); |
| 152 EXPECT_EQ(2u, log1->num_entries_truncated()); | 154 EXPECT_EQ(2u, log1->num_entries_truncated()); |
| 153 | 155 |
| 154 // Combined log should end with the final entry of log2. | 156 // Combined log should end with the final entry of log2. |
| 155 ExpectLogContains(log1, 9, MakeTime(10), LoadLog::TYPE_CANCELLED, | 157 EXPECT_TRUE(LogContainsEventAtTime( |
| 156 LoadLog::PHASE_NONE); | 158 *log1, 9, MakeTime(10), LoadLog::TYPE_CANCELLED, LoadLog::PHASE_NONE)); |
| 157 } | 159 } |
| 158 | 160 |
| 159 TEST(LoadLogTest, EventTypeToString) { | 161 TEST(LoadLogTest, EventTypeToString) { |
| 160 EXPECT_STREQ("HOST_RESOLVER_IMPL", | 162 EXPECT_STREQ("HOST_RESOLVER_IMPL", |
| 161 LoadLog::EventTypeToString(LoadLog::TYPE_HOST_RESOLVER_IMPL)); | 163 LoadLog::EventTypeToString(LoadLog::TYPE_HOST_RESOLVER_IMPL)); |
| 162 EXPECT_STREQ("HOST_RESOLVER_IMPL_OBSERVER_ONSTART", | 164 EXPECT_STREQ("HOST_RESOLVER_IMPL_OBSERVER_ONSTART", |
| 163 LoadLog::EventTypeToString( | 165 LoadLog::EventTypeToString( |
| 164 LoadLog::TYPE_HOST_RESOLVER_IMPL_OBSERVER_ONSTART)); | 166 LoadLog::TYPE_HOST_RESOLVER_IMPL_OBSERVER_ONSTART)); |
| 165 } | 167 } |
| 166 | 168 |
| 167 TEST(LoadLogTest, String) { | 169 TEST(LoadLogTest, String) { |
| 168 scoped_refptr<LoadLog> log(new LoadLog(10)); | 170 scoped_refptr<LoadLog> log(new LoadLog(10)); |
| 169 | 171 |
| 170 // Make sure that AddStringLiteral() adds a literal and not a std::string. | 172 // Make sure that AddStringLiteral() adds a literal and not a std::string. |
| 171 // (in case there is any funny-business with implicit conversions). | 173 // (in case there is any funny-business with implicit conversions). |
| 172 LoadLog::AddStringLiteral(log, "This is a literal"); | 174 LoadLog::AddStringLiteral(log, "This is a literal"); |
| 173 log->Add(LoadLog::Entry(MakeTime(0), "Another literal")); | 175 log->Add(LoadLog::Entry(MakeTime(0), "Another literal")); |
| 174 log->Add(LoadLog::Entry(MakeTime(0), std::string("Now a std::string"))); | 176 log->Add(LoadLog::Entry(MakeTime(0), std::string("Now a std::string"))); |
| 175 | 177 |
| 176 ASSERT_EQ(3u, log->entries().size()); | 178 ASSERT_EQ(3u, log->entries().size()); |
| 177 EXPECT_EQ(LoadLog::Entry::TYPE_STRING_LITERAL, log->entries()[0].type); | 179 EXPECT_EQ(LoadLog::Entry::TYPE_STRING_LITERAL, log->entries()[0].type); |
| 178 EXPECT_EQ(LoadLog::Entry::TYPE_STRING_LITERAL, log->entries()[1].type); | 180 EXPECT_EQ(LoadLog::Entry::TYPE_STRING_LITERAL, log->entries()[1].type); |
| 179 EXPECT_EQ(LoadLog::Entry::TYPE_STRING, log->entries()[2].type); | 181 EXPECT_EQ(LoadLog::Entry::TYPE_STRING, log->entries()[2].type); |
| 180 } | 182 } |
| 181 | 183 |
| 182 } // namespace | 184 } // namespace |
| 183 } // namespace net | 185 } // namespace net |
| OLD | NEW |