Merge "Update PushFilePreparer to new interface"
diff --git a/test_framework/com/android/tradefed/targetprep/PushFilePreparer.java b/test_framework/com/android/tradefed/targetprep/PushFilePreparer.java
index 6190f3c..3afabc6 100644
--- a/test_framework/com/android/tradefed/targetprep/PushFilePreparer.java
+++ b/test_framework/com/android/tradefed/targetprep/PushFilePreparer.java
@@ -26,6 +26,7 @@
 import com.android.tradefed.device.DeviceNotAvailableException;
 import com.android.tradefed.device.ITestDevice;
 import com.android.tradefed.invoker.IInvocationContext;
+import com.android.tradefed.invoker.TestInformation;
 import com.android.tradefed.log.LogUtil.CLog;
 import com.android.tradefed.testtype.IAbi;
 import com.android.tradefed.testtype.IAbiReceiver;
@@ -257,13 +258,12 @@
         return src;
     }
 
-    /**
-     * {@inheritDoc}
-     */
+    /** {@inheritDoc} */
     @Override
-    public void setUp(ITestDevice device, IBuildInfo buildInfo) throws TargetSetupError, BuildError,
-            DeviceNotAvailableException {
+    public void setUp(TestInformation testInfo)
+            throws TargetSetupError, BuildError, DeviceNotAvailableException {
         mFilesPushed = new HashSet<>();
+        ITestDevice device = testInfo.getDevice();
         if (mRemountSystem) {
             device.remountSystemWritable();
         }
@@ -292,7 +292,7 @@
                     String.format(
                             "Trying to push local '%s' to remote '%s'",
                             local.getPath(), remotePath));
-            evaluatePushingPair(device, buildInfo, local, remotePath);
+            evaluatePushingPair(device, testInfo.getBuildInfo(), local, remotePath);
         }
 
         for (String command : mPostPushCommands) {
@@ -305,12 +305,10 @@
         }
     }
 
-    /**
-     * {@inheritDoc}
-     */
+    /** {@inheritDoc} */
     @Override
