summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorrsimha@google.com <rsimha@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2012-09-12 21:17:21 +0000
committerrsimha@google.com <rsimha@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2012-09-12 21:17:21 +0000
commit831b9b4e7a2b3754690aed8d4ec2a7b3e64877b5 (patch)
tree2094d028998df6193be2adf01c547dfd84a312ac /net
parent8b7c93cd2f8a7046d697b89e6ed66d79489021b4 (diff)
downloadchromium_src-831b9b4e7a2b3754690aed8d4ec2a7b3e64877b5.zip
chromium_src-831b9b4e7a2b3754690aed8d4ec2a7b3e64877b5.tar.gz
chromium_src-831b9b4e7a2b3754690aed8d4ec2a7b3e64877b5.tar.bz2
Revert 156361 - Take 2: Force python test server output to be unbuffered, so it doesn't mix with gtest output
In browser tests that use a local python server, the python output in the test logs sometimes overlaps with gtest output, resulting in gtest falsely detecting passing tests as incomplete. This is a result of python's default use of buffered output, which gets written to the log file out of order. This patch forces the python process for local test servers to use unbuffered mode via the -u switch. This way, by the time gtest is ready to log a passing test, all testserver output is already written to the log file. BUG=147368 TEST= See sync integration test output when it is redirected to a log file, and make sure there are no false negatives. Review URL: https://chromiumcodereview.appspot.com/10907162 TBR=rsimha@google.com Review URL: https://codereview.chromium.org/10911264 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@156376 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net')
-rw-r--r--net/test/local_test_server_posix.cc8
-rw-r--r--net/test/local_test_server_win.cc10
-rw-r--r--net/test/python_utils.cc21
-rw-r--r--net/test/python_utils.h5
-rw-r--r--net/test/python_utils_unittest.cc5
-rw-r--r--net/tools/testserver/run_testserver.cc6
6 files changed, 24 insertions, 31 deletions
diff --git a/net/test/local_test_server_posix.cc b/net/test/local_test_server_posix.cc
index eda65fd..7afd422 100644
--- a/net/test/local_test_server_posix.cc
+++ b/net/test/local_test_server_posix.cc
@@ -97,11 +97,9 @@ namespace net {
bool LocalTestServer::LaunchPython(const FilePath& testserver_path) {
// Log is useful in the event you want to run a nearby script (e.g. a test) in
// the same environment as the TestServer.
- VLOG(1) << "LaunchPython called with PYTHONPATH = " << getenv(kPythonPathEnv);
-
- CommandLine python_command(CommandLine::NO_PROGRAM);
- if (!GetPythonCommand(&python_command))
- return false;
+ VLOG(1) << "LaunchPython called with PYTHONPATH = " <<
+ getenv(kPythonPathEnv);
+ CommandLine python_command(FilePath(FILE_PATH_LITERAL("python")));
python_command.AppendArgPath(testserver_path);
if (!AddCommandLineArguments(&python_command))
diff --git a/net/test/local_test_server_win.cc b/net/test/local_test_server_win.cc
index ba2a8cd..0b30312 100644
--- a/net/test/local_test_server_win.cc
+++ b/net/test/local_test_server_win.cc
@@ -20,7 +20,6 @@
#include "base/threading/thread.h"
#include "base/utf_string_conversions.h"
#include "base/win/scoped_handle.h"
-#include "net/test/python_utils.h"
#pragma comment(lib, "crypt32.lib")
@@ -86,10 +85,15 @@ bool ReadData(HANDLE read_fd, HANDLE write_fd,
namespace net {
bool LocalTestServer::LaunchPython(const FilePath& testserver_path) {
- CommandLine python_command(CommandLine::NO_PROGRAM);
- if (!GetPythonCommand(&python_command))
+ FilePath python_exe;
+ if (!PathService::Get(base::DIR_SOURCE_ROOT, &python_exe))
return false;
+ python_exe = python_exe
+ .Append(FILE_PATH_LITERAL("third_party"))
+ .Append(FILE_PATH_LITERAL("python_26"))
+ .Append(FILE_PATH_LITERAL("python.exe"));
+ CommandLine python_command(python_exe);
python_command.AppendArgPath(testserver_path);
if (!AddCommandLineArguments(&python_command))
return false;
diff --git a/net/test/python_utils.cc b/net/test/python_utils.cc
index 82d0c5c..0eec816 100644
--- a/net/test/python_utils.cc
+++ b/net/test/python_utils.cc
@@ -5,7 +5,6 @@
#include "net/test/python_utils.h"
#include "base/base_paths.h"
-#include "base/command_line.h"
#include "base/environment.h"
#include "base/file_path.h"
#include "base/file_util.h"
@@ -104,23 +103,15 @@ bool GetPyProtoPath(FilePath* dir) {
return true;
}
-bool GetPythonCommand(CommandLine* python_cmd) {
- DCHECK(python_cmd);
- FilePath dir;
+bool GetPythonRunTime(FilePath* dir) {
#if defined(OS_WIN)
- if (!PathService::Get(base::DIR_SOURCE_ROOT, &dir))
+ if (!PathService::Get(base::DIR_SOURCE_ROOT, dir))
return false;
- dir = dir.Append(FILE_PATH_LITERAL("third_party"))
- .Append(FILE_PATH_LITERAL("python_26"))
- .Append(FILE_PATH_LITERAL("python.exe"));
+ *dir = dir->Append(FILE_PATH_LITERAL("third_party"))
+ .Append(FILE_PATH_LITERAL("python_26"))
+ .Append(FILE_PATH_LITERAL("python.exe"));
#elif defined(OS_POSIX)
- dir = FilePath("python");
+ *dir = FilePath("python");
#endif
- python_cmd->SetProgram(dir);
-
- // Launch python in unbuffered mode, so that python output doesn't mix with
- // gtest output in buildbot log files. See http://crbug.com/147368.
- python_cmd->AppendArg("-u");
-
return true;
}
diff --git a/net/test/python_utils.h b/net/test/python_utils.h
index c7cf289..583fb27 100644
--- a/net/test/python_utils.h
+++ b/net/test/python_utils.h
@@ -7,7 +7,6 @@
#include "base/compiler_specific.h"
-class CommandLine;
class FilePath;
// This is the python path variable name.
@@ -19,7 +18,7 @@ void AppendToPythonPath(const FilePath& dir);
// Return the location of the compiler-generated python protobuf.
bool GetPyProtoPath(FilePath* dir);
-// Returns the command that should be used to launch Python.
-bool GetPythonCommand(CommandLine* python_cmd) WARN_UNUSED_RESULT;
+// Returns the path that should be used to launch Python.
+bool GetPythonRunTime(FilePath* path) WARN_UNUSED_RESULT;
#endif // NET_TEST_PYTHON_UTILS_H_
diff --git a/net/test/python_utils_unittest.cc b/net/test/python_utils_unittest.cc
index f81a440..0114774 100644
--- a/net/test/python_utils_unittest.cc
+++ b/net/test/python_utils_unittest.cc
@@ -45,11 +45,12 @@ TEST(PythonUtils, Append) {
}
TEST(PythonUtils, PythonRunTime) {
- CommandLine cmd_line(CommandLine::NO_PROGRAM);
- EXPECT_TRUE(GetPythonCommand(&cmd_line));
+ FilePath dir;
+ EXPECT_TRUE(GetPythonRunTime(&dir));
// Run a python command to print a string and make sure the output is what
// we want.
+ CommandLine cmd_line(dir);
cmd_line.AppendArg("-c");
std::string input("PythonUtilsTest");
std::string python_cmd = StringPrintf("print '%s';", input.c_str());
diff --git a/net/tools/testserver/run_testserver.cc b/net/tools/testserver/run_testserver.cc
index 9ad0f7d..c02d4d6 100644
--- a/net/tools/testserver/run_testserver.cc
+++ b/net/tools/testserver/run_testserver.cc
@@ -40,13 +40,13 @@ static bool RunSyncTest() {
sync_test_path =
sync_test_path.Append(FILE_PATH_LITERAL("chromiumsync_test.py"));
-
- CommandLine python_command(CommandLine::NO_PROGRAM);
- if (!GetPythonCommand(&python_command)) {
+ FilePath python_runtime;
+ if (!GetPythonRunTime(&python_runtime)) {
LOG(ERROR) << "Could not get python runtime command.";
return false;
}
+ CommandLine python_command(python_runtime);
python_command.AppendArgPath(sync_test_path);
if (!base::LaunchProcess(python_command, base::LaunchOptions(), NULL)) {
LOG(ERROR) << "Failed to launch test script.";