aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Andrew Pellegrini <apell@google.com>2016-02-11 19:32:54 +0000
committerGravatar David Chen <dzc@google.com>2016-02-11 22:23:35 +0000
commit3e836b33c3a2ee31a4bf05dad159d01e14289cb1 (patch)
tree2bc1659062e6d500154f4e28e70ddb719311c54b
parentece75724364be3caad5a7a21c09885b35357c0ca (diff)
Add integration test for AndroidResourceProcessingAction.
- Changed AndroidResourceProcessingAction to call shutdown() on the thread pool used by AOSP code instead of System.exit() to allow calling the action's main() from inside a test, while maintaining the dangling thread cleanup. -- MOS_MIGRATED_REVID=114459473
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/AndroidResourceProcessingAction.java3
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/AndroidResourceProcessor.java10
2 files changed, 10 insertions, 3 deletions
diff --git a/src/tools/android/java/com/google/devtools/build/android/AndroidResourceProcessingAction.java b/src/tools/android/java/com/google/devtools/build/android/AndroidResourceProcessingAction.java
index 2d556f4109..c02ab41ae0 100644
--- a/src/tools/android/java/com/google/devtools/build/android/AndroidResourceProcessingAction.java
+++ b/src/tools/android/java/com/google/devtools/build/android/AndroidResourceProcessingAction.java
@@ -380,8 +380,7 @@ public class AndroidResourceProcessingAction {
System.exit(3);
}
LOGGER.fine(String.format("Resources processed in %sms", timer.elapsed(TimeUnit.MILLISECONDS)));
- // AOSP code can leave dangling threads.
- System.exit(0);
+ resourceProcessor.shutdown();
}
private static boolean useAaptCruncher() {
diff --git a/src/tools/android/java/com/google/devtools/build/android/AndroidResourceProcessor.java b/src/tools/android/java/com/google/devtools/build/android/AndroidResourceProcessor.java
index 40cc4e740b..e676cef67b 100644
--- a/src/tools/android/java/com/google/devtools/build/android/AndroidResourceProcessor.java
+++ b/src/tools/android/java/com/google/devtools/build/android/AndroidResourceProcessor.java
@@ -28,6 +28,7 @@ import com.android.builder.internal.SymbolLoader;
import com.android.builder.internal.SymbolWriter;
import com.android.builder.model.AaptOptions;
import com.android.ide.common.internal.CommandLineRunner;
+import com.android.ide.common.internal.ExecutorSingleton;
import com.android.ide.common.internal.LoggedErrorException;
import com.android.ide.common.internal.PngCruncher;
import com.android.ide.common.res2.AssetMerger;
@@ -392,6 +393,14 @@ public class AndroidResourceProcessor {
return new MergedAndroidData(resourcesOut, assetsOut, primary.getManifest());
}
+ /**
+ * Shutdown AOSP utilized thread-pool.
+ */
+ public void shutdown() {
+ // AOSP code never shuts down its singleton executor and leaves the process hanging.
+ ExecutorSingleton.getExecutor().shutdownNow();
+ }
+
private void androidDataToRelaxedMergeSet(UnvalidatedAndroidData primary,
List<DependencyAndroidData> secondary, ImmutableList<DirectoryModifier> modifiers,
List<ResourceSet> resourceSets, List<AssetSet> assetSets) {
@@ -505,4 +514,3 @@ public class AndroidResourceProcessor {
}
}
}
-