summaryrefslogtreecommitdiffstats
path: root/jack-tests
diff options
context:
space:
mode:
authorYohann Roussel <yroussel@google.com>2015-05-12 09:42:10 +0200
committerYohann Roussel <yroussel@google.com>2015-05-18 14:02:10 +0200
commitbeab6998369a309f8f078f6d1c2a27565bb67cfa (patch)
tree77fb25a7fc6571a4a55a7a033dc900933ba521ea /jack-tests
parenta18689e31b6c26e62a457f9976de4d72a6ba197c (diff)
downloadtoolchain_jack-beab6998369a309f8f078f6d1c2a27565bb67cfa.tar.gz
toolchain_jack-beab6998369a309f8f078f6d1c2a27565bb67cfa.tar.bz2
toolchain_jack-beab6998369a309f8f078f6d1c2a27565bb67cfa.zip
Make multidex type partition determinist
By sorting types by name before filling the output dex files. Bug: 19505195 Change-Id: Ib7c11bc2b072c422e40188cfce7502e7f23679c8
Diffstat (limited to 'jack-tests')
-rw-r--r--jack-tests/tests/com/android/jack/multidex/MultiDexTests.java49
-rw-r--r--jack-tests/tests/com/android/jack/multidex/test002/jack/ref-list-002a-1.txt85
-rw-r--r--jack-tests/tests/com/android/jack/multidex/test002/jack/ref-list-002a-2.txt15
-rw-r--r--jack-tests/tests/com/android/jack/multidex/test002/jack/ref-list-002b-1.txt (renamed from jack-tests/tests/com/android/jack/multidex/test002/jack/ref-list-002-1.txt)0
-rw-r--r--jack-tests/tests/com/android/jack/multidex/test002/jack/ref-list-002b-2.txt (renamed from jack-tests/tests/com/android/jack/multidex/test002/jack/ref-list-002-2.txt)0
5 files changed, 120 insertions, 29 deletions
diff --git a/jack-tests/tests/com/android/jack/multidex/MultiDexTests.java b/jack-tests/tests/com/android/jack/multidex/MultiDexTests.java
index 28d2e3a1..80888fd9 100644
--- a/jack-tests/tests/com/android/jack/multidex/MultiDexTests.java
+++ b/jack-tests/tests/com/android/jack/multidex/MultiDexTests.java
@@ -260,15 +260,6 @@ public class MultiDexTests {
return sb.toString();
}
- private int getTypeCountInDex(@Nonnull File dex) throws IOException, FileNotFoundException {
- assert dex.isFile();
- int count = 0;
- for (ClassDef def : new DexBuffer(dex).classDefs()) {
- count++;
- }
- return count;
- }
-
@Nonnull
private static File prepareLib(@Nonnull File sources, @Nonnull File... classpath) throws Exception {
File outDir = AbstractTestTools.createTempDir();
@@ -350,14 +341,14 @@ public class MultiDexTests {
/* zipFile = */ false,
testFolder);
- File classesDex = new File(out, "classes.dex");
- Assert.assertTrue(classesDex.exists());
- File classes2Dex = new File(out, "classes2.dex");
- Assert.assertTrue(classes2Dex.exists());
+ String outList = getListingOfDex(new File(out, "classes.dex"));
+ ListingComparator.compare(
+ new File(testFolder,"ref-list-002a-1.txt"), outList);
+ String outList2 = getListingOfDex(new File(out, "classes2.dex"));
+ ListingComparator.compare(
+ new File(testFolder,"ref-list-002a-2.txt"), outList2);
File classes3Dex = new File(out, "classes3.dex");
Assert.assertFalse(classes3Dex.exists());
- int totalTypeNumber = getTypeCountInDex(classesDex) + getTypeCountInDex(classes2Dex);
- Assert.assertEquals(100, totalTypeNumber);
}
@Test
@@ -386,10 +377,10 @@ public class MultiDexTests {
// The old toolchain is doing a little better than us here it seems to identify when
// InterfaceWithEnum.class instance is used or not.
ListingComparator.compare(
- new File(testFolder,"ref-list-002-1.txt"), outList);
+ new File(testFolder,"ref-list-002b-1.txt"), outList);
String outList2 = getListingOfDex(new File(out, "classes2.dex"));
ListingComparator.compare(
- new File(testFolder,"ref-list-002-2.txt"), outList2);
+ new File(testFolder,"ref-list-002b-2.txt"), outList2);
Assert.assertFalse(new File(out, "classes3.dex").exists());
}
@@ -420,9 +411,9 @@ public class MultiDexTests {
env.setCandidateClasspath(cp.toArray(new File[cp.size()]));
env.setReferenceTestTools(new DummyToolchain());
- Comparator c1 = new ComparatorMultiDexListing(new File(testFolder, "ref-list-002-1.txt"),
+ Comparator c1 = new ComparatorMultiDexListing(new File(testFolder, "ref-list-002b-1.txt"),
env.getCandidateDex());
- Comparator c2 = new ComparatorMultiDexListing(new File(testFolder, "ref-list-002-2.txt"),
+ Comparator c2 = new ComparatorMultiDexListing(new File(testFolder, "ref-list-002b-2.txt"),
new File(env.getCandidateDexDir(), "classes2.dex"));
env.runTest(c1, c2);
@@ -446,14 +437,14 @@ public class MultiDexTests {
.addToClasspath(library)
.srcToExe(out, /* zipFile = */ false, testFolder);
- File classesDex = new File(out, "classes.dex");
- Assert.assertTrue(classesDex.exists());
- File classes2Dex = new File(out, "classes2.dex");
- Assert.assertTrue(classes2Dex.exists());
+ String outList = getListingOfDex(new File(out, "classes.dex"));
+ ListingComparator.compare(
+ new File(testFolder,"ref-list-002a-1.txt"), outList);
+ String outList2 = getListingOfDex(new File(out, "classes2.dex"));
+ ListingComparator.compare(
+ new File(testFolder,"ref-list-002a-2.txt"), outList2);
File classes3Dex = new File(out, "classes3.dex");
Assert.assertFalse(classes3Dex.exists());
- int totalTypeNumber = getTypeCountInDex(classesDex) + getTypeCountInDex(classes2Dex);
- Assert.assertEquals(100, totalTypeNumber);
}
@Test
@@ -477,10 +468,10 @@ public class MultiDexTests {
// The old toolchain is doing a little better than us here it seems to identify when
// InterfaceWithEnum.class instance is used or not.
ListingComparator.compare(
- new File(testFolder,"ref-list-002-1.txt"), outList);
+ new File(testFolder,"ref-list-002b-1.txt"), outList);
String outList2 = getListingOfDex(new File(out, "classes2.dex"));
ListingComparator.compare(
- new File(testFolder,"ref-list-002-2.txt"), outList2);
+ new File(testFolder,"ref-list-002b-2.txt"), outList2);
Assert.assertFalse(new File(out, "classes3.dex").exists());
}
@@ -511,10 +502,10 @@ public class MultiDexTests {
// The old toolchain is doing a little better than us here it seems to identify when
// InterfaceWithEnum.class instance is used or not.
ListingComparator.compare(
- new File(testFolder,"ref-list-002-1.txt"), outList);
+ new File(testFolder,"ref-list-002b-1.txt"), outList);
String outList2 = getListingOfDex(new File(out, "classes2.dex"));
ListingComparator.compare(
- new File(testFolder,"ref-list-002-2.txt"), outList2);
+ new File(testFolder,"ref-list-002b-2.txt"), outList2);
Assert.assertFalse(new File(out, "classes3.dex").exists());
}
diff --git a/jack-tests/tests/com/android/jack/multidex/test002/jack/ref-list-002a-1.txt b/jack-tests/tests/com/android/jack/multidex/test002/jack/ref-list-002a-1.txt
new file mode 100644
index 00000000..99305267
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/multidex/test002/jack/ref-list-002a-1.txt
@@ -0,0 +1,85 @@
+Lcom/android/jack/multidex/test002/jack/Annotated2;:
+Lcom/android/jack/multidex/test002/jack/Annotated;:
+Lcom/android/jack/multidex/test002/jack/AnnotationWithClass;:
+Lcom/android/jack/multidex/test002/jack/AnnotationWithEnum2;:
+Lcom/android/jack/multidex/test002/jack/AnnotationWithEnum;:
+Lcom/android/jack/multidex/test002/jack/InterfaceWithEnum;:
+Lcom/android/jack/multidex/test002/jack/IntermediateClass;:
+Lcom/android/jack/multidex/test002/jack/MainActivity;:
+Lcom/android/jack/multidex/test002/jack/Referenced;:
+Lcom/android/jack/multidex/test002/jack/ReferencedByAnnotation;:
+Lcom/android/jack/multidex/test002/jack/ReferencedByAnnotationWithOtherReferences;:
+Lcom/android/jack/multidex/test002/jack/ReferencedByAnnotationWithOtherReferences$1;:
+Lcom/android/jack/multidex/test002/jack/ReferencedByAnnotationWithOtherReferences$2;:
+Lcom/android/jack/multidex/test002/jack/ReferencedByClassInAnnotation;:
+Lcom/android/jack/multidex/test002/jack/ReferencedByClassInAnnotation$1;:
+Lcom/android/jack/multidex/test002/jack/ReferencedByClassInAnnotation$2;:
+Lcom/android/jack/multidex/test002/jack/ReferencedByEnum;:
+Lcom/android/jack/multidex/test002/jack/ReferencedByInterface;:
+Lcom/android/jack/multidex/test002/jack/Test;:
+Lcom/android/jack/multidex/test002/jack/TestApplication;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big001;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big002;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big003;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big004;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big005;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big006;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big007;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big008;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big009;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big010;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big011;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big012;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big013;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big014;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big015;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big016;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big017;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big018;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big019;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big020;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big021;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big022;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big023;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big024;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big025;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big026;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big027;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big028;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big029;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big030;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big031;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big032;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big033;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big034;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big035;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big036;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big037;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big038;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big039;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big040;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big041;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big042;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big043;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big044;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big045;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big046;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big047;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big048;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big049;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big050;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big051;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big052;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big053;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big054;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big055;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big056;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big057;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big058;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big059;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big060;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big061;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big062;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big063;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big064;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big065;:
diff --git a/jack-tests/tests/com/android/jack/multidex/test002/jack/ref-list-002a-2.txt b/jack-tests/tests/com/android/jack/multidex/test002/jack/ref-list-002a-2.txt
new file mode 100644
index 00000000..0844a02f
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/multidex/test002/jack/ref-list-002a-2.txt
@@ -0,0 +1,15 @@
+Lcom/android/jack/multidex/test002/jack/manymethods/Big066;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big067;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big068;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big069;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big070;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big071;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big072;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big073;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big074;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big075;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big076;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big077;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big078;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big079;:
+Lcom/android/jack/multidex/test002/jack/manymethods/Big080;:
diff --git a/jack-tests/tests/com/android/jack/multidex/test002/jack/ref-list-002-1.txt b/jack-tests/tests/com/android/jack/multidex/test002/jack/ref-list-002b-1.txt
index 93775525..93775525 100644
--- a/jack-tests/tests/com/android/jack/multidex/test002/jack/ref-list-002-1.txt
+++ b/jack-tests/tests/com/android/jack/multidex/test002/jack/ref-list-002b-1.txt
diff --git a/jack-tests/tests/com/android/jack/multidex/test002/jack/ref-list-002-2.txt b/jack-tests/tests/com/android/jack/multidex/test002/jack/ref-list-002b-2.txt
index d6530758..d6530758 100644
--- a/jack-tests/tests/com/android/jack/multidex/test002/jack/ref-list-002-2.txt
+++ b/jack-tests/tests/com/android/jack/multidex/test002/jack/ref-list-002b-2.txt