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

Unified Diff: remoting/test/app_remoting_test_driver.cc

Issue 880273006: Adding the AccessTokenFetcher and Environment class to the app remoting test (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixing some lint/readability errors Created 5 years, 10 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: remoting/test/app_remoting_test_driver.cc
diff --git a/remoting/test/app_remoting_test_driver.cc b/remoting/test/app_remoting_test_driver.cc
index 07bbde72b90ad7eec5e3e1a4da0bac3fd03e3b20..3fc7fa8013bc116ac93d9ab55e9fc8413837d779 100644
--- a/remoting/test/app_remoting_test_driver.cc
+++ b/remoting/test/app_remoting_test_driver.cc
@@ -11,14 +11,16 @@
#include "base/test/test_switches.h"
#include "google_apis/google_api_keys.h"
#include "net/base/escape.h"
+#include "remoting/test/app_remoting_test_driver_environment.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace switches {
- const char kUserNameSwitchName[] = "username";
const char kAuthCodeSwitchName[] = "authcode";
- const char kServiceEnvironmentSwitchName[] = "environment";
const char kHelpSwitchName[] = "help";
+ const char kLoggingLevelSwitchName[] = "verbosity";
Wez 2015/02/13 03:01:52 Is this the name that other Chromium code uses for
joedow 2015/02/14 02:31:27 I wanted a separate switch which only turned on lo
Wez 2015/02/19 22:00:22 Is --vmodule format really that complex?
+ const char kServiceEnvironmentSwitchName[] = "environment";
const char kSingleProcessTestsSwitchName[] = "single-process-tests";
+ const char kUserNameSwitchName[] = "username";
Wez 2015/02/13 03:01:52 Indentation
joedow 2015/02/14 02:31:27 Done.
}
namespace {
@@ -66,6 +68,9 @@ void PrintUsage() {
switches::kHelpSwitchName);
printf(" %s: Specifies the service api to use (dev|test) [default: dev]\n",
switches::kServiceEnvironmentSwitchName);
+ printf(" %s: Specifies the optional logging level of the tool (0-3)."
+ " [default: off]\n",
+ switches::kLoggingLevelSwitchName);
}
void PrintAuthCodeInfo() {
@@ -105,10 +110,21 @@ void PrintAuthCodeInfo() {
} // namespace
+using remoting::test::AppRemotingSharedData;
Wez 2015/02/13 03:01:52 nit: You only refer to this a few times; suggest n
joedow 2015/02/14 02:31:27 Done.
+
int main(int argc, char** argv) {
testing::InitGoogleTest(&argc, argv);
TestSuite test_suite(argc, argv);
+ // In some configurations, GTest will run main twice. This should not happen
+ // since we inject the single-process flag, but this is a safeguard in case
Wez 2015/02/13 03:01:52 Why would the single-process flag have any effect
joedow 2015/02/14 02:31:27 It seemed like main was run twice when GTest was i
+ // the flag is changed later. If main is run twice, we don't want to double
+ // initialize the global data as that will result in a leak or crash. If we
Wez 2015/02/13 03:01:52 Why do we not tear down the global data when main
joedow 2015/02/14 02:31:27 The GTest framework handles it, there is a comment
+ // decide to run in multiple processes, we will want to move the global init
+ // code into a base::TestSuite derivation and use it instead of the base
+ // class we use now.
+ DCHECK(!AppRemotingSharedData);
+
// The pointer returned here refers to a singleton, since we don't own the
// lifetime of the object, don't wrap in a scoped_ptr construct or release it.
base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
@@ -145,6 +161,71 @@ int main(int argc, char** argv) {
return -1;
}
+ std::string user_name;
+ user_name = command_line->GetSwitchValueASCII(switches::kUserNameSwitchName);
+ DVLOG(1) << "Running tests as: " << user_name;
+
+ std::string auth_code;
+ // Check to see if the user passed in a one time use auth_code for
+ // refreshing their credentials.
+ if (command_line->HasSwitch(switches::kAuthCodeSwitchName)) {
+ auth_code = command_line->GetSwitchValueASCII(
+ switches::kAuthCodeSwitchName);
Wez 2015/02/13 03:01:52 Note that you can just call GetSwitchValueASCII an
joedow 2015/02/14 02:31:27 Done.
+ }
+
+ std::string service_environment;
+ // If the user passed in a service environment, use it, otherwise set a
+ // default value.
+ if (command_line->HasSwitch(switches::kServiceEnvironmentSwitchName)) {
+ service_environment = command_line->GetSwitchValueASCII(
+ switches::kServiceEnvironmentSwitchName);
+ } else {
+ // Default to the development service environment.
+ service_environment = "dev";
+ }
+ // Only two values are allowed, so validate them before proceeding.
+ if (service_environment != "test" && service_environment != "dev") {
+ LOG(ERROR) << "Invalid " << switches::kServiceEnvironmentSwitchName
+ << " argument passed in.";
+ PrintUsage();
+ return -1;
+ }
+
+ // Update the logging verbosity level is user specified one.
+ std::string verbosity_level;
+ if (command_line->HasSwitch(switches::kLoggingLevelSwitchName)) {
+ verbosity_level = command_line->GetSwitchValueASCII(
+ switches::kLoggingLevelSwitchName);
+
+ // Turn on logging for the test_driver and remoting components.
+ // This switch is parsed during logging::InitLogging.
+ command_line->AppendSwitchASCII("vmodule",
+ "*/remoting/*=" + verbosity_level);
+ logging::LoggingSettings logging_settings;
+ logging::InitLogging(logging_settings);
+ }
+
+ // Create and register our global test data object. It will handle
+ // retrieving an access token for the user and spinning up VMs.
+ // The GTest framework will own the lifetime of this object once
+ // it is registered below.
+ scoped_ptr<remoting::test::AppRemotingTestDriverEnvironment> shared_data;
+
+ shared_data.reset(
+ new remoting::test::AppRemotingTestDriverEnvironment(
+ user_name,
+ service_environment));
+
+ if (!shared_data->Initialize(auth_code)) {
+ // If we failed to initialize our shared data object, then bail.
+ return -1;
+ }
+
+ // Since we've successfully set up our shared_data object, we'll assign the
+ // value to our global* and transfer ownership to the framework.
+ AppRemotingSharedData = shared_data.release();
+ testing::AddGlobalTestEnvironment(AppRemotingSharedData);
+
// Because many tests may access the same remoting host(s), we need to run
// the tests sequentially so they do not interfere with each other.
return base::LaunchUnitTestsSerially(

Powered by Google App Engine
This is Rietveld 408576698