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

Side by Side Diff: remoting/test/app_remoting_test_driver.cc

Issue 1008043003: Adding Test Fixture for initial test cases for the App Remoting Test Driver. Also includes the pub… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/bind.h" 5 #include "base/bind.h"
6 #include "base/command_line.h" 6 #include "base/command_line.h"
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/strings/stringprintf.h" 8 #include "base/strings/stringprintf.h"
9 #include "base/test/launcher/unit_test_launcher.h" 9 #include "base/test/launcher/unit_test_launcher.h"
10 #include "base/test/test_suite.h" 10 #include "base/test/test_suite.h"
11 #include "base/test/test_switches.h" 11 #include "base/test/test_switches.h"
12 #include "google_apis/google_api_keys.h" 12 #include "google_apis/google_api_keys.h"
13 #include "net/base/escape.h" 13 #include "net/base/escape.h"
14 #include "remoting/test/app_remoting_test_driver_environment.h" 14 #include "remoting/test/app_remoting_test_driver_environment.h"
15 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
16 16
17 namespace switches { 17 namespace switches {
18 const char kAuthCodeSwitchName[] = "authcode"; 18 const char kAuthCodeSwitchName[] = "authcode";
19 const char kHelpSwitchName[] = "help"; 19 const char kHelpSwitchName[] = "help";
20 const char kLoggingLevelSwitchName[] = "verbosity"; 20 const char kLoggingLevelSwitchName[] = "verbosity";
21 const char kServiceEnvironmentSwitchName[] = "environment"; 21 const char kServiceEnvironmentSwitchName[] = "environment";
22 const char kShowHostAvailabilitySwitchName[] = "show-host-availability";
22 const char kSingleProcessTestsSwitchName[] = "single-process-tests"; 23 const char kSingleProcessTestsSwitchName[] = "single-process-tests";
23 const char kUserNameSwitchName[] = "username"; 24 const char kUserNameSwitchName[] = "username";
24 } 25 }
25 26
26 namespace { 27 namespace {
27 28
28 // Requested permissions needed for App Remoting tests. The spaces in between 29 // Requested permissions needed for App Remoting tests. The spaces in between
29 // scope fragments are necessary and will be escaped properly before use. 30 // scope fragments are necessary and will be escaped properly before use.
30 const char kAppRemotingAuthScopeValues[] = 31 const char kAppRemotingAuthScopeValues[] =
31 "https://www.googleapis.com/auth/appremoting.runapplication" 32 "https://www.googleapis.com/auth/appremoting.runapplication"
(...skipping 29 matching lines...) Expand all
61 printf("\nRequired Parameters:\n"); 62 printf("\nRequired Parameters:\n");
62 printf(" %s: Specifies which account to use when running tests\n", 63 printf(" %s: Specifies which account to use when running tests\n",
63 switches::kUserNameSwitchName); 64 switches::kUserNameSwitchName);
64 printf("\nOptional Parameters:\n"); 65 printf("\nOptional Parameters:\n");
65 printf(" %s: Exchanged for a refresh and access token for authentication\n", 66 printf(" %s: Exchanged for a refresh and access token for authentication\n",
66 switches::kAuthCodeSwitchName); 67 switches::kAuthCodeSwitchName);
67 printf(" %s: Displays additional usage information\n", 68 printf(" %s: Displays additional usage information\n",
68 switches::kHelpSwitchName); 69 switches::kHelpSwitchName);
69 printf(" %s: Specifies the service api to use (dev|test) [default: dev]\n", 70 printf(" %s: Specifies the service api to use (dev|test) [default: dev]\n",
70 switches::kServiceEnvironmentSwitchName); 71 switches::kServiceEnvironmentSwitchName);
71 printf( 72 printf(" %s: Retrieves and displays the connection status for all known "
72 " %s: Specifies the optional logging level of the tool (0-3)." 73 "hosts, no tests will be run\n",
73 " [default: off]\n", 74 switches::kShowHostAvailabilitySwitchName);
74 switches::kLoggingLevelSwitchName); 75 printf(" %s: Specifies the optional logging level of the tool (0-3)."
76 " [default: off]\n",
77 switches::kLoggingLevelSwitchName);
75 } 78 }
76 79
77 void PrintAuthCodeInfo() { 80 void PrintAuthCodeInfo() {
78 printf("\n*******************************\n"); 81 printf("\n*******************************\n");
79 printf("*** Auth Code Example Usage ***\n"); 82 printf("*** Auth Code Example Usage ***\n");
80 printf("*******************************\n\n"); 83 printf("*******************************\n\n");
81 84
82 printf("If this is the first time you are running the tool,\n"); 85 printf("If this is the first time you are running the tool,\n");
83 printf("you will need to provide an authorization code.\n"); 86 printf("you will need to provide an authorization code.\n");
84 printf("This code will be exchanged for a long term refresh token which\n"); 87 printf("This code will be exchanged for a long term refresh token which\n");
(...skipping 13 matching lines...) Expand all
98 101
99 printf("\nAuthorization URL:\n"); 102 printf("\nAuthorization URL:\n");
100 printf("%s\n", GetAuthorizationCodeUri().c_str()); 103 printf("%s\n", GetAuthorizationCodeUri().c_str());
101 104
102 printf("\nRedirected URL Example:\n"); 105 printf("\nRedirected URL Example:\n");
103 printf("https://chromoting-oauth.talkgadget.google.com/talkgadget/oauth/" 106 printf("https://chromoting-oauth.talkgadget.google.com/talkgadget/oauth/"
104 "chrome-remote-desktop/dev?code=4/AKtf...\n"); 107 "chrome-remote-desktop/dev?code=4/AKtf...\n");
105 108
106 printf("\nTool usage example with the newly created auth code:\n"); 109 printf("\nTool usage example with the newly created auth code:\n");
107 printf("ar_test_driver --%s=example@gmail.com --%s=4/AKtf...\n\n", 110 printf("ar_test_driver --%s=example@gmail.com --%s=4/AKtf...\n\n",
108 switches::kUserNameSwitchName, 111 switches::kUserNameSwitchName, switches::kAuthCodeSwitchName);
109 switches::kAuthCodeSwitchName);
110 } 112 }
111 113
112 } // namespace 114 } // namespace
113 115
114 int main(int argc, char** argv) { 116 int main(int argc, char** argv) {
115 testing::InitGoogleTest(&argc, argv); 117 testing::InitGoogleTest(&argc, argv);
116 TestSuite test_suite(argc, argv); 118 TestSuite test_suite(argc, argv);
117 119
118 // The pointer returned here refers to a singleton, since we don't own the 120 // The pointer returned here refers to a singleton, since we don't own the
119 // lifetime of the object, don't wrap in a scoped_ptr construct or release it. 121 // lifetime of the object, don't wrap in a scoped_ptr construct or release it.
(...skipping 12 matching lines...) Expand all
132 command_line->AppendSwitch(switches::kSingleProcessTestsSwitchName); 134 command_line->AppendSwitch(switches::kSingleProcessTestsSwitchName);
133 135
134 // If the user passed in the help flag, then show the help info for this tool 136 // If the user passed in the help flag, then show the help info for this tool
135 // and 'run' the tests which will print the gtest specific help and then exit. 137 // and 'run' the tests which will print the gtest specific help and then exit.
136 // NOTE: We do this check after updating the switches as otherwise the gtest 138 // NOTE: We do this check after updating the switches as otherwise the gtest
137 // help is written in parallel with our text and can appear interleaved. 139 // help is written in parallel with our text and can appear interleaved.
138 if (command_line->HasSwitch(switches::kHelpSwitchName)) { 140 if (command_line->HasSwitch(switches::kHelpSwitchName)) {
139 PrintUsage(); 141 PrintUsage();
140 PrintAuthCodeInfo(); 142 PrintAuthCodeInfo();
141 return base::LaunchUnitTestsSerially( 143 return base::LaunchUnitTestsSerially(
142 argc, 144 argc, argv,
143 argv,
144 base::Bind(&base::TestSuite::Run, base::Unretained(&test_suite))); 145 base::Bind(&base::TestSuite::Run, base::Unretained(&test_suite)));
145 } 146 }
146 147
147 // Verify we received the required input from the command line. 148 // Verify we received the required input from the command line.
148 if (!command_line->HasSwitch(switches::kUserNameSwitchName)) { 149 if (!command_line->HasSwitch(switches::kUserNameSwitchName)) {
149 LOG(ERROR) << "No user name passed in, can't authenticate without that!"; 150 LOG(ERROR) << "No user name passed in, can't authenticate without that!";
150 PrintUsage(); 151 PrintUsage();
151 return -1; 152 return -1;
152 } 153 }
153 154
(...skipping 21 matching lines...) Expand all
175 } else { 176 } else {
176 LOG(ERROR) << "Invalid " << switches::kServiceEnvironmentSwitchName 177 LOG(ERROR) << "Invalid " << switches::kServiceEnvironmentSwitchName
177 << " argument passed in."; 178 << " argument passed in.";
178 PrintUsage(); 179 PrintUsage();
179 return -1; 180 return -1;
180 } 181 }
181 182
182 // Update the logging verbosity level is user specified one. 183 // Update the logging verbosity level is user specified one.
183 std::string verbosity_level; 184 std::string verbosity_level;
184 verbosity_level = 185 verbosity_level =
185 command_line->GetSwitchValueASCII(switches::kLoggingLevelSwitchName); 186 command_line->GetSwitchValueASCII(switches::kLoggingLevelSwitchName);
186 if (!verbosity_level.empty()) { 187 if (!verbosity_level.empty()) {
187 // Turn on logging for the test_driver and remoting components. 188 // Turn on logging for the test_driver and remoting components.
188 // This switch is parsed during logging::InitLogging. 189 // This switch is parsed during logging::InitLogging.
189 command_line->AppendSwitchASCII("vmodule", 190 command_line->AppendSwitchASCII("vmodule",
190 "*/remoting/*=" + verbosity_level); 191 "*/remoting/*=" + verbosity_level);
191 logging::LoggingSettings logging_settings; 192 logging::LoggingSettings logging_settings;
192 logging::InitLogging(logging_settings); 193 logging::InitLogging(logging_settings);
193 } 194 }
194 195
195 // Create and register our global test data object. It will handle 196 // Create and register our global test data object. It will handle
196 // retrieving an access token for the user and spinning up VMs. 197 // retrieving an access token for the user and spinning up VMs.
197 // The GTest framework will own the lifetime of this object once 198 // The GTest framework will own the lifetime of this object once
198 // it is registered below. 199 // it is registered below.
199 scoped_ptr<remoting::test::AppRemotingTestDriverEnvironment> shared_data; 200 scoped_ptr<remoting::test::AppRemotingTestDriverEnvironment> shared_data;
200 201
201 shared_data.reset(new remoting::test::AppRemotingTestDriverEnvironment( 202 shared_data.reset(new remoting::test::AppRemotingTestDriverEnvironment(
202 user_name, service_environment)); 203 user_name, service_environment));
203 204
204 if (!shared_data->Initialize(auth_code)) { 205 if (!shared_data->Initialize(auth_code)) {
205 // If we failed to initialize our shared data object, then bail. 206 // If we failed to initialize our shared data object, then bail.
206 return -1; 207 return -1;
207 } 208 }
208 209
210 if (command_line->HasSwitch(switches::kShowHostAvailabilitySwitchName)) {
211 // When this flag is specified, we will retrieve connection information
212 // for all known applications and report the status. No tests will be run.
213 shared_data->ShowHostAvailability();
214 return 0;
215 }
216
209 // Since we've successfully set up our shared_data object, we'll assign the 217 // Since we've successfully set up our shared_data object, we'll assign the
210 // value to our global* and transfer ownership to the framework. 218 // value to our global* and transfer ownership to the framework.
211 remoting::test::AppRemotingSharedData = shared_data.release(); 219 remoting::test::AppRemotingSharedData = shared_data.release();
212 testing::AddGlobalTestEnvironment(remoting::test::AppRemotingSharedData); 220 testing::AddGlobalTestEnvironment(remoting::test::AppRemotingSharedData);
213 221
214 // Because many tests may access the same remoting host(s), we need to run 222 // Because many tests may access the same remoting host(s), we need to run
215 // the tests sequentially so they do not interfere with each other. 223 // the tests sequentially so they do not interfere with each other.
216 return base::LaunchUnitTestsSerially( 224 return base::LaunchUnitTestsSerially(
217 argc, 225 argc, argv,
218 argv,
219 base::Bind(&base::TestSuite::Run, base::Unretained(&test_suite))); 226 base::Bind(&base::TestSuite::Run, base::Unretained(&test_suite)));
220 } 227 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698