-    public void tearDown(ITestDevice device, IBuildInfo buildInfo, Throwable e)
-            throws DeviceNotAvailableException {
+    public void tearDown(TestInformation testInfo, Throwable e) throws DeviceNotAvailableException {
+        ITestDevice device = testInfo.getDevice();
         if (!(e instanceof DeviceNotAvailableException) && mCleanup && mFilesPushed != null) {
             if (mRemountSystem) {
                 device.remountSystemWritable();
diff --git a/tests/src/com/android/tradefed/targetprep/PushFilePreparerTest.java b/tests/src/com/android/tradefed/targetprep/PushFilePreparerTest.java
index c8ca2e6..4ab06a7 100644
--- a/tests/src/com/android/tradefed/targetprep/PushFilePreparerTest.java
+++ b/tests/src/com/android/tradefed/targetprep/PushFilePreparerTest.java
@@ -30,6 +30,7 @@
 import com.android.tradefed.device.ITestDevice;
 import com.android.tradefed.invoker.IInvocationContext;
 import com.android.tradefed.invoker.InvocationContext;
+import com.android.tradefed.invoker.TestInformation;
 import com.android.tradefed.testtype.Abi;
 import com.android.tradefed.testtype.suite.ModuleDefinition;
 import com.android.tradefed.util.FileUtil;
@@ -53,6 +54,7 @@
     private PushFilePreparer mPreparer = null;
     private ITestDevice mMockDevice = null;
     private OptionSetter mOptionSetter = null;
+    private TestInformation mTestInfo;
 
     @Before
     public void setUp() throws Exception {
@@ -61,13 +63,16 @@
         EasyMock.expect(mMockDevice.getSerialNumber()).andStubReturn("SERIAL");
         mPreparer = new PushFilePreparer();
         mOptionSetter = new OptionSetter(mPreparer);
+        IInvocationContext context = new InvocationContext();
+        context.addAllocatedDevice("device", mMockDevice);
+        mTestInfo = TestInformation.newBuilder().setInvocationContext(context).build();
     }
 
     /** When there's nothing to be done, expect no exception to be thrown */
     @Test
     public void testNoop() throws Exception {
         EasyMock.replay(mMockDevice);
-        mPreparer.setUp(mMockDevice, null);
+        mPreparer.setUp(mTestInfo);
         EasyMock.verify(mMockDevice);
     }
 
@@ -77,8 +82,9 @@
         mOptionSetter.setOptionValue("post-push", "ls /");
         EasyMock.replay(mMockDevice);
         try {
+            mTestInfo.getContext().addDeviceBuildInfo("device", new BuildInfo());
             // Should throw TargetSetupError and _not_ run any post-push command
-            mPreparer.setUp(mMockDevice, null);
+            mPreparer.setUp(mTestInfo);
             fail("TargetSetupError not thrown");
         } catch (TargetSetupError e) {
             // expected
@@ -96,8 +102,9 @@
                 .andReturn(Boolean.FALSE);
         EasyMock.replay(mMockDevice);
         try {
+            mTestInfo.getContext().addDeviceBuildInfo("device", new BuildInfo());
             // Should throw TargetSetupError and _not_ run any post-push command
-            mPreparer.setUp(mMockDevice, null);
+            mPreparer.setUp(mTestInfo);
             fail("TargetSetupError not thrown");
         } catch (TargetSetupError e) {
             // expected
@@ -123,8 +130,9 @@
                             mMockDevice.pushFile(
                                     EasyMock.eq(testFile), EasyMock.eq("/data/local/tmp/")))
                     .andReturn(Boolean.TRUE);
+            mTestInfo.getContext().addDeviceBuildInfo("device", info);
             EasyMock.replay(mMockDevice);
-            mPreparer.setUp(mMockDevice, info);
+            mPreparer.setUp(mTestInfo);
             EasyMock.verify(mMockDevice);
         } finally {
             FileUtil.recursiveDelete(testsDir);
@@ -150,8 +158,9 @@
                                     EasyMock.eq("/data/local/tmp/"),
                                     EasyMock.anyObject()))
                     .andReturn(Boolean.TRUE);
+            mTestInfo.getContext().addDeviceBuildInfo("device", info);
             EasyMock.replay(mMockDevice);
-            mPreparer.setUp(mMockDevice, info);
+            mPreparer.setUp(mTestInfo);
             EasyMock.verify(mMockDevice);
         } finally {
             FileUtil.recursiveDelete(testsDir);
@@ -171,8 +180,9 @@
             EasyMock.expect(mMockDevice.doesFileExist("/data/local/tmp/file")).andReturn(true);
             EasyMock.expect(mMockDevice.isDirectory("/data/local/tmp/file")).andReturn(false);
             EasyMock.replay(mMockDevice);
+            mTestInfo.getContext().addDeviceBuildInfo("device", info);
             try {
-                mPreparer.setUp(mMockDevice, info);
+                mPreparer.setUp(mTestInfo);
                 fail("Should have thrown an exception.");
             } catch (TargetSetupError expected) {
                 // Expected
@@ -207,8 +217,9 @@
                                     EasyMock.eq(testFile2),
                                     EasyMock.eq("/data/local/tmp/perf_test")))
                     .andReturn(Boolean.TRUE);
+            mTestInfo.getContext().addDeviceBuildInfo("device", info);
             EasyMock.replay(mMockDevice);
-            mPreparer.setUp(mMockDevice, info);
+            mPreparer.setUp(mTestInfo);
             EasyMock.verify(mMockDevice);
         } finally {
             FileUtil.recursiveDelete(testsDir);
@@ -240,8 +251,9 @@
                                     EasyMock.eq(testFile2),
                                     EasyMock.eq("/data/local/tmp/perf_test")))
                     .andReturn(Boolean.TRUE);
+            mTestInfo.getContext().addDeviceBuildInfo("device", info);
             EasyMock.replay(mMockDevice);
-            mPreparer.setUp(mMockDevice, info);
+            mPreparer.setUp(mTestInfo);
             EasyMock.verify(mMockDevice);
         } finally {
             FileUtil.recursiveDelete(testsDir);
@@ -261,9 +273,9 @@
         // Because we're only warning, the post-push command should be run despite the push failures
         EasyMock.expect(mMockDevice.executeShellCommand(EasyMock.eq("ls /"))).andReturn("");
         EasyMock.replay(mMockDevice);
-
+        mTestInfo.getContext().addDeviceBuildInfo("device", new BuildInfo());
         // Don't expect any exceptions to be thrown
-        mPreparer.setUp(mMockDevice, null);
+        mPreparer.setUp(mTestInfo);
         EasyMock.verify(mMockDevice);
     }
 
@@ -374,9 +386,9 @@
                                     EasyMock.eq("/data/local/tmp/debugger"),
                                     EasyMock.capture(capture)))
                     .andReturn(true);
-
+            mTestInfo.getContext().addDeviceBuildInfo("device", info);
             EasyMock.replay(mMockDevice);
-            mPreparer.setUp(mMockDevice, info);
+            mPreparer.setUp(mTestInfo);
             EasyMock.verify(mMockDevice);
             // The x86 folder was not filtered
             Set<String> capValue = capture.getValue();
@@ -411,9 +423,9 @@
                                     EasyMock.eq("/data/local/tmp/folder"),
                                     EasyMock.capture(capture)))
                     .andReturn(true);
-
+            mTestInfo.getContext().addDeviceBuildInfo("device", info);
             EasyMock.replay(mMockDevice);
-            mPreparer.setUp(mMockDevice, info);
+            mPreparer.setUp(mTestInfo);
             EasyMock.verify(mMockDevice);
             // The x86 folder was not filtered
             Set<String> capValue = capture.getValue();
