Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(167)

Side by Side Diff: components/precache/core/precache_session_table_unittest.cc

Issue 1961153003: Add pause/resume functionality to precache (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: test fix Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 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 "base/compiler_specific.h"
6 #include "base/time/time.h"
7 #include "components/precache/core/precache_session_table.h"
8 #include "components/precache/core/proto/unfinished_work.pb.h"
9 #include "sql/connection.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11 #include "url/gurl.h"
12
13 namespace precache {
14
15 namespace {
16
17 class PrecacheSessionTableTest : public testing::Test {
18 public:
19 PrecacheSessionTableTest() {}
20 ~PrecacheSessionTableTest() override {}
21
22 protected:
23 void SetUp() override {
24 precache_session_table_.reset(new PrecacheSessionTable());
25 db_.reset(new sql::Connection());
26 ASSERT_TRUE(db_->OpenInMemory());
27 precache_session_table_->Init(db_.get());
28 }
29
30 std::unique_ptr<PrecacheSessionTable> precache_session_table_;
31 std::unique_ptr<sql::Connection> db_;
32 };
33
34 TEST_F(PrecacheSessionTableTest, SaveAndGetUnfinishedWork) {
35 std::unique_ptr<PrecacheUnfinishedWork> unfinished_work(
36 new PrecacheUnfinishedWork());
37 unfinished_work->add_top_host()->set_hostname("foo.com");
38 unfinished_work->add_top_host()->set_hostname("bar.com");
39 auto s = unfinished_work->mutable_config_settings();
40 s->set_top_sites_count(11);
41 s->add_forced_site("baz.com");
42 s->set_top_resources_count(12);
43 s->set_max_bytes_per_resource(501);
44 s->set_max_bytes_total(1001);
45 unfinished_work->add_manifest()->set_url("http://a.com/");
46 unfinished_work->add_manifest()->set_url("http://b.com/");
47 unfinished_work->add_manifest()->set_url("http://c.com/");
48 unfinished_work->add_resource()->set_url("http://x.com/");
49 unfinished_work->add_resource()->set_url("http://y.com/");
50 unfinished_work->add_resource()->set_url("http://z.com/");
51 unfinished_work->set_total_bytes(13);
52 unfinished_work->set_network_bytes(14);
53 unfinished_work->set_num_manifest_urls(15);
54 base::Time sometime = base::Time::UnixEpoch();
55 unfinished_work->set_start_time(sometime.ToInternalValue());
56
57 precache_session_table_->SaveUnfinishedWork(std::move(unfinished_work));
58 std::unique_ptr<PrecacheUnfinishedWork> unfinished_work2 =
59 precache_session_table_->GetUnfinishedWork();
60
61 EXPECT_EQ("foo.com", unfinished_work2->top_host(0).hostname());
62 EXPECT_EQ("bar.com", unfinished_work2->top_host(1).hostname());
63 EXPECT_EQ(11, unfinished_work2->config_settings().top_sites_count());
64 EXPECT_EQ(1, unfinished_work2->config_settings().forced_site_size());
65 EXPECT_EQ("baz.com", unfinished_work2->config_settings().forced_site(0));
66 EXPECT_EQ(12, unfinished_work2->config_settings().top_resources_count());
67 EXPECT_EQ(501ul,
68 unfinished_work2->config_settings().max_bytes_per_resource());
69 EXPECT_EQ(1001ul, unfinished_work2->config_settings().max_bytes_total());
70 EXPECT_EQ(3, unfinished_work2->manifest_size());
71 EXPECT_EQ("http://a.com/", unfinished_work2->manifest(0).url());
72 EXPECT_EQ("http://b.com/", unfinished_work2->manifest(1).url());
73 EXPECT_EQ("http://c.com/", unfinished_work2->manifest(2).url());
74 EXPECT_EQ(3, unfinished_work2->resource_size());
75 EXPECT_EQ("http://x.com/", unfinished_work2->resource(0).url());
76 EXPECT_EQ("http://y.com/", unfinished_work2->resource(1).url());
77 EXPECT_EQ("http://z.com/", unfinished_work2->resource(2).url());
78 EXPECT_EQ(13ul, unfinished_work2->total_bytes());
79 EXPECT_EQ(14ul, unfinished_work2->network_bytes());
80 EXPECT_EQ(15ul, unfinished_work2->num_manifest_urls());
81 EXPECT_EQ(base::Time::UnixEpoch(),
82 base::Time::FromInternalValue(unfinished_work2->start_time()));
83 }
84
85 // Test that storing overwrites previous unfinished work.
86 TEST_F(PrecacheSessionTableTest, SaveAgainAndGet) {
87 std::unique_ptr<PrecacheUnfinishedWork> unfinished_work(
88 new PrecacheUnfinishedWork());
89 unfinished_work->add_manifest()->set_url("http://a.com/");
90 precache_session_table_->SaveUnfinishedWork(std::move(unfinished_work));
91
92 std::unique_ptr<PrecacheUnfinishedWork> unfinished_work2(
93 new PrecacheUnfinishedWork());
94 unfinished_work2->add_manifest()->set_url("http://b.com/");
95 precache_session_table_->SaveUnfinishedWork(std::move(unfinished_work2));
96
97 std::unique_ptr<PrecacheUnfinishedWork> unfinished_work3 =
98 precache_session_table_->GetUnfinishedWork();
99 EXPECT_EQ("http://b.com/", unfinished_work3->manifest(0).url());
100 }
101
102 // Test that reading does not remove unfinished work from storage.
103 TEST_F(PrecacheSessionTableTest, SaveAndGetAgain) {
104 std::unique_ptr<PrecacheUnfinishedWork> unfinished_work(
105 new PrecacheUnfinishedWork());
106 unfinished_work->add_manifest()->set_url("http://a.com/");
107 precache_session_table_->SaveUnfinishedWork(std::move(unfinished_work));
108
109 std::unique_ptr<PrecacheUnfinishedWork> unfinished_work2 =
110 precache_session_table_->GetUnfinishedWork();
111
112 std::unique_ptr<PrecacheUnfinishedWork> unfinished_work3 =
113 precache_session_table_->GetUnfinishedWork();
114
115 EXPECT_EQ("http://a.com/", unfinished_work3->manifest(0).url());
116 }
117
118 // Test that storing a large proto works.
119 TEST_F(PrecacheSessionTableTest, SaveManyURLs) {
120 std::unique_ptr<PrecacheUnfinishedWork> unfinished_work(
121 new PrecacheUnfinishedWork());
122 for (int i = 0; i < 1000; ++i)
123 unfinished_work->add_manifest()->set_url("http://a.com/");
124 precache_session_table_->SaveUnfinishedWork(std::move(unfinished_work));
125
126 std::unique_ptr<PrecacheUnfinishedWork> unfinished_work2 =
127 precache_session_table_->GetUnfinishedWork();
128
129 EXPECT_EQ(1000, unfinished_work2->manifest_size());
130 for (int i = 0; i < 1000; ++i)
131 EXPECT_EQ("http://a.com/", unfinished_work2->manifest(i).url());
132 }
133
134 // Test that reading after deletion returns no unfinished work.
135 TEST_F(PrecacheSessionTableTest, SaveDeleteGet) {
136 std::unique_ptr<PrecacheUnfinishedWork> unfinished_work(
137 new PrecacheUnfinishedWork());
138 unfinished_work->add_manifest()->set_url("http://a.com/");
139 precache_session_table_->SaveUnfinishedWork(std::move(unfinished_work));
140 precache_session_table_->DeleteUnfinishedWork();
141
142 std::unique_ptr<PrecacheUnfinishedWork> unfinished_work2 =
143 precache_session_table_->GetUnfinishedWork();
144
145 EXPECT_EQ(0, unfinished_work2->manifest_size());
146 }
147
148 } // namespace
149
150 } // namespace precache
OLDNEW
« no previous file with comments | « components/precache/core/precache_session_table.cc ('k') | components/precache/core/proto/unfinished_work.proto » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698