Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(249)

Unified Diff: base/test/launcher/test_launcher_nacl_nonsfi.cc

Issue 1154313003: Non-SFI mode: Implement test launcher for nacl_helper_nonsfi_unittests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: base/test/launcher/test_launcher_nacl_nonsfi.cc
diff --git a/base/test/launcher/test_launcher_ios.cc b/base/test/launcher/test_launcher_nacl_nonsfi.cc
similarity index 53%
copy from base/test/launcher/test_launcher_ios.cc
copy to base/test/launcher/test_launcher_nacl_nonsfi.cc
index ecd31aedf5d00cb3754b0c1d4220b65e1dce3e51..fa526045cddcfb36487d5428d7ed78e7665b9b8b 100644
--- a/base/test/launcher/test_launcher_ios.cc
+++ b/base/test/launcher/test_launcher_nacl_nonsfi.cc
@@ -1,25 +1,29 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
+// Copyright 2015 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 "base/test/launcher/test_launcher.h"
+#include <inttypes.h>
+#include <stdio.h>
+
+#include <string>
-#include "base/at_exit.h"
-#include "base/base_paths.h"
-#include "base/bind.h"
#include "base/command_line.h"
#include "base/files/file_path.h"
#include "base/files/file_util.h"
-#include "base/files/scoped_temp_dir.h"
-#include "base/format_macros.h"
#include "base/message_loop/message_loop.h"
#include "base/path_service.h"
#include "base/process/launch.h"
+#include "base/strings/string_piece.h"
+#include "base/strings/string_tokenizer.h"
#include "base/strings/string_util.h"
+#include "base/sys_info.h"
+#include "base/test/launcher/test_launcher.h"
#include "base/test/launcher/unit_test_launcher.h"
#include "base/test/test_switches.h"
#include "base/test/test_timeouts.h"
+namespace base {
+
namespace {
const char kHelpFlag[] = "help";
@@ -55,49 +59,39 @@ void PrintUsage() {
fflush(stdout);
}
-class IOSUnitTestPlatformDelegate : public base::UnitTestPlatformDelegate {
+class NonSfiUnitTestPlatformDelegate : public base::UnitTestPlatformDelegate {
public:
- IOSUnitTestPlatformDelegate() {
+ NonSfiUnitTestPlatformDelegate() {
}
- bool Init() WARN_UNUSED_RESULT {
- if (!PathService::Get(base::DIR_EXE, &dir_exe_)) {
- LOG(ERROR) << "Failed to get directory of current executable.";
+ bool Init(const std::string& test_binary) {
+ base::FilePath dir_exe;
+ if (!PathService::Get(base::DIR_EXE, &dir_exe)) {
+ LOG(ERROR) << "Failed to get directory of the current executable.";
return false;
}
- base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
- std::vector<std::string> args(command_line->GetArgs());
- if (args.size() < 1) {
- LOG(ERROR) << "Arguments expected.";
- return false;
- }
- test_name_ = args[0];
-
- base::CommandLine cmd_line(dir_exe_.AppendASCII(test_name_ + ".app"));
- cmd_line.AppendSwitch(switches::kTestLauncherPrintWritablePath);
- cmd_line.PrependWrapper(dir_exe_.AppendASCII("iossim").value());
+ test_path_ = dir_exe.AppendASCII(test_binary);
+ return true;
+ }
- std::string raw_output;
- if (!base::GetAppOutput(cmd_line, &raw_output)) {
- LOG(ERROR) << "GetAppOutput failed.";
+ private:
+ bool CreateTemporaryFile(base::FilePath* path) override {
+ if (!base::CreateNewTempDirectory(base::FilePath::StringType(), path))
return false;
- }
- writable_path_ = base::FilePath(raw_output);
-
+ *path = path->AppendASCII("test_results.xml");
return true;
}
bool GetTests(std::vector<base::SplitTestName>* output) override {
- base::ScopedTempDir temp_dir;
- if (!temp_dir.CreateUniqueTempDirUnderPath(writable_path_))
+ base::FilePath output_file;
+ if (!base::CreateTemporaryFile(&output_file)) {
+ LOG(ERROR) << "Failed to create a temp file.";
return false;
- base::FilePath test_list_path(
- temp_dir.path().AppendASCII("test_list.json"));
+ }
- base::CommandLine cmd_line(dir_exe_.AppendASCII(test_name_ + ".app"));
- cmd_line.AppendSwitchPath(switches::kTestLauncherListTests, test_list_path);
- cmd_line.PrependWrapper(dir_exe_.AppendASCII("iossim").value());
+ base::CommandLine cmd_line(test_path_);
+ cmd_line.AppendSwitchPath(switches::kTestLauncherListTests, output_file);
base::LaunchOptions launch_options;
launch_options.wait = true;
@@ -105,58 +99,36 @@ class IOSUnitTestPlatformDelegate : public base::UnitTestPlatformDelegate {
if (!base::LaunchProcess(cmd_line, launch_options).IsValid())
return false;
- return base::ReadTestNamesFromFile(test_list_path, output);
+ return base::ReadTestNamesFromFile(output_file, output);
}
- bool CreateTemporaryFile(base::FilePath* path) override {
- if (!CreateTemporaryDirInDir(writable_path_, std::string(), path))
- return false;
- *path = path->AppendASCII("test_results.xml");
- return true;
+ std::string GetWrapperForChildGTestProcess() override {
+ return std::string();
}
base::CommandLine GetCommandLineForChildGTestProcess(
const std::vector<std::string>& test_names,
const base::FilePath& output_file) override {
- base::CommandLine cmd_line(dir_exe_.AppendASCII(test_name_ + ".app"));
- cmd_line.AppendSwitchPath(switches::kTestLauncherOutput, output_file);
- cmd_line.AppendSwitchASCII(base::kGTestFilterFlag,
- JoinString(test_names, ":"));
+ base::CommandLine cmd_line(test_path_);
+ cmd_line.AppendSwitchPath(
+ switches::kTestLauncherOutput, output_file);
+ cmd_line.AppendSwitchASCII(
+ base::kGTestFilterFlag, JoinString(test_names, ":"));
return cmd_line;
}
- std::string GetWrapperForChildGTestProcess() override {
- return dir_exe_.AppendASCII("iossim").value();
- }
-
void RelaunchTests(base::TestLauncher* test_launcher,
const std::vector<std::string>& test_names,
int launch_flags) override {
- // Relaunch all tests in one big batch, since overhead of smaller batches
- // is too big for serialized runs inside ios simulator.
RunUnitTestsBatch(test_launcher, this, test_names, launch_flags);
}
- private:
- // Directory containing test launcher's executable.
- base::FilePath dir_exe_;
-
- // Name of the test executable to run.
- std::string test_name_;
-
- // Path that launched test binary can write to.
- base::FilePath writable_path_;
-
- DISALLOW_COPY_AND_ASSIGN(IOSUnitTestPlatformDelegate);
+ base::FilePath test_path_;
};
} // namespace
-int main(int argc, char** argv) {
- base::AtExitManager at_exit;
-
- base::CommandLine::Init(argc, argv);
-
+int TestLauncherNonSfiMain(const std::string& test_binary) {
if (base::CommandLine::ForCurrentProcess()->HasSwitch(kHelpFlag)) {
PrintUsage();
return 0;
@@ -168,20 +140,21 @@ int main(int argc, char** argv) {
base::MessageLoopForIO message_loop;
- IOSUnitTestPlatformDelegate platform_delegate;
- if (!platform_delegate.Init()) {
- fprintf(stderr, "Failed to intialize test launcher platform delegate.\n");
+ NonSfiUnitTestPlatformDelegate platform_delegate;
+ if (!platform_delegate.Init(test_binary)) {
+ fprintf(stderr, "Failed to initialize test launcher.\n");
fflush(stderr);
return 1;
}
- base::UnitTestLauncherDelegate delegate(&platform_delegate, 0, false);
- // Force one job since we can't run multiple simulators in parallel.
- base::TestLauncher launcher(&delegate, 1);
+
+ base::UnitTestLauncherDelegate delegate(&platform_delegate, 10, true);
+ base::TestLauncher launcher(&delegate, base::SysInfo::NumberOfProcessors());
bool success = launcher.Run();
fprintf(stdout, "Tests took %" PRId64 " seconds.\n",
(base::TimeTicks::Now() - start_time).InSeconds());
fflush(stdout);
-
- return (success ? 0 : 1);
+ return success ? 0 : 1;
}
+
+} // namespace base
« no previous file with comments | « base/test/launcher/test_launcher_nacl_nonsfi.h ('k') | base/test/launcher/unit_test_launcher_nacl_nonsfi.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698