Add an optional 'seed' value to the AUPT test runner

Change-Id: I79d85094ecf2033fa52dc01e62fbfc32ed13d319
diff --git a/libraries/aupt-lib/src/android/support/test/aupt/AuptTestRunner.java b/libraries/aupt-lib/src/android/support/test/aupt/AuptTestRunner.java
index 75030bf..23c4e45 100644
--- a/libraries/aupt-lib/src/android/support/test/aupt/AuptTestRunner.java
+++ b/libraries/aupt-lib/src/android/support/test/aupt/AuptTestRunner.java
@@ -50,6 +50,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Random;
 
 /**
  * Test runner to use when running AUPT tests.
@@ -67,6 +68,7 @@
     private Bundle mParams;
 
     private long mIterations;
+    private Random mRandom;
     private boolean mShuffle;
     private boolean mGenerateAnr;
     private long mTestCaseTimeout = TimeUnit.MINUTES.toMillis(10);
@@ -99,6 +101,9 @@
 
         mIterations = parseLongParam("iterations", 1);
         mShuffle = parseBooleanParam("shuffle", false);
+        long seed = parseLongParam("seed", (new Random()).nextLong());
+        Log.d(LOG_TAG, String.format("Using seed value: %s", seed));
+        mRandom = new Random(seed);
         // set to 'generateANR to 'true' when more info required for debugging on test timeout'
         mGenerateAnr = parseBooleanParam("generateANR", false);
         if (parseBooleanParam("quitOnError", false)) {
@@ -309,10 +314,11 @@
 
             for (int i = 0; i < mIterations; i++) {
                 if (mShuffle) {
-                    Collections.shuffle(testCases);
+                    Collections.shuffle(testCases, mRandom);
                 }
                 completeList.addAll(testCases);
             }
+
             mTestCases = completeList;
             return mTestCases;
         }