Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 "remoting/test/chromoting_test_driver_environment.h" | 5 #include "remoting/test/chromoting_test_driver_environment.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 79 if (!RetrieveAccessToken(auth_code)) { | 79 if (!RetrieveAccessToken(auth_code)) { |
| 80 // If we cannot retrieve an access token, then nothing is going to work. | 80 // If we cannot retrieve an access token, then nothing is going to work. |
| 81 // Let the caller know that our object is not ready to be used. | 81 // Let the caller know that our object is not ready to be used. |
| 82 return false; | 82 return false; |
| 83 } | 83 } |
| 84 | 84 |
| 85 return true; | 85 return true; |
| 86 } | 86 } |
| 87 | 87 |
| 88 void ChromotingTestDriverEnvironment::DisplayHostList() { | 88 void ChromotingTestDriverEnvironment::DisplayHostList() { |
| 89 const char kHostAvailabilityFormatString[] = "%-45s%-15s%-35s"; | 89 const char kHostAvailabilityFormatString[] = "%-25s%-15s%-35s\n"; |
| 90 | 90 |
| 91 LOG(INFO) << base::StringPrintf(kHostAvailabilityFormatString, | 91 printf(kHostAvailabilityFormatString, "Host Name", "Host Status", "Host JID"); |
|
garykac
2017/03/03 21:01:58
Is the switch to printf intentional?
joedow
2017/03/03 22:45:59
It was intentional. Using LOG will prepend a bunc
| |
| 92 "Host Name", "Host Status", "Host JID"); | 92 printf(kHostAvailabilityFormatString, "---------", "-----------", "--------"); |
| 93 LOG(INFO) << base::StringPrintf(kHostAvailabilityFormatString, | |
| 94 "---------", "-----------", "--------"); | |
| 95 | 93 |
| 96 std::string status; | 94 std::string status; |
| 97 for (const HostInfo& host_info : host_list_) { | 95 for (const HostInfo& host_info : host_list_) { |
| 98 HostStatus host_status = host_info.status; | 96 HostStatus host_status = host_info.status; |
| 99 if (host_status == kHostStatusOnline) { | 97 if (host_status == kHostStatusOnline) { |
| 100 status = "ONLINE"; | 98 status = "ONLINE"; |
| 101 } else if (host_status == kHostStatusOffline) { | 99 } else if (host_status == kHostStatusOffline) { |
| 102 status = "OFFLINE"; | 100 status = "OFFLINE"; |
| 103 } else { | 101 } else { |
| 104 status = "UNKNOWN"; | 102 status = "UNKNOWN"; |
| 105 } | 103 } |
| 106 | 104 |
| 107 LOG(INFO) << base::StringPrintf( | 105 printf(kHostAvailabilityFormatString, host_info.host_name.c_str(), |
| 108 kHostAvailabilityFormatString, host_info.host_name.c_str(), | 106 status.c_str(), host_info.host_jid.c_str()); |
| 109 status.c_str(), host_info.host_jid.c_str()); | |
| 110 } | 107 } |
| 111 } | 108 } |
| 112 | 109 |
| 113 bool ChromotingTestDriverEnvironment::WaitForHostOnline( | 110 bool ChromotingTestDriverEnvironment::WaitForHostOnline() { |
| 114 const std::string& host_jid, | |
| 115 const std::string& host_name) { | |
| 116 if (host_list_.empty()) { | 111 if (host_list_.empty()) { |
| 117 RetrieveHostList(); | 112 RetrieveHostList(); |
| 118 } | 113 } |
| 119 | 114 |
| 115 DisplayHostList(); | |
| 116 | |
| 120 // Refresh the |host_list_| periodically to check if expected JID is online. | 117 // Refresh the |host_list_| periodically to check if expected JID is online. |
| 121 const base::TimeDelta kTotalTimeInSeconds = base::TimeDelta::FromSeconds(60); | 118 const base::TimeDelta kTotalTimeInSeconds = base::TimeDelta::FromSeconds(60); |
| 122 const base::TimeDelta kSleepTimeInSeconds = base::TimeDelta::FromSeconds(5); | 119 const base::TimeDelta kSleepTimeInSeconds = base::TimeDelta::FromSeconds(5); |
| 123 const int kMaxIterations = kTotalTimeInSeconds / kSleepTimeInSeconds; | 120 const int kMaxIterations = kTotalTimeInSeconds / kSleepTimeInSeconds; |
| 124 | 121 |
| 125 int num_iterations = 0; | 122 int num_iterations = 0; |
|
garykac
2017/03/03 21:01:58
No longer used.
joedow
2017/03/03 22:45:59
Good catch
| |
| 126 while (num_iterations < kMaxIterations) { | 123 for (int iterations = 0; iterations < kMaxIterations; iterations++) { |
| 124 if (!FindHostInHostList()) { | |
| 125 LOG(WARNING) << "Host '" << host_name_ << "' with JID '" << host_jid_ | |
| 126 << "' not found in host list."; | |
| 127 return false; | |
| 128 } | |
| 129 | |
| 127 if (host_info_.IsReadyForConnection()) { | 130 if (host_info_.IsReadyForConnection()) { |
| 128 if (num_iterations > 0) { | 131 if (iterations > 0) { |
| 129 VLOG(0) << "Host online after: " | 132 VLOG(0) << "Host online after: " |
| 130 << num_iterations * kSleepTimeInSeconds.InSeconds() | 133 << iterations * kSleepTimeInSeconds.InSeconds() << " seconds."; |
| 131 << " seconds."; | |
| 132 } | 134 } |
| 133 return true; | 135 return true; |
| 134 } | 136 } |
| 135 | 137 |
| 136 // Wait a while before refreshing host list. | 138 // Wait a while before refreshing host list. |
| 137 base::PlatformThread::Sleep(kSleepTimeInSeconds); | 139 base::PlatformThread::Sleep(kSleepTimeInSeconds); |
| 138 RefreshHostList(); | 140 RefreshHostList(); |
| 139 ++num_iterations; | |
| 140 } | 141 } |
| 141 | 142 |
| 142 LOG(ERROR) << "Host with JID '" << host_jid << "' still not online after " | 143 LOG(ERROR) << "Host '" << host_name_ << "' with JID '" << host_jid_ |
| 144 << "' still not online after " | |
| 143 << num_iterations * kSleepTimeInSeconds.InSeconds() << " seconds."; | 145 << num_iterations * kSleepTimeInSeconds.InSeconds() << " seconds."; |
| 144 return false; | 146 return false; |
| 145 } | 147 } |
| 146 | 148 |
| 149 bool ChromotingTestDriverEnvironment::FindHostInHostList() { | |
| 150 bool host_found = false; | |
| 151 for (HostInfo& host_info : host_list_) { | |
| 152 // The JID is optional so we consider an empty string to be a '*' match. | |
| 153 bool host_jid_match = | |
| 154 host_jid_.empty() || (host_jid_ == host_info.host_jid); | |
| 155 bool host_name_match = host_name_ == host_info.host_name; | |
| 156 | |
| 157 if (host_name_match && host_jid_match) { | |
| 158 host_info_ = host_info; | |
| 159 host_found = true; | |
| 160 break; | |
| 161 } | |
| 162 } | |
| 163 return host_found; | |
| 164 } | |
| 165 | |
| 147 void ChromotingTestDriverEnvironment::SetAccessTokenFetcherForTest( | 166 void ChromotingTestDriverEnvironment::SetAccessTokenFetcherForTest( |
| 148 AccessTokenFetcher* access_token_fetcher) { | 167 AccessTokenFetcher* access_token_fetcher) { |
| 149 DCHECK(access_token_fetcher); | 168 DCHECK(access_token_fetcher); |
| 150 | 169 |
| 151 test_access_token_fetcher_ = access_token_fetcher; | 170 test_access_token_fetcher_ = access_token_fetcher; |
| 152 } | 171 } |
| 153 | 172 |
| 154 void ChromotingTestDriverEnvironment::SetRefreshTokenStoreForTest( | 173 void ChromotingTestDriverEnvironment::SetRefreshTokenStoreForTest( |
| 155 RefreshTokenStore* refresh_token_store) { | 174 RefreshTokenStore* refresh_token_store) { |
| 156 DCHECK(refresh_token_store); | 175 DCHECK(refresh_token_store); |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 299 | 318 |
| 300 run_loop.Run(); | 319 run_loop.Run(); |
| 301 | 320 |
| 302 if (host_list_.empty()) { | 321 if (host_list_.empty()) { |
| 303 // Note: Access token may have expired, but it is unlikely. | 322 // Note: Access token may have expired, but it is unlikely. |
| 304 LOG(ERROR) << "Retrieved host list is empty.\n" | 323 LOG(ERROR) << "Retrieved host list is empty.\n" |
| 305 << "Does the account have hosts set up?"; | 324 << "Does the account have hosts set up?"; |
| 306 return false; | 325 return false; |
| 307 } | 326 } |
| 308 | 327 |
| 309 DisplayHostList(); | 328 return true; |
| 310 for (HostInfo& host_info : host_list_) { | |
| 311 // The JID is optional so we consider an empty string to be a '*' match. | |
| 312 bool host_jid_match = | |
| 313 host_jid_.empty() || (host_jid_ == host_info.host_jid); | |
| 314 bool host_name_match = host_name_ == host_info.host_name; | |
| 315 | |
| 316 if (host_name_match && host_jid_match) { | |
| 317 host_info_ = host_info; | |
| 318 | |
| 319 if (host_info.IsReadyForConnection()) { | |
| 320 return true; | |
| 321 } else { | |
| 322 LOG(WARNING) << "Host '" << host_name_ << "' with JID '" << host_jid_ | |
| 323 << "' not online."; | |
| 324 return false; | |
| 325 } | |
| 326 } | |
| 327 } | |
| 328 LOG(WARNING) << "Host '" << host_name_ << "' with JID '" << host_jid_ | |
| 329 << "' not found in host list."; | |
| 330 return false; | |
| 331 } | 329 } |
| 332 | 330 |
| 333 void ChromotingTestDriverEnvironment::OnHostListRetrieved( | 331 void ChromotingTestDriverEnvironment::OnHostListRetrieved( |
| 334 base::Closure done_closure, | 332 base::Closure done_closure, |
| 335 const std::vector<HostInfo>& retrieved_host_list) { | 333 const std::vector<HostInfo>& retrieved_host_list) { |
| 336 VLOG(1) << "OnHostListRetrieved() Called"; | 334 VLOG(1) << "OnHostListRetrieved() Called"; |
| 337 | 335 |
| 338 host_list_ = retrieved_host_list; | 336 host_list_ = retrieved_host_list; |
| 339 | 337 |
| 340 done_closure.Run(); | 338 done_closure.Run(); |
| 341 } | 339 } |
| 342 | 340 |
| 343 } // namespace test | 341 } // namespace test |
| 344 } // namespace remoting | 342 } // namespace remoting |
| OLD | NEW |