Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1346)

Unified Diff: chrome/android/webapk/shell_apk/javatests/src/org/chromium/webapk/shell_apk/DexLoaderTest.java

Issue 2041333003: Revert of Fix DexLoaderTest#testLoadAfterDeleteCachedDexes() flakiness (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/android/webapk/shell_apk/javatests/dex_optimizer/BUILD.gn ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/android/webapk/shell_apk/javatests/src/org/chromium/webapk/shell_apk/DexLoaderTest.java
diff --git a/chrome/android/webapk/shell_apk/javatests/src/org/chromium/webapk/shell_apk/DexLoaderTest.java b/chrome/android/webapk/shell_apk/javatests/src/org/chromium/webapk/shell_apk/DexLoaderTest.java
index a002a794c4696b6b739cc68e2a034825ca8d8c4f..1e77656b4ab66fced3d13a2deb9f8088f3a7bf47 100644
--- a/chrome/android/webapk/shell_apk/javatests/src/org/chromium/webapk/shell_apk/DexLoaderTest.java
+++ b/chrome/android/webapk/shell_apk/javatests/src/org/chromium/webapk/shell_apk/DexLoaderTest.java
@@ -42,18 +42,15 @@
"org.chromium.webapk.shell_apk.test.dex_optimizer.DexOptimizerServiceImpl";
/**
- * Name of dex files in DexOptimizer.apk.
+ * Name of the dex file in DexOptimizer.apk.
*/
private static final String DEX_ASSET_NAME = "canary.dex";
- private static final String DEX_ASSET_NAME2 = "canary2.dex";
-
- /**
- * Classes to load to check whether dex is valid.
+
+ /**
+ * Class to load to check whether dex is valid.
*/
private static final String CANARY_CLASS_NAME =
"org.chromium.webapk.shell_apk.test.canary.Canary";
- private static final String CANARY_CLASS_NAME2 =
- "org.chromium.webapk.shell_apk.test.canary.Canary2";
private Context mContext;
private Context mRemoteContext;
@@ -220,33 +217,47 @@
}
/**
- * Test loading a dex file from a directory which was previously used for loading a different
- * dex file.
+ * Test that {@link DexLoader#load()} re-extracts the dex file from the APK after a call to
+ * {@link DexLoader#deleteCachedDexes()}.
*/
@MediumTest
- public void testLoadDifferentDexInLocalDataDir() {
+ public void testLoadAfterDeleteCachedDexes() {
assertTrue(mLocalDexDir.mkdir());
- // Load canary.dex
- ClassLoader loader1 = DexLoader.load(
- mRemoteContext, DEX_ASSET_NAME, CANARY_CLASS_NAME, null, mLocalDexDir);
- assertNotNull(loader1);
- assertTrue(canLoadCanaryClass(loader1));
-
- File canaryDexFile1 = new File(mLocalDexDir, DEX_ASSET_NAME);
- assertTrue(canaryDexFile1.exists());
+ {
+ // Load dex the first time. This should extract the dex file from the APK's assets and
+ // generate the optimized dex file.
+ FileMonitor localDexDirMonitor = new FileMonitor(mLocalDexDir);
+ localDexDirMonitor.startWatching();
+ ClassLoader loader = DexLoader.load(
+ mRemoteContext, DEX_ASSET_NAME, CANARY_CLASS_NAME, null, mLocalDexDir);
+ localDexDirMonitor.stopWatching();
+
+ assertNotNull(loader);
+ assertTrue(canLoadCanaryClass(loader));
+
+ assertTrue(localDexDirMonitor.mReadPaths.contains(DEX_ASSET_NAME));
+ assertTrue(localDexDirMonitor.mModifiedPaths.contains(DEX_ASSET_NAME));
+ }
DexLoader.deleteCachedDexes(mLocalDexDir);
- ClassLoader loader2 = DexLoader.load(
- mRemoteContext, DEX_ASSET_NAME2, CANARY_CLASS_NAME2, null, mLocalDexDir);
- assertNotNull(loader2);
- assertTrue(canLoadClass(loader2, CANARY_CLASS_NAME2));
-
- // canary2.dex should have been extracted and the previously extracted canary.dex file
- // should have been deleted.
- assertTrue(new File(mLocalDexDir, DEX_ASSET_NAME2).exists());
- assertFalse(canaryDexFile1.exists());
+ {
+ // Load dex a second time.
+ FileMonitor localDexDirMonitor = new FileMonitor(mLocalDexDir);
+ localDexDirMonitor.startWatching();
+ ClassLoader loader = DexLoader.load(
+ mRemoteContext, DEX_ASSET_NAME, CANARY_CLASS_NAME, null, mLocalDexDir);
+ localDexDirMonitor.stopWatching();
+
+ // The returned ClassLoader should be valid.
+ assertNotNull(loader);
+ assertTrue(canLoadCanaryClass(loader));
+
+ // We should have re-extracted the dex from the APK's assets.
+ assertTrue(localDexDirMonitor.mReadPaths.contains(DEX_ASSET_NAME));
+ assertTrue(localDexDirMonitor.mModifiedPaths.contains(DEX_ASSET_NAME));
+ }
}
/**
@@ -314,13 +325,8 @@
/** Returns whether the ClassLoader can load {@link CANARY_CLASS_NAME} */
private boolean canLoadCanaryClass(ClassLoader loader) {
- return canLoadClass(loader, CANARY_CLASS_NAME);
- }
-
- /** Returns whether the ClassLoader can load a class */
- private boolean canLoadClass(ClassLoader loader, String className) {
- try {
- loader.loadClass(className);
+ try {
+ loader.loadClass(CANARY_CLASS_NAME);
return true;
} catch (Exception e) {
return false;
« no previous file with comments | « chrome/android/webapk/shell_apk/javatests/dex_optimizer/BUILD.gn ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698