This is an automated email from the ASF dual-hosted git repository.

ctubbsii pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/accumulo-classloaders.git


The following commit(s) were added to refs/heads/main by this push:
     new fc78958  use constants for dir names (#66)
fc78958 is described below

commit fc7895882706fa31f335bdfc4a0d2c738381f366
Author: Keith Turner <[email protected]>
AuthorDate: Thu Feb 5 16:43:18 2026 -0500

    use constants for dir names (#66)
    
    * Use constants for directory names
    * Remove unused Logger in test
    * Use unique dirname for base cache directory in tests
    
    ---------
    
    Co-authored-by: Christopher Tubbs <[email protected]>
---
 .../accumulo/classloader/lcc/util/LocalStore.java  | 10 +++--
 .../LocalCachingContextClassLoaderFactoryTest.java | 27 ++++++-------
 .../MiniAccumuloClusterClassLoaderFactoryTest.java | 10 +++--
 .../classloader/lcc/util/LocalStoreTest.java       | 47 +++++++++++++---------
 4 files changed, 54 insertions(+), 40 deletions(-)

diff --git 
a/modules/local-caching-classloader/src/main/java/org/apache/accumulo/classloader/lcc/util/LocalStore.java
 
b/modules/local-caching-classloader/src/main/java/org/apache/accumulo/classloader/lcc/util/LocalStore.java
index 4773e9b..ecf7f7e 100644
--- 
a/modules/local-caching-classloader/src/main/java/org/apache/accumulo/classloader/lcc/util/LocalStore.java
+++ 
b/modules/local-caching-classloader/src/main/java/org/apache/accumulo/classloader/lcc/util/LocalStore.java
@@ -91,13 +91,17 @@ public final class LocalStore {
   private final Path workingDir;
   private final BiConsumer<String,URL> allowedUrlChecker;
 
+  public static final String CONTEXTS_DIR = "contexts";
+  public static final String RESOURCES_DIR = "resources";
+  public static final String WORKING_DIR = "working";
+
   public LocalStore(final Path baseDir, final BiConsumer<String,URL> 
allowedUrlChecker)
       throws IOException {
     requireNonNull(baseDir);
     this.allowedUrlChecker = requireNonNull(allowedUrlChecker);
-    this.contextsDir = Files.createDirectories(baseDir.resolve("contexts"));
-    this.resourcesDir = Files.createDirectories(baseDir.resolve("resources"));
-    this.workingDir = Files.createDirectories(baseDir.resolve("working"));
+    this.contextsDir = Files.createDirectories(baseDir.resolve(CONTEXTS_DIR));
+    this.resourcesDir = 
Files.createDirectories(baseDir.resolve(RESOURCES_DIR));
+    this.workingDir = Files.createDirectories(baseDir.resolve(WORKING_DIR));
   }
 
   Path contextsDir() {
diff --git 
a/modules/local-caching-classloader/src/test/java/org/apache/accumulo/classloader/lcc/LocalCachingContextClassLoaderFactoryTest.java
 
b/modules/local-caching-classloader/src/test/java/org/apache/accumulo/classloader/lcc/LocalCachingContextClassLoaderFactoryTest.java
index 7d68d3b..caf5aaf 100644
--- 
a/modules/local-caching-classloader/src/test/java/org/apache/accumulo/classloader/lcc/LocalCachingContextClassLoaderFactoryTest.java
+++ 
b/modules/local-caching-classloader/src/test/java/org/apache/accumulo/classloader/lcc/LocalCachingContextClassLoaderFactoryTest.java
@@ -26,6 +26,8 @@ import static 
org.apache.accumulo.classloader.lcc.TestUtils.createContextDefinit
 import static 
org.apache.accumulo.classloader.lcc.TestUtils.testClassFailsToLoad;
 import static org.apache.accumulo.classloader.lcc.TestUtils.testClassLoads;
 import static 
org.apache.accumulo.classloader.lcc.TestUtils.updateContextDefinitionFile;
+import static 
org.apache.accumulo.classloader.lcc.util.LocalStore.RESOURCES_DIR;
+import static org.apache.accumulo.classloader.lcc.util.LocalStore.WORKING_DIR;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -70,10 +72,9 @@ import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInfo;
 import org.junit.jupiter.api.io.CleanupMode;
 import org.junit.jupiter.api.io.TempDir;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import com.google.gson.JsonSyntaxException;
 
@@ -82,8 +83,6 @@ public class LocalCachingContextClassLoaderFactoryTest {
   protected static final int MONITOR_INTERVAL_SECS = 5;
   // MD5 sum for "bad"
   private static final String BAD_MD5 = "bae60998ffe4923b131e3d6e4c19993e";
-  private static final Logger log =
-      LoggerFactory.getLogger(LocalCachingContextClassLoaderFactoryTest.class);
   private static MiniDFSCluster hdfs;
   private static FileSystem fs;
   private static Server jetty;
@@ -177,8 +176,8 @@ public class LocalCachingContextClassLoaderFactoryTest {
   }
 
   @BeforeEach
-  public void beforeEach() throws Exception {
-    baseCacheDir = tempDir.resolve("base");
+  public void beforeEach(TestInfo info) throws Exception {
+    baseCacheDir = 
tempDir.resolve(info.getTestMethod().orElseThrow().getName());
     ConfigurationCopy acuConf = new ConfigurationCopy(
         Map.of(CACHE_DIR_PROPERTY, 
baseCacheDir.toAbsolutePath().toUri().toURL().toExternalForm(),
             UPDATE_FAILURE_GRACE_PERIOD_MINS, "1", ALLOWED_URLS_PATTERN, 
".*"));
@@ -812,7 +811,7 @@ public class LocalCachingContextClassLoaderFactoryTest {
     testClassLoads(cl, classC);
     testClassLoads(cl, classD);
 
-    var resources = tempDir.resolve("base").resolve("resources");
+    var resources = baseCacheDir.resolve(RESOURCES_DIR);
     List<Path> files =
         def.getResources().stream().map(r -> 
resources.resolve(LocalStore.localResourceName(r)))
             .limit(2).collect(Collectors.toList());
@@ -841,14 +840,13 @@ public class LocalCachingContextClassLoaderFactoryTest {
   @Test
   public void testConcurrentDeletes() throws Exception {
 
-    var executor = Executors.newCachedThreadPool();
-
-    AtomicBoolean stop = new AtomicBoolean(false);
+    final var executor = Executors.newCachedThreadPool();
+    final var stop = new AtomicBoolean(false);
 
     // create a background task that continually concurrently deletes files in 
the resources dir
     var deleteFuture = executor.submit(() -> {
       while (!stop.get()) {
-        var resourcesDir = 
tempDir.resolve("base").resolve("resources").toFile();
+        var resourcesDir = baseCacheDir.resolve(RESOURCES_DIR).toFile();
         assertTrue(resourcesDir.exists() && resourcesDir.isDirectory());
         var files = resourcesDir.listFiles();
         for (var file : files) {
@@ -904,10 +902,9 @@ public class LocalCachingContextClassLoaderFactoryTest {
     deleteFuture.get();
     executor.shutdown();
 
-    var workingDir = tempDir.resolve("base").resolve("working").toFile();
-    var filesList = workingDir.listFiles();
-    var workingDirs = filesList == null ? 0 : filesList.length;
+    long workingDirsCount =
+        Files.list(baseCacheDir.resolve(WORKING_DIR)).filter(p -> 
p.toFile().isDirectory()).count();
     // check that many hard link directories were created
-    assertTrue(workingDirs > 50, () -> "workingDirs:" + workingDirs);
+    assertTrue(workingDirsCount > 50);
   }
 }
diff --git 
a/modules/local-caching-classloader/src/test/java/org/apache/accumulo/classloader/lcc/MiniAccumuloClusterClassLoaderFactoryTest.java
 
b/modules/local-caching-classloader/src/test/java/org/apache/accumulo/classloader/lcc/MiniAccumuloClusterClassLoaderFactoryTest.java
index 1ba7dea..8939309 100644
--- 
a/modules/local-caching-classloader/src/test/java/org/apache/accumulo/classloader/lcc/MiniAccumuloClusterClassLoaderFactoryTest.java
+++ 
b/modules/local-caching-classloader/src/test/java/org/apache/accumulo/classloader/lcc/MiniAccumuloClusterClassLoaderFactoryTest.java
@@ -23,6 +23,7 @@ import static 
java.nio.file.StandardCopyOption.REPLACE_EXISTING;
 import static 
org.apache.accumulo.classloader.lcc.LocalCachingContextClassLoaderFactory.ALLOWED_URLS_PATTERN;
 import static 
org.apache.accumulo.classloader.lcc.LocalCachingContextClassLoaderFactory.CACHE_DIR_PROPERTY;
 import static 
org.apache.accumulo.classloader.lcc.LocalCachingContextClassLoaderFactory.UPDATE_FAILURE_GRACE_PERIOD_MINS;
+import static org.apache.accumulo.classloader.lcc.util.LocalStore.WORKING_DIR;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertIterableEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -73,6 +74,7 @@ import org.apache.accumulo.test.VerifyIngest.VerifyParams;
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.CleanupMode;
 import org.junit.jupiter.api.io.TempDir;
 
 public class MiniAccumuloClusterClassLoaderFactoryTest extends 
SharedMiniClusterBase {
@@ -86,13 +88,13 @@ public class MiniAccumuloClusterClassLoaderFactoryTest 
extends SharedMiniCluster
       cfg.setProperty(Property.TSERV_NATIVEMAP_ENABLED.getKey(), "false");
       cfg.setProperty(Property.GENERAL_CONTEXT_CLASSLOADER_FACTORY.getKey(),
           LocalCachingContextClassLoaderFactory.class.getName());
-      cfg.setProperty(CACHE_DIR_PROPERTY, 
tempDir.resolve("base").toUri().toString());
+      cfg.setProperty(CACHE_DIR_PROPERTY, baseCacheDir.toUri().toString());
       cfg.setProperty(ALLOWED_URLS_PATTERN, ".*");
       cfg.setProperty(UPDATE_FAILURE_GRACE_PERIOD_MINS, "1");
     }
   }
 
-  @TempDir
+  @TempDir(cleanup = CleanupMode.ON_SUCCESS)
   private static Path tempDir;
 
   private static final String ITER_CLASS_NAME =
@@ -102,9 +104,11 @@ public class MiniAccumuloClusterClassLoaderFactoryTest 
extends SharedMiniCluster
 
   private static URL jarAOrigLocation;
   private static URL jarBOrigLocation;
+  private static Path baseCacheDir;
 
   @BeforeAll
   public static void beforeAll() throws Exception {
+    baseCacheDir = Files.createTempDirectory(tempDir, "base-");
 
     // Find the Test jar files
     jarAOrigLocation = MiniAccumuloClusterClassLoaderFactoryTest.class
@@ -124,7 +128,7 @@ public class MiniAccumuloClusterClassLoaderFactoryTest 
extends SharedMiniCluster
 
   @Test
   public void testClassLoader() throws Exception {
-    final var workingDirPath = tempDir.resolve("base").resolve("working");
+    final var workingDirPath = baseCacheDir.resolve(WORKING_DIR);
     final var jsonDirPath = tempDir.resolve("simulatedRemoteContextFiles");
     Files.createDirectory(jsonDirPath);
 
diff --git 
a/modules/local-caching-classloader/src/test/java/org/apache/accumulo/classloader/lcc/util/LocalStoreTest.java
 
b/modules/local-caching-classloader/src/test/java/org/apache/accumulo/classloader/lcc/util/LocalStoreTest.java
index 6749ed7..9f4e223 100644
--- 
a/modules/local-caching-classloader/src/test/java/org/apache/accumulo/classloader/lcc/util/LocalStoreTest.java
+++ 
b/modules/local-caching-classloader/src/test/java/org/apache/accumulo/classloader/lcc/util/LocalStoreTest.java
@@ -21,6 +21,9 @@ package org.apache.accumulo.classloader.lcc.util;
 import static 
org.apache.accumulo.classloader.lcc.TestUtils.testClassFailsToLoad;
 import static org.apache.accumulo.classloader.lcc.TestUtils.testClassLoads;
 import static 
org.apache.accumulo.classloader.lcc.util.LccUtils.checksumForFileName;
+import static org.apache.accumulo.classloader.lcc.util.LocalStore.CONTEXTS_DIR;
+import static 
org.apache.accumulo.classloader.lcc.util.LocalStore.RESOURCES_DIR;
+import static org.apache.accumulo.classloader.lcc.util.LocalStore.WORKING_DIR;
 import static 
org.apache.accumulo.classloader.lcc.util.LocalStore.localResourceName;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
@@ -46,14 +49,16 @@ import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.hdfs.MiniDFSCluster;
 import org.eclipse.jetty.server.Server;
 import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInfo;
+import org.junit.jupiter.api.io.CleanupMode;
 import org.junit.jupiter.api.io.TempDir;
 
 public class LocalStoreTest {
 
-  @TempDir
+  @TempDir(cleanup = CleanupMode.ON_SUCCESS)
   private static Path tempDir;
 
   // a mock URL checker that allows all for test
@@ -67,12 +72,10 @@ public class LocalStoreTest {
   private static TestClassInfo classB;
   private static TestClassInfo classC;
   private static TestClassInfo classD;
-  private static Path baseCacheDir = null;
+  private Path baseCacheDir;
 
   @BeforeAll
   public static void beforeAll() throws Exception {
-    baseCacheDir = tempDir.resolve("base");
-
     // Find the Test jar files
     final URL jarAOrigLocation = 
LocalStoreTest.class.getResource("/ClassLoaderTestA/TestA.jar");
     assertNotNull(jarAOrigLocation);
@@ -122,9 +125,9 @@ public class LocalStoreTest {
     }
   }
 
-  @AfterEach
-  public void cleanBaseDir() throws Exception {
-    LccUtils.recursiveDelete(baseCacheDir);
+  @BeforeEach
+  public void createBaseDir(TestInfo info) {
+    baseCacheDir = 
tempDir.resolve(info.getTestMethod().orElseThrow().getName());
   }
 
   @Test
@@ -137,14 +140,20 @@ public class LocalStoreTest {
 
   @Test
   public void testCreateBaseDirs() throws Exception {
+    // these dirs are documented, so need to update docs when changing 
constant values
+    assertEquals("resources", RESOURCES_DIR);
+    assertEquals("working", WORKING_DIR);
+    assertEquals("contexts", CONTEXTS_DIR);
+
     assertFalse(Files.exists(baseCacheDir));
     var localStore = new LocalStore(baseCacheDir, ALLOW_ALL_URLS);
     assertTrue(Files.exists(baseCacheDir));
-    assertTrue(Files.exists(baseCacheDir.resolve("contexts")));
-    assertTrue(Files.exists(baseCacheDir.resolve("resources")));
-    assertEquals(baseCacheDir.resolve("contexts"), localStore.contextsDir());
-    assertEquals(baseCacheDir.resolve("resources"), localStore.resourcesDir());
-    assertEquals(baseCacheDir.resolve("working"), localStore.workingDir());
+    assertTrue(Files.exists(baseCacheDir.resolve(CONTEXTS_DIR)));
+    assertTrue(Files.exists(baseCacheDir.resolve(RESOURCES_DIR)));
+    assertTrue(Files.exists(baseCacheDir.resolve(WORKING_DIR)));
+    assertEquals(baseCacheDir.resolve(CONTEXTS_DIR), localStore.contextsDir());
+    assertEquals(baseCacheDir.resolve(RESOURCES_DIR), 
localStore.resourcesDir());
+    assertEquals(baseCacheDir.resolve(WORKING_DIR), localStore.workingDir());
   }
 
   @Test
@@ -223,10 +232,10 @@ public class LocalStoreTest {
 
     // Confirm the 3 jars are cached locally
     assertTrue(Files.exists(baseCacheDir));
-    assertTrue(
-        
Files.exists(baseCacheDir.resolve("contexts").resolve(checksumForFileName(def) 
+ ".json")));
+    assertTrue(Files
+        
.exists(baseCacheDir.resolve(CONTEXTS_DIR).resolve(checksumForFileName(def) + 
".json")));
     for (Resource r : def.getResources()) {
-      
assertTrue(Files.exists(baseCacheDir.resolve("resources").resolve(localResourceName(r))));
+      
assertTrue(Files.exists(baseCacheDir.resolve(RESOURCES_DIR).resolve(localResourceName(r))));
     }
   }
 
@@ -270,16 +279,16 @@ public class LocalStoreTest {
 
     // Confirm the 3 jars are cached locally
     assertTrue(Files.exists(
-        
baseCacheDir.resolve("contexts").resolve(checksumForFileName(updatedDef) + 
".json")));
+        
baseCacheDir.resolve(CONTEXTS_DIR).resolve(checksumForFileName(updatedDef) + 
".json")));
     for (Resource r : updatedDef.getResources()) {
       assertFalse(r.getFileName().contains("C"));
-      
assertTrue(Files.exists(baseCacheDir.resolve("resources").resolve(localResourceName(r))));
+      
assertTrue(Files.exists(baseCacheDir.resolve(RESOURCES_DIR).resolve(localResourceName(r))));
     }
 
     assertTrue(removedResource.getFileName().contains("C"),
         "cache location should still contain 'C'");
     assertTrue(Files
-        
.exists(baseCacheDir.resolve("resources").resolve(localResourceName(removedResource))));
+        
.exists(baseCacheDir.resolve(RESOURCES_DIR).resolve(localResourceName(removedResource))));
 
     cacheKey = new ContextCacheKey("loc", updatedDef);
     final var updatedContextClassLoader = LccUtils.createClassLoader(cacheKey, 
localStore);

Reply via email to