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

Side by Side Diff: net/server/http_server_unittest.cc

Issue 266243004: Clang format slam. Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 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 | Annotate | Revision Log
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 <utility> 5 #include <utility>
6 #include <vector> 6 #include <vector>
7 7
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/bind_helpers.h" 9 #include "base/bind_helpers.h"
10 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 return ERR_TIMED_OUT; 83 return ERR_TIMED_OUT;
84 return connect_result_; 84 return connect_result_;
85 } 85 }
86 86
87 void Send(const std::string& data) { 87 void Send(const std::string& data) {
88 write_buffer_ = 88 write_buffer_ =
89 new DrainableIOBuffer(new StringIOBuffer(data), data.length()); 89 new DrainableIOBuffer(new StringIOBuffer(data), data.length());
90 Write(); 90 Write();
91 } 91 }
92 92
93 bool Read(std::string* message) { 93 bool Read(std::string* message) { return Read(message, 1); }
94 return Read(message, 1);
95 }
96 94
97 bool Read(std::string* message, int expected_bytes) { 95 bool Read(std::string* message, int expected_bytes) {
98 int total_bytes_received = 0; 96 int total_bytes_received = 0;
99 message->clear(); 97 message->clear();
100 while (total_bytes_received < expected_bytes) { 98 while (total_bytes_received < expected_bytes) {
101 net::TestCompletionCallback callback; 99 net::TestCompletionCallback callback;
102 ReadInternal(callback.callback()); 100 ReadInternal(callback.callback());
103 int bytes_received = callback.WaitForResult(); 101 int bytes_received = callback.WaitForResult();
104 if (bytes_received <= 0) 102 if (bytes_received <= 0)
105 return false; 103 return false;
(...skipping 21 matching lines...) Expand all
127 125
128 void OnWrite(int result) { 126 void OnWrite(int result) {
129 ASSERT_GT(result, 0); 127 ASSERT_GT(result, 0);
130 write_buffer_->DidConsume(result); 128 write_buffer_->DidConsume(result);
131 if (write_buffer_->BytesRemaining()) 129 if (write_buffer_->BytesRemaining())
132 Write(); 130 Write();
133 } 131 }
134 132
135 void ReadInternal(const net::CompletionCallback& callback) { 133 void ReadInternal(const net::CompletionCallback& callback) {
136 read_buffer_ = new IOBufferWithSize(kMaxExpectedResponseLength); 134 read_buffer_ = new IOBufferWithSize(kMaxExpectedResponseLength);
137 int result = socket_->Read(read_buffer_, 135 int result =
138 kMaxExpectedResponseLength, 136 socket_->Read(read_buffer_, kMaxExpectedResponseLength, callback);
139 callback);
140 if (result != ERR_IO_PENDING) 137 if (result != ERR_IO_PENDING)
141 callback.Run(result); 138 callback.Run(result);
142 } 139 }
143 140
144 scoped_refptr<IOBufferWithSize> read_buffer_; 141 scoped_refptr<IOBufferWithSize> read_buffer_;
145 scoped_refptr<DrainableIOBuffer> write_buffer_; 142 scoped_refptr<DrainableIOBuffer> write_buffer_;
146 scoped_ptr<TCPClientSocket> socket_; 143 scoped_ptr<TCPClientSocket> socket_;
147 int connect_result_; 144 int connect_result_;
148 }; 145 };
149 146
150 } // namespace 147 } // namespace
151 148
152 class HttpServerTest : public testing::Test, 149 class HttpServerTest : public testing::Test, public HttpServer::Delegate {
153 public HttpServer::Delegate {
154 public: 150 public:
155 HttpServerTest() : quit_after_request_count_(0) {} 151 HttpServerTest() : quit_after_request_count_(0) {}
156 152
157 virtual void SetUp() OVERRIDE { 153 virtual void SetUp() OVERRIDE {
158 TCPListenSocketFactory socket_factory("127.0.0.1", 0); 154 TCPListenSocketFactory socket_factory("127.0.0.1", 0);
159 server_ = new HttpServer(socket_factory, this); 155 server_ = new HttpServer(socket_factory, this);
160 ASSERT_EQ(OK, server_->GetLocalAddress(&server_address_)); 156 ASSERT_EQ(OK, server_->GetLocalAddress(&server_address_));
161 } 157 }
162 158
163 virtual void OnHttpRequest(int connection_id, 159 virtual void OnHttpRequest(int connection_id,
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 207
212 TEST_F(HttpServerTest, Request) { 208 TEST_F(HttpServerTest, Request) {
213 TestHttpClient client; 209 TestHttpClient client;
214 ASSERT_EQ(OK, client.ConnectAndWait(server_address_)); 210 ASSERT_EQ(OK, client.ConnectAndWait(server_address_));
215 client.Send("GET /test HTTP/1.1\r\n\r\n"); 211 client.Send("GET /test HTTP/1.1\r\n\r\n");
216 ASSERT_TRUE(RunUntilRequestsReceived(1)); 212 ASSERT_TRUE(RunUntilRequestsReceived(1));
217 ASSERT_EQ("GET", GetRequest(0).method); 213 ASSERT_EQ("GET", GetRequest(0).method);
218 ASSERT_EQ("/test", GetRequest(0).path); 214 ASSERT_EQ("/test", GetRequest(0).path);
219 ASSERT_EQ("", GetRequest(0).data); 215 ASSERT_EQ("", GetRequest(0).data);
220 ASSERT_EQ(0u, GetRequest(0).headers.size()); 216 ASSERT_EQ(0u, GetRequest(0).headers.size());
221 ASSERT_TRUE(StartsWithASCII(GetRequest(0).peer.ToString(), 217 ASSERT_TRUE(
222 "127.0.0.1", 218 StartsWithASCII(GetRequest(0).peer.ToString(), "127.0.0.1", true));
223 true));
224 } 219 }
225 220
226 TEST_F(HttpServerTest, RequestWithHeaders) { 221 TEST_F(HttpServerTest, RequestWithHeaders) {
227 TestHttpClient client; 222 TestHttpClient client;
228 ASSERT_EQ(OK, client.ConnectAndWait(server_address_)); 223 ASSERT_EQ(OK, client.ConnectAndWait(server_address_));
229 const char* kHeaders[][3] = { 224 const char* kHeaders[][3] = {
230 {"Header", ": ", "1"}, 225 {"Header", ": ", "1"},
231 {"HeaderWithNoWhitespace", ":", "1"}, 226 {"HeaderWithNoWhitespace", ":", "1"},
232 {"HeaderWithWhitespace", " : \t ", "1 1 1 \t "}, 227 {"HeaderWithWhitespace", " : \t ", "1 1 1 \t "},
233 {"HeaderWithColon", ": ", "1:1"}, 228 {"HeaderWithColon", ": ", "1:1"},
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
342 337
343 virtual void Accept() OVERRIDE { NOTREACHED(); } 338 virtual void Accept() OVERRIDE { NOTREACHED(); }
344 339
345 private: 340 private:
346 virtual ~MockStreamListenSocket() {} 341 virtual ~MockStreamListenSocket() {}
347 }; 342 };
348 343
349 } // namespace 344 } // namespace
350 345
351 TEST_F(HttpServerTest, RequestWithBodySplitAcrossPackets) { 346 TEST_F(HttpServerTest, RequestWithBodySplitAcrossPackets) {
352 StreamListenSocket* socket = 347 StreamListenSocket* socket = new MockStreamListenSocket(server_.get());
353 new MockStreamListenSocket(server_.get());
354 server_->DidAccept(NULL, make_scoped_ptr(socket)); 348 server_->DidAccept(NULL, make_scoped_ptr(socket));
355 std::string body("body"); 349 std::string body("body");
356 std::string request_text = base::StringPrintf( 350 std::string request_text = base::StringPrintf(
357 "GET /test HTTP/1.1\r\n" 351 "GET /test HTTP/1.1\r\n"
358 "SomeHeader: 1\r\n" 352 "SomeHeader: 1\r\n"
359 "Content-Length: %" PRIuS "\r\n\r\n%s", 353 "Content-Length: %" PRIuS "\r\n\r\n%s",
360 body.length(), 354 body.length(),
361 body.c_str()); 355 body.c_str());
362 server_->DidRead(socket, request_text.c_str(), request_text.length() - 2); 356 server_->DidRead(socket, request_text.c_str(), request_text.length() - 2);
363 ASSERT_EQ(0u, requests_.size()); 357 ASSERT_EQ(0u, requests_.size());
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
403 397
404 ASSERT_EQ(client_connection_id, GetConnectionId(2)); 398 ASSERT_EQ(client_connection_id, GetConnectionId(2));
405 server_->Send200(client_connection_id, "Content for /test3", "text/plain"); 399 server_->Send200(client_connection_id, "Content for /test3", "text/plain");
406 std::string response3; 400 std::string response3;
407 ASSERT_TRUE(client.Read(&response3)); 401 ASSERT_TRUE(client.Read(&response3));
408 ASSERT_TRUE(StartsWithASCII(response3, "HTTP/1.1 200 OK", true)); 402 ASSERT_TRUE(StartsWithASCII(response3, "HTTP/1.1 200 OK", true));
409 ASSERT_TRUE(EndsWith(response3, "Content for /test3", true)); 403 ASSERT_TRUE(EndsWith(response3, "Content for /test3", true));
410 } 404 }
411 405
412 } // namespace net 406 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698