Merge "Properly transition the state of a device if disconnected"
diff --git a/src/com/android/tradefed/command/CommandScheduler.java b/src/com/android/tradefed/command/CommandScheduler.java
index c2d0b97..85ce676 100644
--- a/src/com/android/tradefed/command/CommandScheduler.java
+++ b/src/com/android/tradefed/command/CommandScheduler.java
@@ -42,6 +42,7 @@
import com.android.tradefed.device.IDeviceMonitor;
import com.android.tradefed.device.ITestDevice;
import com.android.tradefed.device.NoDeviceException;
+import com.android.tradefed.device.TestDeviceState;
import com.android.tradefed.invoker.IRescheduler;
import com.android.tradefed.invoker.ITestInvocation;
import com.android.tradefed.invoker.TestInvocation;
@@ -473,10 +474,14 @@
// remove invocation thread first so another invocation can be started on device
// when freed
removeInvocationThread(this);
- mCmd.commandFinished(elapsedTime);
+ if (!TestDeviceState.ONLINE.equals(mDevice.getDeviceState())) {
+ //If the device is offline at the end of the test
+ deviceState = FreeDeviceState.UNAVAILABLE;
+ }
for (final IScheduledInvocationListener listener : mListeners) {
listener.invocationComplete(mDevice, deviceState);
}
+ mCmd.commandFinished(elapsedTime);
}
}
diff --git a/tests/src/com/android/tradefed/command/CommandSchedulerTest.java b/tests/src/com/android/tradefed/command/CommandSchedulerTest.java
index 0fcb782..132fd28 100644
--- a/tests/src/com/android/tradefed/command/CommandSchedulerTest.java
+++ b/tests/src/com/android/tradefed/command/CommandSchedulerTest.java
@@ -29,6 +29,7 @@
import com.android.tradefed.device.IDeviceManager;
import com.android.tradefed.device.ITestDevice;
import com.android.tradefed.device.MockDeviceManager;
+import com.android.tradefed.device.TestDeviceState;
import com.android.tradefed.invoker.IRescheduler;
import com.android.tradefed.invoker.ITestInvocation;
import com.android.tradefed.log.ITerribleFailureHandler;
@@ -269,6 +270,7 @@
ITestDevice mockDevice = EasyMock.createMock(ITestDevice.class);
EasyMock.expect(mockDevice.getSerialNumber()).andStubReturn("serial");
+ EasyMock.expect(mockDevice.getDeviceState()).andStubReturn(TestDeviceState.ONLINE);
IScheduledInvocationListener mockListener = EasyMock
.createMock(IScheduledInvocationListener.class);
mockListener.invocationComplete(mockDevice, FreeDeviceState.AVAILABLE);