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

kturner pushed a commit to branch 3.1
in repository https://gitbox.apache.org/repos/asf/accumulo.git


The following commit(s) were added to refs/heads/3.1 by this push:
     new 87ab1f73b0 adds a static method for creating a configuration object 
(#4968)
87ab1f73b0 is described below

commit 87ab1f73b0ec6da6748a5efe9b2cdcc6077d3a15
Author: Keith Turner <ktur...@apache.org>
AuthorDate: Wed Oct 9 18:29:26 2024 -0400

    adds a static method for creating a configuration object (#4968)
    
    Adds static methods for creating PluginEnv.Configuration objects from a
    Map<String,String> and updates tests to use them.  These new methods
    make it easier for downstream projects to create these object using only
    public APIs.
---
 .../apache/accumulo/core/client/PluginEnvironment.java  | 17 +++++++++++++++++
 .../accumulo/core/spi/common/ServiceEnvironment.java    | 12 ++++++++++++
 .../spi/balancer/HostRegexTableLoadBalancerTest.java    |  8 ++------
 .../core/spi/balancer/TableLoadBalancerTest.java        |  9 ++++-----
 .../spi/compaction/DefaultCompactionPlannerTest.java    | 17 ++++++-----------
 5 files changed, 41 insertions(+), 22 deletions(-)

diff --git 
a/core/src/main/java/org/apache/accumulo/core/client/PluginEnvironment.java 
b/core/src/main/java/org/apache/accumulo/core/client/PluginEnvironment.java
index 4372a15e61..3700086b96 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/PluginEnvironment.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/PluginEnvironment.java
@@ -24,7 +24,10 @@ import java.util.Map.Entry;
 import java.util.function.Function;
 import java.util.function.Supplier;
 
+import org.apache.accumulo.core.conf.ConfigurationCopy;
+import org.apache.accumulo.core.conf.DefaultConfiguration;
 import org.apache.accumulo.core.data.TableId;
+import org.apache.accumulo.core.util.ConfigurationImpl;
 
 /**
  * This interface exposes Accumulo system level information to plugins in a 
stable manner. The
@@ -131,6 +134,20 @@ public interface PluginEnvironment {
      * reflected in the returned value.
      */
     <T> Supplier<T> getDerived(Function<Configuration,T> computeDerivedValue);
+
+    /**
+     * Creates a configuration object from a map of properties, this is useful 
for testing.
+     *
+     * @param includeDefaults If true will include accumulo's default 
properties and layer the
+     *        passed in map on top of these.
+     * @since 3.1.0
+     */
+    static Configuration from(Map<String,String> properties, boolean 
includeDefaults) {
+      ConfigurationCopy config = includeDefaults
+          ? new ConfigurationCopy(DefaultConfiguration.getInstance()) : new 
ConfigurationCopy();
+      properties.forEach(config::set);
+      return new ConfigurationImpl(config);
+    }
   }
 
   /**
diff --git 
a/core/src/main/java/org/apache/accumulo/core/spi/common/ServiceEnvironment.java
 
b/core/src/main/java/org/apache/accumulo/core/spi/common/ServiceEnvironment.java
index 09f65bd624..7e7b536a68 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/spi/common/ServiceEnvironment.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/spi/common/ServiceEnvironment.java
@@ -18,6 +18,8 @@
  */
 package org.apache.accumulo.core.spi.common;
 
+import java.util.Map;
+
 import org.apache.accumulo.core.client.PluginEnvironment;
 import org.apache.accumulo.core.data.TableId;
 
@@ -39,6 +41,16 @@ public interface ServiceEnvironment extends 
PluginEnvironment {
    */
   interface Configuration extends PluginEnvironment.Configuration {
 
+    /**
+     * Creates a configuration object from a map of properties, this is useful 
for testing.
+     *
+     * @param includeDefaults If true will include accumulo's default 
properties and layer the
+     *        passed in map on top of these.
+     * @since 3.1.0
+     */
+    static Configuration from(Map<String,String> properties, boolean 
includeDefaults) {
+      return (Configuration) PluginEnvironment.Configuration.from(properties, 
includeDefaults);
+    }
   }
 
   /**
diff --git 
a/core/src/test/java/org/apache/accumulo/core/spi/balancer/HostRegexTableLoadBalancerTest.java
 
b/core/src/test/java/org/apache/accumulo/core/spi/balancer/HostRegexTableLoadBalancerTest.java
index 298bb8b995..5071ddea12 100644
--- 
a/core/src/test/java/org/apache/accumulo/core/spi/balancer/HostRegexTableLoadBalancerTest.java
+++ 
b/core/src/test/java/org/apache/accumulo/core/spi/balancer/HostRegexTableLoadBalancerTest.java
@@ -39,8 +39,6 @@ import java.util.Set;
 import java.util.SortedMap;
 import java.util.regex.Pattern;
 
-import org.apache.accumulo.core.conf.ConfigurationCopy;
-import org.apache.accumulo.core.conf.SiteConfiguration;
 import org.apache.accumulo.core.data.TableId;
 import org.apache.accumulo.core.data.TabletId;
 import org.apache.accumulo.core.dataImpl.thrift.TKeyExtent;
@@ -52,8 +50,8 @@ import 
org.apache.accumulo.core.spi.balancer.data.TServerStatus;
 import org.apache.accumulo.core.spi.balancer.data.TabletMigration;
 import org.apache.accumulo.core.spi.balancer.data.TabletServerId;
 import org.apache.accumulo.core.spi.balancer.data.TabletStatistics;
+import org.apache.accumulo.core.spi.common.ServiceEnvironment;
 import org.apache.accumulo.core.tabletserver.thrift.TabletStats;
-import org.apache.accumulo.core.util.ConfigurationImpl;
 import org.apache.accumulo.core.util.UtilWaitThread;
 import org.junit.jupiter.api.Test;
 
@@ -65,9 +63,7 @@ public class HostRegexTableLoadBalancerTest extends 
BaseHostRegexTableLoadBalanc
     tables.put(BAR.getTableName(), BAR.getId());
     tables.put(BAZ.getTableName(), BAZ.getId());
 
-    ConfigurationCopy config = new 
ConfigurationCopy(SiteConfiguration.empty().build());
-    tableProperties.forEach(config::set);
-    ConfigurationImpl configImpl = new ConfigurationImpl(config);
+    var configImpl = ServiceEnvironment.Configuration.from(tableProperties, 
false);
     BalancerEnvironment environment = createMock(BalancerEnvironment.class);
     expect(environment.getConfiguration()).andReturn(configImpl).anyTimes();
     expect(environment.getTableIdMap()).andReturn(tables).anyTimes();
diff --git 
a/core/src/test/java/org/apache/accumulo/core/spi/balancer/TableLoadBalancerTest.java
 
b/core/src/test/java/org/apache/accumulo/core/spi/balancer/TableLoadBalancerTest.java
index 41af948f38..06a30d88ed 100644
--- 
a/core/src/test/java/org/apache/accumulo/core/spi/balancer/TableLoadBalancerTest.java
+++ 
b/core/src/test/java/org/apache/accumulo/core/spi/balancer/TableLoadBalancerTest.java
@@ -34,7 +34,6 @@ import java.util.SortedMap;
 import java.util.TreeMap;
 import java.util.stream.Collectors;
 
-import org.apache.accumulo.core.conf.ConfigurationCopy;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.data.TableId;
 import org.apache.accumulo.core.data.TabletId;
@@ -48,8 +47,8 @@ import 
org.apache.accumulo.core.spi.balancer.data.TServerStatus;
 import org.apache.accumulo.core.spi.balancer.data.TabletMigration;
 import org.apache.accumulo.core.spi.balancer.data.TabletServerId;
 import org.apache.accumulo.core.spi.balancer.data.TabletStatistics;
+import org.apache.accumulo.core.spi.common.ServiceEnvironment;
 import org.apache.accumulo.core.tabletserver.thrift.TabletStats;
-import org.apache.accumulo.core.util.ConfigurationImpl;
 import org.apache.hadoop.io.Text;
 import org.junit.jupiter.api.Test;
 
@@ -117,9 +116,9 @@ public class TableLoadBalancerTest {
   @Test
   public void test() {
     BalancerEnvironment environment = createMock(BalancerEnvironment.class);
-    ConfigurationCopy cc = new ConfigurationCopy(
-        Map.of(Property.TABLE_LOAD_BALANCER.getKey(), 
TestSimpleLoadBalancer.class.getName()));
-    ConfigurationImpl tableConfig = new ConfigurationImpl(cc);
+    var tableConfig = ServiceEnvironment.Configuration.from(
+        Map.of(Property.TABLE_LOAD_BALANCER.getKey(), 
TestSimpleLoadBalancer.class.getName()),
+        false);
 
     Map<String,TableId> tableIdMap = TABLE_ID_MAP.entrySet().stream()
         .collect(Collectors.toMap(Map.Entry::getKey, e -> 
TableId.of(e.getValue())));
diff --git 
a/core/src/test/java/org/apache/accumulo/core/spi/compaction/DefaultCompactionPlannerTest.java
 
b/core/src/test/java/org/apache/accumulo/core/spi/compaction/DefaultCompactionPlannerTest.java
index 9f4f9d315c..e0c32dde6f 100644
--- 
a/core/src/test/java/org/apache/accumulo/core/spi/compaction/DefaultCompactionPlannerTest.java
+++ 
b/core/src/test/java/org/apache/accumulo/core/spi/compaction/DefaultCompactionPlannerTest.java
@@ -37,17 +37,13 @@ import java.util.Set;
 import java.util.stream.Collectors;
 
 import org.apache.accumulo.core.client.admin.compaction.CompactableFile;
-import org.apache.accumulo.core.conf.ConfigurationCopy;
 import org.apache.accumulo.core.conf.ConfigurationTypeHelper;
-import org.apache.accumulo.core.conf.DefaultConfiguration;
 import org.apache.accumulo.core.conf.Property;
-import org.apache.accumulo.core.conf.SiteConfiguration;
 import org.apache.accumulo.core.data.TableId;
 import org.apache.accumulo.core.spi.common.ServiceEnvironment;
 import org.apache.accumulo.core.spi.common.ServiceEnvironment.Configuration;
 import org.apache.accumulo.core.spi.compaction.CompactionPlan.Builder;
 import 
org.apache.accumulo.core.spi.compaction.CompactionPlanner.InitParameters;
-import org.apache.accumulo.core.util.ConfigurationImpl;
 import org.apache.accumulo.core.util.compaction.CompactionExecutorIdImpl;
 import org.apache.accumulo.core.util.compaction.CompactionJobImpl;
 import org.apache.accumulo.core.util.compaction.CompactionPlanImpl;
@@ -65,7 +61,7 @@ public class DefaultCompactionPlannerTest {
   }
 
   private static final Configuration defaultConf =
-      new ConfigurationImpl(DefaultConfiguration.getInstance());
+      ServiceEnvironment.Configuration.from(Map.of(), true);
   private static final CompactionServiceId csid = 
CompactionServiceId.of("cs1");
   private static final String prefix = 
Property.COMPACTION_SERVICE_PREFIX.getKey();
 
@@ -182,9 +178,8 @@ public class DefaultCompactionPlannerTest {
 
   @Test
   public void testUserCompaction() throws Exception {
-    ConfigurationCopy aconf = new 
ConfigurationCopy(DefaultConfiguration.getInstance());
-    aconf.set(prefix + "cs1.planner.opts.maxOpen", "15");
-    ConfigurationImpl config = new ConfigurationImpl(aconf);
+    ServiceEnvironment.Configuration config = ServiceEnvironment.Configuration
+        .from(Map.of(prefix + "cs1.planner.opts.maxOpen", "15"), true);
 
     String executors = "[{'name':'small','type': 
'internal','maxSize':'32M','numThreads':1},"
         + "{'name':'medium','type': 
'internal','maxSize':'128M','numThreads':2},"
@@ -458,7 +453,7 @@ public class DefaultCompactionPlannerTest {
     Map<String,String> overrides = new HashMap<>();
     overrides.put(Property.COMPACTION_SERVICE_PREFIX.getKey() + 
"cs1.planner.opts.maxOpen", "10");
     overrides.put(Property.TABLE_FILE_MAX.getKey(), "7");
-    var conf = new 
ConfigurationImpl(SiteConfiguration.empty().withOverrides(overrides).build());
+    var conf = ServiceEnvironment.Configuration.from(overrides, false);
 
     // For this case need to compact three files and the highest ratio that 
achieves that is 1.8
     var planner = createPlanner(conf, executors);
@@ -535,7 +530,7 @@ public class DefaultCompactionPlannerTest {
     Map<String,String> overrides = new HashMap<>();
     overrides.put(Property.COMPACTION_SERVICE_PREFIX.getKey() + 
"cs1.planner.opts.maxOpen", "10");
     overrides.put(Property.TABLE_FILE_MAX.getKey(), "7");
-    var conf = new 
ConfigurationImpl(SiteConfiguration.empty().withOverrides(overrides).build());
+    var conf = ServiceEnvironment.Configuration.from(overrides, false);
 
     // ensure that when a compaction would be over the max size limit that it 
is not planned
     var planner = createPlanner(conf, executors);
@@ -574,7 +569,7 @@ public class DefaultCompactionPlannerTest {
     overrides.put(Property.COMPACTION_SERVICE_PREFIX.getKey() + 
"cs1.planner.opts.maxOpen", "10");
     overrides.put(Property.TABLE_FILE_MAX.getKey(), "0");
     overrides.put(Property.TSERV_SCAN_MAX_OPENFILES.getKey(), "5");
-    var conf = new 
ConfigurationImpl(SiteConfiguration.empty().withOverrides(overrides).build());
+    var conf = ServiceEnvironment.Configuration.from(overrides, false);
 
     var planner = createPlanner(conf, executors);
     var all = createCFs(1000, 1.9, 1.8, 1.7, 1.6, 1.5, 1.4, 1.3, 1.2, 1.1);

Reply via email to