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 <[email protected]>
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);