add --reboot-per-package option to allow rebooting after each running package

- This is for preventing one test from affecting another

Bug: 6769649
Change-Id: I23f99c474997d5a9806afb2f407b940db0b8a659
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/command/CtsConsole.java b/tools/tradefed-host/src/com/android/cts/tradefed/command/CtsConsole.java
index 2f0e872..a815a48 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/command/CtsConsole.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/command/CtsConsole.java
@@ -173,6 +173,8 @@
         helpBuilder.append("session\n");
         helpBuilder.append("Dump:\n");
         helpBuilder.append("  d/dump l/logs: dump the tradefed logs for all running invocations\n");
+        helpBuilder.append("Options:\n");
+        helpBuilder.append("  --reboot-per-package : reboot device after running each package.\n");
         return helpBuilder.toString();
     }
 
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/CtsTest.java b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/CtsTest.java
index 8142036..2f09eee 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/CtsTest.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/CtsTest.java
@@ -132,6 +132,10 @@
         "run tests including known failures")
     private boolean mIncludeKnownFailures;
 
+    @Option(name = "reboot-per-package", description =
+            "Reboot after each package run")
+    private boolean mRebootPerPackage = false;
+
     /** data structure for a {@link IRemoteTest} and its known tests */
     class TestPackage {
         private final IRemoteTest mTestForPackage;
@@ -345,6 +349,11 @@
                 forwardPackageDetails(knownTests.getPackageDef(), listener);
                 test.run(filter);
                 mRemainingTestPkgs.remove(0);
+                if (mRebootPerPackage) {
+                    Log.i(LOG_TAG, String.format("Rebooting after running package %s",
+                            knownTests.getPackageDef().getName()));
+                    mDevice.reboot();
+                }
             }
 
             if (mScreenshot) {