summaryrefslogtreecommitdiffstats
path: root/net/url_request/url_request_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'net/url_request/url_request_unittest.cc')
-rw-r--r--net/url_request/url_request_unittest.cc111
1 files changed, 84 insertions, 27 deletions
diff --git a/net/url_request/url_request_unittest.cc b/net/url_request/url_request_unittest.cc
index bd4e56a..8c842fe 100644
--- a/net/url_request/url_request_unittest.cc
+++ b/net/url_request/url_request_unittest.cc
@@ -96,8 +96,7 @@ class URLRequestTest : public PlatformTest {
class URLRequestTestHTTP : public URLRequestTest {
protected:
static void SetUpTestCase() {
- server_ = HTTPTestServer::CreateForkingServer(
- L"net/data/url_request_unittest/");
+ server_ = HTTPTestServer::CreateServer(L"net/data/url_request_unittest/");
}
static void TearDownTestCase() {
@@ -262,13 +261,81 @@ TEST_F(URLRequestTestHTTP, HTTPSToHTTPRedirectNoRefererTest) {
EXPECT_EQ(std::string(), req.referrer());
}
+namespace {
+
+// Used by MakeGETRequest to implement sync load behavior.
+class SyncTestDelegate : public TestDelegate {
+ public:
+ SyncTestDelegate() : event_(false, false), success_(false) {
+ }
+ virtual void OnResponseCompleted(URLRequest* request) {
+ MessageLoop::current()->DeleteSoon(FROM_HERE, request);
+ success_ = request->status().is_success();
+ event_.Signal();
+ }
+ bool Wait(int64 secs) {
+ return event_.TimedWait(TimeDelta::FromSeconds(secs));
+ }
+ bool did_succeed() const { return success_; }
+ private:
+ base::WaitableEvent event_;
+ bool success_;
+ DISALLOW_COPY_AND_ASSIGN(SyncTestDelegate);
+};
+
+void StartGETRequest(const GURL& url, URLRequest::Delegate* delegate) {
+ URLRequest* request = new URLRequest(url, delegate);
+ request->set_context(new TestURLRequestContext());
+ request->set_method("GET");
+ request->Start();
+ EXPECT_TRUE(request->is_pending());
+}
+
+bool MakeGETRequest(const GURL& url) {
+ // Spin up a background thread for this request so that we have access to
+ // an IO message loop, and in cases where this thread already has an IO
+ // message loop, we also want to avoid spinning a nested message loop.
+ SyncTestDelegate d;
+ {
+ base::Thread io_thread("MakeGETRequest");
+ base::Thread::Options options;
+ options.message_loop_type = MessageLoop::TYPE_IO;
+ io_thread.StartWithOptions(options);
+ io_thread.message_loop()->PostTask(FROM_HERE, NewRunnableFunction(
+ &StartGETRequest, url, &d));
+
+ const int kWaitSeconds = 30;
+ if (!d.Wait(kWaitSeconds))
+ return false;
+ }
+ return d.did_succeed();
+}
+
+} // namespace
+
+// Some tests use browser javascript to fetch a 'kill' url that causes
+// the server to exit by itself (rather than letting TestServerLauncher's
+// destructor kill it). We now unit test this mechanism.
TEST_F(URLRequestTest, QuitTest) {
- // Don't use shared server here because we order it to quit.
- // It would impact other tests.
- scoped_refptr<HTTPTestServer> server =
- HTTPTestServer::CreateServer(L"", NULL);
+ scoped_refptr<HTTPTestServer> server(HTTPTestServer::CreateServer(L""));
ASSERT_TRUE(NULL != server.get());
- server->SendQuit();
+ // Append the time to avoid problems where the kill page
+ // is being cached rather than being executed on the server
+ std::string page_name = StringPrintf("kill?%u",
+ static_cast<int>(base::Time::Now().ToInternalValue()));
+ int retry_count = 5;
+ while (retry_count > 0) {
+ bool r = MakeGETRequest(server->TestServerPage(page_name));
+ // BUG #1048625 causes the kill GET to fail. For now we just retry.
+ // Once the bug is fixed, we should remove the while loop and put back
+ // the following DCHECK.
+ // DCHECK(r);
+ if (r)
+ break;
+ retry_count--;
+ }
+ // Make sure we were successful in stopping the testserver.
+ EXPECT_LT(0, retry_count);
EXPECT_TRUE(server->WaitToFinish(20000));
}
@@ -1189,8 +1256,7 @@ TEST_F(URLRequestTestHTTP, BasicAuthWithCookies) {
}
TEST_F(URLRequestTest, DoNotSendCookies) {
- scoped_refptr<HTTPTestServer> server =
- HTTPTestServer::CreateServer(L"", NULL);
+ scoped_refptr<HTTPTestServer> server(HTTPTestServer::CreateServer(L""));
ASSERT_TRUE(NULL != server.get());
scoped_refptr<URLRequestContext> context = new TestURLRequestContext();
@@ -1238,8 +1304,7 @@ TEST_F(URLRequestTest, DoNotSendCookies) {
}
TEST_F(URLRequestTest, DoNotSaveCookies) {
- scoped_refptr<HTTPTestServer> server =
- HTTPTestServer::CreateServer(L"", NULL);
+ scoped_refptr<HTTPTestServer> server(HTTPTestServer::CreateServer(L""));
ASSERT_TRUE(NULL != server.get());
scoped_refptr<URLRequestContext> context = new TestURLRequestContext();
@@ -1294,8 +1359,7 @@ TEST_F(URLRequestTest, DoNotSaveCookies) {
}
TEST_F(URLRequestTest, DoNotSendCookies_ViaPolicy) {
- scoped_refptr<HTTPTestServer> server =
- HTTPTestServer::CreateServer(L"", NULL);
+ scoped_refptr<HTTPTestServer> server(HTTPTestServer::CreateServer(L""));
ASSERT_TRUE(NULL != server.get());
scoped_refptr<TestURLRequestContext> context = new TestURLRequestContext();
@@ -1348,8 +1412,7 @@ TEST_F(URLRequestTest, DoNotSendCookies_ViaPolicy) {
}
TEST_F(URLRequestTest, DoNotSaveCookies_ViaPolicy) {
- scoped_refptr<HTTPTestServer> server =
- HTTPTestServer::CreateServer(L"", NULL);
+ scoped_refptr<HTTPTestServer> server(HTTPTestServer::CreateServer(L""));
ASSERT_TRUE(NULL != server.get());
scoped_refptr<TestURLRequestContext> context = new TestURLRequestContext();
@@ -1405,8 +1468,7 @@ TEST_F(URLRequestTest, DoNotSaveCookies_ViaPolicy) {
}
TEST_F(URLRequestTest, DoNotSendCookies_ViaPolicy_Async) {
- scoped_refptr<HTTPTestServer> server =
- HTTPTestServer::CreateServer(L"", NULL);
+ scoped_refptr<HTTPTestServer> server(HTTPTestServer::CreateServer(L""));
ASSERT_TRUE(NULL != server.get());
scoped_refptr<TestURLRequestContext> context = new TestURLRequestContext();
@@ -1460,8 +1522,7 @@ TEST_F(URLRequestTest, DoNotSendCookies_ViaPolicy_Async) {
}
TEST_F(URLRequestTest, DoNotSaveCookies_ViaPolicy_Async) {
- scoped_refptr<HTTPTestServer> server =
- HTTPTestServer::CreateServer(L"", NULL);
+ scoped_refptr<HTTPTestServer> server(HTTPTestServer::CreateServer(L""));
ASSERT_TRUE(NULL != server.get());
scoped_refptr<TestURLRequestContext> context = new TestURLRequestContext();
@@ -1517,8 +1578,7 @@ TEST_F(URLRequestTest, DoNotSaveCookies_ViaPolicy_Async) {
}
TEST_F(URLRequestTest, CancelTest_During_CookiePolicy) {
- scoped_refptr<HTTPTestServer> server =
- HTTPTestServer::CreateServer(L"", NULL);
+ scoped_refptr<HTTPTestServer> server(HTTPTestServer::CreateServer(L""));
ASSERT_TRUE(NULL != server.get());
scoped_refptr<TestURLRequestContext> context = new TestURLRequestContext();
@@ -1548,8 +1608,7 @@ TEST_F(URLRequestTest, CancelTest_During_CookiePolicy) {
}
TEST_F(URLRequestTest, CancelTest_During_OnGetCookies) {
- scoped_refptr<HTTPTestServer> server =
- HTTPTestServer::CreateServer(L"", NULL);
+ scoped_refptr<HTTPTestServer> server(HTTPTestServer::CreateServer(L""));
ASSERT_TRUE(NULL != server.get());
scoped_refptr<TestURLRequestContext> context = new TestURLRequestContext();
@@ -1577,8 +1636,7 @@ TEST_F(URLRequestTest, CancelTest_During_OnGetCookies) {
}
TEST_F(URLRequestTest, CancelTest_During_OnSetCookie) {
- scoped_refptr<HTTPTestServer> server =
- HTTPTestServer::CreateServer(L"", NULL);
+ scoped_refptr<HTTPTestServer> server(HTTPTestServer::CreateServer(L""));
ASSERT_TRUE(NULL != server.get());
scoped_refptr<TestURLRequestContext> context = new TestURLRequestContext();
@@ -1611,8 +1669,7 @@ TEST_F(URLRequestTest, CancelTest_During_OnSetCookie) {
}
TEST_F(URLRequestTest, CookiePolicy_ForceSession) {
- scoped_refptr<HTTPTestServer> server =
- HTTPTestServer::CreateServer(L"", NULL);
+ scoped_refptr<HTTPTestServer> server(HTTPTestServer::CreateServer(L""));
ASSERT_TRUE(NULL != server.get());
scoped_refptr<TestURLRequestContext> context = new TestURLRequestContext();