Run DynamicConfig setup twice

Each DynamicConfigPusher config element needs to be run once before
preconditions, and then again before its module runs. This is
necessary for invocations running two modules of the same name
(e.g. for two different abis), because tear down for the first
module must be followed by set-up for the next module.

bug:32877809
Test: run gts -m GtsPlacementTestCases (with dual-abi device)
Change-Id: I3d156b4f1400e3830f352264e0a23c11673f3dd1
diff --git a/common/host-side/tradefed/src/com/android/compatibility/common/tradefed/testtype/ModuleDef.java b/common/host-side/tradefed/src/com/android/compatibility/common/tradefed/testtype/ModuleDef.java
index 08d9a31..4678909 100644
--- a/common/host-side/tradefed/src/com/android/compatibility/common/tradefed/testtype/ModuleDef.java
+++ b/common/host-side/tradefed/src/com/android/compatibility/common/tradefed/testtype/ModuleDef.java
@@ -220,7 +220,11 @@
     @Override
     public void run(ITestInvocationListener listener) throws DeviceNotAvailableException {
         IModuleListener moduleListener = new ModuleListener(this, listener);
-
+        // Run DynamicConfigPusher setup once more, in case cleaner has previously
+        // removed dynamic config file from the target (see b/32877809)
+        for (ITargetPreparer preparer : mDynamicConfigPreparers) {
+            runPreparerSetup(preparer);
+        }
         // Setup
         for (ITargetPreparer preparer : mPreparers) {
             runPreparerSetup(preparer);