@@ -446,8 +458,9 @@
                                     EasyMock.eq("/data/local/tmp/debugger"),
                                     EasyMock.capture(capture)))
                     .andReturn(true);
+            mTestInfo.getContext().addDeviceBuildInfo("device", info);
             EasyMock.replay(mMockDevice);
-            mPreparer.setUp(mMockDevice, info);
+            mPreparer.setUp(mTestInfo);
             EasyMock.verify(mMockDevice);
             // The x86 folder was not filtered
             Set<String> capValue = capture.getValue();
@@ -487,8 +500,9 @@
                                     EasyMock.eq("/data/local/tmp/lib"),
                                     EasyMock.capture(capture)))
                     .andReturn(true);
+            mTestInfo.getContext().addDeviceBuildInfo("device", info);
             EasyMock.replay(mMockDevice);
-            mPreparer.setUp(mMockDevice, info);
+            mPreparer.setUp(mTestInfo);
             EasyMock.verify(mMockDevice);
             // The x86 folder was not filtered
             Set<String> capValue = capture.getValue();
@@ -525,8 +539,9 @@
                                                     "target/testcases/aaaaa/x86_64/file")),
                                     EasyMock.eq("/data/local/tmp/file")))
                     .andReturn(true);
+            mTestInfo.getContext().addDeviceBuildInfo("device", info);
             EasyMock.replay(mMockDevice);
-            mPreparer.setUp(mMockDevice, info);
+            mPreparer.setUp(mTestInfo);
             EasyMock.verify(mMockDevice);
         } finally {
             FileUtil.recursiveDelete(tmpFolder);
@@ -562,8 +577,9 @@
                                     EasyMock.eq("/data/local/tmp/lib"),
                                     EasyMock.capture(capture)))
                     .andReturn(true);
+            mTestInfo.getContext().addDeviceBuildInfo("device", info);
             EasyMock.replay(mMockDevice);
-            mPreparer.setUp(mMockDevice, info);
+            mPreparer.setUp(mTestInfo);
             EasyMock.verify(mMockDevice);
             // The x86 folder was not filtered
             Set<String> capValue = capture.getValue();
@@ -600,8 +616,9 @@
                                     EasyMock.eq("/data/local/tmp/lib"),
                                     EasyMock.capture(capture)))
                     .andReturn(true);
+            mTestInfo.getContext().addDeviceBuildInfo("device", info);
             EasyMock.replay(mMockDevice);
-            mPreparer.setUp(mMockDevice, info);
+            mPreparer.setUp(mTestInfo);
             EasyMock.verify(mMockDevice);
             // The x86 folder was not filtered
             Set<String> capValue = capture.getValue();
@@ -643,8 +660,9 @@
                                     EasyMock.eq("/data/local/tmp/debugger"),
                                     EasyMock.capture(capture)))
                     .andReturn(true);
+            mTestInfo.getContext().addDeviceBuildInfo("device", info);
             EasyMock.replay(mMockDevice);
-            mPreparer.setUp(mMockDevice, info);
+            mPreparer.setUp(mTestInfo);
             EasyMock.verify(mMockDevice);
             // The x86 folder was not filtered
             Set<String> capValue = capture.getValue();
@@ -682,8 +700,9 @@
                                     EasyMock.eq("/data/local/tmp/lib"),
                                     EasyMock.capture(capture)))
                     .andReturn(true);
+            mTestInfo.getContext().addDeviceBuildInfo("device", info);
             EasyMock.replay(mMockDevice);
-            mPreparer.setUp(mMockDevice, info);
+            mPreparer.setUp(mTestInfo);
             EasyMock.verify(mMockDevice);
             // The x86 folder was not filtered
             Set<String> capValue = capture.getValue();
@@ -756,8 +775,9 @@
                                     EasyMock.eq("/data/local/tmp/propertyinfoserializer_tests"),
                                     EasyMock.capture(capture)))
                     .andReturn(true);
+            mTestInfo.getContext().addDeviceBuildInfo("device", info);
             EasyMock.replay(mMockDevice);
-            mPreparer.setUp(mMockDevice, info);
+            mPreparer.setUp(mTestInfo);
             EasyMock.verify(mMockDevice);
             // The x86 folder was not filtered
             Set<String> capValue = capture.getValue();
@@ -793,8 +813,9 @@
                                     EasyMock.eq("/data/local/tmp/lib"),
                                     EasyMock.capture(capture)))
                     .andReturn(true);
+            mTestInfo.getContext().addDeviceBuildInfo("device", info);
             EasyMock.replay(mMockDevice);
-            mPreparer.setUp(mMockDevice, info);
+            mPreparer.setUp(mTestInfo);
             EasyMock.verify(mMockDevice);
             // The x86 folder was not filtered
             Set<String> capValue = capture.getValue();