| Index: sync/test/local_sync_test_server.cc
|
| diff --git a/sync/test/local_sync_test_server.cc b/sync/test/local_sync_test_server.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..21eaf6e82fdff5ff9a4e1de5f4b2817bc83eab4a
|
| --- /dev/null
|
| +++ b/sync/test/local_sync_test_server.cc
|
| @@ -0,0 +1,92 @@
|
| +// Copyright 2013 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "sync/test/local_sync_test_server.h"
|
| +
|
| +#include "base/command_line.h"
|
| +#include "base/path_service.h"
|
| +#include "base/string_number_conversions.h"
|
| +#include "base/values.h"
|
| +#include "net/test/python_utils.h"
|
| +#include "net/test/test_server.h"
|
| +
|
| +namespace syncer {
|
| +
|
| +LocalSyncTestServer::LocalSyncTestServer()
|
| + : LocalTestServer(net::TestServer::TYPE_HTTP, // Sync uses the HTTP scheme.
|
| + net::TestServer::kLocalhost,
|
| + FilePath()),
|
| + xmpp_port_(0) {}
|
| +
|
| +LocalSyncTestServer::LocalSyncTestServer(uint16 port, uint16 xmpp_port)
|
| + : LocalTestServer(net::TestServer::TYPE_HTTP, // Sync uses the HTTP scheme.
|
| + net::TestServer::kLocalhost,
|
| + FilePath()),
|
| + xmpp_port_(xmpp_port) {
|
| + SetPort(port);
|
| +}
|
| +
|
| +LocalSyncTestServer::~LocalSyncTestServer() {}
|
| +
|
| +bool LocalSyncTestServer::AddCommandLineArguments(
|
| + CommandLine* command_line) const {
|
| + if (!LocalTestServer::AddCommandLineArguments(command_line))
|
| + return false;
|
| + if (xmpp_port_ != 0) {
|
| + std::string xmpp_port_str = base::IntToString(xmpp_port_);
|
| + command_line->AppendArg("--xmpp-port=" + xmpp_port_str);
|
| + }
|
| + return true;
|
| +}
|
| +
|
| +bool LocalSyncTestServer::GetTestServerPath(FilePath* testserver_path) const {
|
| + FilePath testserver_dir;
|
| + if (!PathService::Get(base::DIR_SOURCE_ROOT, &testserver_dir)) {
|
| + LOG(ERROR) << "Failed to get DIR_SOURCE_ROOT";
|
| + return false;
|
| + }
|
| + testserver_dir = testserver_dir.Append(FILE_PATH_LITERAL("sync"))
|
| + .Append(FILE_PATH_LITERAL("tools"))
|
| + .Append(FILE_PATH_LITERAL("testserver"));
|
| +
|
| + *testserver_path =
|
| + testserver_dir.Append(FILE_PATH_LITERAL("sync_testserver.py"));
|
| + return true;
|
| +}
|
| +
|
| +bool LocalSyncTestServer::GetTestScriptPath(
|
| + const FilePath::StringType& test_script_name,
|
| + FilePath* test_script_path) const {
|
| + FilePath testserver_path;
|
| + if (!GetTestServerPath(&testserver_path))
|
| + return false;
|
| + *test_script_path = testserver_path.DirName().Append(test_script_name);
|
| + return true;
|
| +}
|
| +
|
| +bool LocalSyncTestServer::SetPythonPath() const {
|
| + if (!LocalTestServer::SetPythonPath())
|
| + return false;
|
| +
|
| + // Add the net/tools/testserver directory to the path, so that testserver_base
|
| + // can be imported.
|
| + FilePath net_testserver_path;
|
| + if (!LocalTestServer::GetTestServerPath(&net_testserver_path)) {
|
| + LOG(ERROR) << "Failed to get net testserver path.";
|
| + return false;
|
| + }
|
| + AppendToPythonPath(net_testserver_path.DirName());
|
| +
|
| + // Locate the Python code generated by the sync protocol buffers compiler.
|
| + FilePath pyproto_dir;
|
| + if (!GetPyProtoPath(&pyproto_dir)) {
|
| + LOG(WARNING) << "Cannot find pyproto dir for generated code. "
|
| + << "Testserver features that rely on it will not work";
|
| + return true;
|
| + }
|
| + AppendToPythonPath(pyproto_dir.AppendASCII("sync").AppendASCII("protocol"));
|
| + return true;
|
| +}
|
| +
|
| +} // namespace syncer
|
|
|