1 /* 2 * Copyright (C) 2011 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package com.android.tradefed.device; 17 18 import com.android.tradefed.config.Option; 19 20 import java.util.ArrayList; 21 import java.util.List; 22 23 /** 24 * Container for {@link ITestDevice} {@link Option}s 25 */ 26 public class TestDeviceOptions { 27 28 /** Do not provide a setter method for that Option as it might be misused. */ 29 @Option(name = "enable-root", description = "enable adb root on boot.") 30 private boolean mEnableAdbRoot = true; 31 32 @Option(name = "disable-keyguard", 33 description = "attempt to disable keyguard once boot is complete.") 34 private boolean mDisableKeyguard = true; 35 36 @Option(name = "enable-logcat", description = 37 "Enable background logcat capture when invocation is running.") 38 private boolean mEnableLogcat = true; 39 40 @Option(name = "max-tmp-logcat-file", description = 41 "The maximum size of tmp logcat data to retain, in bytes. " + 42 "Only used if --enable-logcat is set") 43 private long mMaxLogcatDataSize = 20 * 1024 * 1024; 44 45 @Option(name = "logcat-options", description = 46 "Options to be passed down to logcat command, if unspecified, \"-v threadtime\" will " + 47 "be used. Only used if --enable-logcat is set") 48 private String mLogcatOptions = null; 49 50 @Option(name = "fastboot-timeout", description = 51 "time in ms to wait for a device to boot into fastboot.") 52 private int mFastbootTimeout = 1 * 60 * 1000; 53 54 @Option(name = "adb-recovery-timeout", description = 55 "time in ms to wait for a device to boot into recovery.") 56 private int mAdbRecoveryTimeout = 1 * 60 * 1000; 57 58 @Option(name = "reboot-timeout", description = 59 "time in ms to wait for a device to reboot to full system.") 60 private int mRebootTimeout = 2 * 60 * 1000; 61 62 @Option(name = "use-fastboot-erase", description = 63 "use fastboot erase instead of fastboot format to wipe partitions") 64 private boolean mUseFastbootErase = false; 65 66 @Option(name = "unencrypt-reboot-timeout", description = "time in ms to wait for the device to " 67 + "format the filesystem and reboot after unencryption") 68 private int mUnencryptRebootTimeout = 0; 69 70 @Option(name = "online-timeout", description = "default time in ms to wait for the device to " 71 + "be visible on adb.", isTimeVal = true) 72 private long mOnlineTimeout = 1 * 60 * 1000; 73 74 @Option(name = "available-timeout", description = "default time in ms to wait for the device " 75 + "to be available aka fully boot.") 76 private long mAvailableTimeout = 6 * 60 * 1000; 77 78 @Option(name = "conn-check-url", 79 description = "default URL to be used for connectivity checks.") 80 private String mConnCheckUrl = "http://www.google.com"; 81 82 @Option(name = "wifi-attempts", 83 description = "default number of attempts to connect to wifi network.") 84 private int mWifiAttempts = 5; 85 86 @Option(name = "wifi-retry-wait-time", 87 description = "the base wait time in ms between wifi connect retries. " 88 + "The actual wait time would be a multiple of this value.") 89 private int mWifiRetryWaitTime = 60 * 1000; 90 91 @Option( 92 name = "max-wifi-connect-time", 93 isTimeVal = true, 94 description = "the maximum amount of time to attempt to connect to wifi." 95 ) 96 private long mMaxWifiConnectTime = 10 * 60 * 1000; 97 98 @Option(name = "wifi-exponential-retry", 99 description = "Change the wifi connection retry strategy from a linear wait time into" 100 + " a binary exponential back-offs when retrying.") 101 private boolean mWifiExpoRetryEnabled = true; 102 103 @Option(name = "wifiutil-apk-path", description = "path to the wifiutil APK file") 104 private String mWifiUtilAPKPath = null; 105 106 @Option(name = "post-boot-command", 107 description = "shell command to run after reboots during invocation") 108 private List<String> mPostBootCommands = new ArrayList<String>(); 109 110 @Option(name = "disable-reboot", 111 description = "disables device reboots globally, making them no-ops") 112 private boolean mDisableReboot = false; 113 114 @Option(name = "cutoff-battery", description = 115 "the minimum battery level required to continue the invocation. Scale: 0-100") 116 private Integer mCutoffBattery = null; 117 118 /** 119 * Check whether adb root should be enabled on boot for this device 120 */ isEnableAdbRoot()121 public boolean isEnableAdbRoot() { 122 return mEnableAdbRoot; 123 } 124 125 /** 126 * Check whether or not we should attempt to disable the keyguard once boot has completed 127 */ isDisableKeyguard()128 public boolean isDisableKeyguard() { 129 return mDisableKeyguard; 130 } 131 132 /** 133 * Set whether or not we should attempt to disable the keyguard once boot has completed 134 */ setDisableKeyguard(boolean disableKeyguard)135 public void setDisableKeyguard(boolean disableKeyguard) { 136 mDisableKeyguard = disableKeyguard; 137 } 138 139 /** 140 * Get the approximate maximum size of a tmp logcat data to retain, in bytes. 141 */ getMaxLogcatDataSize()142 public long getMaxLogcatDataSize() { 143 return mMaxLogcatDataSize; 144 } 145 146 /** 147 * Set the approximate maximum size of a tmp logcat to retain, in bytes 148 */ setMaxLogcatDataSize(long maxLogcatDataSize)149 public void setMaxLogcatDataSize(long maxLogcatDataSize) { 150 mMaxLogcatDataSize = maxLogcatDataSize; 151 } 152 153 /** 154 * @return the timeout to boot into fastboot mode in msecs. 155 */ getFastbootTimeout()156 public int getFastbootTimeout() { 157 return mFastbootTimeout; 158 } 159 160 /** 161 * @param fastbootTimeout the timout in msecs to boot into fastboot mode. 162 */ setFastbootTimeout(int fastbootTimeout)163 public void setFastbootTimeout(int fastbootTimeout) { 164 mFastbootTimeout = fastbootTimeout; 165 } 166 167 /** 168 * @return the timeout in msecs to boot into recovery mode. 169 */ getAdbRecoveryTimeout()170 public int getAdbRecoveryTimeout() { 171 return mAdbRecoveryTimeout; 172 } 173 174 /** 175 * @param adbRecoveryTimeout the timeout in msecs to boot into recovery mode. 176 */ setAdbRecoveryTimeout(int adbRecoveryTimeout)177 public void setAdbRecoveryTimeout(int adbRecoveryTimeout) { 178 mAdbRecoveryTimeout = adbRecoveryTimeout; 179 } 180 181 /** 182 * @return the timeout in msecs for the full system boot. 183 */ getRebootTimeout()184 public int getRebootTimeout() { 185 return mRebootTimeout; 186 } 187 188 /** 189 * @param rebootTimeout the timeout in msecs for the system to fully boot. 190 */ setRebootTimeout(int rebootTimeout)191 public void setRebootTimeout(int rebootTimeout) { 192 mRebootTimeout = rebootTimeout; 193 } 194 195 /** 196 * @return whether to use fastboot erase instead of fastboot format to wipe partitions. 197 */ getUseFastbootErase()198 public boolean getUseFastbootErase() { 199 return mUseFastbootErase; 200 } 201 202 /** 203 * @param useFastbootErase whether to use fastboot erase instead of fastboot format to wipe 204 * partitions. 205 */ setUseFastbootErase(boolean useFastbootErase)206 public void setUseFastbootErase(boolean useFastbootErase) { 207 mUseFastbootErase = useFastbootErase; 208 } 209 210 /** 211 * @return the timeout in msecs for the filesystem to be formatted and the device to reboot 212 * after unencryption. 213 */ getUnencryptRebootTimeout()214 public int getUnencryptRebootTimeout() { 215 return mUnencryptRebootTimeout; 216 } 217 218 /** 219 * @param unencryptRebootTimeout the timeout in msecs for the filesystem to be formatted and 220 * the device to reboot after unencryption. 221 */ setUnencryptRebootTimeout(int unencryptRebootTimeout)222 public void setUnencryptRebootTimeout(int unencryptRebootTimeout) { 223 mUnencryptRebootTimeout = unencryptRebootTimeout; 224 } 225 226 /** 227 * @return the default time in ms to to wait for a device to be online. 228 */ getOnlineTimeout()229 public long getOnlineTimeout() { 230 return mOnlineTimeout; 231 } 232 setOnlineTimeout(long onlineTimeout)233 public void setOnlineTimeout(long onlineTimeout) { 234 mOnlineTimeout = onlineTimeout; 235 } 236 237 /** 238 * @return the default time in ms to to wait for a device to be available. 239 */ getAvailableTimeout()240 public long getAvailableTimeout() { 241 return mAvailableTimeout; 242 } 243 244 /** 245 * @return the default URL to be used for connectivity tests. 246 */ getConnCheckUrl()247 public String getConnCheckUrl() { 248 return mConnCheckUrl; 249 } 250 setConnCheckUrl(String url)251 public void setConnCheckUrl(String url) { 252 mConnCheckUrl = url; 253 } 254 255 /** 256 * @return true if background logcat capture is enabled 257 */ isLogcatCaptureEnabled()258 public boolean isLogcatCaptureEnabled() { 259 return mEnableLogcat; 260 } 261 262 /** 263 * @return the default number of attempts to connect to wifi network. 264 */ getWifiAttempts()265 public int getWifiAttempts() { 266 return mWifiAttempts; 267 } 268 setWifiAttempts(int wifiAttempts)269 public void setWifiAttempts(int wifiAttempts) { 270 mWifiAttempts = wifiAttempts; 271 } 272 273 /** 274 * @return the base wait time between wifi connect retries. 275 */ getWifiRetryWaitTime()276 public int getWifiRetryWaitTime() { 277 return mWifiRetryWaitTime; 278 } 279 280 /** @return the maximum time to attempt to connect to wifi. */ getMaxWifiConnectTime()281 public long getMaxWifiConnectTime() { 282 return mMaxWifiConnectTime; 283 } 284 285 /** 286 * @return a list of shell commands to run after reboots. 287 */ getPostBootCommands()288 public List<String> getPostBootCommands() { 289 return mPostBootCommands; 290 } 291 292 /** 293 * @return the minimum battery level to continue the invocation. 294 */ getCutoffBattery()295 public Integer getCutoffBattery() { 296 return mCutoffBattery; 297 } 298 299 /** 300 * set the minimum battery level to continue the invocation. 301 */ setCutoffBattery(int cutoffBattery)302 public void setCutoffBattery(int cutoffBattery) { 303 if (cutoffBattery < 0 || cutoffBattery > 100) { 304 // Prevent impossible value. 305 throw new RuntimeException(String.format("Battery cutoff wasn't changed," 306 + "the value %s isn't within possible range (0-100).", cutoffBattery)); 307 } 308 mCutoffBattery = cutoffBattery; 309 } 310 311 /** 312 * @return the configured logcat options 313 */ getLogcatOptions()314 public String getLogcatOptions() { 315 return mLogcatOptions; 316 } 317 318 /** 319 * Set the options to be passed down to logcat 320 */ setLogcatOptions(String logcatOptions)321 public void setLogcatOptions(String logcatOptions) { 322 mLogcatOptions = logcatOptions; 323 } 324 325 /** 326 * @return if device reboot should be disabled 327 */ shouldDisableReboot()328 public boolean shouldDisableReboot() { 329 return mDisableReboot; 330 } 331 332 /** 333 * @return if the exponential retry strategy should be used. 334 */ isWifiExpoRetryEnabled()335 public boolean isWifiExpoRetryEnabled() { 336 return mWifiExpoRetryEnabled; 337 } 338 339 /** @return the wifiutil apk path */ getWifiUtilAPKPath()340 public String getWifiUtilAPKPath() { 341 return mWifiUtilAPKPath; 342 } 343 } 344