local_sync_test_server.cc revision b2df76ea8fec9e32f6f3718986dba0d95315b29c
1324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// Copyright 2013 The Chromium Authors. All rights reserved. 2324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// Use of this source code is governed by a BSD-style license that can be 3324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// found in the LICENSE file. 4324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 5324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#include "sync/test/local_sync_test_server.h" 6324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 7324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#include "base/command_line.h" 8324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#include "base/path_service.h" 9324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#include "base/string_number_conversions.h" 10324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#include "base/values.h" 11324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#include "net/test/python_utils.h" 12324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#include "net/test/spawned_test_server/spawned_test_server.h" 13324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 14324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruvernamespace syncer { 15324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 16324c4644fee44b9898524c09511bd33c3f12e2dfBen GruverLocalSyncTestServer::LocalSyncTestServer() 17324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver : LocalTestServer( 18324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver net::SpawnedTestServer::TYPE_HTTP, // Sync uses the HTTP scheme. 19324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver net::SpawnedTestServer::kLocalhost, 20324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver base::FilePath()), 21324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver xmpp_port_(0) {} 22324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 23324c4644fee44b9898524c09511bd33c3f12e2dfBen GruverLocalSyncTestServer::LocalSyncTestServer(uint16 port, uint16 xmpp_port) 24324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver : LocalTestServer( 25324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver net::SpawnedTestServer::TYPE_HTTP, // Sync uses the HTTP scheme. 26324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver net::SpawnedTestServer::kLocalhost, 27324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver base::FilePath()), 28324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver xmpp_port_(xmpp_port) { 29324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver SetPort(port); 30324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver} 31324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 32324c4644fee44b9898524c09511bd33c3f12e2dfBen GruverLocalSyncTestServer::~LocalSyncTestServer() {} 33324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 34324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverbool LocalSyncTestServer::AddCommandLineArguments( 35324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommandLine* command_line) const { 36324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver if (!LocalTestServer::AddCommandLineArguments(command_line)) 37324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return false; 38324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver if (xmpp_port_ != 0) { 39324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver std::string xmpp_port_str = base::IntToString(xmpp_port_); 40324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver command_line->AppendArg("--xmpp-port=" + xmpp_port_str); 41324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 42324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return true; 43324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver} 44324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 45324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverbool LocalSyncTestServer::GetTestServerPath( 46324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver base::FilePath* testserver_path) const { 47324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver base::FilePath testserver_dir; 48324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver if (!PathService::Get(base::DIR_SOURCE_ROOT, &testserver_dir)) { 49324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver LOG(ERROR) << "Failed to get DIR_SOURCE_ROOT"; 50324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return false; 51324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 52324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver testserver_dir = testserver_dir.Append(FILE_PATH_LITERAL("sync")) 53324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver .Append(FILE_PATH_LITERAL("tools")) 54324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver .Append(FILE_PATH_LITERAL("testserver")); 55324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 56324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver *testserver_path = 57324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver testserver_dir.Append(FILE_PATH_LITERAL("sync_testserver.py")); 58324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return true; 59324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver} 60324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 61324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverbool LocalSyncTestServer::GetTestScriptPath( 62324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver const base::FilePath::StringType& test_script_name, 63324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver base::FilePath* test_script_path) const { 64324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver base::FilePath testserver_path; 65324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver if (!GetTestServerPath(&testserver_path)) 66324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return false; 67324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver *test_script_path = testserver_path.DirName().Append(test_script_name); 68324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return true; 69324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver} 70324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 71324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverbool LocalSyncTestServer::SetPythonPath() const { 72324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver if (!LocalTestServer::SetPythonPath()) 73324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return false; 74324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 75324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver // Add the net/tools/testserver directory to the path, so that testserver_base 76324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver // can be imported. 77324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver base::FilePath net_testserver_path; 78324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver if (!LocalTestServer::GetTestServerPath(&net_testserver_path)) { 79324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver LOG(ERROR) << "Failed to get net testserver path."; 80324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return false; 81324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 82324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver AppendToPythonPath(net_testserver_path.DirName()); 83324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 84324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver // Locate the Python code generated by the sync protocol buffers compiler. 85324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver base::FilePath pyproto_dir; 86324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver if (!GetPyProtoPath(&pyproto_dir)) { 87324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver LOG(WARNING) << "Cannot find pyproto dir for generated code. " 88324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver << "Testserver features that rely on it will not work"; 89324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return true; 90324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 91324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver AppendToPythonPath(pyproto_dir.AppendASCII("sync").AppendASCII("protocol")); 92324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return true; 93324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver} 94324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 95324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver} // namespace syncer 96324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver