OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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/disk_cache/simple/simple_index.h" | 5 #include "net/disk_cache/simple/simple_index.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <functional> | 8 #include <functional> |
9 #include <memory> | 9 #include <memory> |
10 #include <utility> | 10 #include <utility> |
(...skipping 16 matching lines...) Expand all Loading... |
27 | 27 |
28 namespace disk_cache { | 28 namespace disk_cache { |
29 namespace { | 29 namespace { |
30 | 30 |
31 const base::Time kTestLastUsedTime = | 31 const base::Time kTestLastUsedTime = |
32 base::Time::UnixEpoch() + base::TimeDelta::FromDays(20); | 32 base::Time::UnixEpoch() + base::TimeDelta::FromDays(20); |
33 const uint64_t kTestEntrySize = 789; | 33 const uint64_t kTestEntrySize = 789; |
34 | 34 |
35 } // namespace | 35 } // namespace |
36 | 36 |
37 | 37 class EntryMetadataTest : public testing::Test { |
38 class EntryMetadataTest : public testing::Test { | |
39 public: | 38 public: |
40 EntryMetadata NewEntryMetadataWithValues() { | 39 EntryMetadata NewEntryMetadataWithValues() { |
41 return EntryMetadata(kTestLastUsedTime, kTestEntrySize); | 40 return EntryMetadata(kTestLastUsedTime, kTestEntrySize); |
42 } | 41 } |
43 | 42 |
44 void CheckEntryMetadataValues(const EntryMetadata& entry_metadata) { | 43 void CheckEntryMetadataValues(const EntryMetadata& entry_metadata) { |
45 EXPECT_LT(kTestLastUsedTime - base::TimeDelta::FromSeconds(2), | 44 EXPECT_LT(kTestLastUsedTime - base::TimeDelta::FromSeconds(2), |
46 entry_metadata.GetLastUsedTime()); | 45 entry_metadata.GetLastUsedTime()); |
47 EXPECT_GT(kTestLastUsedTime + base::TimeDelta::FromSeconds(2), | 46 EXPECT_GT(kTestLastUsedTime + base::TimeDelta::FromSeconds(2), |
48 entry_metadata.GetLastUsedTime()); | 47 entry_metadata.GetLastUsedTime()); |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
179 | 178 |
180 const base::Time new_time = base::Time::Now(); | 179 const base::Time new_time = base::Time::Now(); |
181 entry_metadata.SetLastUsedTime(new_time); | 180 entry_metadata.SetLastUsedTime(new_time); |
182 | 181 |
183 EXPECT_LT(new_time - base::TimeDelta::FromSeconds(2), | 182 EXPECT_LT(new_time - base::TimeDelta::FromSeconds(2), |
184 entry_metadata.GetLastUsedTime()); | 183 entry_metadata.GetLastUsedTime()); |
185 EXPECT_GT(new_time + base::TimeDelta::FromSeconds(2), | 184 EXPECT_GT(new_time + base::TimeDelta::FromSeconds(2), |
186 entry_metadata.GetLastUsedTime()); | 185 entry_metadata.GetLastUsedTime()); |
187 } | 186 } |
188 | 187 |
| 188 // Tests that setting an unusually small/large last used time results in |
| 189 // truncation (rather than crashing). |
| 190 TEST_F(EntryMetadataTest, SaturatedLastUsedTime) { |
| 191 EntryMetadata entry_metadata; |
| 192 |
| 193 // Set a time that is too large to be represented internally as 32-bit unix |
| 194 // timestamp. Will saturate to a large timestamp (in year 2106). |
| 195 entry_metadata.SetLastUsedTime(base::Time::Max()); |
| 196 EXPECT_EQ(INT64_C(15939440895000000), |
| 197 entry_metadata.GetLastUsedTime().ToInternalValue()); |
| 198 |
| 199 // Set a time that is too small to be represented by a unix timestamp (before |
| 200 // 1970). |
| 201 entry_metadata.SetLastUsedTime( |
| 202 base::Time::FromInternalValue(7u)); // This is a date in 1601. |
| 203 EXPECT_EQ(base::Time::UnixEpoch() + base::TimeDelta::FromSeconds(1), |
| 204 entry_metadata.GetLastUsedTime()); |
| 205 } |
| 206 |
189 TEST_F(EntryMetadataTest, Serialize) { | 207 TEST_F(EntryMetadataTest, Serialize) { |
190 EntryMetadata entry_metadata = NewEntryMetadataWithValues(); | 208 EntryMetadata entry_metadata = NewEntryMetadataWithValues(); |
191 | 209 |
192 base::Pickle pickle; | 210 base::Pickle pickle; |
193 entry_metadata.Serialize(&pickle); | 211 entry_metadata.Serialize(&pickle); |
194 | 212 |
195 base::PickleIterator it(pickle); | 213 base::PickleIterator it(pickle); |
196 EntryMetadata new_entry_metadata; | 214 EntryMetadata new_entry_metadata; |
197 new_entry_metadata.Deserialize(&it); | 215 new_entry_metadata.Deserialize(&it); |
198 CheckEntryMetadataValues(new_entry_metadata); | 216 CheckEntryMetadataValues(new_entry_metadata); |
(...skipping 421 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
620 WaitForTimeChange(); | 638 WaitForTimeChange(); |
621 EXPECT_EQ(expected_trigger, index()->write_to_disk_timer_.desired_run_time()); | 639 EXPECT_EQ(expected_trigger, index()->write_to_disk_timer_.desired_run_time()); |
622 index()->Insert(hashes_.at<2>()); | 640 index()->Insert(hashes_.at<2>()); |
623 index()->UpdateEntrySize(hashes_.at<2>(), 40); | 641 index()->UpdateEntrySize(hashes_.at<2>(), 40); |
624 EXPECT_TRUE(index()->write_to_disk_timer_.IsRunning()); | 642 EXPECT_TRUE(index()->write_to_disk_timer_.IsRunning()); |
625 EXPECT_LT(expected_trigger, index()->write_to_disk_timer_.desired_run_time()); | 643 EXPECT_LT(expected_trigger, index()->write_to_disk_timer_.desired_run_time()); |
626 index()->write_to_disk_timer_.Stop(); | 644 index()->write_to_disk_timer_.Stop(); |
627 } | 645 } |
628 | 646 |
629 } // namespace disk_cache | 647 } // namespace disk_cache |
OLD | NEW |