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

Side by Side Diff: chrome_frame/test/test_server_test.cc

Issue 10868027: Attempt to fix flake in FullTabModeIE_TestPostReissue by avoiding loopback address. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: another try with net tests Created 8 years, 3 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
« no previous file with comments | « chrome_frame/test/test_server.cc ('k') | chrome_frame/test/test_with_web_server.h » ('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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <windows.h> 5 #include <windows.h>
6 #include <wininet.h> 6 #include <wininet.h>
7 7
8 #include "base/basictypes.h" 8 #include "base/basictypes.h"
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/path_service.h" 10 #include "base/path_service.h"
11 #include "base/stringprintf.h"
11 #include "base/win/scoped_handle.h" 12 #include "base/win/scoped_handle.h"
12 #include "chrome_frame/test/test_server.h" 13 #include "chrome_frame/test/test_server.h"
13 #include "net/base/host_resolver_proc.h" 14 #include "net/base/host_resolver_proc.h"
14 #include "net/cookies/cookie_monster.h" 15 #include "net/cookies/cookie_monster.h"
15 #include "net/disk_cache/disk_cache.h" 16 #include "net/disk_cache/disk_cache.h"
16 #include "net/http/http_auth_handler_factory.h" 17 #include "net/http/http_auth_handler_factory.h"
17 #include "net/http/http_cache.h" 18 #include "net/http/http_cache.h"
18 #include "net/http/http_network_session.h" 19 #include "net/http/http_network_session.h"
19 #include "net/proxy/proxy_service.h" 20 #include "net/proxy/proxy_service.h"
20 #include "net/url_request/url_request.h" 21 #include "net/url_request/url_request.h"
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 public: 65 public:
65 TestURLRequest(const GURL& url, 66 TestURLRequest(const GURL& url,
66 Delegate* delegate, 67 Delegate* delegate,
67 TestURLRequestContext* context) 68 TestURLRequestContext* context)
68 : net::URLRequest(url, delegate, context) { 69 : net::URLRequest(url, delegate, context) {
69 } 70 }
70 }; 71 };
71 72
72 class UrlTaskChain { 73 class UrlTaskChain {
73 public: 74 public:
74 UrlTaskChain(const char* url, UrlTaskChain* next) 75 UrlTaskChain(const std::string& url, UrlTaskChain* next)
75 : url_(url), next_(next) { 76 : url_(url), next_(next) {
76 } 77 }
77 78
78 void Run() { 79 void Run() {
79 EXPECT_EQ(0, delegate_.response_started_count()); 80 EXPECT_EQ(0, delegate_.response_started_count());
80 81
81 MessageLoopForIO loop; 82 MessageLoopForIO loop;
82 83
83 TestURLRequestContext context; 84 TestURLRequestContext context;
84 TestURLRequest r(GURL(url_), &delegate_, &context); 85 TestURLRequest r(GURL(url_), &delegate_, &context);
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 } 131 }
131 132
132 } // end namespace 133 } // end namespace
133 134
134 TEST_F(TestServerTest, TestServer) { 135 TEST_F(TestServerTest, TestServer) {
135 // The web server needs a loop to exist on this thread during construction 136 // The web server needs a loop to exist on this thread during construction
136 // the loop must be created before we construct the server. 137 // the loop must be created before we construct the server.
137 MessageLoopForUI loop; 138 MessageLoopForUI loop;
138 139
139 test_server::SimpleWebServer server(1337); 140 test_server::SimpleWebServer server(1337);
141 test_server::SimpleWebServer redirected_server(server.host(), 1338);
140 test_server::SimpleResponse person("/person", "Guthrie Govan!"); 142 test_server::SimpleResponse person("/person", "Guthrie Govan!");
141 server.AddResponse(&person); 143 server.AddResponse(&person);
142 test_server::FileResponse file("/file", source_path().Append( 144 test_server::FileResponse file("/file", source_path().Append(
143 FILE_PATH_LITERAL("CFInstance.js"))); 145 FILE_PATH_LITERAL("CFInstance.js")));
144 server.AddResponse(&file); 146 server.AddResponse(&file);
145 test_server::RedirectResponse redir("/redir", "http://localhost:1338/dest"); 147 test_server::RedirectResponse redir(
148 "/redir",
149 base::StringPrintf("http://%s:1338/dest",
150 redirected_server.host().c_str()));
146 server.AddResponse(&redir); 151 server.AddResponse(&redir);
147 152
148 test_server::SimpleWebServer redirected_server(1338);
149 test_server::SimpleResponse dest("/dest", "Destination"); 153 test_server::SimpleResponse dest("/dest", "Destination");
150 redirected_server.AddResponse(&dest); 154 redirected_server.AddResponse(&dest);
151 155
152 // We should never hit this, but it's our way to break out of the test if 156 // We should never hit this, but it's our way to break out of the test if
153 // things start hanging. 157 // things start hanging.
154 QuitMessageHit quit_msg(&loop); 158 QuitMessageHit quit_msg(&loop);
155 loop.PostDelayedTask(FROM_HERE, base::Bind(QuitMessageLoop, &quit_msg), 159 loop.PostDelayedTask(FROM_HERE, base::Bind(QuitMessageLoop, &quit_msg),
156 base::TimeDelta::FromSeconds(10)); 160 base::TimeDelta::FromSeconds(10));
157 161
158 UrlTaskChain quit_task("http://localhost:1337/quit", NULL); 162 UrlTaskChain quit_task(
159 UrlTaskChain fnf_task("http://localhost:1337/404", &quit_task); 163 base::StringPrintf("http://%s:1337/quit", server.host().c_str()), NULL);
160 UrlTaskChain person_task("http://localhost:1337/person", &fnf_task); 164 UrlTaskChain fnf_task(
161 UrlTaskChain file_task("http://localhost:1337/file", &person_task); 165 base::StringPrintf("http://%s:1337/404", server.host().c_str()),
162 UrlTaskChain redir_task("http://localhost:1337/redir", &file_task); 166 &quit_task);
167 UrlTaskChain person_task(
168 base::StringPrintf("http://%s:1337/person", server.host().c_str()),
169 &fnf_task);
170 UrlTaskChain file_task(
171 base::StringPrintf("http://%s:1337/file", server.host().c_str()),
172 &person_task);
173 UrlTaskChain redir_task(
174 base::StringPrintf("http://%s:1337/redir", server.host().c_str()),
175 &file_task);
163 176
164 DWORD tid = 0; 177 DWORD tid = 0;
165 base::win::ScopedHandle worker(::CreateThread( 178 base::win::ScopedHandle worker(::CreateThread(
166 NULL, 0, FetchUrl, &redir_task, 0, &tid)); 179 NULL, 0, FetchUrl, &redir_task, 0, &tid));
167 loop.MessageLoop::Run(); 180 loop.MessageLoop::Run();
168 181
169 EXPECT_FALSE(quit_msg.hit_); 182 EXPECT_FALSE(quit_msg.hit_);
170 if (!quit_msg.hit_) { 183 if (!quit_msg.hit_) {
171 EXPECT_EQ(::WaitForSingleObject(worker, 10 * 1000), WAIT_OBJECT_0); 184 EXPECT_EQ(::WaitForSingleObject(worker, 10 * 1000), WAIT_OBJECT_0);
172 185
173 EXPECT_EQ(person.accessed(), 1); 186 EXPECT_EQ(person.accessed(), 1);
174 EXPECT_EQ(file.accessed(), 1); 187 EXPECT_EQ(file.accessed(), 1);
175 EXPECT_EQ(redir.accessed(), 1); 188 EXPECT_EQ(redir.accessed(), 1);
176 189
177 EXPECT_TRUE(person_task.response().find("Guthrie") != std::string::npos); 190 EXPECT_TRUE(person_task.response().find("Guthrie") != std::string::npos);
178 EXPECT_TRUE(file_task.response().find("function") != std::string::npos); 191 EXPECT_TRUE(file_task.response().find("function") != std::string::npos);
179 EXPECT_TRUE(redir_task.response().find("Destination") != std::string::npos); 192 EXPECT_TRUE(redir_task.response().find("Destination") != std::string::npos);
180 } else { 193 } else {
181 ::TerminateThread(worker, ~0); 194 ::TerminateThread(worker, ~0);
182 } 195 }
183 } 196 }
OLDNEW
« no previous file with comments | « chrome_frame/test/test_server.cc ('k') | chrome_frame/test/test_with_web_server.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698