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

Side by Side Diff: net/tools/quic/quic_http_response_cache_test.cc

Issue 2603723002: Add a new QUIC platform API for text utilities. (Closed)
Patch Set: net/tools/quic/quic_packet_printer_bin.cc Created 3 years, 11 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
« no previous file with comments | « net/tools/quic/quic_http_response_cache.cc ('k') | net/tools/quic/quic_packet_printer_bin.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 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 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 <string> 5 #include <string>
6 6
7 #include "base/files/file_path.h" 7 #include "base/files/file_path.h"
8 #include "base/memory/singleton.h" 8 #include "base/memory/singleton.h"
9 #include "base/path_service.h" 9 #include "base/path_service.h"
10 #include "base/stl_util.h" 10 #include "base/stl_util.h"
11 #include "base/strings/string_number_conversions.h"
12 #include "base/strings/string_piece.h"
13 #include "net/quic/platform/api/quic_str_cat.h" 11 #include "net/quic/platform/api/quic_str_cat.h"
12 #include "net/quic/platform/api/quic_text_utils.h"
14 #include "net/spdy/spdy_framer.h" 13 #include "net/spdy/spdy_framer.h"
15 #include "net/tools/quic/quic_http_response_cache.h" 14 #include "net/tools/quic/quic_http_response_cache.h"
16 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
17 16
18 using base::ContainsKey; 17 using base::ContainsKey;
19 using base::IntToString;
20 using base::StringPiece; 18 using base::StringPiece;
21 using net::SpdyHeaderBlock; 19 using net::SpdyHeaderBlock;
22 using std::string; 20 using std::string;
23 21
24 namespace net { 22 namespace net {
25 namespace test { 23 namespace test {
26 24
27 namespace { 25 namespace {
28 typedef QuicHttpResponseCache::Response Response; 26 typedef QuicHttpResponseCache::Response Response;
29 typedef QuicHttpResponseCache::ServerPushInfo ServerPushInfo; 27 typedef QuicHttpResponseCache::ServerPushInfo ServerPushInfo;
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 } 69 }
72 70
73 TEST_F(QuicHttpResponseCacheTest, AddResponse) { 71 TEST_F(QuicHttpResponseCacheTest, AddResponse) {
74 const string kRequestHost = "www.foo.com"; 72 const string kRequestHost = "www.foo.com";
75 const string kRequestPath = "/"; 73 const string kRequestPath = "/";
76 const string kResponseBody("hello response"); 74 const string kResponseBody("hello response");
77 75
78 SpdyHeaderBlock response_headers; 76 SpdyHeaderBlock response_headers;
79 response_headers[":version"] = "HTTP/1.1"; 77 response_headers[":version"] = "HTTP/1.1";
80 response_headers[":status"] = "200"; 78 response_headers[":status"] = "200";
81 response_headers["content-length"] = IntToString(kResponseBody.size()); 79 response_headers["content-length"] =
80 QuicTextUtils::Uint64ToString(kResponseBody.size());
82 81
83 SpdyHeaderBlock response_trailers; 82 SpdyHeaderBlock response_trailers;
84 response_trailers["key-1"] = "value-1"; 83 response_trailers["key-1"] = "value-1";
85 response_trailers["key-2"] = "value-2"; 84 response_trailers["key-2"] = "value-2";
86 response_trailers["key-3"] = "value-3"; 85 response_trailers["key-3"] = "value-3";
87 86
88 cache_.AddResponse(kRequestHost, "/", response_headers.Clone(), kResponseBody, 87 cache_.AddResponse(kRequestHost, "/", response_headers.Clone(), kResponseBody,
89 response_trailers.Clone()); 88 response_trailers.Clone());
90 89
91 const QuicHttpResponseCache::Response* response = 90 const QuicHttpResponseCache::Response* response =
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 } 169 }
171 170
172 TEST_F(QuicHttpResponseCacheTest, AddSimpleResponseWithServerPushResources) { 171 TEST_F(QuicHttpResponseCacheTest, AddSimpleResponseWithServerPushResources) {
173 string request_host = "www.foo.com"; 172 string request_host = "www.foo.com";
174 string response_body("hello response"); 173 string response_body("hello response");
175 const size_t kNumResources = 5; 174 const size_t kNumResources = 5;
176 int NumResources = 5; 175 int NumResources = 5;
177 std::list<QuicHttpResponseCache::ServerPushInfo> push_resources; 176 std::list<QuicHttpResponseCache::ServerPushInfo> push_resources;
178 string scheme = "http"; 177 string scheme = "http";
179 for (int i = 0; i < NumResources; ++i) { 178 for (int i = 0; i < NumResources; ++i) {
180 string path = "/server_push_src" + base::IntToString(i); 179 string path = "/server_push_src" + QuicTextUtils::Uint64ToString(i);
181 string url = scheme + "://" + request_host + path; 180 string url = scheme + "://" + request_host + path;
182 GURL resource_url(url); 181 GURL resource_url(url);
183 string body = QuicStrCat("This is server push response body for ", path); 182 string body = QuicStrCat("This is server push response body for ", path);
184 SpdyHeaderBlock response_headers; 183 SpdyHeaderBlock response_headers;
185 response_headers[":version"] = "HTTP/1.1"; 184 response_headers[":version"] = "HTTP/1.1";
186 response_headers[":status"] = "200"; 185 response_headers[":status"] = "200";
187 response_headers["content-length"] = base::UintToString(body.size()); 186 response_headers["content-length"] =
187 QuicTextUtils::Uint64ToString(body.size());
188 push_resources.push_back( 188 push_resources.push_back(
189 ServerPushInfo(resource_url, response_headers.Clone(), i, body)); 189 ServerPushInfo(resource_url, response_headers.Clone(), i, body));
190 } 190 }
191 191
192 cache_.AddSimpleResponseWithServerPushResources( 192 cache_.AddSimpleResponseWithServerPushResources(
193 request_host, "/", 200, response_body, push_resources); 193 request_host, "/", 200, response_body, push_resources);
194 string request_url = request_host + "/"; 194 string request_url = request_host + "/";
195 std::list<ServerPushInfo> resources = 195 std::list<ServerPushInfo> resources =
196 cache_.GetServerPushResources(request_url); 196 cache_.GetServerPushResources(request_url);
197 ASSERT_EQ(kNumResources, resources.size()); 197 ASSERT_EQ(kNumResources, resources.size());
198 for (const auto& push_resource : push_resources) { 198 for (const auto& push_resource : push_resources) {
199 ServerPushInfo resource = resources.front(); 199 ServerPushInfo resource = resources.front();
200 EXPECT_EQ(resource.request_url.spec(), push_resource.request_url.spec()); 200 EXPECT_EQ(resource.request_url.spec(), push_resource.request_url.spec());
201 EXPECT_EQ(resource.priority, push_resource.priority); 201 EXPECT_EQ(resource.priority, push_resource.priority);
202 resources.pop_front(); 202 resources.pop_front();
203 } 203 }
204 } 204 }
205 205
206 TEST_F(QuicHttpResponseCacheTest, GetServerPushResourcesAndPushResponses) { 206 TEST_F(QuicHttpResponseCacheTest, GetServerPushResourcesAndPushResponses) {
207 string request_host = "www.foo.com"; 207 string request_host = "www.foo.com";
208 string response_body("hello response"); 208 string response_body("hello response");
209 const size_t kNumResources = 4; 209 const size_t kNumResources = 4;
210 int NumResources = 4; 210 int NumResources = 4;
211 string scheme = "http"; 211 string scheme = "http";
212 string push_response_status[kNumResources] = {"200", "200", "301", "404"}; 212 string push_response_status[kNumResources] = {"200", "200", "301", "404"};
213 std::list<QuicHttpResponseCache::ServerPushInfo> push_resources; 213 std::list<QuicHttpResponseCache::ServerPushInfo> push_resources;
214 for (int i = 0; i < NumResources; ++i) { 214 for (int i = 0; i < NumResources; ++i) {
215 string path = "/server_push_src" + base::IntToString(i); 215 string path = "/server_push_src" + QuicTextUtils::Uint64ToString(i);
216 string url = scheme + "://" + request_host + path; 216 string url = scheme + "://" + request_host + path;
217 GURL resource_url(url); 217 GURL resource_url(url);
218 string body = "This is server push response body for " + path; 218 string body = "This is server push response body for " + path;
219 SpdyHeaderBlock response_headers; 219 SpdyHeaderBlock response_headers;
220 response_headers[":version"] = "HTTP/1.1"; 220 response_headers[":version"] = "HTTP/1.1";
221 response_headers[":status"] = push_response_status[i]; 221 response_headers[":status"] = push_response_status[i];
222 response_headers["content-length"] = base::UintToString(body.size()); 222 response_headers["content-length"] =
223 QuicTextUtils::Uint64ToString(body.size());
223 push_resources.push_back( 224 push_resources.push_back(
224 ServerPushInfo(resource_url, response_headers.Clone(), i, body)); 225 ServerPushInfo(resource_url, response_headers.Clone(), i, body));
225 } 226 }
226 cache_.AddSimpleResponseWithServerPushResources( 227 cache_.AddSimpleResponseWithServerPushResources(
227 request_host, "/", 200, response_body, push_resources); 228 request_host, "/", 200, response_body, push_resources);
228 string request_url = request_host + "/"; 229 string request_url = request_host + "/";
229 std::list<ServerPushInfo> resources = 230 std::list<ServerPushInfo> resources =
230 cache_.GetServerPushResources(request_url); 231 cache_.GetServerPushResources(request_url);
231 ASSERT_EQ(kNumResources, resources.size()); 232 ASSERT_EQ(kNumResources, resources.size());
232 int i = 0; 233 int i = 0;
233 for (const auto& push_resource : push_resources) { 234 for (const auto& push_resource : push_resources) {
234 GURL url = resources.front().request_url; 235 GURL url = resources.front().request_url;
235 string host = url.host(); 236 string host = url.host();
236 string path = url.path(); 237 string path = url.path();
237 const QuicHttpResponseCache::Response* response = 238 const QuicHttpResponseCache::Response* response =
238 cache_.GetResponse(host, path); 239 cache_.GetResponse(host, path);
239 ASSERT_TRUE(response); 240 ASSERT_TRUE(response);
240 ASSERT_TRUE(ContainsKey(response->headers(), ":status")); 241 ASSERT_TRUE(ContainsKey(response->headers(), ":status"));
241 EXPECT_EQ(push_response_status[i++], 242 EXPECT_EQ(push_response_status[i++],
242 response->headers().find(":status")->second); 243 response->headers().find(":status")->second);
243 EXPECT_EQ(push_resource.body, response->body()); 244 EXPECT_EQ(push_resource.body, response->body());
244 resources.pop_front(); 245 resources.pop_front();
245 } 246 }
246 } 247 }
247 248
248 } // namespace test 249 } // namespace test
249 } // namespace net 250 } // namespace net
OLDNEW
« no previous file with comments | « net/tools/quic/quic_http_response_cache.cc ('k') | net/tools/quic/quic_packet_printer_bin.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698