summaryrefslogtreecommitdiffstats
path: root/net/test
diff options
context:
space:
mode:
authorphajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-23 17:13:06 +0000
committerphajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-23 17:13:06 +0000
commitfa3406dabb6cc008b0191ec40291f7280f046594 (patch)
treea87c673662c2355667b8fd61bd0b41b8a89fbf90 /net/test
parentb3fdf4d32044c6f8a20e1cb0a3bc99ea645331ad (diff)
downloadchromium_src-fa3406dabb6cc008b0191ec40291f7280f046594.zip
chromium_src-fa3406dabb6cc008b0191ec40291f7280f046594.tar.gz
chromium_src-fa3406dabb6cc008b0191ec40291f7280f046594.tar.bz2
GTTF: Make EmbeddedTestServer use ephemeral port
instead of a fixed port with a retry loop. This makes it more friendly to running tests in parallel, and also just much more robust. Also simplifies the code. BUG=none R=satorux@chromium.org Review URL: https://codereview.chromium.org/15433003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@201832 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/test')
-rw-r--r--net/test/embedded_test_server/embedded_test_server.cc38
1 files changed, 17 insertions, 21 deletions
diff --git a/net/test/embedded_test_server/embedded_test_server.cc b/net/test/embedded_test_server/embedded_test_server.cc
index deeed7d..ea1d8c5 100644
--- a/net/test/embedded_test_server/embedded_test_server.cc
+++ b/net/test/embedded_test_server/embedded_test_server.cc
@@ -13,6 +13,8 @@
#include "base/string_util.h"
#include "base/stringprintf.h"
#include "base/threading/thread_restrictions.h"
+#include "net/base/ip_endpoint.h"
+#include "net/base/net_errors.h"
#include "net/test/embedded_test_server/http_connection.h"
#include "net/test/embedded_test_server/http_request.h"
#include "net/test/embedded_test_server/http_response.h"
@@ -23,10 +25,6 @@ namespace test_server {
namespace {
-const int kPort = 8040;
-const char kIp[] = "127.0.0.1";
-const int kRetries = 10;
-
// Callback to handle requests with default predefined response for requests
// matching the address |url|.
scoped_ptr<HttpResponse> HandleDefaultRequest(const GURL& url,
@@ -106,7 +104,7 @@ bool EmbeddedTestServer::InitializeAndWaitUntilReady() {
}
run_loop.Run();
- return Started();
+ return Started() && base_url_.is_valid();
}
bool EmbeddedTestServer::ShutdownAndWaitUntilComplete() {
@@ -129,22 +127,20 @@ void EmbeddedTestServer::InitializeOnIOThread() {
DCHECK(io_thread_->BelongsToCurrentThread());
DCHECK(!Started());
- int retries_left = kRetries + 1;
- int try_port = kPort;
-
- while (retries_left > 0) {
- SocketDescriptor socket_descriptor = TCPListenSocket::CreateAndBind(
- kIp,
- try_port);
- if (socket_descriptor != TCPListenSocket::kInvalidSocket) {
- listen_socket_ = new HttpListenSocket(socket_descriptor, this);
- listen_socket_->Listen();
- base_url_ = GURL(base::StringPrintf("http://%s:%d", kIp, try_port));
- port_ = try_port;
- break;
- }
- retries_left--;
- try_port++;
+ SocketDescriptor socket_descriptor =
+ TCPListenSocket::CreateAndBindAnyPort("127.0.0.1", &port_);
+ if (socket_descriptor == TCPListenSocket::kInvalidSocket)
+ return;
+
+ listen_socket_ = new HttpListenSocket(socket_descriptor, this);
+ listen_socket_->Listen();
+
+ IPEndPoint address;
+ int result = listen_socket_->GetLocalAddress(&address);
+ if (result == OK) {
+ base_url_ = GURL(std::string("http://") + address.ToString());
+ } else {
+ LOG(ERROR) << "GetLocalAddress failed: " << ErrorToString(result);
}
}