diff options
author | rsimha@google.com <rsimha@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-12 21:17:21 +0000 |
---|---|---|
committer | rsimha@google.com <rsimha@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-12 21:17:21 +0000 |
commit | 831b9b4e7a2b3754690aed8d4ec2a7b3e64877b5 (patch) | |
tree | 2094d028998df6193be2adf01c547dfd84a312ac /net/test | |
parent | 8b7c93cd2f8a7046d697b89e6ed66d79489021b4 (diff) | |
download | chromium_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/test')
-rw-r--r-- | net/test/local_test_server_posix.cc | 8 | ||||
-rw-r--r-- | net/test/local_test_server_win.cc | 10 | ||||
-rw-r--r-- | net/test/python_utils.cc | 21 | ||||
-rw-r--r-- | net/test/python_utils.h | 5 | ||||
-rw-r--r-- | net/test/python_utils_unittest.cc | 5 |
5 files changed, 21 insertions, 28 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()); |