Fix VC cache setup/cleanup and test fails
[ERROR] Failures:
[ERROR] TestVirtualCorpusCache.testCleanUpVC:152 expected:<3> but
was:<5>
[ERROR] TestVirtualCorpusCache.testCollectionWithVCRefAndPubDate:476
expected:<2> but was:<1>
[ERROR]
TestVirtualCorpusCache.testNamedVCsAfterCorpusWithMissingDocs:407
[ERROR]
TestVirtualCorpusCache.testNamedVCsAfterQueryWithMissingDocs:335
[ERROR] TestVirtualCorpusCache.testNestedNamedVCs:248
[ERROR] TestVirtualCorpusCache.testReferToUncachedVC:88
[ERROR] TestVirtualCorpusCache.testStoreUncachedVC:72
[ERROR] TestVirtualCorpusCache.testUpdateCachedVC:112 expected:<2> but
was:<3>
[ERROR] Errors:
[ERROR] TestVirtualCorpusCache.testCache:215 ยป IndexOutOfBounds Index
1 out of bounds for length 1
[INFO]
[ERROR] Tests run: 723, Failures: 8, Errors: 1, Skipped: 0
Change-Id: I6c2565d25cb7db5af78cac82cf9d5fcebc293979
diff --git a/src/main/java/de/ids_mannheim/korap/cache/VirtualCorpusCache.java b/src/main/java/de/ids_mannheim/korap/cache/VirtualCorpusCache.java
index 81e094c..73566a2 100644
--- a/src/main/java/de/ids_mannheim/korap/cache/VirtualCorpusCache.java
+++ b/src/main/java/de/ids_mannheim/korap/cache/VirtualCorpusCache.java
@@ -245,13 +245,22 @@
map.clear();
File vcCache = new File(CACHE_LOCATION + "/");
- for (File vc : vcCache.listFiles()) {
- for (File f : vc.listFiles()) {
- if (f.exists()) {
- f.delete();
+ if (!vcCache.exists()) {
+ return;
+ }
+ File[] vcs = vcCache.listFiles();
+ if (vcs != null) {
+ for (File vc : vcs) {
+ File[] files = vc.listFiles();
+ if (files != null) {
+ for (File f : files) {
+ if (f.exists()) {
+ f.delete();
+ }
+ }
}
+ vc.delete();
}
- vc.delete();
}
vcCache.delete();
}
diff --git a/src/test/java/de/ids_mannheim/korap/cache/TestVirtualCorpusCache.java b/src/test/java/de/ids_mannheim/korap/cache/TestVirtualCorpusCache.java
index 2c8edc2..ef6c436 100644
--- a/src/test/java/de/ids_mannheim/korap/cache/TestVirtualCorpusCache.java
+++ b/src/test/java/de/ids_mannheim/korap/cache/TestVirtualCorpusCache.java
@@ -12,6 +12,8 @@
import org.apache.commons.io.IOUtils;
import org.junit.Test;
+import org.junit.Before;
+import org.junit.After;
import de.ids_mannheim.korap.Krill;
import de.ids_mannheim.korap.KrillCollection;
@@ -46,6 +48,19 @@
queryRefJson2 = IOUtils.toString(is, "utf-8");
}
+ @Before
+ public void setUpCacheLocation() {
+ // Use an isolated cache directory per test run to avoid cross-test interference
+ VirtualCorpusCache.CACHE_LOCATION = "target/vc-cache-test-" + System.nanoTime();
+ VirtualCorpusCache.reset();
+ new VirtualCorpusCache();
+ }
+
+ @After
+ public void tearDownCache() {
+ VirtualCorpusCache.reset();
+ }
+
public static KrillIndex createIndex () throws IOException {
KrillIndex ki = new KrillIndex();