Updates due to Accumulo 2.0 changes (#35)
- using accumulo-client.properties to create clients
diff --git a/bin/accumulo-testing b/bin/accumulo-testing
index 34fadb0..465e11b 100755
--- a/bin/accumulo-testing
+++ b/bin/accumulo-testing
@@ -128,7 +128,7 @@
datanode_log="${log_base}_datanode-agitator"
master_cmd="nohup ${libexec}/master-agitator.pl $AGTR_MASTER_KILL_SLEEP_TIME $AGTR_MASTER_RESTART_SLEEP_TIME"
tserver_cmd="nohup ${libexec}/tserver-agitator.pl $AGTR_TSERVER_KILL_SLEEP_TIME $AGTR_TSERVER_RESTART_SLEEP_TIME $AGTR_TSERVER_MIN_KILL $AGTR_TSERVER_MAX_KILL"
- datanode_cmd="nohup ${libexec}/datanode-agitator.pl $AGTR_DATANODE_KILL_SLEEP_TIME $AGTR_DATANODE_RESTART_SLEEP_TIME $HADOOP_PREFIX $AGTR_DATANODE_MIN_KILL $AGTR_DATANODE_MAX_KILL"
+ datanode_cmd="nohup ${libexec}/datanode-agitator.pl $AGTR_DATANODE_KILL_SLEEP_TIME $AGTR_DATANODE_RESTART_SLEEP_TIME $HADOOP_HOME $AGTR_DATANODE_MIN_KILL $AGTR_DATANODE_MAX_KILL"
[[ -n $AGITATOR_USER ]] || AGITATOR_USER=$(whoami)
if [[ $AGITATOR_USER == root ]]; then
@@ -187,7 +187,7 @@
case "$1" in
ci-createtable)
build_shade_jar
- java -Dlog4j.configuration="file:$log4j_config" org.apache.accumulo.testing.core.continuous.CreateTable "$at_props"
+ java -Dlog4j.configuration="file:$log4j_config" org.apache.accumulo.testing.core.continuous.CreateTable "$at_props" "$ACCUMULO_CLIENT_PROPS"
;;
ci-local)
if [ -z "$2" ]; then
@@ -197,7 +197,7 @@
fi
determine_app_main "$2"
build_shade_jar
- java -Dlog4j.configuration="file:$log4j_config" "$ci_main" "$at_props"
+ java -Dlog4j.configuration="file:$log4j_config" "$ci_main" "$at_props" "$ACCUMULO_CLIENT_PROPS"
;;
ci-yarn)
if [ -z "$2" ]; then
@@ -212,7 +212,7 @@
fi
determine_app_main "$3"
build_shade_jar
- mvn compile -P yarn-test-runner -D hadoop.version="$HADOOP_VERSION" -D exec.args="-t AccumuloCITest-$3 -j $at_shaded_jar -m $ci_main -n $2 -p $at_props -l $log4j_config -a ./accumulo-testing.properties"
+ mvn compile -P yarn-test-runner -D hadoop.version="$HADOOP_VERSION" -D exec.args="-t AccumuloCITest-$3 -j $at_shaded_jar -m $ci_main -n $2 -p $at_props -c $ACCUMULO_CLIENT_PROPS -l $log4j_config -a ./accumulo-testing.properties ./accumulo-client.properties"
;;
ci-mapred)
if [ -z "$2" ]; then
@@ -222,7 +222,7 @@
fi
determine_mapred_main "$2"
build_shade_jar
- "$HADOOP_PREFIX"/bin/yarn jar "$at_shaded_jar" "$ci_main" "$at_props"
+ "$HADOOP_HOME"/bin/yarn jar "$at_shaded_jar" "$ci_main" "$at_props" "$ACCUMULO_CLIENT_PROPS"
;;
rw-local)
if [ -z "$2" ]; then
@@ -231,7 +231,7 @@
exit 1
fi
build_shade_jar
- java -Dlog4j.configuration="file:$log4j_config" "$randomwalk_main" "$at_props" "$2"
+ java -Dlog4j.configuration="file:$log4j_config" "$randomwalk_main" "$at_props" "$ACCUMULO_CLIENT_PROPS" "$2"
;;
rw-yarn)
if [ -z "$2" ]; then
@@ -245,7 +245,7 @@
exit 1
fi
build_shade_jar
- mvn compile -P yarn-test-runner -D hadoop.version="$HADOOP_VERSION" -D exec.args="-t AccumuloRWTest-$3 -j $at_shaded_jar -m $randomwalk_main -n $2 -p $at_props -l $log4j_config -a ./accumulo-testing.properties $3"
+ mvn compile -P yarn-test-runner -D hadoop.version="$HADOOP_VERSION" -D exec.args="-t AccumuloRWTest-$3 -j $at_shaded_jar -m $randomwalk_main -n $2 -p $at_props -c $ACCUMULO_CLIENT_PROPS -l $log4j_config -a ./accumulo-testing.properties ./accumulo-client.properties $3"
;;
agitator)
case "$2" in
diff --git a/conf/accumulo-testing-env.sh.example b/conf/accumulo-testing-env.sh.example
index 677c23d..3876718 100644
--- a/conf/accumulo-testing-env.sh.example
+++ b/conf/accumulo-testing-env.sh.example
@@ -15,18 +15,22 @@
# General
# =======
-test -z "$HADOOP_PREFIX" && export HADOOP_PREFIX=/path/to/hadoop
+
+## Hadoop installation
+export HADOOP_HOME="${HADOOP_HOME:-/path/to/hadoop}"
+## Accumulo installation
+export ACCUMULO_HOME="${ACCUMULO_HOME:-/path/to/accumulo}"
+## Path to Accumulo client properties
+export ACCUMULO_CLIENT_PROPS="$ACCUMULO_HOME/conf/accumulo-client.properties"
# Versions set below will be what is included in the shaded jar
-export ACCUMULO_VERSION=`accumulo version`
-export HADOOP_VERSION=`hadoop version | head -n1 | awk '{print $2}'`
+export ACCUMULO_VERSION="`$ACCUMULO_HOME/bin/accumulo version`"
+export HADOOP_VERSION="`hadoop version | head -n1 | awk '{print $2}'`"
export ZOOKEEPER_VERSION=3.4.9
# Make sure Hadoop configuration directory is on the classpath
-export CLASSPATH=$HADOOP_PREFIX/etc/hadoop
+export CLASSPATH=$HADOOP_HOME/etc/hadoop
# Agitator
# ========
-# Agitator needs know where Accumulo is installed
-test -z "$ACCUMULO_HOME" && export ACCUMULO_HOME=/path/to/accumulo
# Accumulo user
AGTR_ACCUMULO_USER=$(whoami)
# Time (in minutes) between killing Accumulo masters
diff --git a/conf/accumulo-testing.properties.example b/conf/accumulo-testing.properties.example
index 4fff104..b084c4c 100644
--- a/conf/accumulo-testing.properties.example
+++ b/conf/accumulo-testing.properties.example
@@ -17,24 +17,6 @@
# Common properties
###################
-# Accumulo instance name
-test.common.accumulo.instance=instance
-# Accumulo username
-test.common.accumulo.username=root
-# Accumulo password
-test.common.accumulo.password=secret
-# Max memory (in bytes) each batch writer will use to buffer writes
-test.common.accumulo.bw.max.memory.bytes=100000000
-# Max latency (in milliseconds) that each batch writer will buffer data
-test.common.accumulo.bw.max.latency.ms=600000
-# Number of write thread for each batch writer
-test.common.accumulo.bw.num.threads=4
-# Number of threads used by batch scanner
-test.common.accumulo.bs.num.threads=8
-# Number of key/value entries to pull during scan
-test.common.accumulo.scanner.batch.size=1000
-# Accumulo keytab
-#test.common.accumulo.keytab=
# HDFS root path. Should match 'fs.defaultFS' property in Hadoop's core-site.xml
test.common.hdfs.root=hdfs://localhost:8020
# YARN resource manager hostname. Should match 'yarn.resourcemanager.hostname' property in Hadoop's yarn-site.xml
@@ -43,8 +25,6 @@
test.common.yarn.container.memory.mb=1024
# Number of cores given to each container (if running in YARN)
test.common.yarn.container.cores=1
-# Zookeeper connection string
-test.common.zookeepers=localhost:2181
###################################
# Continuous ingest test properties
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/TestEnv.java b/core/src/main/java/org/apache/accumulo/testing/core/TestEnv.java
index 48266f5..5ec94c7 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/TestEnv.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/TestEnv.java
@@ -2,62 +2,55 @@
import static java.util.Objects.requireNonNull;
-import java.io.File;
-import java.io.IOException;
import java.lang.management.ManagementFactory;
import java.util.Properties;
-import java.util.concurrent.TimeUnit;
+import org.apache.accumulo.core.client.Accumulo;
+import org.apache.accumulo.core.client.AccumuloClient;
import org.apache.accumulo.core.client.AccumuloException;
import org.apache.accumulo.core.client.AccumuloSecurityException;
-import org.apache.accumulo.core.client.BatchWriterConfig;
-import org.apache.accumulo.core.client.ClientConfiguration;
+import org.apache.accumulo.core.client.ClientInfo;
import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.core.client.Instance;
-import org.apache.accumulo.core.client.ZooKeeperInstance;
import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
-import org.apache.accumulo.core.client.security.tokens.KerberosToken;
-import org.apache.accumulo.core.client.security.tokens.PasswordToken;
+import org.apache.accumulo.core.conf.ClientProperty;
import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.security.UserGroupInformation;
public class TestEnv {
- protected final Properties p;
- private Instance instance = null;
- private Connector connector = null;
+ protected final Properties testProps;
+ private String clientPropsPath;
+ private ClientInfo info;
+ private AccumuloClient client = null;
private Configuration hadoopConfig = null;
- /**
- * Creates new test environment using provided properties
- *
- * @param p
- * Properties
- */
- public TestEnv(Properties p) {
- requireNonNull(p);
- this.p = p;
+ public TestEnv(String testPropsPath, String clientPropsPath) {
+ requireNonNull(testPropsPath);
+ requireNonNull(clientPropsPath);
+ this.testProps = TestProps.loadFromFile(testPropsPath);
+ this.clientPropsPath = clientPropsPath;
+ this.info = ClientInfo.from(TestProps.loadFromFile(clientPropsPath));
}
/**
- * Gets a copy of the configuration properties.
- *
- * @return a copy of the configuration properties
+ * @return a copy of the test properties
*/
- public Properties copyConfigProperties() {
- return new Properties(p);
+ public Properties getTestProperties() {
+ return new Properties(testProps);
}
/**
- * Gets a configuration property.
- *
- * @param key
- * key
- * @return property value
+ * @return a test property value given a key
*/
- public String getConfigProperty(String key) {
- return p.getProperty(key);
+ public String getTestProperty(String key) {
+ return testProps.getProperty(key);
+ }
+
+ public String getClientPropsPath() {
+ return clientPropsPath;
+ }
+
+ public ClientInfo getInfo() {
+ return info;
}
/**
@@ -66,7 +59,7 @@
* @return username
*/
public String getAccumuloUserName() {
- return p.getProperty(TestProps.ACCUMULO_USERNAME);
+ return info.getPrincipal();
}
/**
@@ -75,16 +68,11 @@
* @return password
*/
public String getAccumuloPassword() {
- return p.getProperty(TestProps.ACCUMULO_PASSWORD);
- }
-
- /**
- * Gets the configured keytab.
- *
- * @return path to keytab
- */
- public String getAccumuloKeytab() {
- return p.getProperty(TestProps.ACCUMULO_KEYTAB);
+ String authType = info.getProperties().getProperty(ClientProperty.AUTH_TYPE.getKey());
+ if (authType.equals("password")) {
+ return info.getProperties().getProperty(ClientProperty.AUTH_TOKEN.getKey());
+ }
+ return null;
}
/**
@@ -114,79 +102,28 @@
* Gets an authentication token based on the configured password.
*/
public AuthenticationToken getToken() {
- String password = getAccumuloPassword();
- if (null != password) {
- return new PasswordToken(getAccumuloPassword());
- }
- String keytab = getAccumuloKeytab();
- if (null != keytab) {
- File keytabFile = new File(keytab);
- if (!keytabFile.exists() || !keytabFile.isFile()) {
- throw new IllegalArgumentException("Provided keytab is not a normal file: " + keytab);
- }
- try {
- UserGroupInformation.loginUserFromKeytab(getAccumuloUserName(), keytabFile.getAbsolutePath());
- return new KerberosToken();
- } catch (IOException e) {
- throw new RuntimeException("Failed to login", e);
- }
- }
- throw new IllegalArgumentException("Must provide password or keytab in configuration");
- }
-
- public String getAccumuloInstanceName() {
- return p.getProperty(TestProps.ACCUMULO_INSTANCE);
+ return info.getAuthenticationToken();
}
public String getHdfsRoot() {
- return p.getProperty(TestProps.HDFS_ROOT);
+ return testProps.getProperty(TestProps.HDFS_ROOT);
}
public String getYarnResourceManager() {
- return p.getProperty(TestProps.YARN_RESOURCE_MANAGER);
- }
-
- public String getZookeepers() {
- return p.getProperty(TestProps.ZOOKEEPERS);
- }
-
- public ClientConfiguration getClientConfiguration() {
- return ClientConfiguration.loadDefault().withInstance(getAccumuloInstanceName()).withZkHosts(getZookeepers());
- }
-
- /**
- * Gets an Accumulo instance object. The same instance is reused after the first call.
- */
- public Instance getAccumuloInstance() {
- if (instance == null) {
- this.instance = new ZooKeeperInstance(getClientConfiguration());
- }
- return instance;
+ return testProps.getProperty(TestProps.YARN_RESOURCE_MANAGER);
}
/**
* Gets an Accumulo connector. The same connector is reused after the first call.
*/
- public Connector getAccumuloConnector() throws AccumuloException, AccumuloSecurityException {
- if (connector == null) {
- connector = getAccumuloInstance().getConnector(getAccumuloUserName(), getToken());
+ public AccumuloClient getAccumuloClient() throws AccumuloException, AccumuloSecurityException {
+ if (client == null) {
+ client = Accumulo.newClient().usingClientInfo(info).build();
}
- return connector;
+ return client;
}
- public BatchWriterConfig getBatchWriterConfig() {
- int numThreads = Integer.parseInt(p.getProperty(TestProps.ACCUMULO_BW_NUM_THREADS));
- long maxLatency = Long.parseLong(p.getProperty(TestProps.ACCUMULO_BW_MAX_LATENCY_MS));
- long maxMemory = Long.parseLong(p.getProperty(TestProps.ACCUMULO_BW_MAX_MEM_BYTES));
-
- BatchWriterConfig config = new BatchWriterConfig();
- config.setMaxWriteThreads(numThreads);
- config.setMaxLatency(maxLatency, TimeUnit.MILLISECONDS);
- config.setMaxMemory(maxMemory);
- return config;
- }
-
- public int getScannerBatchSize() {
- return Integer.parseInt(p.getProperty(TestProps.ACCUMULO_SCANNER_BATCH_SIZE));
+ public Connector getAccumuloConnector() throws AccumuloException, AccumuloSecurityException {
+ return Connector.from(getAccumuloClient());
}
}
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/TestProps.java b/core/src/main/java/org/apache/accumulo/testing/core/TestProps.java
index 638d2db..3b2c98f 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/TestProps.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/TestProps.java
@@ -34,26 +34,6 @@
private static final String CI_VERIFY = CI + "verify.";
/** Common properties **/
- // Zookeeper connection string
- public static final String ZOOKEEPERS = COMMON + "zookeepers";
- // Accumulo instance name
- public static final String ACCUMULO_INSTANCE = COMMON + "accumulo.instance";
- // Accumulo username
- public static final String ACCUMULO_USERNAME = COMMON + "accumulo.username";
- // Accumulo password
- public static final String ACCUMULO_PASSWORD = COMMON + "accumulo.password";
- // Max memory (in bytes) each batch writer will use to buffer writes
- public static final String ACCUMULO_BW_MAX_MEM_BYTES = COMMON + "accumulo.bw.max.memory.bytes";
- // Max the maximum time (in ms) each batch writer will buffer data
- public static final String ACCUMULO_BW_MAX_LATENCY_MS = COMMON + "accumulo.bw.max.latency.ms";
- // Number of threads each batch writer will use to write data
- public static final String ACCUMULO_BW_NUM_THREADS = COMMON + "accumulo.bw.num.threads";
- // Number of thread for each batch scanner
- public static final String ACCUMULO_BS_NUM_THREADS = COMMON + "accumulo.bw.num.threads";
- // Number of key/value entries to pull during scan
- public static final String ACCUMULO_SCANNER_BATCH_SIZE = COMMON + "accumulo.scanner.batch.size";
- // Accumulo keytab
- public static final String ACCUMULO_KEYTAB = COMMON + "accumulo.keytab";
// HDFS root path. Should match 'fs.defaultFS' property in Hadoop's core-site.xml
public static final String HDFS_ROOT = COMMON + "hdfs.root";
// YARN resource manager hostname. Should match 'yarn.resourcemanager.hostname' property in
@@ -132,8 +112,12 @@
// Location in HDFS to store output
public static final String CI_VERIFY_OUTPUT_DIR = CI_VERIFY + "output.dir";
- public static Properties loadFromFile(String propsFilePath) throws IOException {
- return loadFromStream(new FileInputStream(propsFilePath));
+ public static Properties loadFromFile(String propsFilePath) {
+ try {
+ return loadFromStream(new FileInputStream(propsFilePath));
+ } catch (IOException e) {
+ throw new IllegalArgumentException(e);
+ }
}
public static Properties loadFromStream(FileInputStream fis) throws IOException {
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/continuous/ContinuousBatchWalker.java b/core/src/main/java/org/apache/accumulo/testing/core/continuous/ContinuousBatchWalker.java
index 88134a0..2917800 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/continuous/ContinuousBatchWalker.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/continuous/ContinuousBatchWalker.java
@@ -21,7 +21,6 @@
import java.util.Iterator;
import java.util.List;
import java.util.Map.Entry;
-import java.util.Properties;
import java.util.Random;
import java.util.Set;
import java.util.concurrent.TimeUnit;
@@ -42,22 +41,22 @@
public static void main(String[] args) throws Exception {
- Properties props = TestProps.loadFromFile(args[0]);
-
- ContinuousEnv env = new ContinuousEnv(props);
+ if (args.length != 2) {
+ System.err.println("Usage: ContinuousBatchWalker <testPropsPath> <clientPropsPath>");
+ System.exit(-1);
+ }
+ ContinuousEnv env = new ContinuousEnv(args[0], args[1]);
Authorizations auths = env.getRandomAuthorizations();
Connector conn = env.getAccumuloConnector();
Scanner scanner = ContinuousUtil.createScanner(conn, env.getAccumuloTableName(), auths);
- int scanBatchSize = Integer.parseInt(props.getProperty(TestProps.CI_BW_BATCH_SIZE));
+ int scanBatchSize = Integer.parseInt(env.getTestProperty(TestProps.CI_BW_BATCH_SIZE));
scanner.setBatchSize(scanBatchSize);
Random r = new Random();
- int scanThreads = Integer.parseInt(props.getProperty(TestProps.ACCUMULO_BS_NUM_THREADS));
-
while (true) {
- BatchScanner bs = conn.createBatchScanner(env.getAccumuloTableName(), auths, scanThreads);
+ BatchScanner bs = conn.createBatchScanner(env.getAccumuloTableName(), auths);
Set<Text> batch = getBatch(scanner, env.getRowMin(), env.getRowMax(), scanBatchSize, r);
List<Range> ranges = new ArrayList<>(batch.size());
@@ -68,7 +67,7 @@
runBatchScan(scanBatchSize, bs, batch, ranges);
- int bwSleepMs = Integer.parseInt(props.getProperty(TestProps.CI_BW_SLEEP_MS));
+ int bwSleepMs = Integer.parseInt(env.getTestProperty(TestProps.CI_BW_SLEEP_MS));
sleepUninterruptibly(bwSleepMs, TimeUnit.MILLISECONDS);
}
}
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/continuous/ContinuousEnv.java b/core/src/main/java/org/apache/accumulo/testing/core/continuous/ContinuousEnv.java
index 7907ffd..76d6705 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/continuous/ContinuousEnv.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/continuous/ContinuousEnv.java
@@ -3,7 +3,6 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
-import java.util.Properties;
import java.util.Random;
import org.apache.accumulo.core.security.Authorizations;
@@ -14,8 +13,8 @@
private List<Authorizations> authList;
- ContinuousEnv(Properties props) {
- super(props);
+ ContinuousEnv(String testPropsPath, String clientPropsPath) {
+ super(testPropsPath, clientPropsPath);
}
/**
@@ -23,7 +22,7 @@
*/
private List<Authorizations> getAuthList() {
if (authList == null) {
- String authValue = p.getProperty(TestProps.CI_COMMON_AUTHS);
+ String authValue = testProps.getProperty(TestProps.CI_COMMON_AUTHS);
if (authValue == null || authValue.trim().isEmpty()) {
authList = Collections.singletonList(Authorizations.EMPTY);
} else {
@@ -45,22 +44,22 @@
}
long getRowMin() {
- return Long.parseLong(p.getProperty(TestProps.CI_INGEST_ROW_MIN));
+ return Long.parseLong(testProps.getProperty(TestProps.CI_INGEST_ROW_MIN));
}
long getRowMax() {
- return Long.parseLong(p.getProperty(TestProps.CI_INGEST_ROW_MAX));
+ return Long.parseLong(testProps.getProperty(TestProps.CI_INGEST_ROW_MAX));
}
int getMaxColF() {
- return Integer.parseInt(p.getProperty(TestProps.CI_INGEST_MAX_CF));
+ return Integer.parseInt(testProps.getProperty(TestProps.CI_INGEST_MAX_CF));
}
int getMaxColQ() {
- return Integer.parseInt(p.getProperty(TestProps.CI_INGEST_MAX_CQ));
+ return Integer.parseInt(testProps.getProperty(TestProps.CI_INGEST_MAX_CQ));
}
String getAccumuloTableName() {
- return p.getProperty(TestProps.CI_COMMON_ACCUMULO_TABLE);
+ return testProps.getProperty(TestProps.CI_COMMON_ACCUMULO_TABLE);
}
}
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/continuous/ContinuousIngest.java b/core/src/main/java/org/apache/accumulo/testing/core/continuous/ContinuousIngest.java
index 4afd00c..729fc53 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/continuous/ContinuousIngest.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/continuous/ContinuousIngest.java
@@ -99,14 +99,14 @@
public static void main(String[] args) throws Exception {
- if (args.length != 1) {
- System.err.println("Usage: ContinuousIngest <propsPath>");
+ if (args.length != 2) {
+ System.err.println("Usage: ContinuousIngest <testPropsPath> <clientPropsPath>");
System.exit(-1);
}
- Properties props = TestProps.loadFromFile(args[0]);
+ ContinuousEnv env = new ContinuousEnv(args[0], args[1]);
- String vis = props.getProperty(TestProps.CI_INGEST_VISIBILITIES);
+ String vis = env.getTestProperty(TestProps.CI_INGEST_VISIBILITIES);
if (vis == null) {
visibilities = Collections.singletonList(new ColumnVisibility());
} else {
@@ -116,8 +116,6 @@
}
}
- ContinuousEnv env = new ContinuousEnv(props);
-
long rowMin = env.getRowMin();
long rowMax = env.getRowMax();
if (rowMin < 0 || rowMax < 0 || rowMax <= rowMin) {
@@ -130,7 +128,7 @@
throw new TableNotFoundException(null, tableName, "Consult the README and create the table before starting ingest.");
}
- BatchWriter bw = conn.createBatchWriter(tableName, env.getBatchWriterConfig());
+ BatchWriter bw = conn.createBatchWriter(tableName);
bw = Trace.wrapAll(bw, new CountSampler(1024));
Random r = new Random();
@@ -159,12 +157,13 @@
int maxColF = env.getMaxColF();
int maxColQ = env.getMaxColQ();
- boolean checksum = Boolean.parseBoolean(props.getProperty(TestProps.CI_INGEST_CHECKSUM));
- long numEntries = Long.parseLong(props.getProperty(TestProps.CI_INGEST_CLIENT_ENTRIES));
+ boolean checksum = Boolean.parseBoolean(env.getTestProperty(TestProps.CI_INGEST_CHECKSUM));
+ long numEntries = Long.parseLong(env.getTestProperty(TestProps.CI_INGEST_CLIENT_ENTRIES));
- if (pauseEnabled(props)) {
+ Properties testProps = env.getTestProperties();
+ if (pauseEnabled(testProps)) {
lastPauseNs = System.nanoTime();
- pauseWaitSec = getPauseWaitSec(props, r);
+ pauseWaitSec = getPauseWaitSec(testProps, r);
log.info("PAUSING enabled");
log.info("INGESTING for " + pauseWaitSec + "s");
}
@@ -208,7 +207,7 @@
lastFlushTime = flush(bw, count, flushInterval, lastFlushTime);
if (count >= numEntries)
break out;
- pauseCheck(props, r);
+ pauseCheck(testProps, r);
}
// create one big linked list, this makes all of the first inserts
@@ -222,7 +221,7 @@
lastFlushTime = flush(bw, count, flushInterval, lastFlushTime);
if (count >= numEntries)
break out;
- pauseCheck(props, r);
+ pauseCheck(testProps, r);
}
bw.close();
}
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/continuous/ContinuousMoru.java b/core/src/main/java/org/apache/accumulo/testing/core/continuous/ContinuousMoru.java
index 81f9bd3..abaccc9 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/continuous/ContinuousMoru.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/continuous/ContinuousMoru.java
@@ -19,7 +19,6 @@
import static java.nio.charset.StandardCharsets.UTF_8;
import java.io.IOException;
-import java.util.Properties;
import java.util.Random;
import java.util.Set;
import java.util.UUID;
@@ -113,19 +112,21 @@
@Override
public int run(String[] args) throws IOException, InterruptedException, ClassNotFoundException, AccumuloSecurityException {
- Properties props = TestProps.loadFromFile(args[0]);
- ContinuousEnv env = new ContinuousEnv(props);
+ if (args.length != 2) {
+ System.err.println("Usage: ContinuousMoru <testPropsPath> <clientPropsPath>");
+ System.exit(-1);
+ }
+ ContinuousEnv env = new ContinuousEnv(args[0], args[1]);
Job job = Job.getInstance(getConf(), this.getClass().getSimpleName() + "_" + System.currentTimeMillis());
job.setJarByClass(this.getClass());
job.setInputFormatClass(AccumuloInputFormat.class);
- AccumuloInputFormat.setConnectorInfo(job, env.getAccumuloUserName(), env.getToken());
+ AccumuloInputFormat.setClientInfo(job, env.getInfo());
AccumuloInputFormat.setInputTableName(job, env.getAccumuloTableName());
- AccumuloInputFormat.setZooKeeperInstance(job, env.getClientConfiguration());
- int maxMaps = Integer.parseInt(props.getProperty(TestProps.CI_VERIFY_MAX_MAPS));
+ int maxMaps = Integer.parseInt(env.getTestProperty(TestProps.CI_VERIFY_MAX_MAPS));
// set up ranges
try {
@@ -139,11 +140,9 @@
job.setMapperClass(CMapper.class);
job.setNumReduceTasks(0);
job.setOutputFormatClass(AccumuloOutputFormat.class);
- AccumuloOutputFormat.setBatchWriterOptions(job, env.getBatchWriterConfig());
- AccumuloOutputFormat.setConnectorInfo(job, env.getAccumuloUserName(), env.getToken());
+ AccumuloOutputFormat.setClientInfo(job, env.getInfo());
AccumuloOutputFormat.setCreateTables(job, true);
AccumuloOutputFormat.setDefaultTableName(job, env.getAccumuloTableName());
- AccumuloOutputFormat.setZooKeeperInstance(job, env.getClientConfiguration());
Configuration conf = job.getConfiguration();
conf.setLong(MIN, env.getRowMin());
@@ -157,7 +156,11 @@
}
public static void main(String[] args) throws Exception {
- ContinuousEnv env = new ContinuousEnv(TestProps.loadFromFile(args[0]));
+ if (args.length != 2) {
+ System.err.println("Usage: ContinuousMoru <testPropsPath> <clientPropsPath>");
+ System.exit(-1);
+ }
+ ContinuousEnv env = new ContinuousEnv(args[0], args[1]);
int res = ToolRunner.run(env.getHadoopConfiguration(), new ContinuousMoru(), args);
if (res != 0)
System.exit(res);
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/continuous/ContinuousScanner.java b/core/src/main/java/org/apache/accumulo/testing/core/continuous/ContinuousScanner.java
index 1531269..c051691 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/continuous/ContinuousScanner.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/continuous/ContinuousScanner.java
@@ -20,7 +20,6 @@
import java.util.Iterator;
import java.util.Map.Entry;
-import java.util.Properties;
import java.util.Random;
import java.util.concurrent.TimeUnit;
@@ -38,9 +37,11 @@
public class ContinuousScanner {
public static void main(String[] args) throws Exception {
-
- Properties props = TestProps.loadFromFile(args[0]);
- ContinuousEnv env = new ContinuousEnv(props);
+ if (args.length != 2) {
+ System.err.println("Usage: ContinuousScanner <testPropsPath> <clientPropsPath>");
+ System.exit(-1);
+ }
+ ContinuousEnv env = new ContinuousEnv(args[0], args[1]);
Random r = new Random();
@@ -49,10 +50,9 @@
Connector conn = env.getAccumuloConnector();
Authorizations auths = env.getRandomAuthorizations();
Scanner scanner = ContinuousUtil.createScanner(conn, env.getAccumuloTableName(), auths);
- scanner.setBatchSize(env.getScannerBatchSize());
- int numToScan = Integer.parseInt(props.getProperty(TestProps.CI_SCANNER_ENTRIES));
- int scannerSleepMs = Integer.parseInt(props.getProperty(TestProps.CI_SCANNER_SLEEP_MS));
+ int numToScan = Integer.parseInt(env.getTestProperty(TestProps.CI_SCANNER_ENTRIES));
+ int scannerSleepMs = Integer.parseInt(env.getTestProperty(TestProps.CI_SCANNER_SLEEP_MS));
double delta = Math.min(.05, .05 / (numToScan / 1000.0));
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/continuous/ContinuousVerify.java b/core/src/main/java/org/apache/accumulo/testing/core/continuous/ContinuousVerify.java
index d343c9b..6eef2fe 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/continuous/ContinuousVerify.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/continuous/ContinuousVerify.java
@@ -22,7 +22,6 @@
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
-import java.util.Properties;
import java.util.Random;
import java.util.Set;
@@ -140,20 +139,22 @@
@Override
public int run(String[] args) throws Exception {
-
- Properties props = TestProps.loadFromFile(args[0]);
- ContinuousEnv env = new ContinuousEnv(props);
+ if (args.length != 2) {
+ System.err.println("Usage: ContinuousVerify <testPropsPath> <clientPropsPath>");
+ System.exit(-1);
+ }
+ ContinuousEnv env = new ContinuousEnv(args[0], args[1]);
Job job = Job.getInstance(getConf(), this.getClass().getSimpleName() + "_" + System.currentTimeMillis());
job.setJarByClass(this.getClass());
job.setInputFormatClass(AccumuloInputFormat.class);
- boolean scanOffline = Boolean.parseBoolean(props.getProperty(TestProps.CI_VERIFY_SCAN_OFFLINE));
+ boolean scanOffline = Boolean.parseBoolean(env.getTestProperty(TestProps.CI_VERIFY_SCAN_OFFLINE));
String tableName = env.getAccumuloTableName();
- int maxMaps = Integer.parseInt(props.getProperty(TestProps.CI_VERIFY_MAX_MAPS));
- int reducers = Integer.parseInt(props.getProperty(TestProps.CI_VERIFY_REDUCERS));
- String outputDir = props.getProperty(TestProps.CI_VERIFY_OUTPUT_DIR);
+ int maxMaps = Integer.parseInt(env.getTestProperty(TestProps.CI_VERIFY_MAX_MAPS));
+ int reducers = Integer.parseInt(env.getTestProperty(TestProps.CI_VERIFY_REDUCERS));
+ String outputDir = env.getTestProperty(TestProps.CI_VERIFY_OUTPUT_DIR);
Set<Range> ranges;
String clone = "";
@@ -174,8 +175,7 @@
AccumuloInputFormat.setRanges(job, ranges);
AccumuloInputFormat.setAutoAdjustRanges(job, false);
- AccumuloInputFormat.setConnectorInfo(job, env.getAccumuloUserName(), env.getToken());
- AccumuloInputFormat.setZooKeeperInstance(job, env.getClientConfiguration());
+ AccumuloInputFormat.setClientInfo(job, env.getInfo());
job.setMapperClass(CMapper.class);
job.setMapOutputKeyClass(LongWritable.class);
@@ -199,8 +199,11 @@
}
public static void main(String[] args) throws Exception {
-
- ContinuousEnv env = new ContinuousEnv(TestProps.loadFromFile(args[0]));
+ if (args.length != 2) {
+ System.err.println("Usage: ContinuousVerify <testPropsPath> <clientPropsPath>");
+ System.exit(-1);
+ }
+ ContinuousEnv env = new ContinuousEnv(args[0], args[1]);
int res = ToolRunner.run(env.getHadoopConfiguration(), new ContinuousVerify(), args);
if (res != 0)
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/continuous/ContinuousWalk.java b/core/src/main/java/org/apache/accumulo/testing/core/continuous/ContinuousWalk.java
index 49c10c9..aa5b899 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/continuous/ContinuousWalk.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/continuous/ContinuousWalk.java
@@ -20,7 +20,6 @@
import java.util.ArrayList;
import java.util.Map.Entry;
-import java.util.Properties;
import java.util.Random;
import java.util.zip.CRC32;
@@ -46,9 +45,11 @@
}
public static void main(String[] args) throws Exception {
-
- Properties props = TestProps.loadFromFile(args[0]);
- ContinuousEnv env = new ContinuousEnv(props);
+ if (args.length != 2) {
+ System.err.println("Usage: ContinuousWalk <testPropsPath> <clientPropsPath>");
+ System.exit(-1);
+ }
+ ContinuousEnv env = new ContinuousEnv(args[0], args[1]);
Connector conn = env.getAccumuloConnector();
@@ -56,7 +57,7 @@
ArrayList<Value> values = new ArrayList<>();
- int sleepTime = Integer.parseInt(props.getProperty(TestProps.CI_WALKER_SLEEP_MS));
+ int sleepTime = Integer.parseInt(env.getTestProperty(TestProps.CI_WALKER_SLEEP_MS));
while (true) {
Scanner scanner = ContinuousUtil.createScanner(conn, env.getAccumuloTableName(), env.getRandomAuthorizations());
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/continuous/CreateTable.java b/core/src/main/java/org/apache/accumulo/testing/core/continuous/CreateTable.java
index bac8368..c2386cb 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/continuous/CreateTable.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/continuous/CreateTable.java
@@ -16,7 +16,6 @@
*/
package org.apache.accumulo.testing.core.continuous;
-import java.util.Properties;
import java.util.SortedSet;
import java.util.TreeSet;
@@ -28,13 +27,11 @@
public static void main(String[] args) throws Exception {
- if (args.length != 1) {
- System.err.println("Usage: CreateTable <propsPath>");
+ if (args.length != 2) {
+ System.err.println("Usage: CreateTable <testPropsPath> <clientPropsPath>");
System.exit(-1);
}
-
- Properties props = TestProps.loadFromFile(args[0]);
- ContinuousEnv env = new ContinuousEnv(props);
+ ContinuousEnv env = new ContinuousEnv(args[0], args[1]);
Connector conn = env.getAccumuloConnector();
String tableName = env.getAccumuloTableName();
@@ -43,7 +40,7 @@
System.exit(-1);
}
- int numTablets = Integer.parseInt(props.getProperty(TestProps.CI_COMMON_ACCUMULO_NUM_TABLETS));
+ int numTablets = Integer.parseInt(env.getTestProperty(TestProps.CI_COMMON_ACCUMULO_NUM_TABLETS));
if (numTablets < 1) {
System.err.println("ERROR: numTablets < 1");
System.exit(-1);
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/continuous/UndefinedAnalyzer.java b/core/src/main/java/org/apache/accumulo/testing/core/continuous/UndefinedAnalyzer.java
index 70df0c0..ccd5a78 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/continuous/UndefinedAnalyzer.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/continuous/UndefinedAnalyzer.java
@@ -38,7 +38,6 @@
import org.apache.accumulo.core.cli.BatchScannerOpts;
import org.apache.accumulo.core.client.AccumuloClient;
import org.apache.accumulo.core.client.BatchScanner;
-import org.apache.accumulo.core.client.Connector;
import org.apache.accumulo.core.data.Key;
import org.apache.accumulo.core.data.Range;
import org.apache.accumulo.core.data.Value;
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/ingest/TestIngest.java b/core/src/main/java/org/apache/accumulo/testing/core/ingest/TestIngest.java
index 2d43bee..57a3cf1 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/ingest/TestIngest.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/ingest/TestIngest.java
@@ -30,13 +30,11 @@
import org.apache.accumulo.core.client.AccumuloException;
import org.apache.accumulo.core.client.AccumuloSecurityException;
import org.apache.accumulo.core.client.BatchWriter;
-import org.apache.accumulo.core.client.Connector;
import org.apache.accumulo.core.client.MutationsRejectedException;
import org.apache.accumulo.core.client.TableExistsException;
import org.apache.accumulo.core.client.TableNotFoundException;
import org.apache.accumulo.core.client.impl.TabletServerBatchWriter;
import org.apache.accumulo.core.client.security.SecurityErrorCode;
-import org.apache.accumulo.core.conf.AccumuloConfiguration;
import org.apache.accumulo.core.conf.DefaultConfiguration;
import org.apache.accumulo.core.data.ConstraintViolationSummary;
import org.apache.accumulo.core.data.Key;
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/ingest/VerifyIngest.java b/core/src/main/java/org/apache/accumulo/testing/core/ingest/VerifyIngest.java
index be3de45..2fd62b1 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/ingest/VerifyIngest.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/ingest/VerifyIngest.java
@@ -25,7 +25,6 @@
import org.apache.accumulo.core.client.AccumuloClient;
import org.apache.accumulo.core.client.AccumuloException;
import org.apache.accumulo.core.client.AccumuloSecurityException;
-import org.apache.accumulo.core.client.Connector;
import org.apache.accumulo.core.client.Scanner;
import org.apache.accumulo.core.client.TableNotFoundException;
import org.apache.accumulo.core.data.Key;
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/merkle/cli/ComputeRootHash.java b/core/src/main/java/org/apache/accumulo/testing/core/merkle/cli/ComputeRootHash.java
index a2286bb..b3d664e 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/merkle/cli/ComputeRootHash.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/merkle/cli/ComputeRootHash.java
@@ -26,7 +26,6 @@
import org.apache.accumulo.core.client.AccumuloClient;
import org.apache.accumulo.core.client.AccumuloException;
import org.apache.accumulo.core.client.AccumuloSecurityException;
-import org.apache.accumulo.core.client.Connector;
import org.apache.accumulo.core.client.Scanner;
import org.apache.accumulo.core.client.TableNotFoundException;
import org.apache.accumulo.core.data.Key;
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/merkle/cli/GenerateHashes.java b/core/src/main/java/org/apache/accumulo/testing/core/merkle/cli/GenerateHashes.java
index 4c9ac70..126ea5f 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/merkle/cli/GenerateHashes.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/merkle/cli/GenerateHashes.java
@@ -39,7 +39,6 @@
import org.apache.accumulo.core.client.AccumuloSecurityException;
import org.apache.accumulo.core.client.BatchWriter;
import org.apache.accumulo.core.client.BatchWriterConfig;
-import org.apache.accumulo.core.client.Connector;
import org.apache.accumulo.core.client.IteratorSetting;
import org.apache.accumulo.core.client.MutationsRejectedException;
import org.apache.accumulo.core.client.Scanner;
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/merkle/cli/ManualComparison.java b/core/src/main/java/org/apache/accumulo/testing/core/merkle/cli/ManualComparison.java
index 5531d81..2ff6046 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/merkle/cli/ManualComparison.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/merkle/cli/ManualComparison.java
@@ -21,7 +21,6 @@
import org.apache.accumulo.core.cli.ClientOpts;
import org.apache.accumulo.core.client.AccumuloClient;
-import org.apache.accumulo.core.client.Connector;
import org.apache.accumulo.core.client.Scanner;
import org.apache.accumulo.core.data.Key;
import org.apache.accumulo.core.data.Value;
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/merkle/ingest/RandomWorkload.java b/core/src/main/java/org/apache/accumulo/testing/core/merkle/ingest/RandomWorkload.java
index 2a0f26d..1c63575 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/merkle/ingest/RandomWorkload.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/merkle/ingest/RandomWorkload.java
@@ -23,7 +23,6 @@
import org.apache.accumulo.core.client.AccumuloClient;
import org.apache.accumulo.core.client.BatchWriter;
import org.apache.accumulo.core.client.BatchWriterConfig;
-import org.apache.accumulo.core.client.Connector;
import org.apache.accumulo.core.data.Mutation;
import org.apache.accumulo.core.data.Value;
import org.apache.hadoop.io.Text;
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/Framework.java b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/Framework.java
index 43c66b4..96083fa 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/Framework.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/Framework.java
@@ -19,7 +19,6 @@
import java.util.HashMap;
import java.util.Properties;
-import org.apache.accumulo.testing.core.TestProps;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -81,18 +80,16 @@
public static void main(String[] args) throws Exception {
- if (args.length != 2) {
- System.out.println("Usage: Framework <propsPath> <module>");
+ if (args.length != 3) {
+ System.out.println("Usage: Framework <testPropsPath> <clientPropsPath> <module>");
System.exit(-1);
}
- Properties props = TestProps.loadFromFile(args[0]);
-
- log.info("Running random walk test with module: " + args[1]);
+ log.info("Running random walk test with module: " + args[2]);
State state = new State();
- RandWalkEnv env = new RandWalkEnv(props);
- getInstance().run(args[1], state, env);
+ RandWalkEnv env = new RandWalkEnv(args[0], args[1]);
+ getInstance().run(args[2], state, env);
log.info("Test finished");
}
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/Module.java b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/Module.java
index 68ffe6a..ef26591 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/Module.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/Module.java
@@ -342,7 +342,7 @@
log.debug(" " + entry.getKey() + ": " + entry.getValue());
}
log.debug("Overall Configuration Properties");
- for (Entry<Object,Object> entry : env.copyConfigProperties().entrySet()) {
+ for (Entry<Object,Object> entry : env.getTestProperties().entrySet()) {
log.debug(" " + entry.getKey() + ": " + entry.getValue());
}
log.debug("State information");
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/RandWalkEnv.java b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/RandWalkEnv.java
index f85f560..207b364 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/RandWalkEnv.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/RandWalkEnv.java
@@ -16,8 +16,6 @@
*/
package org.apache.accumulo.testing.core.randomwalk;
-import java.util.Properties;
-
import org.apache.accumulo.core.client.AccumuloException;
import org.apache.accumulo.core.client.AccumuloSecurityException;
import org.apache.accumulo.core.client.MultiTableBatchWriter;
@@ -35,14 +33,8 @@
private MultiTableBatchWriter mtbw = null;
- /**
- * Creates a new test environment.
- *
- * @param p
- * configuration properties
- */
- public RandWalkEnv(Properties p) {
- super(p);
+ public RandWalkEnv(String testPropsPath, String clientPropsPath) {
+ super(testPropsPath, clientPropsPath);
}
/**
@@ -56,7 +48,7 @@
*/
public MultiTableBatchWriter getMultiTableBatchWriter() throws AccumuloException, AccumuloSecurityException {
if (mtbw == null) {
- mtbw = getAccumuloConnector().createMultiTableBatchWriter(getBatchWriterConfig());
+ mtbw = getAccumuloClient().createMultiTableBatchWriter();
}
return mtbw;
}
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/concurrent/Replication.java b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/concurrent/Replication.java
index 9324861..4d987d4 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/concurrent/Replication.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/concurrent/Replication.java
@@ -40,8 +40,6 @@
import org.apache.accumulo.core.client.AccumuloClient;
import org.apache.accumulo.core.client.BatchWriter;
-import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.core.client.Instance;
import org.apache.accumulo.core.client.Scanner;
import org.apache.accumulo.core.client.admin.InstanceOperations;
import org.apache.accumulo.core.client.admin.TableOperations;
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/image/ImageFixture.java b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/image/ImageFixture.java
index cd9fd1e..c70efaa 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/image/ImageFixture.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/image/ImageFixture.java
@@ -26,7 +26,6 @@
import java.util.TreeSet;
import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.core.client.Instance;
import org.apache.accumulo.core.client.MultiTableBatchWriter;
import org.apache.accumulo.core.client.MutationsRejectedException;
import org.apache.accumulo.core.client.TableExistsException;
@@ -44,7 +43,6 @@
public void setUp(State state, RandWalkEnv env) throws Exception {
Connector conn = env.getAccumuloConnector();
- Instance instance = env.getAccumuloInstance();
SortedSet<Text> splits = new TreeSet<>();
for (int i = 1; i < 256; i++) {
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/multitable/CopyTable.java b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/multitable/CopyTable.java
index 6417913..cbaf0b8 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/multitable/CopyTable.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/multitable/CopyTable.java
@@ -21,7 +21,6 @@
import java.util.Random;
import java.util.TreeSet;
-import org.apache.accumulo.testing.core.TestProps;
import org.apache.accumulo.testing.core.randomwalk.RandWalkEnv;
import org.apache.accumulo.testing.core.randomwalk.State;
import org.apache.accumulo.testing.core.randomwalk.Test;
@@ -53,16 +52,10 @@
int nextId = ((Integer) state.get("nextId")).intValue();
String dstTableName = String.format("%s_%d", state.getString("tableNamePrefix"), nextId);
- String[] args = new String[6];
- args[0] = env.getAccumuloUserName();
- args[1] = env.getAccumuloPassword();
- if (null == args[1]) {
- args[1] = env.getAccumuloKeytab();
- }
- args[2] = srcTableName;
- args[3] = env.getAccumuloInstance().getInstanceName();
- args[4] = env.getConfigProperty(TestProps.ZOOKEEPERS);
- args[5] = dstTableName;
+ String[] args = new String[3];
+ args[0] = env.getClientPropsPath();
+ args[1] = srcTableName;
+ args[2] = dstTableName;
log.debug("copying " + srcTableName + " to " + dstTableName);
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/multitable/CopyTool.java b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/multitable/CopyTool.java
index 5c979d3..df265eb 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/multitable/CopyTool.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/multitable/CopyTool.java
@@ -18,26 +18,18 @@
import java.io.IOException;
-import org.apache.accumulo.core.client.ClientConfiguration;
-import org.apache.accumulo.core.client.ClientConfiguration.ClientProperty;
-import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.core.client.ZooKeeperInstance;
-import org.apache.accumulo.core.client.admin.DelegationTokenConfig;
+import org.apache.accumulo.core.client.Accumulo;
+import org.apache.accumulo.core.client.ClientInfo;
import org.apache.accumulo.core.client.mapreduce.AccumuloInputFormat;
import org.apache.accumulo.core.client.mapreduce.AccumuloOutputFormat;
-import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
-import org.apache.accumulo.core.client.security.tokens.KerberosToken;
-import org.apache.accumulo.core.client.security.tokens.PasswordToken;
import org.apache.accumulo.core.data.Key;
import org.apache.accumulo.core.data.Mutation;
import org.apache.accumulo.core.data.Value;
import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.core.security.SystemPermission;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
-import org.apache.hadoop.security.UserGroupInformation;
import org.apache.hadoop.util.Tool;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -64,70 +56,21 @@
return 1;
}
- ClientConfiguration clientConf = ClientConfiguration.create().withInstance(args[3]).withZkHosts(args[4]);
-
+ ClientInfo info = Accumulo.newClient().usingProperties(args[0]).info();
job.setInputFormatClass(AccumuloInputFormat.class);
- AccumuloInputFormat.setInputTableName(job, args[2]);
+ AccumuloInputFormat.setClientInfo(job, info);
+ AccumuloInputFormat.setInputTableName(job, args[1]);
AccumuloInputFormat.setScanAuthorizations(job, Authorizations.EMPTY);
- AccumuloInputFormat.setZooKeeperInstance(job, clientConf);
-
- final String principal;
- final AuthenticationToken token;
- if (Boolean.parseBoolean(clientConf.get(ClientProperty.INSTANCE_RPC_SASL_ENABLED))) {
- // Use the Kerberos creds to request a DelegationToken for MapReduce
- // to use
- // We could use the specified keytab (args[1]), but we're already
- // logged in and don't need to, so we can just use the current user
- KerberosToken kt = new KerberosToken();
- try {
- UserGroupInformation user = UserGroupInformation.getCurrentUser();
- if (!user.hasKerberosCredentials()) {
- throw new IllegalStateException("Expected current user to have Kerberos credentials");
- }
-
- // Get the principal via UGI
- principal = user.getUserName();
-
- // Connector w/ the Kerberos creds
- ZooKeeperInstance inst = new ZooKeeperInstance(clientConf);
- Connector conn = inst.getConnector(principal, kt);
-
- // Do the explicit check to see if the user has the permission
- // to get a delegation token
- if (!conn.securityOperations().hasSystemPermission(conn.whoami(), SystemPermission.OBTAIN_DELEGATION_TOKEN)) {
- log.error(principal + " doesn't have the " + SystemPermission.OBTAIN_DELEGATION_TOKEN.name()
- + " SystemPermission neccesary to obtain a delegation token. MapReduce tasks cannot automatically use the client's"
- + " credentials on remote servers. Delegation tokens provide a means to run MapReduce without distributing the user's credentials.");
- throw new IllegalStateException(conn.whoami() + " does not have permission to obtain a delegation token");
- }
-
- // Fetch a delegation token from Accumulo
- token = conn.securityOperations().getDelegationToken(new DelegationTokenConfig());
-
- } catch (Exception e) {
- final String msg = "Failed to acquire DelegationToken for use with MapReduce";
- log.error(msg, e);
- throw new RuntimeException(msg, e);
- }
- } else {
- // Simple principal + password
- principal = args[0];
- token = new PasswordToken(args[1]);
- }
-
- AccumuloInputFormat.setConnectorInfo(job, principal, token);
- AccumuloOutputFormat.setConnectorInfo(job, principal, token);
job.setMapperClass(SeqMapClass.class);
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(Mutation.class);
-
job.setNumReduceTasks(0);
job.setOutputFormatClass(AccumuloOutputFormat.class);
+ AccumuloOutputFormat.setClientInfo(job, info);
AccumuloOutputFormat.setCreateTables(job, true);
- AccumuloOutputFormat.setDefaultTableName(job, args[5]);
- AccumuloOutputFormat.setZooKeeperInstance(job, clientConf);
+ AccumuloOutputFormat.setDefaultTableName(job, args[2]);
job.waitForCompletion(true);
return job.isSuccessful() ? 0 : 1;
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/AlterTable.java b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/AlterTable.java
index 1283fd7..c973e11 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/AlterTable.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/AlterTable.java
@@ -19,9 +19,9 @@
import java.net.InetAddress;
import java.util.Properties;
+import org.apache.accumulo.core.client.AccumuloClient;
import org.apache.accumulo.core.client.AccumuloException;
import org.apache.accumulo.core.client.AccumuloSecurityException;
-import org.apache.accumulo.core.client.Connector;
import org.apache.accumulo.core.client.TableExistsException;
import org.apache.accumulo.core.client.TableNotFoundException;
import org.apache.accumulo.core.client.security.SecurityErrorCode;
@@ -36,15 +36,15 @@
@Override
public void visit(State state, RandWalkEnv env, Properties props) throws Exception {
String systemUser = WalkingSecurity.get(state, env).getSysUserName();
- Connector conn = env.getAccumuloInstance().getConnector(systemUser, WalkingSecurity.get(state, env).getSysToken());
+ AccumuloClient client = env.getAccumuloClient().changeUser(systemUser, WalkingSecurity.get(state, env).getSysToken());
String tableName = WalkingSecurity.get(state, env).getTableName();
boolean exists = WalkingSecurity.get(state, env).getTableExists();
boolean hasPermission;
try {
- hasPermission = conn.securityOperations().hasTablePermission(systemUser, tableName, TablePermission.ALTER_TABLE)
- || conn.securityOperations().hasSystemPermission(systemUser, SystemPermission.ALTER_TABLE);
+ hasPermission = client.securityOperations().hasTablePermission(systemUser, tableName, TablePermission.ALTER_TABLE)
+ || client.securityOperations().hasSystemPermission(systemUser, SystemPermission.ALTER_TABLE);
} catch (AccumuloSecurityException ae) {
if (ae.getSecurityErrorCode().equals(SecurityErrorCode.TABLE_DOESNT_EXIST)) {
if (exists)
@@ -58,13 +58,13 @@
String newTableName = String.format("security_%s_%s_%d", InetAddress.getLocalHost().getHostName().replaceAll("[-.]", "_"), env.getPid(),
System.currentTimeMillis());
- renameTable(conn, state, env, tableName, newTableName, hasPermission, exists);
+ renameTable(client, state, env, tableName, newTableName, hasPermission, exists);
}
- public static void renameTable(Connector conn, State state, RandWalkEnv env, String oldName, String newName, boolean hasPermission, boolean tableExists)
+ public static void renameTable(AccumuloClient client, State state, RandWalkEnv env, String oldName, String newName, boolean hasPermission, boolean tableExists)
throws AccumuloSecurityException, AccumuloException, TableExistsException {
try {
- conn.tableOperations().rename(oldName, newName);
+ client.tableOperations().rename(oldName, newName);
} catch (AccumuloSecurityException ae) {
if (ae.getSecurityErrorCode().equals(SecurityErrorCode.PERMISSION_DENIED)) {
if (hasPermission)
@@ -72,7 +72,7 @@
else
return;
} else if (ae.getSecurityErrorCode().equals(SecurityErrorCode.BAD_CREDENTIALS)) {
- if (WalkingSecurity.get(state, env).userPassTransient(conn.whoami()))
+ if (WalkingSecurity.get(state, env).userPassTransient(client.whoami()))
return;
}
throw new AccumuloException("Got unexpected ae error code", ae);
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/AlterTablePerm.java b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/AlterTablePerm.java
index 94a972d..553c766 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/AlterTablePerm.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/AlterTablePerm.java
@@ -19,9 +19,9 @@
import java.util.Properties;
import java.util.Random;
+import org.apache.accumulo.core.client.AccumuloClient;
import org.apache.accumulo.core.client.AccumuloException;
import org.apache.accumulo.core.client.AccumuloSecurityException;
-import org.apache.accumulo.core.client.Connector;
import org.apache.accumulo.core.client.TableExistsException;
import org.apache.accumulo.core.client.admin.SecurityOperations;
import org.apache.accumulo.core.client.security.SecurityErrorCode;
@@ -76,8 +76,8 @@
sourceUser = env.getAccumuloUserName();
sourceToken = env.getToken();
}
- Connector conn = env.getAccumuloInstance().getConnector(sourceUser, sourceToken);
- SecurityOperations secOps = conn.securityOperations();
+ AccumuloClient client = env.getAccumuloClient().changeUser(sourceUser, sourceToken);
+ SecurityOperations secOps = client.securityOperations();
try {
canGive = secOps.hasSystemPermission(sourceUser, SystemPermission.ALTER_TABLE) || secOps.hasTablePermission(sourceUser, tableName, TablePermission.GRANT);
@@ -97,7 +97,7 @@
try {
boolean res;
if (hasPerm != (res = env.getAccumuloConnector().securityOperations().hasTablePermission(target, tableName, tabPerm)))
- throw new AccumuloException("Test framework and accumulo are out of sync for user " + conn.whoami() + " for perm " + tabPerm.name()
+ throw new AccumuloException("Test framework and accumulo are out of sync for user " + client.whoami() + " for perm " + tabPerm.name()
+ " with local vs. accumulo being " + hasPerm + " " + res);
if (hasPerm)
@@ -122,17 +122,17 @@
}
}
- boolean trans = WalkingSecurity.get(state, env).userPassTransient(conn.whoami());
+ boolean trans = WalkingSecurity.get(state, env).userPassTransient(client.whoami());
if ("take".equals(action)) {
try {
- conn.securityOperations().revokeTablePermission(target, tableName, tabPerm);
+ client.securityOperations().revokeTablePermission(target, tableName, tabPerm);
} catch (AccumuloSecurityException ae) {
switch (ae.getSecurityErrorCode()) {
case GRANT_INVALID:
throw new AccumuloException("Got a grant invalid on non-System.GRANT option", ae);
case PERMISSION_DENIED:
if (canGive)
- throw new AccumuloException(conn.whoami() + " failed to revoke permission to " + target + " when it should have worked", ae);
+ throw new AccumuloException(client.whoami() + " failed to revoke permission to " + target + " when it should have worked", ae);
return;
case USER_DOESNT_EXIST:
if (userExists)
@@ -144,7 +144,7 @@
return;
case BAD_CREDENTIALS:
if (!trans)
- throw new AccumuloException("Bad credentials for user " + conn.whoami());
+ throw new AccumuloException("Bad credentials for user " + client.whoami());
return;
default:
throw new AccumuloException("Got unexpected exception", ae);
@@ -153,14 +153,14 @@
WalkingSecurity.get(state, env).revokeTablePermission(target, tableName, tabPerm);
} else if ("give".equals(action)) {
try {
- conn.securityOperations().grantTablePermission(target, tableName, tabPerm);
+ client.securityOperations().grantTablePermission(target, tableName, tabPerm);
} catch (AccumuloSecurityException ae) {
switch (ae.getSecurityErrorCode()) {
case GRANT_INVALID:
throw new AccumuloException("Got a grant invalid on non-System.GRANT option", ae);
case PERMISSION_DENIED:
if (canGive)
- throw new AccumuloException(conn.whoami() + " failed to give permission to " + target + " when it should have worked", ae);
+ throw new AccumuloException(client.whoami() + " failed to give permission to " + target + " when it should have worked", ae);
return;
case USER_DOESNT_EXIST:
if (userExists)
@@ -172,7 +172,7 @@
return;
case BAD_CREDENTIALS:
if (!trans)
- throw new AccumuloException("Bad credentials for user " + conn.whoami());
+ throw new AccumuloException("Bad credentials for user " + client.whoami());
return;
default:
throw new AccumuloException("Got unexpected exception", ae);
@@ -186,7 +186,7 @@
if (!tableExists)
throw new AccumuloException("Table shouldn't have existed, but apparently does");
if (!canGive)
- throw new AccumuloException(conn.whoami() + " shouldn't have been able to grant privilege");
+ throw new AccumuloException(client.whoami() + " shouldn't have been able to grant privilege");
}
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/Authenticate.java b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/Authenticate.java
index 63105f4..037abbc 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/Authenticate.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/Authenticate.java
@@ -19,9 +19,9 @@
import java.util.Arrays;
import java.util.Properties;
+import org.apache.accumulo.core.client.AccumuloClient;
import org.apache.accumulo.core.client.AccumuloException;
import org.apache.accumulo.core.client.AccumuloSecurityException;
-import org.apache.accumulo.core.client.Connector;
import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
import org.apache.accumulo.core.client.security.tokens.PasswordToken;
import org.apache.accumulo.core.security.SystemPermission;
@@ -40,7 +40,7 @@
String targetProp = props.getProperty("target");
boolean success = Boolean.parseBoolean(props.getProperty("valid"));
- Connector conn = env.getAccumuloInstance().getConnector(principal, token);
+ AccumuloClient client = env.getAccumuloClient().changeUser(principal, token);
String target;
@@ -52,7 +52,7 @@
boolean exists = WalkingSecurity.get(state, env).userExists(target);
// Copy so if failed it doesn't mess with the password stored in state
byte[] password = Arrays.copyOf(WalkingSecurity.get(state, env).getUserPassword(target), WalkingSecurity.get(state, env).getUserPassword(target).length);
- boolean hasPermission = conn.securityOperations().hasSystemPermission(principal, SystemPermission.SYSTEM) || principal.equals(target);
+ boolean hasPermission = client.securityOperations().hasSystemPermission(principal, SystemPermission.SYSTEM) || principal.equals(target);
if (!success)
for (int i = 0; i < password.length; i++)
@@ -61,7 +61,7 @@
boolean result;
try {
- result = conn.securityOperations().authenticateUser(target, new PasswordToken(password));
+ result = client.securityOperations().authenticateUser(target, new PasswordToken(password));
} catch (AccumuloSecurityException ae) {
switch (ae.getSecurityErrorCode()) {
case PERMISSION_DENIED:
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/ChangePass.java b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/ChangePass.java
index 585a2c1..b409892 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/ChangePass.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/ChangePass.java
@@ -19,9 +19,9 @@
import java.util.Properties;
import java.util.Random;
+import org.apache.accumulo.core.client.AccumuloClient;
import org.apache.accumulo.core.client.AccumuloException;
import org.apache.accumulo.core.client.AccumuloSecurityException;
-import org.apache.accumulo.core.client.Connector;
import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
import org.apache.accumulo.core.client.security.tokens.PasswordToken;
import org.apache.accumulo.core.security.SystemPermission;
@@ -45,7 +45,7 @@
principal = WalkingSecurity.get(state, env).getTabUserName();
token = WalkingSecurity.get(state, env).getTabToken();
}
- Connector conn = env.getAccumuloInstance().getConnector(principal, token);
+ AccumuloClient client = env.getAccumuloClient().changeUser(principal, token);
boolean hasPerm;
boolean targetExists;
@@ -56,7 +56,7 @@
targetExists = WalkingSecurity.get(state, env).userExists(target);
- hasPerm = conn.securityOperations().hasSystemPermission(principal, SystemPermission.ALTER_USER) || principal.equals(target);
+ hasPerm = client.securityOperations().hasSystemPermission(principal, SystemPermission.ALTER_USER) || principal.equals(target);
Random r = new Random();
@@ -66,7 +66,7 @@
PasswordToken newPass = new PasswordToken(newPassw);
try {
- conn.securityOperations().changeLocalUserPassword(target, newPass);
+ client.securityOperations().changeLocalUserPassword(target, newPass);
} catch (AccumuloSecurityException ae) {
switch (ae.getSecurityErrorCode()) {
case PERMISSION_DENIED:
@@ -78,8 +78,8 @@
throw new AccumuloException("User " + target + " doesn't exist and they SHOULD.", ae);
return;
case BAD_CREDENTIALS:
- if (!WalkingSecurity.get(state, env).userPassTransient(conn.whoami()))
- throw new AccumuloException("Bad credentials for user " + conn.whoami());
+ if (!WalkingSecurity.get(state, env).userPassTransient(client.whoami()))
+ throw new AccumuloException("Bad credentials for user " + client.whoami());
return;
default:
throw new AccumuloException("Got unexpected exception", ae);
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/CreateTable.java b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/CreateTable.java
index de11d62..e4e8190 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/CreateTable.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/CreateTable.java
@@ -18,9 +18,9 @@
import java.util.Properties;
+import org.apache.accumulo.core.client.AccumuloClient;
import org.apache.accumulo.core.client.AccumuloException;
import org.apache.accumulo.core.client.AccumuloSecurityException;
-import org.apache.accumulo.core.client.Connector;
import org.apache.accumulo.core.client.TableExistsException;
import org.apache.accumulo.core.client.security.SecurityErrorCode;
import org.apache.accumulo.core.security.SystemPermission;
@@ -33,15 +33,15 @@
@Override
public void visit(State state, RandWalkEnv env, Properties props) throws Exception {
- Connector conn = env.getAccumuloInstance().getConnector(WalkingSecurity.get(state, env).getSysUserName(), WalkingSecurity.get(state, env).getSysToken());
+ AccumuloClient client = env.getAccumuloClient().changeUser(WalkingSecurity.get(state, env).getSysUserName(), WalkingSecurity.get(state, env).getSysToken());
String tableName = WalkingSecurity.get(state, env).getTableName();
boolean exists = WalkingSecurity.get(state, env).getTableExists();
- boolean hasPermission = conn.securityOperations().hasSystemPermission(WalkingSecurity.get(state, env).getSysUserName(), SystemPermission.CREATE_TABLE);
+ boolean hasPermission = client.securityOperations().hasSystemPermission(WalkingSecurity.get(state, env).getSysUserName(), SystemPermission.CREATE_TABLE);
try {
- conn.tableOperations().create(tableName);
+ client.tableOperations().create(tableName);
} catch (AccumuloSecurityException ae) {
if (ae.getSecurityErrorCode().equals(SecurityErrorCode.PERMISSION_DENIED)) {
if (hasPermission)
@@ -69,7 +69,7 @@
}
WalkingSecurity.get(state, env).initTable(tableName);
for (TablePermission tp : TablePermission.values())
- WalkingSecurity.get(state, env).grantTablePermission(conn.whoami(), tableName, tp);
+ WalkingSecurity.get(state, env).grantTablePermission(client.whoami(), tableName, tp);
if (!hasPermission)
throw new AccumuloException("Didn't get Security Exception when we should have");
}
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/CreateUser.java b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/CreateUser.java
index ca9afbe..f23f87c 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/CreateUser.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/CreateUser.java
@@ -18,9 +18,9 @@
import java.util.Properties;
+import org.apache.accumulo.core.client.AccumuloClient;
import org.apache.accumulo.core.client.AccumuloException;
import org.apache.accumulo.core.client.AccumuloSecurityException;
-import org.apache.accumulo.core.client.Connector;
import org.apache.accumulo.core.client.security.tokens.PasswordToken;
import org.apache.accumulo.core.security.SystemPermission;
import org.apache.accumulo.testing.core.randomwalk.RandWalkEnv;
@@ -32,15 +32,15 @@
@Override
public void visit(State state, RandWalkEnv env, Properties props) throws Exception {
String sysPrincipal = WalkingSecurity.get(state, env).getSysUserName();
- Connector conn = env.getAccumuloInstance().getConnector(sysPrincipal, WalkingSecurity.get(state, env).getSysToken());
+ AccumuloClient client = env.getAccumuloClient().changeUser(sysPrincipal, WalkingSecurity.get(state, env).getSysToken());
String tableUserName = WalkingSecurity.get(state, env).getTabUserName();
boolean exists = WalkingSecurity.get(state, env).userExists(tableUserName);
- boolean hasPermission = conn.securityOperations().hasSystemPermission(sysPrincipal, SystemPermission.CREATE_USER);
+ boolean hasPermission = client.securityOperations().hasSystemPermission(sysPrincipal, SystemPermission.CREATE_USER);
PasswordToken tabUserPass = new PasswordToken("Super Sekret Table User Password");
try {
- conn.securityOperations().createLocalUser(tableUserName, tabUserPass);
+ client.securityOperations().createLocalUser(tableUserName, tabUserPass);
} catch (AccumuloSecurityException ae) {
switch (ae.getSecurityErrorCode()) {
case PERMISSION_DENIED:
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/DropTable.java b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/DropTable.java
index 66fc0e2..ddfee12 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/DropTable.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/DropTable.java
@@ -18,9 +18,9 @@
import java.util.Properties;
+import org.apache.accumulo.core.client.AccumuloClient;
import org.apache.accumulo.core.client.AccumuloException;
import org.apache.accumulo.core.client.AccumuloSecurityException;
-import org.apache.accumulo.core.client.Connector;
import org.apache.accumulo.core.client.TableExistsException;
import org.apache.accumulo.core.client.TableNotFoundException;
import org.apache.accumulo.core.client.security.SecurityErrorCode;
@@ -50,16 +50,16 @@
principal = WalkingSecurity.get(state, env).getSysUserName();
token = WalkingSecurity.get(state, env).getSysToken();
}
- Connector conn = env.getAccumuloInstance().getConnector(principal, token);
+ AccumuloClient client = env.getAccumuloClient().changeUser(principal, token);
String tableName = WalkingSecurity.get(state, env).getTableName();
boolean exists = WalkingSecurity.get(state, env).getTableExists();
try {
- hasPermission = conn.securityOperations().hasTablePermission(principal, tableName, TablePermission.DROP_TABLE)
- || conn.securityOperations().hasSystemPermission(principal, SystemPermission.DROP_TABLE);
- conn.tableOperations().delete(tableName);
+ hasPermission = client.securityOperations().hasTablePermission(principal, tableName, TablePermission.DROP_TABLE)
+ || client.securityOperations().hasSystemPermission(principal, SystemPermission.DROP_TABLE);
+ client.tableOperations().delete(tableName);
} catch (AccumuloSecurityException ae) {
if (ae.getSecurityErrorCode().equals(SecurityErrorCode.TABLE_DOESNT_EXIST)) {
if (exists)
@@ -76,7 +76,7 @@
return;
}
} else if (ae.getSecurityErrorCode().equals(SecurityErrorCode.BAD_CREDENTIALS)) {
- if (WalkingSecurity.get(state, env).userPassTransient(conn.whoami()))
+ if (WalkingSecurity.get(state, env).userPassTransient(client.whoami()))
return;
}
throw new AccumuloException("Got unexpected ae error code", ae);
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/DropUser.java b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/DropUser.java
index 933c26d..d5cf910 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/DropUser.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/DropUser.java
@@ -18,9 +18,9 @@
import java.util.Properties;
+import org.apache.accumulo.core.client.AccumuloClient;
import org.apache.accumulo.core.client.AccumuloException;
import org.apache.accumulo.core.client.AccumuloSecurityException;
-import org.apache.accumulo.core.client.Connector;
import org.apache.accumulo.core.security.SystemPermission;
import org.apache.accumulo.testing.core.randomwalk.RandWalkEnv;
import org.apache.accumulo.testing.core.randomwalk.State;
@@ -31,15 +31,15 @@
@Override
public void visit(State state, RandWalkEnv env, Properties props) throws Exception {
String sysPrincipal = WalkingSecurity.get(state, env).getSysUserName();
- Connector conn = env.getAccumuloInstance().getConnector(sysPrincipal, WalkingSecurity.get(state, env).getSysToken());
+ AccumuloClient client = env.getAccumuloClient().changeUser(sysPrincipal, WalkingSecurity.get(state, env).getSysToken());
String tableUserName = WalkingSecurity.get(state, env).getTabUserName();
boolean exists = WalkingSecurity.get(state, env).userExists(tableUserName);
- boolean hasPermission = conn.securityOperations().hasSystemPermission(sysPrincipal, SystemPermission.DROP_USER);
+ boolean hasPermission = client.securityOperations().hasSystemPermission(sysPrincipal, SystemPermission.DROP_USER);
try {
- conn.securityOperations().dropLocalUser(tableUserName);
+ client.securityOperations().dropLocalUser(tableUserName);
} catch (AccumuloSecurityException ae) {
switch (ae.getSecurityErrorCode()) {
case PERMISSION_DENIED:
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/SecurityFixture.java b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/SecurityFixture.java
index 1bffba0..8782fdb 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/SecurityFixture.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/SecurityFixture.java
@@ -19,10 +19,9 @@
import java.net.InetAddress;
import java.util.Set;
-import org.apache.accumulo.core.client.ClientConfiguration;
-import org.apache.accumulo.core.client.ClientConfiguration.ClientProperty;
import org.apache.accumulo.core.client.Connector;
import org.apache.accumulo.core.client.security.tokens.PasswordToken;
+import org.apache.accumulo.core.conf.ClientProperty;
import org.apache.accumulo.core.security.Authorizations;
import org.apache.accumulo.core.security.SystemPermission;
import org.apache.accumulo.core.security.TablePermission;
@@ -36,8 +35,7 @@
public void setUp(State state, RandWalkEnv env) throws Exception {
String secTableName, systemUserName, tableUserName, secNamespaceName;
// A best-effort sanity check to guard against not password-based auth
- ClientConfiguration clientConf = ClientConfiguration.loadDefault();
- if (Boolean.parseBoolean(clientConf.get(ClientProperty.INSTANCE_RPC_SASL_ENABLED))) {
+ if (env.getInfo().getProperties().getProperty(ClientProperty.AUTH_TYPE.getKey()).equals("kerberos")) {
throw new IllegalStateException("Security module currently cannot support Kerberos/SASL instances");
}
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/SetAuths.java b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/SetAuths.java
index feee2d8..c309f35 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/SetAuths.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/SetAuths.java
@@ -19,9 +19,9 @@
import java.util.Properties;
import java.util.Random;
+import org.apache.accumulo.core.client.AccumuloClient;
import org.apache.accumulo.core.client.AccumuloException;
import org.apache.accumulo.core.client.AccumuloSecurityException;
-import org.apache.accumulo.core.client.Connector;
import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
import org.apache.accumulo.core.security.Authorizations;
import org.apache.accumulo.core.security.SystemPermission;
@@ -48,10 +48,10 @@
authPrincipal = env.getAccumuloUserName();
authToken = env.getToken();
}
- Connector conn = env.getAccumuloInstance().getConnector(authPrincipal, authToken);
+ AccumuloClient client = env.getAccumuloClient().changeUser(authPrincipal, authToken);
boolean exists = WalkingSecurity.get(state, env).userExists(target);
- boolean hasPermission = conn.securityOperations().hasSystemPermission(authPrincipal, SystemPermission.ALTER_USER);
+ boolean hasPermission = client.securityOperations().hasSystemPermission(authPrincipal, SystemPermission.ALTER_USER);
Authorizations auths;
if (authsString.equals("_random")) {
@@ -74,7 +74,7 @@
}
try {
- conn.securityOperations().changeUserAuthorizations(target, auths);
+ client.securityOperations().changeUserAuthorizations(target, auths);
} catch (AccumuloSecurityException ae) {
switch (ae.getSecurityErrorCode()) {
case PERMISSION_DENIED:
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/TableOp.java b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/TableOp.java
index 2fee84f..3029542 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/TableOp.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/TableOp.java
@@ -19,7 +19,6 @@
import static java.nio.charset.StandardCharsets.UTF_8;
import java.util.Iterator;
-import java.util.Map;
import java.util.Map.Entry;
import java.util.Properties;
import java.util.Random;
@@ -27,11 +26,11 @@
import java.util.TreeSet;
import java.util.UUID;
+import org.apache.accumulo.core.client.AccumuloClient;
import org.apache.accumulo.core.client.AccumuloException;
import org.apache.accumulo.core.client.AccumuloSecurityException;
import org.apache.accumulo.core.client.BatchWriter;
import org.apache.accumulo.core.client.BatchWriterConfig;
-import org.apache.accumulo.core.client.Connector;
import org.apache.accumulo.core.client.MutationsRejectedException;
import org.apache.accumulo.core.client.Scanner;
import org.apache.accumulo.core.client.TableNotFoundException;
@@ -58,9 +57,9 @@
@Override
public void visit(State state, RandWalkEnv env, Properties props) throws Exception {
String tablePrincipal = WalkingSecurity.get(state, env).getTabUserName();
- Connector conn = env.getAccumuloInstance().getConnector(tablePrincipal, WalkingSecurity.get(state, env).getTabToken());
- TableOperations tableOps = conn.tableOperations();
- SecurityOperations secOps = conn.securityOperations();
+ AccumuloClient client = env.getAccumuloClient().changeUser(tablePrincipal, WalkingSecurity.get(state, env).getTabToken());
+ TableOperations tableOps = client.tableOperations();
+ SecurityOperations secOps = client.securityOperations();
String action = props.getProperty("action", "_random");
TablePermission tp;
@@ -85,12 +84,12 @@
return;
}
Authorizations auths = secOps.getUserAuthorizations(tablePrincipal);
- boolean ambiguousZone = WalkingSecurity.get(state, env).inAmbiguousZone(conn.whoami(), tp);
- boolean ambiguousAuths = WalkingSecurity.get(state, env).ambiguousAuthorizations(conn.whoami());
+ boolean ambiguousZone = WalkingSecurity.get(state, env).inAmbiguousZone(client.whoami(), tp);
+ boolean ambiguousAuths = WalkingSecurity.get(state, env).ambiguousAuthorizations(client.whoami());
Scanner scan = null;
try {
- scan = conn.createScanner(tableName, secOps.getUserAuthorizations(conn.whoami()));
+ scan = client.createScanner(tableName, secOps.getUserAuthorizations(client.whoami()));
int seen = 0;
Iterator<Entry<Key,Value>> iter = scan.iterator();
while (iter.hasNext()) {
@@ -101,7 +100,7 @@
throw new AccumuloException("Got data I should not be capable of seeing: " + k + " table " + tableName);
}
if (!canRead && !ambiguousZone)
- throw new AccumuloException("Was able to read when I shouldn't have had the perm with connection user " + conn.whoami() + " table " + tableName);
+ throw new AccumuloException("Was able to read when I shouldn't have had the perm with connection user " + client.whoami() + " table " + tableName);
for (Entry<String,Integer> entry : WalkingSecurity.get(state, env).getAuthsMap().entrySet()) {
if (auths.contains(entry.getKey().getBytes(UTF_8)))
seen = seen - entry.getValue();
@@ -171,7 +170,7 @@
BatchWriter writer = null;
try {
try {
- writer = conn.createBatchWriter(tableName, new BatchWriterConfig().setMaxMemory(9000l).setMaxWriteThreads(1));
+ writer = client.createBatchWriter(tableName, new BatchWriterConfig().setMaxMemory(9000l).setMaxWriteThreads(1));
} catch (TableNotFoundException tnfe) {
if (tableExists)
throw new AccumuloException("Table didn't exist when it should have: " + tableName);
@@ -230,7 +229,7 @@
throw new AccumuloException("Bulk Import failed when it should have worked: " + tableName);
return;
} else if (ae.getSecurityErrorCode().equals(SecurityErrorCode.BAD_CREDENTIALS)) {
- if (WalkingSecurity.get(state, env).userPassTransient(conn.whoami()))
+ if (WalkingSecurity.get(state, env).userPassTransient(client.whoami()))
return;
}
throw new AccumuloException("Unexpected exception!", ae);
@@ -252,7 +251,7 @@
throw new AccumuloException("Table didn't exist when it should have: " + tableName, ase);
return;
}
- AlterTable.renameTable(conn, state, env, tableName, tableName + "plus", tablePerm, tableExists);
+ AlterTable.renameTable(client, state, env, tableName, tableName + "plus", tablePerm, tableExists);
break;
case GRANT:
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/Validate.java b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/Validate.java
index 9e36c86..2cc0f4f 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/Validate.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/security/Validate.java
@@ -22,7 +22,6 @@
import org.apache.accumulo.core.client.AccumuloSecurityException;
import org.apache.accumulo.core.client.Connector;
import org.apache.accumulo.core.client.security.SecurityErrorCode;
-import org.apache.accumulo.core.security.Authorizations;
import org.apache.accumulo.core.security.SystemPermission;
import org.apache.accumulo.core.security.TablePermission;
import org.apache.accumulo.testing.core.randomwalk.RandWalkEnv;
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/sequential/MapRedVerify.java b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/sequential/MapRedVerify.java
index 924b8d9..9b080ea 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/sequential/MapRedVerify.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/sequential/MapRedVerify.java
@@ -25,7 +25,6 @@
import org.apache.accumulo.core.data.Range;
import org.apache.accumulo.core.data.Value;
import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.testing.core.TestProps;
import org.apache.accumulo.testing.core.randomwalk.RandWalkEnv;
import org.apache.accumulo.testing.core.randomwalk.State;
import org.apache.accumulo.testing.core.randomwalk.Test;
@@ -36,16 +35,10 @@
@Override
public void visit(State state, RandWalkEnv env, Properties props) throws Exception {
- String[] args = new String[6];
- args[0] = env.getAccumuloUserName();
- args[1] = env.getAccumuloPassword();
- if (null == args[1]) {
- args[1] = env.getAccumuloKeytab();
- }
- args[2] = state.getString("seqTableName");
- args[3] = env.getAccumuloInstance().getInstanceName();
- args[4] = env.getConfigProperty(TestProps.ZOOKEEPERS);
- args[5] = args[2] + "_MR";
+ String[] args = new String[3];
+ args[0] = env.getClientPropsPath();
+ args[1] = state.getString("seqTableName");
+ args[2] = args[2] + "_MR";
if (ToolRunner.run(env.getHadoopConfiguration(), new MapRedVerifyTool(), args) != 0) {
log.error("Failed to run map/red verify");
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/sequential/MapRedVerifyTool.java b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/sequential/MapRedVerifyTool.java
index e8dcca1..de952ee 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/sequential/MapRedVerifyTool.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/sequential/MapRedVerifyTool.java
@@ -19,20 +19,13 @@
import java.io.IOException;
import java.util.Iterator;
-import org.apache.accumulo.core.client.ClientConfiguration;
-import org.apache.accumulo.core.client.ClientConfiguration.ClientProperty;
-import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.core.client.ZooKeeperInstance;
-import org.apache.accumulo.core.client.admin.DelegationTokenConfig;
+import org.apache.accumulo.core.client.Accumulo;
+import org.apache.accumulo.core.client.ClientInfo;
import org.apache.accumulo.core.client.mapreduce.AccumuloInputFormat;
import org.apache.accumulo.core.client.mapreduce.AccumuloOutputFormat;
-import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
-import org.apache.accumulo.core.client.security.tokens.KerberosToken;
-import org.apache.accumulo.core.client.security.tokens.PasswordToken;
import org.apache.accumulo.core.data.Key;
import org.apache.accumulo.core.data.Mutation;
import org.apache.accumulo.core.data.Value;
-import org.apache.accumulo.core.security.SystemPermission;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.NullWritable;
@@ -40,7 +33,6 @@
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
-import org.apache.hadoop.security.UserGroupInformation;
import org.apache.hadoop.util.Tool;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -95,53 +87,14 @@
return 1;
}
- ClientConfiguration clientConf = ClientConfiguration.loadDefault().withInstance(args[3]).withZkHosts(args[4]);
+ ClientInfo info = Accumulo.newClient().usingProperties(args[0]).info();
+ AccumuloInputFormat.setClientInfo(job, info);
+ AccumuloInputFormat.setInputTableName(job, args[1]);
- AccumuloInputFormat.setInputTableName(job, args[2]);
- AccumuloInputFormat.setZooKeeperInstance(job, clientConf);
- AccumuloOutputFormat.setDefaultTableName(job, args[5]);
- AccumuloOutputFormat.setZooKeeperInstance(job, clientConf);
+ AccumuloOutputFormat.setClientInfo(job, info);
+ AccumuloOutputFormat.setDefaultTableName(job, args[2]);
job.setInputFormatClass(AccumuloInputFormat.class);
- if (Boolean.parseBoolean(clientConf.get(ClientProperty.INSTANCE_RPC_SASL_ENABLED))) {
- // Better be logged in
- KerberosToken token = new KerberosToken();
- try {
- UserGroupInformation user = UserGroupInformation.getCurrentUser();
- if (!user.hasKerberosCredentials()) {
- throw new IllegalStateException("Expected current user to have Kerberos credentials");
- }
-
- String newPrincipal = user.getUserName();
-
- ZooKeeperInstance inst = new ZooKeeperInstance(clientConf);
- Connector conn = inst.getConnector(newPrincipal, token);
-
- // Do the explicit check to see if the user has the permission
- // to get a delegation token
- if (!conn.securityOperations().hasSystemPermission(conn.whoami(), SystemPermission.OBTAIN_DELEGATION_TOKEN)) {
- log.error(newPrincipal + " doesn't have the " + SystemPermission.OBTAIN_DELEGATION_TOKEN.name()
- + " SystemPermission neccesary to obtain a delegation token. MapReduce tasks cannot automatically use the client's"
- + " credentials on remote servers. Delegation tokens provide a means to run MapReduce without distributing the user's credentials.");
- throw new IllegalStateException(conn.whoami() + " does not have permission to obtain a delegation token");
- }
-
- // Fetch a delegation token from Accumulo
- AuthenticationToken dt = conn.securityOperations().getDelegationToken(new DelegationTokenConfig());
-
- // Set the delegation token instead of the kerberos token
- AccumuloInputFormat.setConnectorInfo(job, newPrincipal, dt);
- AccumuloOutputFormat.setConnectorInfo(job, newPrincipal, dt);
- } catch (Exception e) {
- final String msg = "Failed to acquire DelegationToken for use with MapReduce";
- log.error(msg, e);
- throw new RuntimeException(msg, e);
- }
- } else {
- AccumuloInputFormat.setConnectorInfo(job, args[0], new PasswordToken(args[1]));
- AccumuloOutputFormat.setConnectorInfo(job, args[0], new PasswordToken(args[1]));
- }
-
job.setMapperClass(SeqMapClass.class);
job.setMapOutputKeyClass(NullWritable.class);
job.setMapOutputValueClass(IntWritable.class);
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/sequential/SequentialFixture.java b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/sequential/SequentialFixture.java
index 0514f05..3fe34a0 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/sequential/SequentialFixture.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/sequential/SequentialFixture.java
@@ -19,7 +19,6 @@
import java.net.InetAddress;
import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.core.client.Instance;
import org.apache.accumulo.core.client.MultiTableBatchWriter;
import org.apache.accumulo.core.client.MutationsRejectedException;
import org.apache.accumulo.core.client.TableExistsException;
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/shard/BulkInsert.java b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/shard/BulkInsert.java
index b520437..108dda1 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/shard/BulkInsert.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/shard/BulkInsert.java
@@ -36,7 +36,6 @@
import org.apache.accumulo.core.data.Key;
import org.apache.accumulo.core.data.Mutation;
import org.apache.accumulo.core.data.Value;
-import org.apache.accumulo.core.util.TextUtil;
import org.apache.accumulo.testing.core.randomwalk.RandWalkEnv;
import org.apache.accumulo.testing.core.randomwalk.State;
import org.apache.accumulo.testing.core.randomwalk.Test;
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/stress/Scan.java b/core/src/main/java/org/apache/accumulo/testing/core/stress/Scan.java
index 65b7a2b..708658e 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/stress/Scan.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/stress/Scan.java
@@ -23,7 +23,6 @@
import org.apache.accumulo.core.client.AccumuloClient;
import org.apache.accumulo.core.client.AccumuloException;
import org.apache.accumulo.core.client.AccumuloSecurityException;
-import org.apache.accumulo.core.client.Connector;
import org.apache.accumulo.core.client.Scanner;
import org.apache.accumulo.core.client.TableNotFoundException;
import org.apache.accumulo.core.client.admin.TableOperations;
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/stress/Write.java b/core/src/main/java/org/apache/accumulo/testing/core/stress/Write.java
index d27afa5..1cd4739 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/stress/Write.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/stress/Write.java
@@ -18,7 +18,6 @@
import org.apache.accumulo.core.cli.BatchWriterOpts;
import org.apache.accumulo.core.client.AccumuloClient;
-import org.apache.accumulo.core.client.Connector;
import org.apache.accumulo.core.client.TableExistsException;
import org.apache.accumulo.core.client.TableNotFoundException;
diff --git a/core/src/test/java/org/apache/accumulo/testing/core/randomwalk/ReplicationRandomWalkIT.java b/core/src/test/java/org/apache/accumulo/testing/core/randomwalk/ReplicationRandomWalkIT.java
index 02e7409..a8da367 100644
--- a/core/src/test/java/org/apache/accumulo/testing/core/randomwalk/ReplicationRandomWalkIT.java
+++ b/core/src/test/java/org/apache/accumulo/testing/core/randomwalk/ReplicationRandomWalkIT.java
@@ -19,15 +19,12 @@
import static org.apache.accumulo.core.conf.Property.TSERV_NATIVEMAP_ENABLED;
import static org.apache.accumulo.core.conf.Property.TSERV_WALOG_MAX_SIZE;
-import java.util.Properties;
-
-import org.apache.accumulo.core.client.AccumuloException;
-import org.apache.accumulo.core.client.AccumuloSecurityException;
import org.apache.accumulo.core.client.Connector;
import org.apache.accumulo.minicluster.impl.MiniAccumuloConfigImpl;
import org.apache.accumulo.test.functional.ConfigurableMacBase;
import org.apache.accumulo.testing.core.randomwalk.concurrent.Replication;
import org.apache.hadoop.conf.Configuration;
+import org.easymock.EasyMock;
import org.junit.Test;
public class ReplicationRandomWalkIT extends ConfigurableMacBase {
@@ -43,23 +40,13 @@
public void runReplicationRandomWalkStep() throws Exception {
Replication r = new Replication();
- RandWalkEnv env = new RandWalkEnv(new Properties()) {
- @Override
- public String getAccumuloUserName() {
- return "root";
- }
+ RandWalkEnv env = EasyMock.createMock(RandWalkEnv.class);
+ EasyMock.expect(env.getAccumuloUserName()).andReturn("root").anyTimes();
+ EasyMock.expect(env.getAccumuloPassword()).andReturn(ROOT_PASSWORD).anyTimes();
+ EasyMock.expect(env.getAccumuloClient()).andReturn(this.getClient()).anyTimes();
+ EasyMock.expect(env.getAccumuloConnector()).andReturn(Connector.from(this.getClient())).anyTimes();
+ EasyMock.replay(env);
- @Override
- public String getAccumuloPassword() {
- return ROOT_PASSWORD;
- }
-
- @Override
- public Connector getAccumuloConnector() throws AccumuloException, AccumuloSecurityException {
- return Connector.from(ReplicationRandomWalkIT.this.getClient());
- }
-
- };
r.visit(null, env, null);
}
diff --git a/pom.xml b/pom.xml
index 69f7097..0de1eed 100644
--- a/pom.xml
+++ b/pom.xml
@@ -39,7 +39,7 @@
<properties>
<accumulo.version>2.0.0-SNAPSHOT</accumulo.version>
- <hadoop.version>2.6.4</hadoop.version>
+ <hadoop.version>3.0.3</hadoop.version>
<zookeeper.version>3.4.9</zookeeper.version>
<slf4j.version>1.7.21</slf4j.version>
<twill.version>0.12.1</twill.version>
@@ -53,12 +53,12 @@
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
- <version>14.0.1</version>
+ <version>26.0-jre</version>
</dependency>
<dependency>
<groupId>com.beust</groupId>
<artifactId>jcommander</artifactId>
- <version>1.48</version>
+ <version>1.72</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
@@ -73,7 +73,7 @@
<dependency>
<groupId>commons-configuration</groupId>
<artifactId>commons-configuration</artifactId>
- <version>1.6</version>
+ <version>1.10</version>
</dependency>
<dependency>
<groupId>org.apache.accumulo</groupId>
diff --git a/yarn/src/main/java/org/apache/accumulo/testing/yarn/YarnAccumuloTestRunner.java b/yarn/src/main/java/org/apache/accumulo/testing/yarn/YarnAccumuloTestRunner.java
index 30b2191..56fe6f3 100644
--- a/yarn/src/main/java/org/apache/accumulo/testing/yarn/YarnAccumuloTestRunner.java
+++ b/yarn/src/main/java/org/apache/accumulo/testing/yarn/YarnAccumuloTestRunner.java
@@ -23,11 +23,8 @@
import org.apache.accumulo.testing.core.TestEnv;
import org.apache.accumulo.testing.core.TestProps;
import org.apache.hadoop.yarn.conf.YarnConfiguration;
-import org.apache.twill.api.ResourceReport;
import org.apache.twill.api.ResourceSpecification;
import org.apache.twill.api.TwillApplication;
-import org.apache.twill.api.TwillController;
-import org.apache.twill.api.TwillRunResources;
import org.apache.twill.api.TwillRunnerService;
import org.apache.twill.api.TwillSpecification;
import org.apache.twill.ext.BundledJarRunnable;
@@ -39,7 +36,6 @@
import java.io.File;
import java.nio.file.Paths;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.List;
import java.util.Properties;
@@ -69,12 +65,13 @@
.setMemory(memory, ResourceSpecification.SizeUnit.MEGA).setInstances(opts.numContainers).build();
File jarFile = new File(opts.jarPath);
+ File clientProps = new File(opts.clientProps);
File testProps = new File(opts.testProps);
File log4jProps = new File(opts.logProps);
return TwillSpecification.Builder.with().setName(opts.testName).withRunnable().add(RUNNABLE_ID, new BundledJarRunnable(), resourceSpec).withLocalFiles()
- .add(jarFile.getName(), jarFile.toURI(), false).add(testProps.getName(), testProps.toURI()).add(log4jProps.getName(), log4jProps.toURI()).apply()
- .anyOrder().build();
+ .add(jarFile.getName(), jarFile.toURI(), false).add(testProps.getName(), testProps.toURI()).add(clientProps.getName(), clientProps.toURI())
+ .add(log4jProps.getName(), log4jProps.toURI()).apply().anyOrder().build();
}
}
@@ -92,6 +89,9 @@
@Parameter(names = {"--main", "-m"}, required = true, description = "Main class")
String mainClass;
+ @Parameter(names = {"--clientProps", "-c"}, required = true, description = "Accumulo client properties path")
+ String clientProps;
+
@Parameter(names = {"--testProps", "-p"}, required = true, description = "Test properties path")
String testProps;
@@ -108,15 +108,6 @@
Preconditions.checkState(f.canRead());
}
- private static int getNumRunning(TwillController controller) {
- ResourceReport report = controller.getResourceReport();
- if (report == null) {
- return 0;
- }
- Collection<TwillRunResources> resources = report.getRunnableResources(RUNNABLE_ID);
- return resources == null ? 0 : resources.size();
- }
-
public static void main(String[] args) throws Exception {
TestRunnerOpts opts = new TestRunnerOpts();
@@ -124,6 +115,7 @@
verifyPath(opts.jarPath);
verifyPath(opts.testProps);
+ verifyPath(opts.clientProps);
verifyPath(opts.logProps);
String jarFileName = Paths.get(opts.jarPath).getFileName().toString();
@@ -131,26 +123,21 @@
String[] mainArgs = opts.mainArgs.stream().toArray(String[]::new);
BundledJarRunner.Arguments arguments = new BundledJarRunner.Arguments(jarFileName, "/lib",
opts.mainClass, mainArgs);
-
- Properties props = TestProps.loadFromFile(opts.testProps);
- TestEnv env = new TestEnv(props);
+ TestEnv env = new TestEnv(opts.testProps, opts.clientProps);
YarnConfiguration yarnConfig = new YarnConfiguration(env.getHadoopConfiguration());
-
- TwillRunnerService twillRunner = new YarnTwillRunnerService(yarnConfig, env.getZookeepers());
+ TwillRunnerService twillRunner = new YarnTwillRunnerService(yarnConfig, env.getInfo().getZooKeepers());
twillRunner.start();
- TwillController controller = twillRunner.prepare(new YarnTestApp(opts, props))
- .addJVMOptions("-Dlog4j.configuration=file:$PWD/" + new File(opts.logProps).getName()).withArguments("BundledJarRunnable", arguments.toArray()).start();
+ twillRunner.prepare(new YarnTestApp(opts, env.getTestProperties()))
+ .addJVMOptions("-Dlog4j.configuration=file:$PWD/" + new File(opts.logProps).getName())
+ .withArguments("BundledJarRunnable", arguments.toArray()).start();
- int numRunning = getNumRunning(controller);
- while (numRunning != opts.numContainers) {
- LOG.info("{} of {} containers have started in YARN.", numRunning, opts.numContainers);
- Thread.sleep(5000);
- numRunning = getNumRunning(controller);
+ LOG.info("{} containers will start in YARN.", opts.numContainers);
+ LOG.info("Press Ctrl-C when these containers have started.");
+
+ while (true) {
+ Thread.sleep(1000);
}
-
- LOG.info("{} of {} containers have started in YARN", numRunning, opts.numContainers);
- LOG.info("{} application was successfully started in YARN", opts.testName);
}
}