You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by mw...@apache.org on 2017/01/10 15:37:47 UTC
[1/9] accumulo git commit: ACCUMULO-4510 Removing random walk test
code
Repository: accumulo
Updated Branches:
refs/heads/master f6993056d -> 1246aae1c
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/system/randomwalk/bin/reset-cluster.sh
----------------------------------------------------------------------
diff --git a/test/system/randomwalk/bin/reset-cluster.sh b/test/system/randomwalk/bin/reset-cluster.sh
deleted file mode 100755
index 700a262..0000000
--- a/test/system/randomwalk/bin/reset-cluster.sh
+++ /dev/null
@@ -1,83 +0,0 @@
-#! /usr/bin/env bash
-
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#copied below from hadoop-config.sh
-this="$0"
-while [[ -h "$this" ]]; do
- ls=$(ls -ld "$this")
- link=$(expr "$ls" : '.*-> \(.*\)$')
- if expr "$link" : '.*/.*' > /dev/null; then
- this="$link"
- else
- this=$(dirname "$this")/"$link"
- fi
-done
-bin=$(dirname "$this")
-script=$(basename "$this")
-bin=$(cd "$bin"; pwd)
-this="$bin/$script"
-
-ACCUMULO_HOME=$(dirname "$this")/../../../..
-export ACCUMULO_HOME=$(cd "$ACCUMULO_HOME"; pwd)
-
-if [[ -z "$ACCUMULO_CONF_DIR" ]] ; then
- ACCUMULO_CONF_DIR=${ACCUMULO_HOME}/conf
-fi
-
-if [[ -f $ACCUMULO_CONF_DIR/accumulo-env.sh ]] ; then
- . "$ACCUMULO_CONF_DIR/accumulo-env.sh"
-fi
-
-if [[ -z $HADOOP_PREFIX ]] ; then
- echo "HADOOP_PREFIX is not set. Please make sure it's set globally."
- exit 1
-fi
-
-if [[ -z $1 ]] ; then
- echo "Usage: update-cluster.sh <TARFILE>"
- exit 1
-fi
-
-echo 'killing accumulo'
-pssh -h "$ACCUMULO_CONF_DIR/tservers" "pkill -f org.apache.accumulo.start" < /dev/null
-pkill -f org.apache.accumulo.start
-pkill -f agitator.pl
-
-echo 'updating accumulo'
-cd "$ACCUMULO_HOME/.."
-tar xzf "$1"
-
-echo 'cleaning logs directory'
-rm -f "$ACCUMULO_HOME/logs/*"
-rm -f "$ACCUMULO_HOME/test/system/randomwalk/logs/*"
-rm -f "$ACCUMULO_HOME/test/system/continuous/logs/*"
-rm -f ~/rwlogs/*
-
-echo 'removing old code'
-pssh -h "$ACCUMULO_CONF_DIR/tservers" "rm -rf $ACCUMULO_HOME" < /dev/null
-
-echo 'pushing new code'
-prsync -r -h "$ACCUMULO_CONF_DIR/tservers" "$ACCUMULO_HOME" /opt/dev
-
-echo 'removing /accumulo dir'
-"$HADOOP_PREFIX/bin/hadoop" fs -rmr /accumulo
-
-echo 'creating new instance'
-printf "test\nY\nsecret\nsecret\n" | "$ACCUMULO_HOME/bin/accumulo" init
-
-echo 'starting accumulo'
-"$ACCUMULO_HOME/bin/start-all.sh"
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/system/randomwalk/bin/start-all.sh
----------------------------------------------------------------------
diff --git a/test/system/randomwalk/bin/start-all.sh b/test/system/randomwalk/bin/start-all.sh
deleted file mode 100755
index 4734861..0000000
--- a/test/system/randomwalk/bin/start-all.sh
+++ /dev/null
@@ -1,62 +0,0 @@
-#! /usr/bin/env bash
-
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#copied below from hadoop-config.sh
-this="$0"
-while [[ -h "$this" ]]; do
- ls=$(ls -ld "$this")
- link=$(expr "$ls" : '.*-> \(.*\)$')
- if expr "$link" : '.*/.*' > /dev/null; then
- this="$link"
- else
- this=$(dirname "$this")/"$link"
- fi
-done
-bin=$(dirname "$this")
-script=$(basename "$this")
-bin=$(cd "$bin"; pwd)
-this="$bin/$script"
-
-ACCUMULO_HOME=$(dirname "$this")/../../../..
-export ACCUMULO_HOME=$(cd "$ACCUMULO_HOME"; pwd)
-
-if [[ -z "${ACCUMULO_CONF_DIR}" ]]; then
- export ACCUMULO_CONF_DIR=${ACCUMULO_HOME}/conf
-fi
-
-if [[ -f $ACCUMULO_CONF_DIR/accumulo-env.sh ]] ; then
- . "$ACCUMULO_CONF_DIR/accumulo-env.sh"
-fi
-
-
-if [[ -z $HADOOP_PREFIX ]] ; then
- echo "HADOOP_PREFIX is not set. Please make sure it's set globally."
- exit 1
-fi
-
-if [[ -z $1 ]] ; then
- echo "Usage: start-walkers.sh <startNode>"
- exit 1
-fi
-
-RW_HOME="$ACCUMULO_HOME/test/system/randomwalk"
-
-echo 'copying randomwalk config to HDFS'
-"$RW_HOME/bin/copy-config.sh"
-
-echo 'starting walkers'
-pssh -i -h "$RW_HOME/conf/walkers" "$RW_HOME/bin/start-local.sh $1" < /dev/null
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/system/randomwalk/bin/start-local.sh
----------------------------------------------------------------------
diff --git a/test/system/randomwalk/bin/start-local.sh b/test/system/randomwalk/bin/start-local.sh
deleted file mode 100755
index 0f8042c..0000000
--- a/test/system/randomwalk/bin/start-local.sh
+++ /dev/null
@@ -1,79 +0,0 @@
-#! /usr/bin/env bash
-
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-#copied below from hadoop-config.sh
-this="$0"
-while [[ -h "$this" ]]; do
- ls=$(ls -ld "$this")
- link=$(expr "$ls" : '.*-> \(.*\)$')
- if expr "$link" : '.*/.*' > /dev/null; then
- this="$link"
- else
- this=$(dirname "$this")/"$link"
- fi
-done
-bin=$(dirname "$this")
-script=$(basename "$this")
-bin=$(cd "$bin"; pwd)
-this="$bin/$script"
-
-ACCUMULO_HOME=$(dirname "$this")/../../../..
-export ACCUMULO_HOME=$(cd "$ACCUMULO_HOME"; pwd)
-
-if [[ -z "$ACCUMULO_CONF_DIR" ]] ; then
- export ACCUMULO_CONF_DIR=${ACCUMULO_HOME}/conf
-fi
-
-if [[ -f $ACCUMULO_CONF_DIR/accumulo-env.sh ]] ; then
- . "$ACCUMULO_CONF_DIR/accumulo-env.sh"
-fi
-
-if [[ -z $HADOOP_PREFIX ]] ; then
- echo "HADOOP_PREFIX is not set. Please make sure it's set globally."
- exit 1
-fi
-
-if [[ -z $1 ]] ; then
- echo "Usage: start-local.sh <startNode>"
- exit 1
-fi
-
-RW_HOME=$ACCUMULO_HOME/test/system/randomwalk
-
-cd "$RW_HOME"
-
-# grab config from HDFS
-"$HADOOP_PREFIX/bin/hadoop" fs -get /randomwalk/config.tgz config.tgz
-
-# extract config to a tmp directory
-TEMP="$(hostname)-tmp"
-rm -rf "$TEMP"
-mkdir "$TEMP"
-tar xzf config.tgz -C "$TEMP"
-rm config.tgz
-
-# config the logging
-RW_LOGS="$RW_HOME/logs"
-if [[ ! -d "$RW_LOGS" ]]
-then
- mkdir -p "$RW_LOGS" || ( echo "cannot create $RW_LOGS" ; exit 1 )
-fi
-LOG_ID=$(hostname -s)_$(date +%Y%m%d_%H%M%S)
-
-# run the local walker
-"$ACCUMULO_HOME/bin/accumulo" org.apache.accumulo.test.randomwalk.Framework --configDir "$RW_HOME/$TEMP/conf/" --logDir "$RW_LOGS" --logId "$LOG_ID" --module "$1" >"$RW_LOGS/$LOG_ID.out" 2>"$RW_LOGS/$LOG_ID.err" &
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/system/randomwalk/conf/logger.xml.example
----------------------------------------------------------------------
diff --git a/test/system/randomwalk/conf/logger.xml.example b/test/system/randomwalk/conf/logger.xml.example
deleted file mode 100644
index d2f6a97..0000000
--- a/test/system/randomwalk/conf/logger.xml.example
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
-<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
-
- <!-- Write out everything at the DEBUG level to the debug log -->
- <appender name="A1" class="org.apache.log4j.RollingFileAppender">
- <param name="File" value="${localLog}.debug.log"/>
- <param name="MaxFileSize" value="100MB"/>
- <param name="MaxBackupIndex" value="10"/>
- <param name="Threshold" value="DEBUG"/>
- <layout class="org.apache.log4j.PatternLayout">
- <param name="ConversionPattern" value="%d{dd HH:mm:ss,SSS} [%-8c{2}] %-5p: %m%n"/>
- </layout>
- </appender>
-
- <!-- Write out INFO and higher to the regular log -->
- <appender name="A2" class="org.apache.log4j.RollingFileAppender">
- <param name="File" value="${localLog}.log"/>
- <param name="MaxFileSize" value="100MB"/>
- <param name="MaxBackupIndex" value="10"/>
- <param name="Threshold" value="INFO"/>
- <layout class="org.apache.log4j.PatternLayout">
- <param name="ConversionPattern" value="%d{dd HH:mm:ss,SSS} [%-8c{2}] %-5p: %m%n"/>
- </layout>
- </appender>
-
- <!-- Write out WARN and higher to a NFS-mounted directory (specified
- by NFS_LOGPATH in randomwalk.conf -->
- <!--appender name="A3" class="org.apache.log4j.RollingFileAppender">
- <param name="File" value="${nfsLog}.log"/>
- <param name="MaxFileSize" value="100MB"/>
- <param name="MaxBackupIndex" value="10"/>
- <param name="Threshold" value="WARN"/>
- <layout class="org.apache.log4j.PatternLayout">
- <param name="ConversionPattern" value="%d{dd HH:mm:ss,SSS} [%-8c{2}] %-5p: %m%n"/>
- </layout>
- </appender-->
-
- <!-- Log accumulo events to the debug, normal and remote logs. -->
- <logger name="org.apache.accumulo" additivity="false">
- <level value="DEBUG"/>
- <appender-ref ref="A1" />
- <appender-ref ref="A2" />
- <appender-ref ref="A3" />
- </logger>
- <logger name="org.apache.accumulo.core.file.rfile.bcfile.Compression">
- <level value="INFO"/>
- </logger>
-
- <!-- Log non-accumulo events to the debug and normal logs. -->
- <root>
- <level value="INFO"/>
- <appender-ref ref="A1" />
- <appender-ref ref="A2" />
- <appender-ref ref="A3" />
- </root>
-
-</log4j:configuration>
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/system/randomwalk/conf/modules/All.xml
----------------------------------------------------------------------
diff --git a/test/system/randomwalk/conf/modules/All.xml b/test/system/randomwalk/conf/modules/All.xml
deleted file mode 100644
index be5c815..0000000
--- a/test/system/randomwalk/conf/modules/All.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<module>
-
-<init id="dummy.ToAll"/>
-
-<node id="Image.xml">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="dummy.ToAll">
- <edge id="Image.xml" weight="1"/>
- <edge id="Sequential.xml" weight="1"/>
- <edge id="MultiTable.xml" weight="1"/>
- <edge id="Shard.xml" weight="1"/>
- <edge id="Concurrent.xml" weight="1"/>
- <edge id="Conditional.xml" weight="1"/>
- <edge id="Security.xml" weight="1"/>
- <edge id="Bulk.xml" weight="1"/>
-</node>
-
-<node id="Sequential.xml">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="MultiTable.xml">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="Shard.xml">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="Concurrent.xml">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="Conditional.xml">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="Security.xml">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="Bulk.xml">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-</module>
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/system/randomwalk/conf/modules/Bulk.xml
----------------------------------------------------------------------
diff --git a/test/system/randomwalk/conf/modules/Bulk.xml b/test/system/randomwalk/conf/modules/Bulk.xml
deleted file mode 100644
index 35e2a67..0000000
--- a/test/system/randomwalk/conf/modules/Bulk.xml
+++ /dev/null
@@ -1,61 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<module>
-
-<package prefix="bulk" value="org.apache.accumulo.test.randomwalk.bulk"/>
-
-<init id="bulk.Setup"/>
-
-<node id="bulk.Setup">
- <edge id="bulk.BulkPlusOne" weight="1"/>
-</node>
-
-<node id="bulk.BulkPlusOne">
- <edge id="bulk.Merge" weight="10"/>
- <edge id="bulk.Split" weight="10"/>
- <edge id="bulk.Compact" weight="10"/>
- <edge id="bulk.ConsistencyCheck" weight="25"/>
- <edge id="bulk.BulkMinusOne" weight="10"/>
-</node>
-
-<node id="bulk.BulkMinusOne">
- <edge id="bulk.BulkPlusOne" weight="200"/>
- <edge id="bulk.Verify" weight="1"/>
-</node>
-
-<node id="bulk.Merge">
- <edge id="bulk.BulkMinusOne" weight="1"/>
-</node>
-
-<node id="bulk.Split">
- <edge id="bulk.BulkMinusOne" weight="1"/>
-</node>
-
-<node id="bulk.Compact">
- <edge id="bulk.BulkMinusOne" weight="1"/>
-</node>
-
-<node id="bulk.ConsistencyCheck">
- <edge id="bulk.BulkMinusOne" weight="1"/>
-</node>
-
-<node id="bulk.Verify">
- <edge id="END" weight="1"/>
-</node>
-
-</module>
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/system/randomwalk/conf/modules/Concurrent.xml
----------------------------------------------------------------------
diff --git a/test/system/randomwalk/conf/modules/Concurrent.xml b/test/system/randomwalk/conf/modules/Concurrent.xml
deleted file mode 100644
index 36ea53c..0000000
--- a/test/system/randomwalk/conf/modules/Concurrent.xml
+++ /dev/null
@@ -1,181 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<module>
-
-<package prefix="ct" value="org.apache.accumulo.test.randomwalk.concurrent"/>
-
-<fixture id="ct.ConcurrentFixture"/>
-
-<init id="ct.Setup"/>
-
-<node id="dummy.ToAll">
- <edge id="ct.CreateTable" weight="1000"/>
- <edge id="ct.BatchWrite" weight="1000"/>
- <edge id="ct.BatchScan" weight="1000"/>
- <edge id="ct.CloneTable" weight="1000"/>
- <edge id="ct.DeleteTable" weight="1000"/>
- <edge id="ct.RenameTable" weight="1000"/>
- <edge id="ct.ScanTable" weight="500"/>
- <edge id="ct.Replication" weight="500"/>
- <edge id="ct.IsolatedScan" weight="500"/>
- <edge id="ct.AddSplits" weight="1000"/>
- <edge id="ct.ListSplits" weight="1000"/>
- <edge id="ct.OfflineTable" weight="1000"/>
- <edge id="ct.Merge" weight="1000"/>
- <edge id="ct.Compact" weight="1000"/>
- <edge id="ct.BulkImport" weight="1000"/>
- <edge id="ct.DeleteRange" weight="1000"/>
- <edge id="ct.CreateUser" weight="1000"/>
- <edge id="ct.DropUser" weight="1000"/>
- <edge id="ct.ChangeAuthorizations" weight="1000"/>
- <edge id="ct.ChangePermissions" weight="1000"/>
- <edge id="ct.CheckPermission" weight="1000"/>
- <edge id="ct.StopTabletServer" weight="100"/>
- <edge id="ct.StartAll" weight="1000"/>
- <edge id="ct.Shutdown" weight="10"/>
- <edge id="ct.Config" weight="1000"/>
- <edge id="ct.CreateNamespace" weight="1000"/>
- <edge id="ct.DeleteNamespace" weight="100"/>
- <edge id="ct.RenameNamespace" weight="100"/>
- <edge id="ct.Apocalypse" weight="10"/>
- <edge id="END" weight="1"/>
-</node>
-
-<node id="ct.Setup">
- <property key="numTables" value="9"/>
- <property key="numNamespaces" value="2"/>
- <edge id="ct.CreateTable" weight="1"/>
-</node>
-
-<node id="ct.BatchScan">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="ct.BatchWrite">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="ct.CloneTable">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="ct.CreateTable">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="ct.DeleteTable">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="ct.RenameTable">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="ct.ScanTable">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="ct.Replication">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="ct.IsolatedScan">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="ct.AddSplits">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="ct.ListSplits">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="ct.OfflineTable">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="ct.Merge">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="ct.Compact">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="ct.BulkImport">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="ct.DeleteRange">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="ct.CreateUser">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="ct.DropUser">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="ct.ChangeAuthorizations">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="ct.ChangePermissions">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="ct.CheckPermission">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="ct.StopTabletServer">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="ct.StartAll">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="ct.Config">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="ct.Shutdown">
- <edge id="ct.StartAll" weight="1"/>
-</node>
-
-<node id="ct.Apocalypse">
- <edge id="ct.StartAll" weight="1"/>
-</node>
-
-<node id="ct.CreateNamespace">
- <edge id="ct.StartAll" weight="1"/>
-</node>
-
-<node id="ct.DeleteNamespace">
- <edge id="ct.StartAll" weight="1"/>
-</node>
-
-<node id="ct.RenameNamespace">
- <edge id="ct.StartAll" weight="1"/>
-</node>
-
-</module>
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/system/randomwalk/conf/modules/Conditional.xml
----------------------------------------------------------------------
diff --git a/test/system/randomwalk/conf/modules/Conditional.xml b/test/system/randomwalk/conf/modules/Conditional.xml
deleted file mode 100644
index 54ff7ab..0000000
--- a/test/system/randomwalk/conf/modules/Conditional.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<module>
-
-<package prefix="ct" value="org.apache.accumulo.test.randomwalk.conditional"/>
-
-
-<init id="ct.Setup"/>
-
-<node id="dummy.ToAll">
- <edge id="ct.Compact" weight="1"/>
- <edge id="ct.Flush" weight="1"/>
- <edge id="ct.Merge" weight="1"/>
- <edge id="ct.Split" weight="1"/>
- <edge id="ct.Transfer" weight="100000"/>
- <edge id="ct.Verify" weight="2"/>
-</node>
-
-<node id="ct.Setup">
- <property key="numAccts" value="10000"/>
- <property key="numBanks" value="1000"/>
- <edge id="ct.Init" weight="1"/>
-</node>
-
-<node id="ct.Init">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="ct.Compact">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="ct.Flush">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="ct.Merge">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="ct.Split">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="ct.Transfer">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="ct.Verify">
- <edge id="dummy.ToAll" weight="1000"/>
- <edge id="ct.TearDown" weight="1"/>
-</node>
-
-
-<node id="ct.TearDown">
- <edge id="END" weight="1"/>
-</node>
-
-</module>
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/system/randomwalk/conf/modules/Image.xml
----------------------------------------------------------------------
diff --git a/test/system/randomwalk/conf/modules/Image.xml b/test/system/randomwalk/conf/modules/Image.xml
deleted file mode 100644
index 7561895..0000000
--- a/test/system/randomwalk/conf/modules/Image.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<module>
-
-<package prefix="image" value="org.apache.accumulo.test.randomwalk.image"/>
-
-<fixture id="image.ImageFixture"/>
-
-<init id="BigWrite"/>
-
-<node id="BigWrite" src="image.Write">
- <property key="minSize" value="400000"/>
- <property key="maxSize" value="1000000"/>
- <edge id="BigWrite" weight="167"/>
- <edge id="SmallWrite" weight="833"/>
- <edge id="image.Commit" weight="1"/>
-</node>
-
-<node id="SmallWrite" src="image.Write">
- <property key="minSize" value="4000"/>
- <property key="maxSize" value="10000"/>
- <edge id="BigWrite" weight="167"/>
- <edge id="SmallWrite" weight="833"/>
- <edge id="image.Commit" weight="1"/>
-</node>
-
-<node id="image.Commit">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="dummy.ToAll">
- <edge id="SmallWrite" weight="300"/>
- <edge id="BigWrite" weight="300"/>
- <edge id="image.Verify" weight="150"/>
- <edge id="image.ScanMeta" weight="150"/>
- <edge id="image.TableOp" weight="30"/>
- <edge id="END" weight="1"/>
-</node>
-
-<node id="image.Verify">
- <property key="maxVerify" value="500"/>
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="image.ScanMeta">
- <property key="minScan" value="100"/>
- <property key="maxScan" value="500"/>
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="image.TableOp">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-</module>
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/system/randomwalk/conf/modules/LongClean.xml
----------------------------------------------------------------------
diff --git a/test/system/randomwalk/conf/modules/LongClean.xml b/test/system/randomwalk/conf/modules/LongClean.xml
deleted file mode 100644
index 217afb0..0000000
--- a/test/system/randomwalk/conf/modules/LongClean.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<module>
-
-<init id="dummy.ToAll"/>
-
-<node id="Image.xml" maxSec="3600" teardown="true">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="dummy.ToAll">
- <edge id="Image.xml" weight="1"/>
- <edge id="Sequential.xml" weight="1"/>
- <edge id="MultiTable.xml" weight="1"/>
- <edge id="Shard.xml" weight="1"/>
- <edge id="Concurrent.xml" weight="1"/>
- <edge id="Security.xml" weight="1"/>
- <edge id="Bulk.xml" weight="1"/>
-</node>
-
-<node id="Sequential.xml" maxSec="3600" teardown="true">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="MultiTable.xml" maxSec="3600" teardown="true">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="Shard.xml" maxSec="3600" teardown="true">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="Concurrent.xml" maxSec="3600" teardown="true">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="Security.xml" maxSec="3600" teardown="true">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="Bulk.xml" maxSec="3600" teardown="true">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-</module>
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/system/randomwalk/conf/modules/LongDirty.xml
----------------------------------------------------------------------
diff --git a/test/system/randomwalk/conf/modules/LongDirty.xml b/test/system/randomwalk/conf/modules/LongDirty.xml
deleted file mode 100644
index 480e57b..0000000
--- a/test/system/randomwalk/conf/modules/LongDirty.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<module>
-
-<init id="dummy.ToAll"/>
-
-<node id="Image.xml" maxSec="3600" teardown="false">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="dummy.ToAll">
- <edge id="Image.xml" weight="1"/>
- <edge id="Sequential.xml" weight="1"/>
- <edge id="MultiTable.xml" weight="1"/>
- <edge id="Shard.xml" weight="1"/>
- <edge id="Concurrent.xml" weight="1"/>
- <edge id="Security.xml" weight="1"/>
- <edge id="Bulk.xml" weight="1"/>
-</node>
-
-<node id="Sequential.xml" maxSec="3600" teardown="false">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="MultiTable.xml" maxSec="3600" teardown="false">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="Shard.xml" maxSec="3600" teardown="false">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="Concurrent.xml" maxSec="3600" teardown="false">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="Security.xml" maxSec="3600" teardown="false">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="Bulk.xml" maxSec="3600" teardown="false">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-</module>
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/system/randomwalk/conf/modules/LongEach.xml
----------------------------------------------------------------------
diff --git a/test/system/randomwalk/conf/modules/LongEach.xml b/test/system/randomwalk/conf/modules/LongEach.xml
deleted file mode 100644
index 5863341..0000000
--- a/test/system/randomwalk/conf/modules/LongEach.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<module>
-
-<init id="Image.xml"/>
-
-<node id="Image.xml" maxSec="3600" teardown="true">
- <edge id="Sequential.xml" weight="1"/>
-</node>
-
-<node id="Sequential.xml" maxSec="3600" teardown="true">
- <edge id="MultiTable.xml" weight="1"/>
-</node>
-
-<node id="MultiTable.xml" maxSec="3600" teardown="true">
- <edge id="Shard.xml" weight="1"/>
-</node>
-
-<node id="Shard.xml" maxSec="3600" teardown="true">
- <edge id="Concurrent.xml" weight="1"/>
-</node>
-
-<node id="Concurrent.xml" maxSec="3600" teardown="true">
- <edge id="Security.xml" weight="1"/>
-</node>
-
-<node id="Security.xml" maxSec="3600" teardown="true">
- <edge id="Bulk.xml" weight="1"/>
-</node>
-
-<node id="Bulk.xml" maxSec="3600" teardown="true">
- <edge id="Conditional.xml" weight="1"/>
-</node>
-
-<node id="Conditional.xml" maxSec="3600" teardown="true">
- <edge id="END" weight="1"/>
-</node>
-
-</module>
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/system/randomwalk/conf/modules/MultiTable.xml
----------------------------------------------------------------------
diff --git a/test/system/randomwalk/conf/modules/MultiTable.xml b/test/system/randomwalk/conf/modules/MultiTable.xml
deleted file mode 100644
index 55f6590..0000000
--- a/test/system/randomwalk/conf/modules/MultiTable.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<module>
-
-<package prefix="mt" value="org.apache.accumulo.test.randomwalk.multitable"/>
-
-<fixture id="mt.MultiTableFixture"/>
-
-<init id="mt.CreateTable"/>
-
-<node id="mt.CreateTable">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="dummy.ToAll">
- <edge id="mt.CreateTable" weight="20"/>
- <edge id="mt.Write" weight="100"/>
- <edge id="mt.CopyTable" weight="5"/>
- <edge id="mt.OfflineTable" weight="10"/>
- <edge id="mt.DropTable" weight="3"/>
- <edge id="END" weight="1"/>
-</node>
-
-<node id="mt.Write">
- <edge id="mt.Write" weight="5000"/>
- <edge id="mt.Commit" weight="1"/>
-</node>
-
-<node id="mt.Commit">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="mt.OfflineTable">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="mt.CopyTable">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="mt.DropTable">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-</module>
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/system/randomwalk/conf/modules/Security.xml
----------------------------------------------------------------------
diff --git a/test/system/randomwalk/conf/modules/Security.xml b/test/system/randomwalk/conf/modules/Security.xml
deleted file mode 100644
index 9e9ef9f..0000000
--- a/test/system/randomwalk/conf/modules/Security.xml
+++ /dev/null
@@ -1,224 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor
- license agreements. See the NOTICE file distributed with this work for additional
- information regarding copyright ownership. The ASF licenses this file to
- You under the Apache License, Version 2.0 (the "License"); you may not use
- this file except in compliance with the License. You may obtain a copy of
- the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required
- by applicable law or agreed to in writing, software distributed under the
- License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
- OF ANY KIND, either express or implied. See the License for the specific
- language governing permissions and limitations under the License. -->
-<module>
-
- <package prefix="security"
- value="org.apache.accumulo.test.randomwalk.security" />
-
- <fixture id="security.SecurityFixture" />
-
- <init id="dummy.NoUserNoTable" maxHops="1000000" />
-
- <node id="security.CreateUser">
- <edge id="alias.last" weight="1" />
- </node>
-
- <node id="CreateUserYesTable" src="security.CreateUser">
- <edge id="dummy.YesUserYesTable" weight="1" />
- </node>
-
- <node id="CreateUserNoTable" src="security.CreateUser">
- <edge id="dummy.YesUserNoTable" weight="1" />
- </node>
-
- <node id="security.DropUser">
- <edge id="alias.last" weight="1" />
- </node>
-
- <node id="DropUserNoTable" src="security.DropUser">
- <edge id="dummy.NoUserNoTable" weight="1" />
- </node>
-
- <node id="DropUserYesTable" src="security.DropUser">
- <edge id="dummy.NoUserYesTable" weight="1" />
- </node>
-
- <node id="security.CreateTable">
- <edge id="alias.last" weight="1" />
- </node>
-
- <node id="NoUserCreateTable" src="security.CreateTable">
- <edge id="dummy.NoUserYesTable" weight="1" />
- </node>
-
- <node id="YesUserCreateTable" src="security.CreateTable">
- <edge id="dummy.YesUserYesTable" weight="1" />
- </node>
-
- <node id="security.DropTable">
- <edge id="alias.last" weight="1" />
- </node>
-
- <node id="NoUserDropTable" src="security.DropTable">
- <edge id="dummy.NoUserNoTable" weight="1" />
- </node>
-
- <node id="YesUserDropTable" src="security.DropTable">
- <edge id="dummy.YesUserNoTable" weight="1" />
- </node>
-
- <node id="security.AlterTable">
- <edge id="alias.last" weight="1" />
- </node>
-
- <node id="RandomAuths" src="security.SetAuths">
- <property key="auths" value="_random" />
- <edge id="alias.last" weight="1" />
- </node>
-
- <node id="SystemChangeSystemPass" src="security.ChangePass">
- <property key="target" value="system" />
- <property key="source" value="system" />
- <edge id="alias.last" weight="1" />
- </node>
-
- <node id="SystemChangeTablePass" src="security.ChangePass">
- <property key="target" value="table" />
- <property key="source" value="system" />
- <edge id="alias.last" weight="1" />
- </node>
-
- <node id="TableChangeTablePass" src="security.ChangePass">
- <property key="target" value="table" />
- <property key="source" value="table" />
- <edge id="alias.last" weight="1" />
- </node>
-
- <node id="AuthenticateSystemRight" src="security.Authenticate">
- <property key="target" value="system" />
- <property key="valid" value="true" />
- <edge id="alias.last" weight="1" />
- </node>
-
- <node id="AuthenticateSystemWrong" src="security.Authenticate">
- <property key="target" value="system" />
- <property key="valid" value="false" />
- <edge id="alias.last" weight="1" />
- </node>
-
- <node id="AuthenticateTableRight" src="security.Authenticate">
- <property key="target" value="table" />
- <property key="valid" value="true" />
- <edge id="alias.last" weight="1" />
- </node>
-
- <node id="AuthenticateTableWrong" src="security.Authenticate">
- <property key="target" value="table" />
- <property key="valid" value="false" />
- <edge id="alias.last" weight="1" />
- </node>
-
- <node id="security.Validate">
- <edge id="alias.last" weight="1" />
- </node>
-
- <node id="security.AlterSystemPerm">
- <edge id="alias.last" weight="1" />
- </node>
-
- <node id="security.AlterTablePerm">
- <edge id="alias.last" weight="1" />
- </node>
-
- <node id="security.TableOp">
- <edge id="alias.last" weight="1" />
- </node>
-
- <node id="dummy.NoUserNoTable">
- <alias name="last" />
- <property key="print" value="DEBUG" />
- <edge id="CreateUserNoTable" weight="40" />
- <edge id="security.DropUser" weight="10" />
- <edge id="NoUserCreateTable" weight="40" />
- <edge id="security.DropTable" weight="10" />
- <edge id="security.AlterTable" weight="10" />
- <edge id="SystemChangeSystemPass" weight="60" />
- <edge id="SystemChangeTablePass" weight="10" />
- <edge id="AuthenticateSystemRight" weight="50" />
- <edge id="AuthenticateSystemWrong" weight="50" />
- <edge id="AuthenticateTableRight" weight="10" />
- <edge id="AuthenticateTableWrong" weight="10" />
- <edge id="security.Validate" weight="20" />
- <edge id="RandomAuths" weight="10" />
- <edge id="security.AlterSystemPerm" weight="60" />
- <edge id="security.AlterTablePerm" weight="10" />
- <edge id="END" weight="1" />
- </node>
-
- <node id="dummy.YesUserNoTable">
- <alias name="last" />
- <property key="print" value="DEBUG" />
- <edge id="security.CreateUser" weight="10" />
- <edge id="DropUserNoTable" weight="30" />
- <edge id="YesUserCreateTable" weight="40" />
- <edge id="security.DropTable" weight="10" />
- <edge id="security.AlterTable" weight="10" />
- <edge id="SystemChangeSystemPass" weight="60" />
- <edge id="SystemChangeTablePass" weight="60" />
- <edge id="TableChangeTablePass" weight="60" />
- <edge id="AuthenticateSystemRight" weight="50" />
- <edge id="AuthenticateSystemWrong" weight="50" />
- <edge id="AuthenticateTableRight" weight="50" />
- <edge id="AuthenticateTableWrong" weight="50" />
- <edge id="security.Validate" weight="20" />
- <edge id="RandomAuths" weight="60" />
- <edge id="security.AlterSystemPerm" weight="60" />
- <edge id="security.AlterTablePerm" weight="10" />
- <edge id="security.TableOp" weight="10" />
- <edge id="END" weight="1" />
- </node>
-
- <node id="dummy.NoUserYesTable">
- <alias name="last" />
- <property key="print" value="DEBUG" />
- <edge id="CreateUserYesTable" weight="40" />
- <edge id="security.DropUser" weight="10" />
- <edge id="security.CreateTable" weight="10" />
- <edge id="NoUserDropTable" weight="30" />
- <edge id="security.AlterTable" weight="60" />
- <edge id="SystemChangeSystemPass" weight="60" />
- <edge id="SystemChangeTablePass" weight="10" />
- <edge id="AuthenticateSystemRight" weight="50" />
- <edge id="AuthenticateSystemWrong" weight="50" />
- <edge id="AuthenticateTableRight" weight="10" />
- <edge id="AuthenticateTableWrong" weight="10" />
- <edge id="security.Validate" weight="20" />
- <edge id="RandomAuths" weight="10" />
- <edge id="security.AlterSystemPerm" weight="60" />
- <edge id="security.AlterTablePerm" weight="10" />
- <edge id="END" weight="1" />
- </node>
-
- <node id="dummy.YesUserYesTable">
- <alias name="last" />
- <property key="print" value="DEBUG" />
- <edge id="security.CreateUser" weight="10" />
- <edge id="DropUserYesTable" weight="30" />
- <edge id="security.CreateTable" weight="10" />
- <edge id="YesUserDropTable" weight="30" />
- <edge id="security.AlterTable" weight="60" />
- <edge id="SystemChangeSystemPass" weight="60" />
- <edge id="SystemChangeTablePass" weight="60" />
- <edge id="TableChangeTablePass" weight="60" />
- <edge id="AuthenticateSystemRight" weight="50" />
- <edge id="AuthenticateSystemWrong" weight="50" />
- <edge id="AuthenticateTableRight" weight="50" />
- <edge id="AuthenticateTableWrong" weight="50" />
- <edge id="security.Validate" weight="20" />
- <edge id="RandomAuths" weight="60" />
- <edge id="security.AlterSystemPerm" weight="60" />
- <edge id="security.AlterTablePerm" weight="60" />
- <edge id="security.TableOp" weight="120" />
- <edge id="END" weight="1" />
- </node>
-
-</module>
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/system/randomwalk/conf/modules/Sequential.xml
----------------------------------------------------------------------
diff --git a/test/system/randomwalk/conf/modules/Sequential.xml b/test/system/randomwalk/conf/modules/Sequential.xml
deleted file mode 100644
index 454e75f..0000000
--- a/test/system/randomwalk/conf/modules/Sequential.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<module>
-
-<package prefix="seq" value="org.apache.accumulo.test.randomwalk.sequential"/>
-
-<fixture id="seq.SequentialFixture"/>
-
-<init id="seq.Write"/>
-
-<node id="seq.Write">
- <edge id="seq.Write" weight="10000"/>
- <edge id="seq.Commit" weight="1"/>
-</node>
-
-<node id="seq.Commit">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="dummy.ToAll">
- <edge id="seq.Write" weight="50"/>
- <edge id="seq.BatchVerify" weight="10"/>
- <edge id="seq.MapRedVerify" weight="5"/>
- <edge id="END" weight="1"/>
-</node>
-
-<node id="seq.BatchVerify">
- <property key="maxVerify" value="10000"/>
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="seq.MapRedVerify">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-</module>
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/system/randomwalk/conf/modules/Shard.xml
----------------------------------------------------------------------
diff --git a/test/system/randomwalk/conf/modules/Shard.xml b/test/system/randomwalk/conf/modules/Shard.xml
deleted file mode 100644
index eb23f37..0000000
--- a/test/system/randomwalk/conf/modules/Shard.xml
+++ /dev/null
@@ -1,123 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<module>
-
-<package prefix="shard" value="org.apache.accumulo.test.randomwalk.shard"/>
-
-<fixture id="shard.ShardFixture"/>
-
-<init id="shard.Insert"/>
-
-<node id="shard.Insert">
- <edge id="shard.Insert" weight="10"/>
- <edge id="shard.Commit" weight="1"/>
-</node>
-
-<node id="shard.Commit">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="shard.Search">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="shard.Reindex">
- <edge id="Verify" weight="2"/>
- <edge id="VerifyExit" weight="1"/>
-</node>
-
-<node id="shard.CloneIndex">
- <edge id="Verify" weight="1"/>
-</node>
-
-<node id="shard.ExportIndex">
- <edge id="Verify" weight="1"/>
-</node>
-
-<node id="Verify" src="shard.VerifyIndex">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="VerifyExit" src="shard.VerifyIndex">
- <edge id="END" weight="1"/>
-</node>
-
-<node id="shard.Delete">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="shard.DeleteWord">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="shard.DeleteSomeDocs">
- <property key="pattern1" value=".0.*"/>
- <property key="pattern2" value=".3.*"/>
- <property key="pattern3" value=".7.*"/>
- <property key="pattern4" value=".b.*"/>
- <property key="pattern5" value="5.*"/>
- <property key="pattern6" value="a.*"/>
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="shard.Flush">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="shard.Grep">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="shard.Split">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="shard.Merge">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="shard.BulkInsert">
- <property key="minInsert" value="1000"/>
- <property key="maxInsert" value="20000"/>
- <property key="maxSplits" value="9"/>
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="shard.CompactFilter">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-
-<node id="dummy.ToAll">
- <edge id="shard.Reindex" weight="3"/>
- <edge id="shard.Flush" weight="3"/>
- <edge id="shard.CloneIndex" weight="3"/>
- <edge id="shard.ExportIndex" weight="3"/>
- <edge id="shard.Grep" weight="20"/>
- <edge id="shard.Split" weight="40"/>
- <edge id="shard.Merge" weight="20"/>
- <edge id="shard.DeleteWord" weight="9"/>
- <edge id="shard.CompactFilter" weight="9"/>
- <edge id="shard.DeleteSomeDocs" weight="20"/>
- <edge id="shard.BulkInsert" weight="3"/>
- <edge id="shard.Delete" weight="486"/>
- <edge id="shard.Insert" weight="4690"/>
- <edge id="shard.Search" weight="4691"/>
-</node>
-
-</module>
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/system/randomwalk/conf/modules/ShortClean.xml
----------------------------------------------------------------------
diff --git a/test/system/randomwalk/conf/modules/ShortClean.xml b/test/system/randomwalk/conf/modules/ShortClean.xml
deleted file mode 100644
index 19bb807..0000000
--- a/test/system/randomwalk/conf/modules/ShortClean.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<module>
-
-<init id="dummy.ToAll"/>
-
-<node id="Image.xml" maxSec="300" teardown="true">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="dummy.ToAll">
- <edge id="Image.xml" weight="1"/>
- <edge id="Sequential.xml" weight="1"/>
- <edge id="MultiTable.xml" weight="1"/>
- <edge id="Shard.xml" weight="1"/>
- <edge id="Concurrent.xml" weight="1"/>
- <edge id="Security.xml" weight="1"/>
- <edge id="Bulk.xml" weight="1"/>
-</node>
-
-<node id="Sequential.xml" maxSec="300" teardown="true">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="MultiTable.xml" maxSec="300" teardown="true">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="Shard.xml" maxSec="300" teardown="true">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="Concurrent.xml" maxSec="300" teardown="true">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="Security.xml" maxSec="300" teardown="true">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="Bulk.xml" maxSec="300" teardown="true">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-</module>
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/system/randomwalk/conf/modules/ShortDirty.xml
----------------------------------------------------------------------
diff --git a/test/system/randomwalk/conf/modules/ShortDirty.xml b/test/system/randomwalk/conf/modules/ShortDirty.xml
deleted file mode 100644
index 73fd988..0000000
--- a/test/system/randomwalk/conf/modules/ShortDirty.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<module>
-
-<init id="dummy.ToAll"/>
-
-<node id="Image.xml" maxSec="300" teardown="false">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="dummy.ToAll">
- <edge id="Image.xml" weight="1"/>
- <edge id="Sequential.xml" weight="1"/>
- <edge id="MultiTable.xml" weight="1"/>
- <edge id="Shard.xml" weight="1"/>
- <edge id="Concurrent.xml" weight="1"/>
- <edge id="Security.xml" weight="1"/>
- <edge id="Bulk.xml" weight="1"/>
-</node>
-
-<node id="Sequential.xml" maxSec="300" teardown="false">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="MultiTable.xml" maxSec="300" teardown="false">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="Shard.xml" maxSec="300" teardown="false">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="Concurrent.xml" maxSec="300" teardown="false">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="Security.xml" maxSec="300" teardown="false">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-<node id="Bulk.xml" maxSec="300" teardown="false">
- <edge id="dummy.ToAll" weight="1"/>
-</node>
-
-</module>
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/system/randomwalk/conf/modules/ShortEach.xml
----------------------------------------------------------------------
diff --git a/test/system/randomwalk/conf/modules/ShortEach.xml b/test/system/randomwalk/conf/modules/ShortEach.xml
deleted file mode 100644
index fe7c857..0000000
--- a/test/system/randomwalk/conf/modules/ShortEach.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<module>
-
-<init id="Image.xml"/>
-
-<node id="Image.xml" maxSec="300" teardown="true">
- <edge id="Sequential.xml" weight="1"/>
-</node>
-
-<node id="Sequential.xml" maxSec="300" teardown="true">
- <edge id="MultiTable.xml" weight="1"/>
-</node>
-
-<node id="MultiTable.xml" maxSec="300" teardown="true">
- <edge id="Shard.xml" weight="1"/>
-</node>
-
-<node id="Shard.xml" maxSec="300" teardown="true">
- <edge id="Concurrent.xml" weight="1"/>
-</node>
-
-<node id="Concurrent.xml" maxSec="300" teardown="true">
- <edge id="Security.xml" weight="1"/>
-</node>
-
-<node id="Security.xml" maxSec="300" teardown="true">
- <edge id="Bulk.xml" weight="1"/>
-</node>
-
-<node id="Bulk.xml" maxSec="300" teardown="true">
- <edge id="Conditional.xml" weight="1"/>
-</node>
-
-<node id="Conditional.xml" maxSec="300" teardown="true">
- <edge id="END" weight="1"/>
-</node>
-
-</module>
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/system/randomwalk/conf/modules/unit/Basic.xml
----------------------------------------------------------------------
diff --git a/test/system/randomwalk/conf/modules/unit/Basic.xml b/test/system/randomwalk/conf/modules/unit/Basic.xml
deleted file mode 100644
index 2dead02..0000000
--- a/test/system/randomwalk/conf/modules/unit/Basic.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<module>
-
-<package prefix="test" value="org.apache.accumulo.test.randomwalk.unit"/>
-
-<init id="test.CreateTable"/>
-
-<node id="test.CreateTable">
- <edge id="unit/Simple.xml" weight="1"/>
-</node>
-
-<node id="unit/Simple.xml">
- <edge id="unit/Simple.xml" weight="3"/>
- <edge id="test.DeleteTable" weight="1"/>
-</node>
-
-<node id="test.DeleteTable">
- <edge id="END" weight="1"/>
-</node>
-
-</module>
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/system/randomwalk/conf/modules/unit/Simple.xml
----------------------------------------------------------------------
diff --git a/test/system/randomwalk/conf/modules/unit/Simple.xml b/test/system/randomwalk/conf/modules/unit/Simple.xml
deleted file mode 100644
index cad940e..0000000
--- a/test/system/randomwalk/conf/modules/unit/Simple.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<module>
-
-<package prefix="test" value="org.apache.accumulo.test.randomwalk.unit"/>
-
-<init id="dummy.all"/>
-
-<node id="dummy.all">
- <edge id="test.Ingest" weight="1"/>
- <edge id="test.Verify" weight="1"/>
- <edge id="test.Scan" weight="1"/>
- <edge id="END" weight="1"/>
-</node>
-
-<node id="test.Ingest">
- <edge id="dummy.all" weight="1"/>
-</node>
-
-<node id="test.Verify">
- <edge id="dummy.all" weight="1"/>
-</node>
-
-<node id="test.Scan">
- <edge id="dummy.all" weight="1"/>
-</node>
-
-</module>
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/system/randomwalk/conf/randomwalk.conf.example
----------------------------------------------------------------------
diff --git a/test/system/randomwalk/conf/randomwalk.conf.example b/test/system/randomwalk/conf/randomwalk.conf.example
deleted file mode 100644
index 8626685..0000000
--- a/test/system/randomwalk/conf/randomwalk.conf.example
+++ /dev/null
@@ -1,26 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Basic
-INSTANCE=instance
-ZOOKEEPERS=localhost
-USERNAME=root
-PASSWORD=secret
-NFS_LOGPATH=/home/user/rwlogs
-
-# Batch Writer
-MAX_MEM=100000000
-MAX_LATENCY=600000
-NUM_THREADS=4
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/system/randomwalk/conf/walkers.example
----------------------------------------------------------------------
diff --git a/test/system/randomwalk/conf/walkers.example b/test/system/randomwalk/conf/walkers.example
deleted file mode 100644
index 63fb8bb..0000000
--- a/test/system/randomwalk/conf/walkers.example
+++ /dev/null
@@ -1,16 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-localhost
[4/9] accumulo git commit: ACCUMULO-4510 Removing random walk test
code
Posted by mw...@apache.org.
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/image/Write.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/image/Write.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/image/Write.java
deleted file mode 100644
index fc5d73e..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/image/Write.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.image;
-
-import static java.nio.charset.StandardCharsets.UTF_8;
-
-import java.security.MessageDigest;
-import java.util.Properties;
-import java.util.Random;
-import java.util.UUID;
-
-import org.apache.accumulo.core.client.BatchWriter;
-import org.apache.accumulo.core.client.MultiTableBatchWriter;
-import org.apache.accumulo.core.data.Mutation;
-import org.apache.accumulo.core.data.Value;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-import org.apache.hadoop.io.Text;
-
-public class Write extends Test {
-
- static final Text UUID_COLUMN_QUALIFIER = new Text("uuid");
- static final Text COUNT_COLUMN_QUALIFIER = new Text("count");
- static final Text SHA1_COLUMN_QUALIFIER = new Text("sha1");
- static final Text IMAGE_COLUMN_QUALIFIER = new Text("image");
- static final Text META_COLUMN_FAMILY = new Text("meta");
- static final Text CONTENT_COLUMN_FAMILY = new Text("content");
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
-
- MultiTableBatchWriter mtbw = env.getMultiTableBatchWriter();
-
- BatchWriter imagesBW = mtbw.getBatchWriter(state.getString("imageTableName"));
- BatchWriter indexBW = mtbw.getBatchWriter(state.getString("indexTableName"));
-
- String uuid = UUID.randomUUID().toString();
- Mutation m = new Mutation(new Text(uuid));
-
- // create a fake image between 4KB and 1MB
- int maxSize = Integer.parseInt(props.getProperty("maxSize"));
- int minSize = Integer.parseInt(props.getProperty("minSize"));
-
- Random rand = new Random();
- int numBytes = rand.nextInt(maxSize - minSize) + minSize;
- byte[] imageBytes = new byte[numBytes];
- rand.nextBytes(imageBytes);
- m.put(CONTENT_COLUMN_FAMILY, IMAGE_COLUMN_QUALIFIER, new Value(imageBytes));
-
- // store size
- m.put(META_COLUMN_FAMILY, new Text("size"), new Value(String.format("%d", numBytes).getBytes(UTF_8)));
-
- // store hash
- MessageDigest alg = MessageDigest.getInstance("SHA-1");
- alg.update(imageBytes);
- byte[] hash = alg.digest();
- m.put(META_COLUMN_FAMILY, SHA1_COLUMN_QUALIFIER, new Value(hash));
-
- // update write counts
- state.set("numWrites", state.getLong("numWrites") + 1);
- Long totalWrites = state.getLong("totalWrites") + 1;
- state.set("totalWrites", totalWrites);
-
- // set count
- m.put(META_COLUMN_FAMILY, COUNT_COLUMN_QUALIFIER, new Value(String.format("%d", totalWrites).getBytes(UTF_8)));
-
- // add mutation
- imagesBW.addMutation(m);
-
- // now add mutation to index
- Text row = new Text(hash);
- m = new Mutation(row);
- m.put(META_COLUMN_FAMILY, UUID_COLUMN_QUALIFIER, new Value(uuid.getBytes(UTF_8)));
-
- indexBW.addMutation(m);
-
- Text lastRow = (Text) state.get("lastIndexRow");
- if (lastRow.compareTo(row) < 0) {
- state.set("lastIndexRow", new Text(row));
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/multitable/Commit.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/multitable/Commit.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/multitable/Commit.java
deleted file mode 100644
index a81e396..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/multitable/Commit.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.multitable;
-
-import java.util.Properties;
-
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class Commit extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- env.getMultiTableBatchWriter().flush();
-
- Long numWrites = state.getLong("numWrites");
- Long totalWrites = state.getLong("totalWrites") + numWrites;
-
- log.debug("Committed " + numWrites + " writes. Total writes: " + totalWrites);
-
- state.set("totalWrites", totalWrites);
- state.set("numWrites", Long.valueOf(0));
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/multitable/CopyTable.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/multitable/CopyTable.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/multitable/CopyTable.java
deleted file mode 100644
index d1207f2..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/multitable/CopyTable.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.multitable;
-
-import java.util.List;
-import java.util.Properties;
-import java.util.Random;
-import java.util.TreeSet;
-
-import org.apache.accumulo.core.client.impl.Tables;
-import org.apache.accumulo.core.util.CachedConfiguration;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-import org.apache.hadoop.io.Text;
-import org.apache.hadoop.util.ToolRunner;
-
-public class CopyTable extends Test {
-
- private final TreeSet<Text> splits;
-
- public CopyTable() {
- splits = new TreeSet<>();
- for (int i = 1; i < 10; i++) {
- splits.add(new Text(Integer.toString(i)));
- }
- }
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
-
- @SuppressWarnings("unchecked")
- List<String> tables = (List<String>) state.get("tableList");
- if (tables.isEmpty())
- return;
-
- Random rand = new Random();
- String srcTableName = tables.remove(rand.nextInt(tables.size()));
-
- int nextId = ((Integer) state.get("nextId")).intValue();
- String dstTableName = String.format("%s_%d", state.getString("tableNamePrefix"), nextId);
-
- String[] args = new String[8];
- args[0] = "-libjars";
- args[1] = getMapReduceJars();
- args[2] = env.getUserName();
- args[3] = env.getPassword();
- if (null == args[3]) {
- args[3] = env.getKeytab();
- }
- args[4] = srcTableName;
- args[5] = env.getInstance().getInstanceName();
- args[6] = env.getConfigProperty("ZOOKEEPERS");
- args[7] = dstTableName;
-
- log.debug("copying " + srcTableName + " to " + dstTableName);
-
- env.getConnector().tableOperations().create(dstTableName);
-
- env.getConnector().tableOperations().addSplits(dstTableName, splits);
-
- if (ToolRunner.run(CachedConfiguration.getInstance(), new CopyTool(), args) != 0) {
- log.error("Failed to run map/red verify");
- return;
- }
-
- String tableId = Tables.getNameToIdMap(env.getInstance()).get(dstTableName);
- log.debug("copied " + srcTableName + " to " + dstTableName + " (id - " + tableId + " )");
-
- tables.add(dstTableName);
-
- env.getConnector().tableOperations().delete(srcTableName);
- log.debug("dropped " + srcTableName);
-
- nextId++;
- state.set("nextId", Integer.valueOf(nextId));
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/multitable/CopyTool.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/multitable/CopyTool.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/multitable/CopyTool.java
deleted file mode 100644
index 251a064..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/multitable/CopyTool.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.multitable;
-
-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.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.apache.log4j.Logger;
-
-public class CopyTool extends Configured implements Tool {
- protected final Logger log = Logger.getLogger(this.getClass());
-
- public static class SeqMapClass extends Mapper<Key,Value,Text,Mutation> {
- @Override
- public void map(Key key, Value val, Context output) throws IOException, InterruptedException {
- Mutation m = new Mutation(key.getRow());
- m.put(key.getColumnFamily(), key.getColumnQualifier(), val);
- output.write(null, m);
- }
- }
-
- @Override
- public int run(String[] args) throws Exception {
- Job job = Job.getInstance(getConf(), this.getClass().getSimpleName());
- job.setJarByClass(this.getClass());
-
- if (job.getJar() == null) {
- log.error("M/R requires a jar file! Run mvn package.");
- return 1;
- }
-
- ClientConfiguration clientConf = new ClientConfiguration().withInstance(args[3]).withZkHosts(args[4]);
-
- job.setInputFormatClass(AccumuloInputFormat.class);
- AccumuloInputFormat.setInputTableName(job, args[2]);
- AccumuloInputFormat.setScanAuthorizations(job, Authorizations.EMPTY);
- AccumuloInputFormat.setZooKeeperInstance(job, clientConf);
-
- final String principal;
- final AuthenticationToken token;
- if (clientConf.getBoolean(ClientProperty.INSTANCE_RPC_SASL_ENABLED.getKey(), false)) {
- // 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.setCreateTables(job, true);
- AccumuloOutputFormat.setDefaultTableName(job, args[5]);
- AccumuloOutputFormat.setZooKeeperInstance(job, clientConf);
-
- job.waitForCompletion(true);
- return job.isSuccessful() ? 0 : 1;
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/multitable/CreateTable.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/multitable/CreateTable.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/multitable/CreateTable.java
deleted file mode 100644
index ee573e3..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/multitable/CreateTable.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.multitable;
-
-import java.util.List;
-import java.util.Properties;
-import java.util.TreeSet;
-
-import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.core.client.TableExistsException;
-import org.apache.accumulo.core.client.impl.Tables;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-import org.apache.hadoop.io.Text;
-
-public class CreateTable extends Test {
-
- private final TreeSet<Text> splits;
-
- public CreateTable() {
- splits = new TreeSet<>();
- for (int i = 1; i < 10; i++) {
- splits.add(new Text(Integer.toString(i)));
- }
- }
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- Connector conn = env.getConnector();
-
- int nextId = ((Integer) state.get("nextId")).intValue();
- String tableName = String.format("%s_%d", state.getString("tableNamePrefix"), nextId);
- try {
- conn.tableOperations().create(tableName);
- // Add some splits to make the server's life easier
- conn.tableOperations().addSplits(tableName, splits);
- String tableId = Tables.getNameToIdMap(env.getInstance()).get(tableName);
- log.debug("created " + tableName + " (id:" + tableId + ")");
- // Add some splits to make the server's life easier
- conn.tableOperations().addSplits(tableName, splits);
- log.debug("created " + splits.size() + " splits on " + tableName);
- @SuppressWarnings("unchecked")
- List<String> tables = (List<String>) state.get("tableList");
- tables.add(tableName);
- } catch (TableExistsException e) {
- log.warn("Failed to create " + tableName + " as it already exists");
- }
-
- nextId++;
- state.set("nextId", Integer.valueOf(nextId));
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/multitable/DropTable.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/multitable/DropTable.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/multitable/DropTable.java
deleted file mode 100644
index c960ae7..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/multitable/DropTable.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.multitable;
-
-import java.util.List;
-import java.util.Properties;
-import java.util.Random;
-
-import org.apache.accumulo.core.client.TableNotFoundException;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class DropTable extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
-
- @SuppressWarnings("unchecked")
- List<String> tables = (List<String>) state.get("tableList");
-
- // don't drop a table if we only have one table or less
- if (tables.size() <= 1) {
- return;
- }
-
- Random rand = new Random();
- String tableName = tables.remove(rand.nextInt(tables.size()));
-
- try {
- env.getConnector().tableOperations().delete(tableName);
- log.debug("Dropped " + tableName);
- } catch (TableNotFoundException e) {
- log.error("Tried to drop table " + tableName + " but could not be found!");
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/multitable/MultiTableFixture.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/multitable/MultiTableFixture.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/multitable/MultiTableFixture.java
deleted file mode 100644
index dfa326a..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/multitable/MultiTableFixture.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.multitable;
-
-import java.net.InetAddress;
-import java.util.List;
-import java.util.concurrent.CopyOnWriteArrayList;
-
-import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.core.client.MultiTableBatchWriter;
-import org.apache.accumulo.core.client.MutationsRejectedException;
-import org.apache.accumulo.core.client.TableNotFoundException;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.Fixture;
-import org.apache.accumulo.test.randomwalk.State;
-
-public class MultiTableFixture extends Fixture {
-
- @Override
- public void setUp(State state, Environment env) throws Exception {
-
- String hostname = InetAddress.getLocalHost().getHostName().replaceAll("[-.]", "_");
-
- state.set("tableNamePrefix", String.format("multi_%s_%s_%d", hostname, env.getPid(), System.currentTimeMillis()));
- state.set("nextId", Integer.valueOf(0));
- state.set("numWrites", Long.valueOf(0));
- state.set("totalWrites", Long.valueOf(0));
- state.set("tableList", new CopyOnWriteArrayList<String>());
- }
-
- @Override
- public void tearDown(State state, Environment env) throws Exception {
- // We have resources we need to clean up
- if (env.isMultiTableBatchWriterInitialized()) {
- MultiTableBatchWriter mtbw = env.getMultiTableBatchWriter();
- try {
- mtbw.close();
- } catch (MutationsRejectedException e) {
- log.error("Ignoring mutations that weren't flushed", e);
- }
-
- // Reset the MTBW on the state to null
- env.resetMultiTableBatchWriter();
- }
-
- Connector conn = env.getConnector();
-
- @SuppressWarnings("unchecked")
- List<String> tables = (List<String>) state.get("tableList");
-
- for (String tableName : tables) {
- try {
- conn.tableOperations().delete(tableName);
- log.debug("Dropping table " + tableName);
- } catch (TableNotFoundException e) {
- log.warn("Tried to drop table " + tableName + " but could not be found!");
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/multitable/OfflineTable.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/multitable/OfflineTable.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/multitable/OfflineTable.java
deleted file mode 100644
index c9e0629..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/multitable/OfflineTable.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.multitable;
-
-import java.util.List;
-import java.util.Properties;
-import java.util.Random;
-
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class OfflineTable extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
-
- @SuppressWarnings("unchecked")
- List<String> tables = (List<String>) state.get("tableList");
-
- if (tables.size() <= 0) {
- return;
- }
-
- Random rand = new Random();
- String tableName = tables.get(rand.nextInt(tables.size()));
-
- env.getConnector().tableOperations().offline(tableName, rand.nextBoolean());
- log.debug("Table " + tableName + " offline ");
- env.getConnector().tableOperations().online(tableName, rand.nextBoolean());
- log.debug("Table " + tableName + " online ");
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/multitable/Write.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/multitable/Write.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/multitable/Write.java
deleted file mode 100644
index 44cf76a..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/multitable/Write.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.multitable;
-
-import static java.nio.charset.StandardCharsets.UTF_8;
-
-import java.security.MessageDigest;
-import java.util.List;
-import java.util.Properties;
-import java.util.Random;
-import java.util.UUID;
-
-import org.apache.accumulo.core.client.BatchWriter;
-import org.apache.accumulo.core.client.TableNotFoundException;
-import org.apache.accumulo.core.client.TableOfflineException;
-import org.apache.accumulo.core.data.Mutation;
-import org.apache.accumulo.core.data.Value;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-import org.apache.hadoop.io.Text;
-
-public class Write extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
-
- @SuppressWarnings("unchecked")
- List<String> tables = (List<String>) state.get("tableList");
-
- if (tables.isEmpty()) {
- log.debug("No tables to ingest into");
- return;
- }
-
- Random rand = new Random();
- String tableName = tables.get(rand.nextInt(tables.size()));
-
- BatchWriter bw = null;
- try {
- bw = env.getMultiTableBatchWriter().getBatchWriter(tableName);
- } catch (TableOfflineException e) {
- log.error("Table " + tableName + " is offline!");
- return;
- } catch (TableNotFoundException e) {
- log.error("Table " + tableName + " not found!");
- return;
- }
-
- Text meta = new Text("meta");
- String uuid = UUID.randomUUID().toString();
-
- Mutation m = new Mutation(new Text(uuid));
-
- // create a fake payload between 4KB and 16KB
- int numBytes = rand.nextInt(12000) + 4000;
- byte[] payloadBytes = new byte[numBytes];
- rand.nextBytes(payloadBytes);
- m.put(meta, new Text("payload"), new Value(payloadBytes));
-
- // store size
- m.put(meta, new Text("size"), new Value(String.format("%d", numBytes).getBytes(UTF_8)));
-
- // store hash
- MessageDigest alg = MessageDigest.getInstance("SHA-1");
- alg.update(payloadBytes);
- m.put(meta, new Text("sha1"), new Value(alg.digest()));
-
- // add mutation
- bw.addMutation(m);
-
- state.set("numWrites", state.getLong("numWrites") + 1);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/AlterSystemPerm.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/AlterSystemPerm.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/security/AlterSystemPerm.java
deleted file mode 100644
index 7927c60..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/AlterSystemPerm.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.security;
-
-import java.util.Properties;
-import java.util.Random;
-
-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.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class AlterSystemPerm extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- Connector conn = env.getConnector();
- WalkingSecurity ws = new WalkingSecurity(state, env);
-
- String action = props.getProperty("task", "toggle");
- String perm = props.getProperty("perm", "random");
-
- String targetUser = WalkingSecurity.get(state, env).getSysUserName();
-
- SystemPermission sysPerm;
- if (perm.equals("random")) {
- Random r = new Random();
- int i = r.nextInt(SystemPermission.values().length);
- sysPerm = SystemPermission.values()[i];
- } else
- sysPerm = SystemPermission.valueOf(perm);
-
- boolean hasPerm = ws.hasSystemPermission(targetUser, sysPerm);
-
- // toggle
- if (!"take".equals(action) && !"give".equals(action)) {
- if (hasPerm != conn.securityOperations().hasSystemPermission(targetUser, sysPerm))
- throw new AccumuloException("Test framework and accumulo are out of sync!");
- if (hasPerm)
- action = "take";
- else
- action = "give";
- }
-
- if ("take".equals(action)) {
- try {
- conn.securityOperations().revokeSystemPermission(targetUser, sysPerm);
- } catch (AccumuloSecurityException ae) {
- switch (ae.getSecurityErrorCode()) {
- case GRANT_INVALID:
- if (sysPerm.equals(SystemPermission.GRANT))
- return;
- throw new AccumuloException("Got GRANT_INVALID when not dealing with GRANT", ae);
- case PERMISSION_DENIED:
- throw new AccumuloException("Test user doesn't have root", ae);
- case USER_DOESNT_EXIST:
- throw new AccumuloException("System user doesn't exist and they SHOULD.", ae);
- default:
- throw new AccumuloException("Got unexpected exception", ae);
- }
- }
- ws.revokeSystemPermission(targetUser, sysPerm);
- } else if ("give".equals(action)) {
- try {
- conn.securityOperations().grantSystemPermission(targetUser, sysPerm);
- } catch (AccumuloSecurityException ae) {
- switch (ae.getSecurityErrorCode()) {
- case GRANT_INVALID:
- if (sysPerm.equals(SystemPermission.GRANT))
- return;
- throw new AccumuloException("Got GRANT_INVALID when not dealing with GRANT", ae);
- case PERMISSION_DENIED:
- throw new AccumuloException("Test user doesn't have root", ae);
- case USER_DOESNT_EXIST:
- throw new AccumuloException("System user doesn't exist and they SHOULD.", ae);
- default:
- throw new AccumuloException("Got unexpected exception", ae);
- }
- }
- ws.grantSystemPermission(targetUser, sysPerm);
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/AlterTable.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/AlterTable.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/security/AlterTable.java
deleted file mode 100644
index 70c98e4..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/AlterTable.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.security;
-
-import java.net.InetAddress;
-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.core.client.TableExistsException;
-import org.apache.accumulo.core.client.TableNotFoundException;
-import org.apache.accumulo.core.client.security.SecurityErrorCode;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class AlterTable extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- Connector conn = env.getInstance().getConnector(WalkingSecurity.get(state, env).getSysUserName(), WalkingSecurity.get(state, env).getSysToken());
-
- String tableName = WalkingSecurity.get(state, env).getTableName();
- String namespaceName = WalkingSecurity.get(state, env).getNamespaceName();
-
- boolean exists = WalkingSecurity.get(state, env).getTableExists();
- boolean hasPermission = WalkingSecurity.get(state, env).canAlterTable(WalkingSecurity.get(state, env).getSysCredentials(), tableName, namespaceName);
- String newTableName = String.format("security_%s_%s_%d", InetAddress.getLocalHost().getHostName().replaceAll("[-.]", "_"), env.getPid(),
- System.currentTimeMillis());
-
- renameTable(conn, state, env, tableName, newTableName, hasPermission, exists);
- }
-
- public static void renameTable(Connector conn, State state, Environment env, String oldName, String newName, boolean hasPermission, boolean tableExists)
- throws AccumuloSecurityException, AccumuloException, TableExistsException {
- try {
- conn.tableOperations().rename(oldName, newName);
- } catch (AccumuloSecurityException ae) {
- if (ae.getSecurityErrorCode().equals(SecurityErrorCode.PERMISSION_DENIED)) {
- if (hasPermission)
- throw new AccumuloException("Got a security exception when I should have had permission.", ae);
- else
- return;
- } else if (ae.getSecurityErrorCode().equals(SecurityErrorCode.BAD_CREDENTIALS)) {
- if (WalkingSecurity.get(state, env).userPassTransient(conn.whoami()))
- return;
- }
- throw new AccumuloException("Got unexpected ae error code", ae);
- } catch (TableNotFoundException tnfe) {
- if (tableExists)
- throw new TableExistsException(null, oldName, "Got a TableNotFoundException but it should exist", tnfe);
- else
- return;
- }
- WalkingSecurity.get(state, env).setTableName(newName);
- if (!hasPermission)
- throw new AccumuloException("Didn't get Security Exception when we should have");
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/AlterTablePerm.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/AlterTablePerm.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/security/AlterTablePerm.java
deleted file mode 100644
index c43ca6c..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/AlterTablePerm.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.security;
-
-import java.util.Properties;
-import java.util.Random;
-
-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.impl.Credentials;
-import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
-import org.apache.accumulo.core.security.TablePermission;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class AlterTablePerm extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- alter(state, env, props);
- }
-
- public static void alter(State state, Environment env, Properties props) throws Exception {
- String action = props.getProperty("task", "toggle");
- String perm = props.getProperty("perm", "random");
- String sourceUserProp = props.getProperty("source", "system");
- String targetUser = props.getProperty("target", "table");
- boolean tabExists = WalkingSecurity.get(state, env).getTableExists();
-
- String target;
- if ("table".equals(targetUser))
- target = WalkingSecurity.get(state, env).getTabUserName();
- else
- target = WalkingSecurity.get(state, env).getSysUserName();
-
- boolean exists = WalkingSecurity.get(state, env).userExists(target);
- boolean tableExists = WalkingSecurity.get(state, env).getTableExists();
-
- TablePermission tabPerm;
- if (perm.equals("random")) {
- Random r = new Random();
- int i = r.nextInt(TablePermission.values().length);
- tabPerm = TablePermission.values()[i];
- } else
- tabPerm = TablePermission.valueOf(perm);
- String tableName = WalkingSecurity.get(state, env).getTableName();
- boolean hasPerm = WalkingSecurity.get(state, env).hasTablePermission(target, tableName, tabPerm);
- boolean canGive;
- String sourceUser;
- AuthenticationToken sourceToken;
- if ("system".equals(sourceUserProp)) {
- sourceUser = WalkingSecurity.get(state, env).getSysUserName();
- sourceToken = WalkingSecurity.get(state, env).getSysToken();
- } else if ("table".equals(sourceUserProp)) {
- sourceUser = WalkingSecurity.get(state, env).getTabUserName();
- sourceToken = WalkingSecurity.get(state, env).getTabToken();
- } else {
- sourceUser = env.getUserName();
- sourceToken = env.getToken();
- }
- Connector conn = env.getInstance().getConnector(sourceUser, sourceToken);
-
- canGive = WalkingSecurity.get(state, env).canGrantTable(new Credentials(sourceUser, sourceToken).toThrift(env.getInstance()), target,
- WalkingSecurity.get(state, env).getTableName(), WalkingSecurity.get(state, env).getNamespaceName());
-
- // toggle
- if (!"take".equals(action) && !"give".equals(action)) {
- try {
- boolean res;
- if (hasPerm != (res = env.getConnector().securityOperations().hasTablePermission(target, tableName, tabPerm)))
- throw new AccumuloException("Test framework and accumulo are out of sync for user " + conn.whoami() + " for perm " + tabPerm.name()
- + " with local vs. accumulo being " + hasPerm + " " + res);
-
- if (hasPerm)
- action = "take";
- else
- action = "give";
- } catch (AccumuloSecurityException ae) {
- switch (ae.getSecurityErrorCode()) {
- case USER_DOESNT_EXIST:
- if (exists)
- throw new AccumuloException("Framework and Accumulo are out of sync, we think user exists", ae);
- else
- return;
- case TABLE_DOESNT_EXIST:
- if (tabExists)
- throw new AccumuloException(conn.whoami(), ae);
- else
- return;
- default:
- throw ae;
- }
- }
- }
-
- boolean trans = WalkingSecurity.get(state, env).userPassTransient(conn.whoami());
- if ("take".equals(action)) {
- try {
- conn.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);
- return;
- case USER_DOESNT_EXIST:
- if (exists)
- throw new AccumuloException("Table user doesn't exist and they SHOULD.", ae);
- return;
- case TABLE_DOESNT_EXIST:
- if (tableExists)
- throw new AccumuloException("Table doesn't exist but it should", ae);
- return;
- case BAD_CREDENTIALS:
- if (!trans)
- throw new AccumuloException("Bad credentials for user " + conn.whoami());
- return;
- default:
- throw new AccumuloException("Got unexpected exception", ae);
- }
- }
- WalkingSecurity.get(state, env).revokeTablePermission(target, tableName, tabPerm);
- } else if ("give".equals(action)) {
- try {
- conn.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);
- return;
- case USER_DOESNT_EXIST:
- if (exists)
- throw new AccumuloException("Table user doesn't exist and they SHOULD.", ae);
- return;
- case TABLE_DOESNT_EXIST:
- if (tableExists)
- throw new AccumuloException("Table doesn't exist but it should", ae);
- return;
- case BAD_CREDENTIALS:
- if (!trans)
- throw new AccumuloException("Bad credentials for user " + conn.whoami());
- return;
- default:
- throw new AccumuloException("Got unexpected exception", ae);
- }
- }
- WalkingSecurity.get(state, env).grantTablePermission(target, tableName, tabPerm);
- }
-
- if (!exists)
- throw new AccumuloException("User shouldn't have existed, but apparantly does");
- if (!tableExists)
- throw new AccumuloException("Table shouldn't have existed, but apparantly does");
- if (!canGive)
- throw new AccumuloException(conn.whoami() + " shouldn't have been able to grant privilege");
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/Authenticate.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/Authenticate.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/security/Authenticate.java
deleted file mode 100644
index abc5d01..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/Authenticate.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.security;
-
-import java.util.Arrays;
-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.core.client.impl.Credentials;
-import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
-import org.apache.accumulo.core.client.security.tokens.PasswordToken;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class Authenticate extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- authenticate(WalkingSecurity.get(state, env).getSysUserName(), WalkingSecurity.get(state, env).getSysToken(), state, env, props);
- }
-
- public static void authenticate(String principal, AuthenticationToken token, State state, Environment env, Properties props) throws Exception {
- String targetProp = props.getProperty("target");
- boolean success = Boolean.parseBoolean(props.getProperty("valid"));
-
- Connector conn = env.getInstance().getConnector(principal, token);
-
- String target;
-
- if (targetProp.equals("table")) {
- target = WalkingSecurity.get(state, env).getTabUserName();
- } else {
- target = WalkingSecurity.get(state, env).getSysUserName();
- }
- 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 = WalkingSecurity.get(state, env).canAskAboutUser(new Credentials(principal, token).toThrift(env.getInstance()), target);
-
- if (!success)
- for (int i = 0; i < password.length; i++)
- password[i]++;
-
- boolean result;
-
- try {
- result = conn.securityOperations().authenticateUser(target, new PasswordToken(password));
- } catch (AccumuloSecurityException ae) {
- switch (ae.getSecurityErrorCode()) {
- case PERMISSION_DENIED:
- if (exists && hasPermission)
- throw new AccumuloException("Got a security exception when I should have had permission.", ae);
- else
- return;
- default:
- throw new AccumuloException("Unexpected exception!", ae);
- }
- }
- if (!hasPermission)
- throw new AccumuloException("Didn't get Security Exception when we should have");
- if (result != (success && exists))
- throw new AccumuloException("Authentication " + (result ? "succeeded" : "failed") + " when it should have "
- + ((success && exists) ? "succeeded" : "failed") + " while the user exists? " + exists);
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/ChangePass.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/ChangePass.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/security/ChangePass.java
deleted file mode 100644
index e8561bb..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/ChangePass.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.security;
-
-import java.util.Properties;
-import java.util.Random;
-
-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.impl.Credentials;
-import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
-import org.apache.accumulo.core.client.security.tokens.PasswordToken;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class ChangePass extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- String target = props.getProperty("target");
- String source = props.getProperty("source");
-
- String principal;
- AuthenticationToken token;
- if (source.equals("system")) {
- principal = WalkingSecurity.get(state, env).getSysUserName();
- token = WalkingSecurity.get(state, env).getSysToken();
- } else {
- principal = WalkingSecurity.get(state, env).getTabUserName();
- token = WalkingSecurity.get(state, env).getTabToken();
- }
- Connector conn = env.getInstance().getConnector(principal, token);
-
- boolean hasPerm;
- boolean targetExists;
- if (target.equals("table")) {
- target = WalkingSecurity.get(state, env).getTabUserName();
- } else
- target = WalkingSecurity.get(state, env).getSysUserName();
-
- targetExists = WalkingSecurity.get(state, env).userExists(target);
-
- hasPerm = WalkingSecurity.get(state, env).canChangePassword(new Credentials(principal, token).toThrift(env.getInstance()), target);
-
- Random r = new Random();
-
- byte[] newPassw = new byte[r.nextInt(50) + 1];
- for (int i = 0; i < newPassw.length; i++)
- newPassw[i] = (byte) ((r.nextInt(26) + 65) & 0xFF);
-
- PasswordToken newPass = new PasswordToken(newPassw);
- try {
- conn.securityOperations().changeLocalUserPassword(target, newPass);
- } catch (AccumuloSecurityException ae) {
- switch (ae.getSecurityErrorCode()) {
- case PERMISSION_DENIED:
- if (hasPerm)
- throw new AccumuloException("Change failed when it should have succeeded to change " + target + "'s password", ae);
- return;
- case USER_DOESNT_EXIST:
- if (targetExists)
- 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());
- return;
- default:
- throw new AccumuloException("Got unexpected exception", ae);
- }
- }
- WalkingSecurity.get(state, env).changePassword(target, newPass);
- // Waiting 1 second for password to propogate through Zk
- Thread.sleep(1000);
- if (!hasPerm)
- throw new AccumuloException("Password change succeeded when it should have failed for " + source + " changing the password for " + target + ".");
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/CreateTable.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/CreateTable.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/security/CreateTable.java
deleted file mode 100644
index 3392e1d..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/CreateTable.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.security;
-
-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.core.client.TableExistsException;
-import org.apache.accumulo.core.client.security.SecurityErrorCode;
-import org.apache.accumulo.core.security.TablePermission;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class CreateTable extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- Connector conn = env.getInstance().getConnector(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 = WalkingSecurity.get(state, env).canCreateTable(WalkingSecurity.get(state, env).getSysCredentials(), null, null);
-
- try {
- conn.tableOperations().create(tableName);
- } catch (AccumuloSecurityException ae) {
- if (ae.getSecurityErrorCode().equals(SecurityErrorCode.PERMISSION_DENIED)) {
- if (hasPermission)
- throw new AccumuloException("Got a security exception when I should have had permission.", ae);
- else {
- // create table anyway for sake of state
- try {
- env.getConnector().tableOperations().create(tableName);
- WalkingSecurity.get(state, env).initTable(tableName);
- } catch (TableExistsException tee) {
- if (exists)
- return;
- else
- throw new AccumuloException("Test and Accumulo are out of sync");
- }
- return;
- }
- } else
- throw new AccumuloException("Got unexpected error", ae);
- } catch (TableExistsException tee) {
- if (!exists)
- throw new TableExistsException(null, tableName, "Got a TableExistsException but it shouldn't have existed", tee);
- else
- return;
- }
- WalkingSecurity.get(state, env).initTable(tableName);
- for (TablePermission tp : TablePermission.values())
- WalkingSecurity.get(state, env).grantTablePermission(conn.whoami(), tableName, tp);
- if (!hasPermission)
- throw new AccumuloException("Didn't get Security Exception when we should have");
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/CreateUser.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/CreateUser.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/security/CreateUser.java
deleted file mode 100644
index 5ddd441..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/CreateUser.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.security;
-
-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.core.client.security.tokens.PasswordToken;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class CreateUser extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- Connector conn = env.getInstance().getConnector(WalkingSecurity.get(state, env).getSysUserName(), WalkingSecurity.get(state, env).getSysToken());
-
- String tableUserName = WalkingSecurity.get(state, env).getTabUserName();
-
- boolean exists = WalkingSecurity.get(state, env).userExists(tableUserName);
- boolean hasPermission = WalkingSecurity.get(state, env).canCreateUser(WalkingSecurity.get(state, env).getSysCredentials(), tableUserName);
- PasswordToken tabUserPass = new PasswordToken("Super Sekret Table User Password");
- try {
- conn.securityOperations().createLocalUser(tableUserName, tabUserPass);
- } catch (AccumuloSecurityException ae) {
- switch (ae.getSecurityErrorCode()) {
- case PERMISSION_DENIED:
- if (hasPermission)
- throw new AccumuloException("Got a security exception when I should have had permission.", ae);
- else {
- // create user anyway for sake of state
- if (!exists) {
- env.getConnector().securityOperations().createLocalUser(tableUserName, tabUserPass);
- WalkingSecurity.get(state, env).createUser(tableUserName, tabUserPass);
- Thread.sleep(1000);
- }
- return;
- }
- case USER_EXISTS:
- if (!exists)
- throw new AccumuloException("Got security exception when the user shouldn't have existed", ae);
- else
- return;
- default:
- throw new AccumuloException("Got unexpected exception", ae);
- }
- }
- WalkingSecurity.get(state, env).createUser(tableUserName, tabUserPass);
- Thread.sleep(1000);
- if (!hasPermission)
- throw new AccumuloException("Didn't get Security Exception when we should have");
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/DropTable.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/DropTable.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/security/DropTable.java
deleted file mode 100644
index f10bef1..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/DropTable.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.security;
-
-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.core.client.TableExistsException;
-import org.apache.accumulo.core.client.TableNotFoundException;
-import org.apache.accumulo.core.client.impl.Credentials;
-import org.apache.accumulo.core.client.security.SecurityErrorCode;
-import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class DropTable extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- dropTable(state, env, props);
- }
-
- public static void dropTable(State state, Environment env, Properties props) throws Exception {
- String sourceUser = props.getProperty("source", "system");
- String principal;
- AuthenticationToken token;
- if (sourceUser.equals("table")) {
- principal = WalkingSecurity.get(state, env).getTabUserName();
- token = WalkingSecurity.get(state, env).getTabToken();
- } else {
- principal = WalkingSecurity.get(state, env).getSysUserName();
- token = WalkingSecurity.get(state, env).getSysToken();
- }
- Connector conn = env.getInstance().getConnector(principal, token);
-
- String tableName = WalkingSecurity.get(state, env).getTableName();
- String namespaceName = WalkingSecurity.get(state, env).getNamespaceName();
-
- boolean exists = WalkingSecurity.get(state, env).getTableExists();
- boolean hasPermission = WalkingSecurity.get(state, env).canDeleteTable(new Credentials(principal, token).toThrift(env.getInstance()), tableName,
- namespaceName);
-
- try {
- conn.tableOperations().delete(tableName);
- } catch (AccumuloSecurityException ae) {
- if (ae.getSecurityErrorCode().equals(SecurityErrorCode.PERMISSION_DENIED)) {
- if (hasPermission)
- throw new AccumuloException("Got a security exception when I should have had permission.", ae);
- else {
- // Drop anyway for sake of state
- env.getConnector().tableOperations().delete(tableName);
- WalkingSecurity.get(state, env).cleanTablePermissions(tableName);
- return;
- }
- } else if (ae.getSecurityErrorCode().equals(SecurityErrorCode.BAD_CREDENTIALS)) {
- if (WalkingSecurity.get(state, env).userPassTransient(conn.whoami()))
- return;
- }
- throw new AccumuloException("Got unexpected ae error code", ae);
- } catch (TableNotFoundException tnfe) {
- if (exists)
- throw new TableExistsException(null, tableName, "Got a TableNotFOundException but it should have existed", tnfe);
- else
- return;
- }
- WalkingSecurity.get(state, env).cleanTablePermissions(tableName);
- if (!hasPermission)
- throw new AccumuloException("Didn't get Security Exception when we should have");
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/DropUser.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/DropUser.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/security/DropUser.java
deleted file mode 100644
index e0ca60f..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/DropUser.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.security;
-
-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.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class DropUser extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- Connector conn = env.getInstance().getConnector(WalkingSecurity.get(state, env).getSysUserName(), WalkingSecurity.get(state, env).getSysToken());
-
- String tableUserName = WalkingSecurity.get(state, env).getTabUserName();
-
- boolean exists = WalkingSecurity.get(state, env).userExists(tableUserName);
- boolean hasPermission = WalkingSecurity.get(state, env).canDropUser(WalkingSecurity.get(state, env).getSysCredentials(), tableUserName);
-
- try {
- conn.securityOperations().dropLocalUser(tableUserName);
- } catch (AccumuloSecurityException ae) {
- switch (ae.getSecurityErrorCode()) {
- case PERMISSION_DENIED:
- if (hasPermission)
- throw new AccumuloException("Got a security exception when I should have had permission.", ae);
- else {
- if (exists) {
- env.getConnector().securityOperations().dropLocalUser(tableUserName);
- WalkingSecurity.get(state, env).dropUser(tableUserName);
- }
- return;
- }
-
- case USER_DOESNT_EXIST:
- if (exists)
- throw new AccumuloException("Got user DNE exception when user should exists.", ae);
- else
- return;
- default:
- throw new AccumuloException("Got unexpected exception", ae);
- }
- }
- WalkingSecurity.get(state, env).dropUser(tableUserName);
- Thread.sleep(1000);
- if (!hasPermission)
- throw new AccumuloException("Didn't get Security Exception when we should have");
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/SecurityFixture.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/SecurityFixture.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/security/SecurityFixture.java
deleted file mode 100644
index 4dced96..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/SecurityFixture.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.security;
-
-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.security.Authorizations;
-import org.apache.accumulo.core.security.SystemPermission;
-import org.apache.accumulo.core.security.TablePermission;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.Fixture;
-import org.apache.accumulo.test.randomwalk.State;
-
-public class SecurityFixture extends Fixture {
-
- @Override
- public void setUp(State state, Environment 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 (clientConf.getBoolean(ClientProperty.INSTANCE_RPC_SASL_ENABLED.getKey(), false)) {
- throw new IllegalStateException("Security module currently cannot support Kerberos/SASL instances");
- }
-
- Connector conn = env.getConnector();
-
- String hostname = InetAddress.getLocalHost().getHostName().replaceAll("[-.]", "_");
-
- systemUserName = String.format("system_%s", hostname);
- tableUserName = String.format("table_%s", hostname);
- secTableName = String.format("security_%s", hostname);
- secNamespaceName = String.format("securityNs_%s", hostname);
-
- if (conn.tableOperations().exists(secTableName))
- conn.tableOperations().delete(secTableName);
- Set<String> users = conn.securityOperations().listLocalUsers();
- if (users.contains(tableUserName))
- conn.securityOperations().dropLocalUser(tableUserName);
- if (users.contains(systemUserName))
- conn.securityOperations().dropLocalUser(systemUserName);
-
- PasswordToken sysUserPass = new PasswordToken("sysUser");
- conn.securityOperations().createLocalUser(systemUserName, sysUserPass);
-
- WalkingSecurity.get(state, env).setTableName(secTableName);
- WalkingSecurity.get(state, env).setNamespaceName(secNamespaceName);
- state.set("rootUserPass", env.getToken());
-
- WalkingSecurity.get(state, env).setSysUserName(systemUserName);
- WalkingSecurity.get(state, env).createUser(systemUserName, sysUserPass);
-
- WalkingSecurity.get(state, env).changePassword(tableUserName, new PasswordToken(new byte[0]));
-
- WalkingSecurity.get(state, env).setTabUserName(tableUserName);
-
- for (TablePermission tp : TablePermission.values()) {
- WalkingSecurity.get(state, env).revokeTablePermission(systemUserName, secTableName, tp);
- WalkingSecurity.get(state, env).revokeTablePermission(tableUserName, secTableName, tp);
- }
- for (SystemPermission sp : SystemPermission.values()) {
- WalkingSecurity.get(state, env).revokeSystemPermission(systemUserName, sp);
- WalkingSecurity.get(state, env).revokeSystemPermission(tableUserName, sp);
- }
- WalkingSecurity.get(state, env).changeAuthorizations(tableUserName, new Authorizations());
- }
-
- @Override
- public void tearDown(State state, Environment env) throws Exception {
- log.debug("One last validate");
- Validate.validate(state, env, log);
- Connector conn = env.getConnector();
-
- if (WalkingSecurity.get(state, env).getTableExists()) {
- String secTableName = WalkingSecurity.get(state, env).getTableName();
- log.debug("Dropping tables: " + secTableName);
-
- conn.tableOperations().delete(secTableName);
- }
-
- if (WalkingSecurity.get(state, env).getNamespaceExists()) {
- String secNamespaceName = WalkingSecurity.get(state, env).getNamespaceName();
- log.debug("Dropping namespace: " + secNamespaceName);
-
- conn.namespaceOperations().delete(secNamespaceName);
- }
-
- if (WalkingSecurity.get(state, env).userExists(WalkingSecurity.get(state, env).getTabUserName())) {
- String tableUserName = WalkingSecurity.get(state, env).getTabUserName();
- log.debug("Dropping user: " + tableUserName);
-
- conn.securityOperations().dropLocalUser(tableUserName);
- }
- String systemUserName = WalkingSecurity.get(state, env).getSysUserName();
- log.debug("Dropping user: " + systemUserName);
- conn.securityOperations().dropLocalUser(systemUserName);
- WalkingSecurity.clearInstance();
-
- // Allow user drops to propagate, in case a new security test starts
- Thread.sleep(2000);
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/SecurityHelper.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/SecurityHelper.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/security/SecurityHelper.java
deleted file mode 100644
index 4b54a28..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/SecurityHelper.java
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.security;
-
-import static java.nio.charset.StandardCharsets.UTF_8;
-
-import java.io.IOException;
-import java.util.Map;
-
-import org.apache.accumulo.core.client.Connector;
-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.core.util.CachedConfiguration;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.hadoop.fs.FileSystem;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class SecurityHelper {
- private static final Logger log = LoggerFactory.getLogger(SecurityHelper.class);
-
- private static final String tableName = "secTableName";
- private static final String masterName = "sysUserName";
- private static final String tUserName = "tabUserName";
-
- private static final String masterPass = "sysUserPass";
- private static final String tUserPass = "tabUserPass";
-
- private static final String tUserExists = "tabUserExists";
- private static final String tableExists = "secTableExists";
-
- private static final String masterConn = "sysUserConn";
-
- private static final String authsMap = "authorizationsCountMap";
- private static final String lastKey = "lastMutationKey";
- private static final String filesystem = "securityFileSystem";
-
- public static String getTableName(State state) {
- return state.getString(tableName);
- }
-
- public static void setTableName(State state, String tName) {
- state.set(tableName, tName);
- }
-
- public static String getSysUserName(State state) {
- return state.getString(masterName);
- }
-
- public static void setSysUserName(State state, String sysUserName) {
- state.set(masterName, sysUserName);
- }
-
- public static String getTabUserName(State state) {
- return state.getString(tUserName);
- }
-
- public static void setTabUserName(State state, String tabUserName) {
- state.set(tUserName, tabUserName);
- }
-
- public static byte[] getSysUserPass(State state) {
- return (byte[]) state.get(masterPass);
- }
-
- public static void setSysUserPass(State state, byte[] sysUserPass) {
- log.debug("Setting system user pass to " + new String(sysUserPass, UTF_8));
- state.set(masterPass, sysUserPass);
- state.set(masterPass + "time", System.currentTimeMillis());
-
- }
-
- public static boolean sysUserPassTransient(State state) {
- return System.currentTimeMillis() - state.getLong(masterPass + "time") < 1000;
- }
-
- public static byte[] getTabUserPass(State state) {
- return (byte[]) state.get(tUserPass);
- }
-
- public static void setTabUserPass(State state, byte[] tabUserPass) {
- log.debug("Setting table user pass to " + new String(tabUserPass, UTF_8));
- state.set(tUserPass, tabUserPass);
- state.set(tUserPass + "time", System.currentTimeMillis());
- }
-
- public static boolean tabUserPassTransient(State state) {
- return System.currentTimeMillis() - state.getLong(tUserPass + "time") < 1000;
- }
-
- public static boolean getTabUserExists(State state) {
- return Boolean.parseBoolean(state.getString(tUserExists));
- }
-
- public static void setTabUserExists(State state, boolean exists) {
- state.set(tUserExists, Boolean.toString(exists));
- }
-
- public static boolean getTableExists(State state) {
- return Boolean.parseBoolean(state.getString(tableExists));
- }
-
- public static void setTableExists(State state, boolean exists) {
- state.set(tableExists, Boolean.toString(exists));
- }
-
- public static Connector getSystemConnector(State state) {
- return (Connector) state.get(masterConn);
- }
-
- public static void setSystemConnector(State state, Connector conn) {
- state.set(masterConn, conn);
- }
-
- public static boolean getTabPerm(State state, String userName, TablePermission tp) {
- return Boolean.parseBoolean(state.getString("Tab" + userName + tp.name()));
- }
-
- public static void setTabPerm(State state, String userName, TablePermission tp, boolean value) {
- log.debug((value ? "Gave" : "Took") + " the table permission " + tp.name() + (value ? " to" : " from") + " user " + userName);
- state.set("Tab" + userName + tp.name(), Boolean.toString(value));
- if (tp.equals(TablePermission.READ) || tp.equals(TablePermission.WRITE))
- state.set("Tab" + userName + tp.name() + "time", System.currentTimeMillis());
-
- }
-
- public static boolean getSysPerm(State state, String userName, SystemPermission tp) {
- return Boolean.parseBoolean(state.getString("Sys" + userName + tp.name()));
- }
-
- public static void setSysPerm(State state, String userName, SystemPermission tp, boolean value) {
- log.debug((value ? "Gave" : "Took") + " the system permission " + tp.name() + (value ? " to" : " from") + " user " + userName);
- state.set("Sys" + userName + tp.name(), Boolean.toString(value));
- }
-
- public static Authorizations getUserAuths(State state, String target) {
- return (Authorizations) state.get(target + "_auths");
- }
-
- public static void setUserAuths(State state, String target, Authorizations auths) {
- state.set(target + "_auths", auths);
- }
-
- @SuppressWarnings("unchecked")
- public static Map<String,Integer> getAuthsMap(State state) {
- return (Map<String,Integer>) state.get(authsMap);
- }
-
- public static void setAuthsMap(State state, Map<String,Integer> map) {
- state.set(authsMap, map);
- }
-
- public static String[] getAuthsArray() {
- return new String[] {"Fishsticks", "PotatoSkins", "Ribs", "Asparagus", "Paper", "Towels", "Lint", "Brush", "Celery"};
- }
-
- public static String getLastKey(State state) {
- return state.getString(lastKey);
- }
-
- public static void setLastKey(State state, String key) {
- state.set(lastKey, key);
- }
-
- public static void increaseAuthMap(State state, String s, int increment) {
- Integer curVal = getAuthsMap(state).get(s);
- if (curVal == null) {
- curVal = Integer.valueOf(0);
- getAuthsMap(state).put(s, curVal);
- }
- curVal += increment;
- }
-
- public static FileSystem getFs(State state) {
- FileSystem fs = null;
- try {
- fs = (FileSystem) state.get(filesystem);
- } catch (RuntimeException re) {}
-
- if (fs == null) {
- try {
- fs = FileSystem.get(CachedConfiguration.getInstance());
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- state.set(filesystem, fs);
- }
- return fs;
- }
-
- public static boolean inAmbiguousZone(State state, String userName, TablePermission tp) {
- if (tp.equals(TablePermission.READ) || tp.equals(TablePermission.WRITE)) {
- Long setTime = (Long) state.get("Tab" + userName + tp.name() + "time");
- if (System.currentTimeMillis() < (setTime + 1000))
- return true;
- }
- return false;
- }
-
-}
[7/9] accumulo git commit: ACCUMULO-4510 Removing random walk test
code
Posted by mw...@apache.org.
ACCUMULO-4510 Removing random walk test code
* Code was moved to new accumulo-testing repo
Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/b24c338a
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/b24c338a
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/b24c338a
Branch: refs/heads/master
Commit: b24c338abad6bee184db6a8d7944f0dd58ee5a0b
Parents: 315ccd9
Author: Mike Walch <mw...@apache.org>
Authored: Thu Dec 22 10:33:25 2016 -0500
Committer: Mike Walch <mw...@apache.org>
Committed: Tue Jan 3 13:53:00 2017 -0500
----------------------------------------------------------------------
assemble/src/main/assemblies/component.xml | 3 -
.../accumulo/test/randomwalk/Environment.java | 248 --------
.../accumulo/test/randomwalk/Fixture.java | 28 -
.../accumulo/test/randomwalk/Framework.java | 123 ----
.../apache/accumulo/test/randomwalk/Module.java | 624 -------------------
.../apache/accumulo/test/randomwalk/Node.java | 100 ---
.../apache/accumulo/test/randomwalk/State.java | 129 ----
.../apache/accumulo/test/randomwalk/Test.java | 28 -
.../test/randomwalk/bulk/BulkImportTest.java | 85 ---
.../test/randomwalk/bulk/BulkMinusOne.java | 35 --
.../test/randomwalk/bulk/BulkPlusOne.java | 117 ----
.../accumulo/test/randomwalk/bulk/BulkTest.java | 44 --
.../accumulo/test/randomwalk/bulk/Compact.java | 34 -
.../test/randomwalk/bulk/ConsistencyCheck.java | 57 --
.../accumulo/test/randomwalk/bulk/Merge.java | 61 --
.../test/randomwalk/bulk/SelectiveBulkTest.java | 42 --
.../test/randomwalk/bulk/SelectiveQueueing.java | 50 --
.../accumulo/test/randomwalk/bulk/Setup.java | 82 ---
.../accumulo/test/randomwalk/bulk/Split.java | 41 --
.../accumulo/test/randomwalk/bulk/Verify.java | 148 -----
.../test/randomwalk/concurrent/AddSplits.java | 62 --
.../test/randomwalk/concurrent/Apocalypse.java | 34 -
.../test/randomwalk/concurrent/BatchScan.java | 84 ---
.../test/randomwalk/concurrent/BatchWrite.java | 82 ---
.../test/randomwalk/concurrent/BulkImport.java | 151 -----
.../concurrent/ChangeAuthorizations.java | 63 --
.../concurrent/ChangePermissions.java | 156 -----
.../randomwalk/concurrent/CheckPermission.java | 70 ---
.../test/randomwalk/concurrent/CloneTable.java | 66 --
.../test/randomwalk/concurrent/Compact.java | 57 --
.../concurrent/ConcurrentFixture.java | 73 ---
.../test/randomwalk/concurrent/Config.java | 235 -------
.../randomwalk/concurrent/CreateNamespace.java | 49 --
.../test/randomwalk/concurrent/CreateTable.java | 61 --
.../test/randomwalk/concurrent/CreateUser.java | 49 --
.../randomwalk/concurrent/DeleteNamespace.java | 52 --
.../test/randomwalk/concurrent/DeleteRange.java | 66 --
.../test/randomwalk/concurrent/DeleteTable.java | 49 --
.../test/randomwalk/concurrent/DropUser.java | 48 --
.../randomwalk/concurrent/IsolatedScan.java | 74 ---
.../test/randomwalk/concurrent/ListSplits.java | 54 --
.../test/randomwalk/concurrent/Merge.java | 59 --
.../randomwalk/concurrent/OfflineTable.java | 56 --
.../randomwalk/concurrent/RenameNamespace.java | 53 --
.../test/randomwalk/concurrent/RenameTable.java | 90 ---
.../test/randomwalk/concurrent/Replication.java | 203 ------
.../test/randomwalk/concurrent/ScanTable.java | 72 ---
.../test/randomwalk/concurrent/Setup.java | 71 ---
.../test/randomwalk/concurrent/Shutdown.java | 63 --
.../test/randomwalk/concurrent/StartAll.java | 58 --
.../randomwalk/concurrent/StopTabletServer.java | 84 ---
.../test/randomwalk/conditional/Compact.java | 48 --
.../test/randomwalk/conditional/Flush.java | 48 --
.../test/randomwalk/conditional/Init.java | 94 ---
.../test/randomwalk/conditional/Merge.java | 49 --
.../test/randomwalk/conditional/Setup.java | 60 --
.../test/randomwalk/conditional/Split.java | 45 --
.../test/randomwalk/conditional/TearDown.java | 35 --
.../test/randomwalk/conditional/Transfer.java | 135 ----
.../test/randomwalk/conditional/Utils.java | 35 --
.../test/randomwalk/conditional/Verify.java | 89 ---
.../accumulo/test/randomwalk/image/Commit.java | 35 --
.../test/randomwalk/image/ImageFixture.java | 134 ----
.../test/randomwalk/image/ScanMeta.java | 111 ----
.../accumulo/test/randomwalk/image/TableOp.java | 81 ---
.../accumulo/test/randomwalk/image/Verify.java | 131 ----
.../accumulo/test/randomwalk/image/Write.java | 97 ---
.../test/randomwalk/multitable/Commit.java | 40 --
.../test/randomwalk/multitable/CopyTable.java | 92 ---
.../test/randomwalk/multitable/CopyTool.java | 131 ----
.../test/randomwalk/multitable/CreateTable.java | 67 --
.../test/randomwalk/multitable/DropTable.java | 51 --
.../multitable/MultiTableFixture.java | 74 ---
.../randomwalk/multitable/OfflineTable.java | 47 --
.../test/randomwalk/multitable/Write.java | 89 ---
.../randomwalk/security/AlterSystemPerm.java | 101 ---
.../test/randomwalk/security/AlterTable.java | 74 ---
.../randomwalk/security/AlterTablePerm.java | 180 ------
.../test/randomwalk/security/Authenticate.java | 82 ---
.../test/randomwalk/security/ChangePass.java | 94 ---
.../test/randomwalk/security/CreateTable.java | 75 ---
.../test/randomwalk/security/CreateUser.java | 70 ---
.../test/randomwalk/security/DropTable.java | 87 ---
.../test/randomwalk/security/DropUser.java | 68 --
.../randomwalk/security/SecurityFixture.java | 120 ----
.../randomwalk/security/SecurityHelper.java | 215 -------
.../test/randomwalk/security/SetAuths.java | 100 ---
.../test/randomwalk/security/TableOp.java | 257 --------
.../test/randomwalk/security/Validate.java | 124 ----
.../randomwalk/security/WalkingSecurity.java | 505 ---------------
.../test/randomwalk/sequential/BatchVerify.java | 132 ----
.../test/randomwalk/sequential/Commit.java | 36 --
.../randomwalk/sequential/MapRedVerify.java | 79 ---
.../randomwalk/sequential/MapRedVerifyTool.java | 156 -----
.../sequential/SequentialFixture.java | 80 ---
.../test/randomwalk/sequential/Write.java | 50 --
.../test/randomwalk/shard/BulkInsert.java | 191 ------
.../test/randomwalk/shard/CloneIndex.java | 45 --
.../accumulo/test/randomwalk/shard/Commit.java | 33 -
.../test/randomwalk/shard/CompactFilter.java | 94 ---
.../accumulo/test/randomwalk/shard/Delete.java | 58 --
.../test/randomwalk/shard/DeleteSomeDocs.java | 80 ---
.../test/randomwalk/shard/DeleteWord.java | 97 ---
.../test/randomwalk/shard/ExportIndex.java | 118 ----
.../accumulo/test/randomwalk/shard/Flush.java | 45 --
.../accumulo/test/randomwalk/shard/Grep.java | 97 ---
.../accumulo/test/randomwalk/shard/Insert.java | 136 ----
.../accumulo/test/randomwalk/shard/Merge.java | 49 --
.../accumulo/test/randomwalk/shard/Reindex.java | 66 --
.../accumulo/test/randomwalk/shard/Search.java | 105 ----
.../test/randomwalk/shard/ShardFixture.java | 137 ----
.../test/randomwalk/shard/SortTool.java | 75 ---
.../accumulo/test/randomwalk/shard/Split.java | 41 --
.../test/randomwalk/shard/VerifyIndex.java | 71 ---
.../test/randomwalk/unit/CreateTable.java | 30 -
.../test/randomwalk/unit/DeleteTable.java | 29 -
.../accumulo/test/randomwalk/unit/Ingest.java | 29 -
.../accumulo/test/randomwalk/unit/Scan.java | 29 -
.../accumulo/test/randomwalk/unit/Verify.java | 29 -
.../replication/ReplicationRandomWalkIT.java | 67 --
test/src/main/resources/randomwalk/module.xsd | 69 --
test/src/main/resources/unit/Basic.xml | 37 --
test/src/main/resources/unit/Simple.xml | 43 --
.../accumulo/test/randomwalk/FrameworkTest.java | 67 --
test/src/test/resources/randomwalk/Basic.xml | 37 --
test/src/test/resources/randomwalk/Simple.xml | 43 --
test/system/randomwalk/README.md | 99 ---
test/system/randomwalk/bin/apocalypse.sh | 49 --
test/system/randomwalk/bin/copy-config.sh | 38 --
test/system/randomwalk/bin/kill-all.sh | 40 --
test/system/randomwalk/bin/kill-local.sh | 19 -
test/system/randomwalk/bin/reset-cluster.sh | 83 ---
test/system/randomwalk/bin/start-all.sh | 62 --
test/system/randomwalk/bin/start-local.sh | 79 ---
test/system/randomwalk/conf/logger.xml.example | 74 ---
test/system/randomwalk/conf/modules/All.xml | 65 --
test/system/randomwalk/conf/modules/Bulk.xml | 61 --
.../randomwalk/conf/modules/Concurrent.xml | 181 ------
.../randomwalk/conf/modules/Conditional.xml | 74 ---
test/system/randomwalk/conf/modules/Image.xml | 70 ---
.../randomwalk/conf/modules/LongClean.xml | 60 --
.../randomwalk/conf/modules/LongDirty.xml | 60 --
.../system/randomwalk/conf/modules/LongEach.xml | 54 --
.../randomwalk/conf/modules/MultiTable.xml | 60 --
.../system/randomwalk/conf/modules/Security.xml | 224 -------
.../randomwalk/conf/modules/Sequential.xml | 51 --
test/system/randomwalk/conf/modules/Shard.xml | 123 ----
.../randomwalk/conf/modules/ShortClean.xml | 60 --
.../randomwalk/conf/modules/ShortDirty.xml | 60 --
.../randomwalk/conf/modules/ShortEach.xml | 54 --
.../randomwalk/conf/modules/unit/Basic.xml | 37 --
.../randomwalk/conf/modules/unit/Simple.xml | 43 --
.../randomwalk/conf/randomwalk.conf.example | 26 -
test/system/randomwalk/conf/walkers.example | 16 -
154 files changed, 12995 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/assemble/src/main/assemblies/component.xml
----------------------------------------------------------------------
diff --git a/assemble/src/main/assemblies/component.xml b/assemble/src/main/assemblies/component.xml
index 1f45fe1..8151528 100644
--- a/assemble/src/main/assemblies/component.xml
+++ b/assemble/src/main/assemblies/component.xml
@@ -181,9 +181,6 @@
<exclude>**/*.pyo</exclude>
<exclude>**/walkers.txt</exclude>
<exclude>**/ingesters.txt</exclude>
- <exclude>**/randomwalk/conf/logger.xml</exclude>
- <exclude>**/randomwalk/conf/randomwalk.conf</exclude>
- <exclude>**/randomwalk/conf/walkers</exclude>
</excludes>
</fileSet>
<!-- Lift generated thrift proxy code into its own directory -->
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/Environment.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/Environment.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/Environment.java
deleted file mode 100644
index 44619bb..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/Environment.java
+++ /dev/null
@@ -1,248 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk;
-
-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.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.Connector;
-import org.apache.accumulo.core.client.Instance;
-import org.apache.accumulo.core.client.MultiTableBatchWriter;
-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.hadoop.security.UserGroupInformation;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * The test environment that is available for randomwalk tests. This includes configuration properties that are available to any randomwalk test and facilities
- * for creating client-side objects. This class is not thread-safe.
- */
-public class Environment {
- /**
- * The configuration property key for a username.
- */
- public static final String KEY_USERNAME = "USERNAME";
- /**
- * The configuration property key for a password.
- */
- public static final String KEY_PASSWORD = "PASSWORD";
- /**
- * The configuration property key for a keytab
- */
- public static final String KEY_KEYTAB = "KEYTAB";
- /**
- * The configuration property key for the instance name.
- */
- public static final String KEY_INSTANCE = "INSTANCE";
- /**
- * The configuration property key for the comma-separated list of ZooKeepers.
- */
- public static final String KEY_ZOOKEEPERS = "ZOOKEEPERS";
- /**
- * The configuration property key for the maximum memory for the multi-table batch writer.
- */
- public static final String KEY_MAX_MEM = "MAX_MEM";
- /**
- * The configuration property key for the maximum latency, in milliseconds, for the multi-table batch writer.
- */
- public static final String KEY_MAX_LATENCY = "MAX_LATENCY";
- /**
- * The configuration property key for the number of write threads for the multi-table batch writer.
- */
- public static final String KEY_NUM_THREADS = "NUM_THREADS";
-
- private static final Logger log = LoggerFactory.getLogger(Environment.class);
-
- private final Properties p;
- private Instance instance = null;
- private Connector connector = null;
- private MultiTableBatchWriter mtbw = null;
-
- /**
- * Creates a new test environment.
- *
- * @param p
- * configuration properties
- * @throws NullPointerException
- * if p is null
- */
- public Environment(Properties p) {
- requireNonNull(p);
- this.p = p;
- }
-
- /**
- * Gets a copy of the configuration properties.
- *
- * @return a copy of the configuration properties
- */
- Properties copyConfigProperties() {
- return new Properties(p);
- }
-
- /**
- * Gets a configuration property.
- *
- * @param key
- * key
- * @return property value
- */
- public String getConfigProperty(String key) {
- return p.getProperty(key);
- }
-
- /**
- * Gets the configured username.
- *
- * @return username
- */
- public String getUserName() {
- return p.getProperty(KEY_USERNAME);
- }
-
- /**
- * Gets the configured password.
- *
- * @return password
- */
- public String getPassword() {
- return p.getProperty(KEY_PASSWORD);
- }
-
- /**
- * Gets the configured keytab.
- *
- * @return path to keytab
- */
- public String getKeytab() {
- return p.getProperty(KEY_KEYTAB);
- }
-
- /**
- * Gets this process's ID.
- *
- * @return pid
- */
- public String getPid() {
- return ManagementFactory.getRuntimeMXBean().getName().split("@")[0];
- }
-
- /**
- * Gets an authentication token based on the configured password.
- *
- * @return authentication token
- */
- public AuthenticationToken getToken() {
- String password = getPassword();
- if (null != password) {
- return new PasswordToken(getPassword());
- }
- String keytab = getKeytab();
- 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(getUserName(), 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");
- }
-
- /**
- * Gets an Accumulo instance object. The same instance is reused after the first call.
- *
- * @return instance
- */
- public Instance getInstance() {
- if (instance == null) {
- String instance = p.getProperty(KEY_INSTANCE);
- String zookeepers = p.getProperty(KEY_ZOOKEEPERS);
- this.instance = new ZooKeeperInstance(ClientConfiguration.loadDefault().withInstance(instance).withZkHosts(zookeepers));
- }
- return instance;
- }
-
- /**
- * Gets an Accumulo connector. The same connector is reused after the first call.
- *
- * @return connector
- */
- public Connector getConnector() throws AccumuloException, AccumuloSecurityException {
- if (connector == null) {
- connector = getInstance().getConnector(getUserName(), getToken());
- }
- return connector;
- }
-
- /**
- * Gets a multitable batch writer. The same object is reused after the first call unless it is reset.
- *
- * @return multitable batch writer
- * @throws NumberFormatException
- * if any of the numeric batch writer configuration properties cannot be parsed
- * @throws NumberFormatException
- * if any configuration property cannot be parsed
- */
- public MultiTableBatchWriter getMultiTableBatchWriter() throws AccumuloException, AccumuloSecurityException {
- if (mtbw == null) {
- long maxMem = Long.parseLong(p.getProperty(KEY_MAX_MEM));
- long maxLatency = Long.parseLong(p.getProperty(KEY_MAX_LATENCY));
- int numThreads = Integer.parseInt(p.getProperty(KEY_NUM_THREADS));
- mtbw = getConnector().createMultiTableBatchWriter(
- new BatchWriterConfig().setMaxMemory(maxMem).setMaxLatency(maxLatency, TimeUnit.MILLISECONDS).setMaxWriteThreads(numThreads));
- }
- return mtbw;
- }
-
- /**
- * Checks if a multitable batch writer has been created by this wrapper.
- *
- * @return true if multitable batch writer is already created
- */
- public boolean isMultiTableBatchWriterInitialized() {
- return mtbw != null;
- }
-
- /**
- * Clears the multitable batch writer previously created and remembered by this wrapper.
- */
- public void resetMultiTableBatchWriter() {
- if (mtbw == null)
- return;
- if (!mtbw.isClosed()) {
- log.warn("Setting non-closed MultiTableBatchWriter to null (leaking resources)");
- }
- mtbw = null;
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/Fixture.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/Fixture.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/Fixture.java
deleted file mode 100644
index f8d01d9..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/Fixture.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk;
-
-import org.apache.log4j.Logger;
-
-public abstract class Fixture {
-
- protected final Logger log = Logger.getLogger(this.getClass());
-
- public abstract void setUp(State state, Environment env) throws Exception;
-
- public abstract void tearDown(State state, Environment env) throws Exception;
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/Framework.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/Framework.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/Framework.java
deleted file mode 100644
index fd5d5fa..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/Framework.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.util.HashMap;
-import java.util.Properties;
-
-import org.apache.log4j.Logger;
-import org.apache.log4j.xml.DOMConfigurator;
-
-import com.beust.jcommander.Parameter;
-
-public class Framework {
-
- private static final Logger log = Logger.getLogger(Framework.class);
- private HashMap<String,Node> nodes = new HashMap<>();
- private String configDir = null;
- private static final Framework INSTANCE = new Framework();
-
- /**
- * @return Singleton instance of Framework
- */
- public static Framework getInstance() {
- return INSTANCE;
- }
-
- public void setConfigDir(String confDir) {
- configDir = confDir;
- }
-
- /**
- * Run random walk framework
- *
- * @param startName
- * Full name of starting graph or test
- */
- public int run(String startName, State state, Environment env, String confDir) {
-
- try {
- System.out.println("confDir " + confDir);
- setConfigDir(confDir);
- Node node = getNode(startName);
- node.visit(state, env, new Properties());
- } catch (Exception e) {
- log.error("Error during random walk", e);
- return -1;
- }
- return 0;
- }
-
- /**
- * Creates node (if it does not already exist) and inserts into map
- *
- * @param id
- * Name of node
- * @return Node specified by id
- */
- public Node getNode(String id) throws Exception {
-
- // check for node in nodes
- if (nodes.containsKey(id)) {
- return nodes.get(id);
- }
-
- // otherwise create and put in nodes
- Node node = null;
- if (id.endsWith(".xml")) {
- node = new Module(new File(configDir + "modules/" + id));
- } else {
- node = (Test) Class.forName(id).newInstance();
- }
- nodes.put(id, node);
- return node;
- }
-
- static class Opts extends org.apache.accumulo.core.cli.Help {
- @Parameter(names = "--configDir", required = true, description = "directory containing the test configuration")
- String configDir;
- @Parameter(names = "--logDir", required = true, description = "location of the local logging directory")
- String localLogPath;
- @Parameter(names = "--logId", required = true, description = "a unique log identifier (like a hostname, or pid)")
- String logId;
- @Parameter(names = "--module", required = true, description = "the name of the module to run")
- String module;
- }
-
- public static void main(String[] args) throws Exception {
- Opts opts = new Opts();
- opts.parseArgs(Framework.class.getName(), args);
-
- Properties props = new Properties();
- FileInputStream fis = new FileInputStream(opts.configDir + "/randomwalk.conf");
- props.load(fis);
- fis.close();
-
- System.setProperty("localLog", opts.localLogPath + "/" + opts.logId);
- System.setProperty("nfsLog", props.getProperty("NFS_LOGPATH") + "/" + opts.logId);
-
- DOMConfigurator.configure(opts.configDir + "logger.xml");
-
- State state = new State();
- Environment env = new Environment(props);
- int retval = getInstance().run(opts.module, state, env, opts.configDir);
-
- System.exit(retval);
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/Module.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/Module.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/Module.java
deleted file mode 100644
index 37b0417..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/Module.java
+++ /dev/null
@@ -1,624 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk;
-
-import static java.nio.charset.StandardCharsets.UTF_8;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Properties;
-import java.util.Random;
-import java.util.Set;
-import java.util.TreeSet;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.FutureTask;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import javax.xml.XMLConstants;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.validation.Schema;
-import javax.xml.validation.SchemaFactory;
-
-import org.apache.accumulo.core.client.security.tokens.PasswordToken;
-import org.apache.accumulo.core.util.SimpleThreadPool;
-import org.apache.log4j.Level;
-import org.apache.log4j.Logger;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
-
-/**
- * A module is directed graph of tests
- */
-public class Module extends Node {
-
- private static final Logger log = Logger.getLogger(Module.class);
-
- private class Dummy extends Node {
-
- String name;
-
- Dummy(String name) {
- this.name = name;
- }
-
- @Override
- public void visit(State state, Environment env, Properties props) {
- String print;
- if ((print = props.getProperty("print")) != null) {
- Level level = Level.toLevel(print);
- log.log(level, name);
- }
- }
-
- @Override
- public String toString() {
- return name;
- }
- }
-
- private class Alias extends Node {
-
- Node target;
- String targetId;
- String id;
-
- Alias(String id) {
- target = null;
- this.id = id;
- }
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- throw new Exception("You don't visit aliases!");
- }
-
- @Override
- public String toString() {
- return id;
- }
-
- public void update(String node) throws Exception {
- targetId = node;
- target = getNode(node);
- }
-
- public Node get() {
- return target;
- }
-
- public String getTargetId() {
- return targetId;
- }
- }
-
- private HashMap<String,Node> nodes = new HashMap<>();
- private HashMap<String,Properties> localProps = new HashMap<>();
-
- private class Edge {
- String nodeId;
- int weight;
- }
-
- private class AdjList {
-
- private List<Edge> edges = new ArrayList<>();
- private int totalWeight = 0;
- private Random rand = new Random();
-
- /**
- * Adds a neighbor node and weight of edge
- */
- private void addEdge(String nodeId, int weight) {
-
- totalWeight += weight;
-
- Edge e = new Edge();
- e.nodeId = nodeId;
- e.weight = weight;
- edges.add(e);
- }
-
- /**
- * Chooses a random neighbor node
- *
- * @return Node or null if no edges
- */
- private String randomNeighbor() throws Exception {
-
- String nodeId = null;
- rand = new Random();
-
- int randNum = rand.nextInt(totalWeight) + 1;
- int sum = 0;
-
- for (Edge e : edges) {
- nodeId = e.nodeId;
- sum += e.weight;
- if (randNum <= sum) {
- break;
- }
- }
- return nodeId;
- }
- }
-
- private HashMap<String,String> prefixes = new HashMap<>();
- private HashMap<String,AdjList> adjMap = new HashMap<>();
- private HashMap<String,Set<String>> aliasMap = new HashMap<>();
- private final File xmlFile;
- private String initNodeId;
- private Fixture fixture = null;
-
- public Module(File xmlFile) throws Exception {
- this.xmlFile = xmlFile;
- loadFromXml();
- }
-
- @Override
- public void visit(final State state, final Environment env, Properties props) throws Exception {
- int maxHops, maxSec;
- boolean teardown;
-
- Properties initProps = getProps("_init");
- initProps.putAll(props);
- String prop;
- if ((prop = initProps.getProperty("maxHops")) == null || prop.equals("0") || prop.equals(""))
- maxHops = Integer.MAX_VALUE;
- else
- maxHops = Integer.parseInt(initProps.getProperty("maxHops", "0"));
-
- if ((prop = initProps.getProperty("maxSec")) == null || prop.equals("0") || prop.equals(""))
- maxSec = Integer.MAX_VALUE;
- else
- maxSec = Integer.parseInt(initProps.getProperty("maxSec", "0"));
-
- if ((prop = initProps.getProperty("teardown")) == null || prop.equals("true") || prop.equals(""))
- teardown = true;
- else
- teardown = false;
-
- if (fixture != null) {
- fixture.setUp(state, env);
- }
-
- ExecutorService service = new SimpleThreadPool(1, "RandomWalk Runner");
-
- try {
- Node initNode = getNode(initNodeId);
-
- boolean test = false;
- if (initNode instanceof Test) {
- startTimer(initNode);
- test = true;
- }
- initNode.visit(state, env, getProps(initNodeId));
- if (test)
- stopTimer(initNode);
-
- // update aliases
- Set<String> aliases;
- if ((aliases = aliasMap.get(initNodeId)) != null)
- for (String alias : aliases) {
- ((Alias) nodes.get(alias)).update(initNodeId);
- }
-
- String curNodeId = initNodeId;
- int numHops = 0;
- long startTime = System.currentTimeMillis() / 1000;
- while (true) {
- // check if END state was reached
- if (curNodeId.equalsIgnoreCase("END")) {
- log.debug("reached END state");
- break;
- }
- // check if maxSec was reached
- long curTime = System.currentTimeMillis() / 1000;
- if ((curTime - startTime) > maxSec) {
- log.debug("reached maxSec(" + maxSec + ")");
- break;
- }
-
- // The number of seconds before the test should exit
- long secondsRemaining = maxSec - (curTime - startTime);
-
- // check if maxHops was reached
- if (numHops > maxHops) {
- log.debug("reached maxHops(" + maxHops + ")");
- break;
- }
- numHops++;
-
- if (!adjMap.containsKey(curNodeId) && !curNodeId.startsWith("alias.")) {
- throw new Exception("Reached node(" + curNodeId + ") without outgoing edges in module(" + this + ")");
- }
- AdjList adj = adjMap.get(curNodeId);
- String nextNodeId = adj.randomNeighbor();
- final Node nextNode;
- Node nextNodeOrAlias = getNode(nextNodeId);
- if (nextNodeOrAlias instanceof Alias) {
- nextNodeId = ((Alias) nextNodeOrAlias).getTargetId();
- nextNode = ((Alias) nextNodeOrAlias).get();
- } else {
- nextNode = nextNodeOrAlias;
- }
- final Properties nodeProps = getProps(nextNodeId);
- try {
- test = false;
- if (nextNode instanceof Test) {
- startTimer(nextNode);
- test = true;
- }
-
- // Wrap the visit of the next node in the module in a callable that returns a thrown exception
- FutureTask<Exception> task = new FutureTask<>(new Callable<Exception>() {
-
- @Override
- public Exception call() throws Exception {
- try {
- nextNode.visit(state, env, nodeProps);
- return null;
- } catch (Exception e) {
- return e;
- }
- }
-
- });
-
- // Run the task (should execute immediately)
- service.submit(task);
-
- Exception nodeException;
- try {
- // Bound the time we'll wait for the node to complete
- nodeException = task.get(secondsRemaining, TimeUnit.SECONDS);
- } catch (InterruptedException e) {
- log.warn("Interrupted waiting for " + nextNode.getClass().getSimpleName() + " to complete. Exiting.", e);
- break;
- } catch (ExecutionException e) {
- log.error("Caught error executing " + nextNode.getClass().getSimpleName(), e);
- throw e;
- } catch (TimeoutException e) {
- log.info("Timed out waiting for " + nextNode.getClass().getSimpleName() + " to complete (waited " + secondsRemaining + " seconds). Exiting.", e);
- break;
- }
-
- // The RandomWalk node throw an Exception that that Callable handed back
- // Throw it and let the Module perform cleanup
- if (null != nodeException) {
- throw nodeException;
- }
-
- if (test)
- stopTimer(nextNode);
- } catch (Exception e) {
- log.debug("Connector belongs to user: " + env.getConnector().whoami());
- log.debug("Exception occured at: " + System.currentTimeMillis());
- log.debug("Properties for node: " + nextNodeId);
- for (Entry<Object,Object> entry : nodeProps.entrySet()) {
- log.debug(" " + entry.getKey() + ": " + entry.getValue());
- }
- log.debug("Overall Configuration Properties");
- for (Entry<Object,Object> entry : env.copyConfigProperties().entrySet()) {
- log.debug(" " + entry.getKey() + ": " + entry.getValue());
- }
- log.debug("State information");
- for (String key : new TreeSet<>(state.getMap().keySet())) {
- Object value = state.getMap().get(key);
- String logMsg = " " + key + ": ";
- if (value == null)
- logMsg += "null";
- else if (value instanceof String || value instanceof Map || value instanceof Collection || value instanceof Number)
- logMsg += value;
- else if (value instanceof byte[])
- logMsg += new String((byte[]) value, UTF_8);
- else if (value instanceof PasswordToken)
- logMsg += new String(((PasswordToken) value).getPassword(), UTF_8);
- else
- logMsg += value.getClass() + " - " + value;
-
- log.debug(logMsg);
- }
- throw new Exception("Error running node " + nextNodeId, e);
- }
-
- // update aliases
- if ((aliases = aliasMap.get(curNodeId)) != null)
- for (String alias : aliases) {
- ((Alias) nodes.get(alias)).update(curNodeId);
- }
-
- curNodeId = nextNodeId;
- }
- } finally {
- if (null != service) {
- service.shutdownNow();
- }
- }
-
- if (teardown && (fixture != null)) {
- log.debug("tearing down module");
- fixture.tearDown(state, env);
- }
- }
-
- Thread timer = null;
- final int time = 5 * 1000 * 60;
- AtomicBoolean runningLong = new AtomicBoolean(false);
- long systemTime;
-
- /**
- *
- */
- private void startTimer(final Node initNode) {
- runningLong.set(false);
- timer = new Thread(new Runnable() {
- @Override
- public void run() {
- try {
- systemTime = System.currentTimeMillis();
- Thread.sleep(time);
- } catch (InterruptedException ie) {
- return;
- }
- long timeSinceLastProgress = System.currentTimeMillis() - initNode.lastProgress();
- if (timeSinceLastProgress > time) {
- log.warn("Node " + initNode + " has been running for " + timeSinceLastProgress / 1000.0 + " seconds. You may want to look into it.");
- runningLong.set(true);
- }
- }
- });
- initNode.makingProgress();
- timer.start();
- }
-
- /**
- *
- */
- private void stopTimer(Node nextNode) {
- synchronized (timer) {
- timer.interrupt();
- try {
- timer.join();
- } catch (InterruptedException e) {
- log.error("Failed to join timer '" + timer.getName() + "'.", e);
- }
- }
- if (runningLong.get())
- log.warn("Node " + nextNode + ", which was running long, has now completed after " + (System.currentTimeMillis() - systemTime) / 1000.0 + " seconds");
- }
-
- @Override
- public String toString() {
- return xmlFile.toString();
- }
-
- private String getFullName(String name) {
-
- int index = name.indexOf(".");
- if (index == -1 || name.endsWith(".xml")) {
- return name;
- }
-
- String id = name.substring(0, index);
-
- if (!prefixes.containsKey(id)) {
- log.warn("Id (" + id + ") was not found in prefixes");
- return name;
- }
-
- return prefixes.get(id).concat(name.substring(index + 1));
- }
-
- private Node createNode(String id, String src) throws Exception {
-
- // check if id indicates dummy node
- if (id.equalsIgnoreCase("END") || id.startsWith("dummy")) {
- if (nodes.containsKey(id) == false) {
- nodes.put(id, new Dummy(id));
- }
- return nodes.get(id);
- }
-
- if (id.startsWith("alias")) {
- if (nodes.containsKey(id) == false) {
- nodes.put(id, new Alias(id));
- }
- return nodes.get(id);
- }
-
- // grab node from framework based on its id or src
- Node node;
- if (src == null || src.isEmpty()) {
- node = Framework.getInstance().getNode(getFullName(id));
- } else {
- node = Framework.getInstance().getNode(getFullName(src));
- }
-
- // add to node to this module's map
- nodes.put(id, node);
-
- return node;
- }
-
- private Node getNode(String id) throws Exception {
-
- if (nodes.containsKey(id)) {
- return nodes.get(id);
- }
-
- if (id.equalsIgnoreCase("END")) {
- nodes.put(id, new Dummy(id));
- return nodes.get(id);
- }
-
- return Framework.getInstance().getNode(getFullName(id));
- }
-
- private Properties getProps(String nodeId) {
- if (localProps.containsKey(nodeId)) {
- return localProps.get(nodeId);
- }
- return new Properties();
- }
-
- private void loadFromXml() throws Exception {
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
- DocumentBuilder docbuilder;
- Document d = null;
-
- // set the schema
- SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
- Schema moduleSchema = sf.newSchema(this.getClass().getClassLoader().getResource("randomwalk/module.xsd"));
- dbf.setSchema(moduleSchema);
-
- // parse the document
- try {
- docbuilder = dbf.newDocumentBuilder();
- d = docbuilder.parse(xmlFile);
- } catch (Exception e) {
- log.error("Failed to parse: " + xmlFile, e);
- throw new Exception("Failed to parse: " + xmlFile);
- }
-
- // parse packages
- NodeList nodelist = d.getDocumentElement().getElementsByTagName("package");
- for (int i = 0; i < nodelist.getLength(); i++) {
- Element el = (Element) nodelist.item(i);
- String value = el.getAttribute("value");
- if (!value.endsWith(".")) {
- value = value.concat(".");
- }
- prefixes.put(el.getAttribute("prefix"), value);
- }
-
- // parse fixture node
- nodelist = d.getDocumentElement().getElementsByTagName("fixture");
- if (nodelist.getLength() > 0) {
- Element fixtureEl = (Element) nodelist.item(0);
- fixture = (Fixture) Class.forName(getFullName(fixtureEl.getAttribute("id"))).newInstance();
- }
-
- // parse initial node
- Element initEl = (Element) d.getDocumentElement().getElementsByTagName("init").item(0);
- initNodeId = initEl.getAttribute("id");
- Properties initProps = new Properties();
- String attr = initEl.getAttribute("maxHops");
-
- if (attr != null)
- initProps.setProperty("maxHops", attr);
- attr = initEl.getAttribute("maxSec");
-
- if (attr != null)
- initProps.setProperty("maxSec", attr);
- attr = initEl.getAttribute("teardown");
-
- if (attr != null)
- initProps.setProperty("teardown", attr);
- localProps.put("_init", initProps);
-
- // parse all nodes
- nodelist = d.getDocumentElement().getElementsByTagName("node");
- for (int i = 0; i < nodelist.getLength(); i++) {
-
- Element nodeEl = (Element) nodelist.item(i);
-
- // get attributes
- String id = nodeEl.getAttribute("id");
- if (adjMap.containsKey(id)) {
- throw new Exception("Module already contains: " + id);
- }
- String src = nodeEl.getAttribute("src");
-
- // create node
- createNode(id, src);
-
- // set some attributes in properties for later use
- Properties props = new Properties();
- props.setProperty("maxHops", nodeEl.getAttribute("maxHops"));
- props.setProperty("maxSec", nodeEl.getAttribute("maxSec"));
- props.setProperty("teardown", nodeEl.getAttribute("teardown"));
-
- // parse aliases
- NodeList aliaslist = nodeEl.getElementsByTagName("alias");
- Set<String> aliases = new TreeSet<>();
- for (int j = 0; j < aliaslist.getLength(); j++) {
- Element propEl = (Element) aliaslist.item(j);
-
- if (!propEl.hasAttribute("name")) {
- throw new Exception("Node " + id + " has alias with no identifying name");
- }
-
- String key = "alias." + propEl.getAttribute("name");
-
- aliases.add(key);
- createNode(key, null);
- }
- if (aliases.size() > 0)
- aliasMap.put(id, aliases);
-
- // parse properties of nodes
- NodeList proplist = nodeEl.getElementsByTagName("property");
- for (int j = 0; j < proplist.getLength(); j++) {
- Element propEl = (Element) proplist.item(j);
-
- if (!propEl.hasAttribute("key") || !propEl.hasAttribute("value")) {
- throw new Exception("Node " + id + " has property with no key or value");
- }
-
- String key = propEl.getAttribute("key");
-
- if (key.equals("maxHops") || key.equals("maxSec") || key.equals("teardown")) {
- throw new Exception("The following property can only be set in attributes: " + key);
- }
-
- props.setProperty(key, propEl.getAttribute("value"));
- }
- localProps.put(id, props);
-
- // parse edges of nodes
- AdjList edges = new AdjList();
- adjMap.put(id, edges);
- NodeList edgelist = nodeEl.getElementsByTagName("edge");
- if (edgelist.getLength() == 0) {
- throw new Exception("Node " + id + " has no edges!");
- }
- for (int j = 0; j < edgelist.getLength(); j++) {
- Element edgeEl = (Element) edgelist.item(j);
-
- String edgeID = edgeEl.getAttribute("id");
-
- if (!edgeEl.hasAttribute("weight")) {
- throw new Exception("Edge with id=" + edgeID + " is missing weight");
- }
-
- int weight = Integer.parseInt(edgeEl.getAttribute("weight"));
- edges.addEdge(edgeID, weight);
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/Node.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/Node.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/Node.java
deleted file mode 100644
index 282ceeb..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/Node.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk;
-
-import java.io.File;
-import java.util.Properties;
-
-import org.apache.log4j.Logger;
-
-/**
- * Represents a point in graph of RandomFramework
- */
-public abstract class Node {
-
- protected final Logger log = Logger.getLogger(this.getClass());
- long progress = System.currentTimeMillis();
-
- /**
- * Visits node
- *
- * @param state
- * Random walk state passed between nodes
- * @param env
- * test environment
- */
- public abstract void visit(State state, Environment env, Properties props) throws Exception;
-
- @Override
- public boolean equals(Object o) {
- if (o == null)
- return false;
- return toString().equals(o.toString());
- }
-
- @Override
- public String toString() {
- return this.getClass().getName();
- }
-
- @Override
- public int hashCode() {
- return toString().hashCode();
- }
-
- synchronized public void makingProgress() {
- progress = System.currentTimeMillis();
- }
-
- synchronized public long lastProgress() {
- return progress;
- }
-
- protected String getMapReduceJars() {
-
- String acuHome = System.getenv("ACCUMULO_HOME");
- String zkHome = System.getenv("ZOOKEEPER_HOME");
-
- if (acuHome == null || zkHome == null) {
- throw new RuntimeException("ACCUMULO or ZOOKEEPER home not set!");
- }
-
- String retval = null;
-
- File zkLib = new File(zkHome);
- String[] files = zkLib.list();
- if (files != null) {
- for (int i = 0; i < files.length; i++) {
- String f = files[i];
- if (f.matches("^zookeeper-.+jar$")) {
- if (retval == null) {
- retval = String.format("%s/%s", zkLib.getAbsolutePath(), f);
- } else {
- retval += String.format(",%s/%s", zkLib.getAbsolutePath(), f);
- }
- }
- }
- }
-
- File libdir = new File(acuHome + "/lib");
- for (String jar : "accumulo-core accumulo-server-base accumulo-fate accumulo-trace commons-math3 libthrift htrace-core".split(" ")) {
- retval += String.format(",%s/%s.jar", libdir.getAbsolutePath(), jar);
- }
-
- return retval;
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/State.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/State.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/State.java
deleted file mode 100644
index d906d00..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/State.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk;
-
-import java.util.HashMap;
-
-/**
- * A structure for storing state kept during a test. This class is not thread-safe.
- */
-public class State {
-
- private HashMap<String,Object> stateMap = new HashMap<>();
-
- /**
- * Creates new empty state.
- */
- public State() {}
-
- /**
- * Sets a state object.
- *
- * @param key
- * key for object
- * @param value
- * object
- */
- public void set(String key, Object value) {
- stateMap.put(key, value);
- }
-
- /**
- * Removes a state object.
- *
- * @param key
- * key for object
- */
- public void remove(String key) {
- stateMap.remove(key);
- }
-
- /**
- * Gets a state object.
- *
- * @param key
- * key for object
- * @return value object
- * @throws RuntimeException
- * if state object is not present
- */
- public Object get(String key) {
- if (stateMap.containsKey(key) == false) {
- throw new RuntimeException("State does not contain " + key);
- }
- return stateMap.get(key);
- }
-
- /**
- * Gets a state object, returning null if it is absent.
- *
- * @param key
- * key for object
- * @return value object, or null if not present
- */
- public Object getOkIfAbsent(String key) {
- return stateMap.get(key);
- }
-
- /**
- * Gets the map of state objects. The backing map for state is returned, so changes to it affect the state.
- *
- * @return state map
- */
- HashMap<String,Object> getMap() {
- return stateMap;
- }
-
- /**
- * Gets a state object as a string.
- *
- * @param key
- * key for object
- * @return value as string
- * @throws ClassCastException
- * if the value object is not a string
- */
- public String getString(String key) {
- return (String) stateMap.get(key);
- }
-
- /**
- * Gets a state object as an integer.
- *
- * @param key
- * key for object
- * @return value as integer
- * @throws ClassCastException
- * if the value object is not an integer
- */
- public Integer getInteger(String key) {
- return (Integer) stateMap.get(key);
- }
-
- /**
- * Gets a state object as a long.
- *
- * @param key
- * key for object
- * @return value as long
- * @throws ClassCastException
- * if the value object is not a long
- */
- public Long getLong(String key) {
- return (Long) stateMap.get(key);
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/Test.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/Test.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/Test.java
deleted file mode 100644
index f781c9a..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/Test.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk;
-
-/**
- * Tests are extended by users to perform actions on accumulo and are a node of the graph
- */
-public abstract class Test extends Node {
-
- @Override
- public String toString() {
- return getClass().getName();
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/BulkImportTest.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/BulkImportTest.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/BulkImportTest.java
deleted file mode 100644
index 33d7701..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/BulkImportTest.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.bulk;
-
-import java.util.Properties;
-
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-
-/**
- * If we have a sufficient back-up of imports, let them work off before adding even more bulk-imports. Imports of PlusOne must always be balanced with imports
- * of MinusOne.
- */
-public abstract class BulkImportTest extends BulkTest {
-
- public static final String SKIPPED_IMPORT = "skipped.import", TRUE = Boolean.TRUE.toString(), FALSE = Boolean.FALSE.toString();
-
- @Override
- public void visit(final State state, Environment env, Properties props) throws Exception {
- /**
- * Each visit() is performed sequentially and then submitted to the threadpool which will have async execution. As long as we're checking the state and
- * making decisions about what to do before we submit something to the thread pool, we're fine.
- */
-
- String lastImportSkipped = state.getString(SKIPPED_IMPORT);
- // We have a marker in the state for the previous insert, we have to balance skipping BulkPlusOne
- // with skipping the new BulkMinusOne to make sure that we maintain consistency
- if (null != lastImportSkipped) {
- if (!getClass().equals(BulkMinusOne.class)) {
- throw new IllegalStateException("Should not have a skipped import marker for a class other than " + BulkMinusOne.class.getName() + " but was "
- + getClass().getName());
- }
-
- if (TRUE.equals(lastImportSkipped)) {
- log.debug("Last import was skipped, skipping this import to ensure consistency");
- state.remove(SKIPPED_IMPORT);
-
- // Wait 30s to balance the skip of a BulkPlusOne/BulkMinusOne pair
- log.debug("Waiting 30s before continuing");
- try {
- Thread.sleep(30 * 1000);
- } catch (InterruptedException e) {}
-
- return;
- } else {
- // last import was not skipped, remove the marker
- state.remove(SKIPPED_IMPORT);
- }
- }
-
- if (shouldQueueMoreImports(state, env)) {
- super.visit(state, env, props);
- } else {
- log.debug("Not queuing more imports this round because too many are already queued");
- state.set(SKIPPED_IMPORT, TRUE);
- // Don't sleep here, let the sleep happen when we skip the next BulkMinusOne
- }
- }
-
- private boolean shouldQueueMoreImports(State state, Environment env) throws Exception {
- // Only selectively import when it's BulkPlusOne. If we did a BulkPlusOne,
- // we must also do a BulkMinusOne to keep the table consistent
- if (getClass().equals(BulkPlusOne.class)) {
- // Only queue up more imports if the number of queued tasks already
- // exceeds the number of tservers by 50x
- return SelectiveQueueing.shouldQueueOperation(state, env);
- }
-
- return true;
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/BulkMinusOne.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/BulkMinusOne.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/BulkMinusOne.java
deleted file mode 100644
index e13e7d2..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/BulkMinusOne.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.bulk;
-
-import static java.nio.charset.StandardCharsets.UTF_8;
-
-import org.apache.accumulo.core.data.Value;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-
-public class BulkMinusOne extends BulkImportTest {
-
- private static final Value negOne = new Value("-1".getBytes(UTF_8));
-
- @Override
- protected void runLater(State state, Environment env) throws Exception {
- log.info("Decrementing");
- BulkPlusOne.bulkLoadLots(log, state, env, negOne);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/BulkPlusOne.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/BulkPlusOne.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/BulkPlusOne.java
deleted file mode 100644
index 1fb8717..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/BulkPlusOne.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.bulk;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Random;
-import java.util.TreeSet;
-import java.util.UUID;
-import java.util.concurrent.atomic.AtomicLong;
-
-import org.apache.accumulo.core.client.IteratorSetting.Column;
-import org.apache.accumulo.core.conf.AccumuloConfiguration;
-import org.apache.accumulo.core.conf.DefaultConfiguration;
-import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.Value;
-import org.apache.accumulo.core.file.FileOperations;
-import org.apache.accumulo.core.file.FileSKVWriter;
-import org.apache.accumulo.core.file.rfile.RFile;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.hadoop.fs.FileStatus;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.io.Text;
-import org.apache.log4j.Logger;
-
-public class BulkPlusOne extends BulkImportTest {
-
- public static final int LOTS = 100000;
- public static final int COLS = 10;
- public static final int HEX_SIZE = (int) Math.ceil(Math.log(LOTS) / Math.log(16));
- public static final String FMT = "r%0" + HEX_SIZE + "x";
- public static final List<Column> COLNAMES = new ArrayList<>();
- public static final Text CHECK_COLUMN_FAMILY = new Text("cf");
- static {
- for (int i = 0; i < COLS; i++) {
- COLNAMES.add(new Column(CHECK_COLUMN_FAMILY, new Text(String.format("%03d", i))));
- }
- }
- public static final Text MARKER_CF = new Text("marker");
- static final AtomicLong counter = new AtomicLong();
-
- private static final Value ONE = new Value("1".getBytes());
-
- static void bulkLoadLots(Logger log, State state, Environment env, Value value) throws Exception {
- final Path dir = new Path("/tmp", "bulk_" + UUID.randomUUID().toString());
- final Path fail = new Path(dir.toString() + "_fail");
- final DefaultConfiguration defaultConfiguration = AccumuloConfiguration.getDefaultConfiguration();
- final Random rand = (Random) state.get("rand");
- final FileSystem fs = (FileSystem) state.get("fs");
- fs.mkdirs(fail);
- final int parts = rand.nextInt(10) + 1;
-
- TreeSet<Integer> startRows = new TreeSet<>();
- startRows.add(0);
- while (startRows.size() < parts)
- startRows.add(rand.nextInt(LOTS));
-
- List<String> printRows = new ArrayList<>(startRows.size());
- for (Integer row : startRows)
- printRows.add(String.format(FMT, row));
-
- String markerColumnQualifier = String.format("%07d", counter.incrementAndGet());
- log.debug("preparing bulk files with start rows " + printRows + " last row " + String.format(FMT, LOTS - 1) + " marker " + markerColumnQualifier);
-
- List<Integer> rows = new ArrayList<>(startRows);
- rows.add(LOTS);
-
- for (int i = 0; i < parts; i++) {
- String fileName = dir + "/" + String.format("part_%d.", i) + RFile.EXTENSION;
- FileSKVWriter f = FileOperations.getInstance().newWriterBuilder().forFile(fileName, fs, fs.getConf()).withTableConfiguration(defaultConfiguration)
- .build();
- f.startDefaultLocalityGroup();
- int start = rows.get(i);
- int end = rows.get(i + 1);
- for (int j = start; j < end; j++) {
- Text row = new Text(String.format(FMT, j));
- for (Column col : COLNAMES) {
- f.append(new Key(row, col.getColumnFamily(), col.getColumnQualifier()), value);
- }
- f.append(new Key(row, MARKER_CF, new Text(markerColumnQualifier)), ONE);
- }
- f.close();
- }
- env.getConnector().tableOperations().importDirectory(Setup.getTableName(), dir.toString(), fail.toString(), true);
- fs.delete(dir, true);
- FileStatus[] failures = fs.listStatus(fail);
- if (failures != null && failures.length > 0) {
- state.set("bulkImportSuccess", "false");
- throw new Exception(failures.length + " failure files found importing files from " + dir);
- }
- fs.delete(fail, true);
- log.debug("Finished bulk import, start rows " + printRows + " last row " + String.format(FMT, LOTS - 1) + " marker " + markerColumnQualifier);
- }
-
- @Override
- protected void runLater(State state, Environment env) throws Exception {
- log.info("Incrementing");
- bulkLoadLots(log, state, env, ONE);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/BulkTest.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/BulkTest.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/BulkTest.java
deleted file mode 100644
index 07d1f4c..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/BulkTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.bulk;
-
-import java.util.Properties;
-
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public abstract class BulkTest extends Test {
-
- @Override
- public void visit(final State state, final Environment env, Properties props) throws Exception {
- Setup.run(state, new Runnable() {
- @Override
- public void run() {
- try {
- runLater(state, env);
- } catch (Throwable ex) {
- log.error(ex, ex);
- }
- }
-
- });
- }
-
- abstract protected void runLater(State state, Environment env) throws Exception;
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/Compact.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/Compact.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/Compact.java
deleted file mode 100644
index c526ffa..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/Compact.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.bulk;
-
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.hadoop.io.Text;
-
-public class Compact extends SelectiveBulkTest {
-
- @Override
- protected void runLater(State state, Environment env) throws Exception {
- final Text[] points = Merge.getRandomTabletRange(state);
- final String rangeString = Merge.rangeToString(points);
- log.info("Compacting " + rangeString);
- env.getConnector().tableOperations().compact(Setup.getTableName(), points[0], points[1], false, true);
- log.info("Compaction " + rangeString + " finished");
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/ConsistencyCheck.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/ConsistencyCheck.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/ConsistencyCheck.java
deleted file mode 100644
index 0c7cfb6..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/ConsistencyCheck.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.bulk;
-
-import java.util.Map.Entry;
-import java.util.Random;
-
-import org.apache.accumulo.core.client.IsolatedScanner;
-import org.apache.accumulo.core.client.Scanner;
-import org.apache.accumulo.core.data.Key;
-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.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.hadoop.io.Text;
-
-public class ConsistencyCheck extends SelectiveBulkTest {
-
- @Override
- protected void runLater(State state, Environment env) throws Exception {
- Random rand = (Random) state.get("rand");
- Text row = Merge.getRandomRow(rand);
- log.info("Checking " + row);
- String user = env.getConnector().whoami();
- Authorizations auths = env.getConnector().securityOperations().getUserAuthorizations(user);
- try (Scanner scanner = new IsolatedScanner(env.getConnector().createScanner(Setup.getTableName(), auths))) {
- scanner.setRange(new Range(row));
- scanner.fetchColumnFamily(BulkPlusOne.CHECK_COLUMN_FAMILY);
- Value v = null;
- Key first = null;
- for (Entry<Key,Value> entry : scanner) {
- if (v == null) {
- v = entry.getValue();
- first = entry.getKey();
- }
- if (!v.equals(entry.getValue()))
- throw new RuntimeException("Inconsistent value at " + entry.getKey() + " was " + entry.getValue() + " should be " + v + " first read at " + first);
- }
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/Merge.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/Merge.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/Merge.java
deleted file mode 100644
index 8508242..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/Merge.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.bulk;
-
-import java.util.Arrays;
-import java.util.Random;
-
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.hadoop.io.Text;
-
-public class Merge extends SelectiveBulkTest {
-
- @Override
- protected void runLater(State state, Environment env) throws Exception {
- Text[] points = getRandomTabletRange(state);
- log.info("merging " + rangeToString(points));
- env.getConnector().tableOperations().merge(Setup.getTableName(), points[0], points[1]);
- log.info("merging " + rangeToString(points) + " complete");
- }
-
- public static String rangeToString(Text[] points) {
- return "(" + (points[0] == null ? "-inf" : points[0]) + " -> " + (points[1] == null ? "+inf" : points[1]) + "]";
- }
-
- public static Text getRandomRow(Random rand) {
- return new Text(String.format(BulkPlusOne.FMT, (rand.nextLong() & 0x7fffffffffffffffl) % BulkPlusOne.LOTS));
- }
-
- public static Text[] getRandomTabletRange(State state) {
- Random rand = (Random) state.get("rand");
- Text points[] = {getRandomRow(rand), getRandomRow(rand),};
- Arrays.sort(points);
- if (rand.nextInt(10) == 0) {
- points[0] = null;
- }
- if (rand.nextInt(10) == 0) {
- points[1] = null;
- }
- if (rand.nextInt(20) == 0) {
- points[0] = null;
- points[1] = null;
- }
- return points;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/SelectiveBulkTest.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/SelectiveBulkTest.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/SelectiveBulkTest.java
deleted file mode 100644
index 48bf86a..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/SelectiveBulkTest.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.bulk;
-
-import java.util.Properties;
-
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-
-/**
- * Selectively runs the actual {@link BulkTest} based on the number of active TServers and the number of queued operations.
- */
-public abstract class SelectiveBulkTest extends BulkTest {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- if (SelectiveQueueing.shouldQueueOperation(state, env)) {
- super.visit(state, env, props);
- } else {
- log.debug("Skipping queueing of " + getClass().getSimpleName() + " because of excessive queued tasks already");
- log.debug("Waiting 30 seconds before continuing");
- try {
- Thread.sleep(30 * 1000);
- } catch (InterruptedException e) {}
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/SelectiveQueueing.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/SelectiveQueueing.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/SelectiveQueueing.java
deleted file mode 100644
index b3b4df3..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/SelectiveQueueing.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.bulk;
-
-import java.util.concurrent.ThreadPoolExecutor;
-
-import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Chooses whether or not an operation should be queued based on the current thread pool queue length and the number of available TServers.
- */
-public class SelectiveQueueing {
- private static final Logger log = LoggerFactory.getLogger(SelectiveQueueing.class);
-
- public static boolean shouldQueueOperation(State state, Environment env) throws Exception {
- final ThreadPoolExecutor pool = (ThreadPoolExecutor) state.get("pool");
- long queuedThreads = pool.getTaskCount() - pool.getActiveCount() - pool.getCompletedTaskCount();
- final Connector conn = env.getConnector();
- int numTservers = conn.instanceOperations().getTabletServers().size();
-
- if (!shouldQueue(queuedThreads, numTservers)) {
- log.info("Not queueing because of " + queuedThreads + " outstanding tasks");
- return false;
- }
-
- return true;
- }
-
- private static boolean shouldQueue(long queuedThreads, int numTservers) {
- return queuedThreads < numTservers * 50;
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/Setup.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/Setup.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/Setup.java
deleted file mode 100644
index b95c141..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/Setup.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.bulk;
-
-import java.net.InetAddress;
-import java.util.Properties;
-import java.util.Random;
-import java.util.concurrent.ThreadPoolExecutor;
-
-import org.apache.accumulo.core.client.IteratorSetting;
-import org.apache.accumulo.core.client.TableExistsException;
-import org.apache.accumulo.core.client.admin.TableOperations;
-import org.apache.accumulo.core.iterators.LongCombiner;
-import org.apache.accumulo.core.iterators.user.SummingCombiner;
-import org.apache.accumulo.core.util.CachedConfiguration;
-import org.apache.accumulo.core.util.SimpleThreadPool;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-import org.apache.hadoop.fs.FileSystem;
-
-public class Setup extends Test {
-
- private static final int MAX_POOL_SIZE = 8;
- static String tableName = null;
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- Random rand = new Random();
- String hostname = InetAddress.getLocalHost().getHostName().replaceAll("[-.]", "_");
- String pid = env.getPid();
- tableName = String.format("bulk_%s_%s_%d", hostname, pid, System.currentTimeMillis());
- log.info("Starting bulk test on " + tableName);
-
- TableOperations tableOps = env.getConnector().tableOperations();
- try {
- if (!tableOps.exists(getTableName())) {
- tableOps.create(getTableName());
- IteratorSetting is = new IteratorSetting(10, SummingCombiner.class);
- SummingCombiner.setEncodingType(is, LongCombiner.Type.STRING);
- SummingCombiner.setCombineAllColumns(is, true);
- tableOps.attachIterator(getTableName(), is);
- }
- } catch (TableExistsException ex) {
- // expected if there are multiple walkers
- }
- state.set("rand", rand);
- state.set("fs", FileSystem.get(CachedConfiguration.getInstance()));
- state.set("bulkImportSuccess", "true");
- BulkPlusOne.counter.set(0l);
-
- ThreadPoolExecutor e = new SimpleThreadPool(MAX_POOL_SIZE, "bulkImportPool");
- state.set("pool", e);
- }
-
- public static String getTableName() {
- return tableName;
- }
-
- public static ThreadPoolExecutor getThreadPool(State state) {
- return (ThreadPoolExecutor) state.get("pool");
- }
-
- public static void run(State state, Runnable r) {
- getThreadPool(state).submit(r);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/Split.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/Split.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/Split.java
deleted file mode 100644
index 641950e..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/Split.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.bulk;
-
-import java.util.Random;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.hadoop.io.Text;
-
-public class Split extends SelectiveBulkTest {
-
- @Override
- protected void runLater(State state, Environment env) throws Exception {
- SortedSet<Text> splits = new TreeSet<>();
- Random rand = (Random) state.get("rand");
- int count = rand.nextInt(20);
- for (int i = 0; i < count; i++)
- splits.add(new Text(String.format(BulkPlusOne.FMT, (rand.nextLong() & 0x7fffffffffffffffl) % BulkPlusOne.LOTS)));
- log.info("splitting " + splits);
- env.getConnector().tableOperations().addSplits(Setup.getTableName(), splits);
- log.info("split for " + splits + " finished");
- }
-
-}
[9/9] accumulo git commit: Merge branch 'accumulo-4510'
Posted by mw...@apache.org.
Merge branch 'accumulo-4510'
Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/1246aae1
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/1246aae1
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/1246aae1
Branch: refs/heads/master
Commit: 1246aae1cd9f492c8e738ba1734c740da4a5d1bc
Parents: f699305 5effa31
Author: Mike Walch <mw...@apache.org>
Authored: Tue Jan 10 10:15:45 2017 -0500
Committer: Mike Walch <mw...@apache.org>
Committed: Tue Jan 10 10:15:45 2017 -0500
----------------------------------------------------------------------
TESTING.md | 8 +-
assemble/src/main/assemblies/component.xml | 3 -
.../accumulo/test/randomwalk/Environment.java | 248 --------
.../accumulo/test/randomwalk/Fixture.java | 28 -
.../accumulo/test/randomwalk/Framework.java | 123 ----
.../apache/accumulo/test/randomwalk/Module.java | 624 -------------------
.../apache/accumulo/test/randomwalk/Node.java | 100 ---
.../apache/accumulo/test/randomwalk/State.java | 129 ----
.../apache/accumulo/test/randomwalk/Test.java | 28 -
.../test/randomwalk/bulk/BulkImportTest.java | 85 ---
.../test/randomwalk/bulk/BulkMinusOne.java | 35 --
.../test/randomwalk/bulk/BulkPlusOne.java | 117 ----
.../accumulo/test/randomwalk/bulk/BulkTest.java | 44 --
.../accumulo/test/randomwalk/bulk/Compact.java | 34 -
.../test/randomwalk/bulk/ConsistencyCheck.java | 57 --
.../accumulo/test/randomwalk/bulk/Merge.java | 61 --
.../test/randomwalk/bulk/SelectiveBulkTest.java | 42 --
.../test/randomwalk/bulk/SelectiveQueueing.java | 50 --
.../accumulo/test/randomwalk/bulk/Setup.java | 82 ---
.../accumulo/test/randomwalk/bulk/Split.java | 41 --
.../accumulo/test/randomwalk/bulk/Verify.java | 148 -----
.../test/randomwalk/concurrent/AddSplits.java | 62 --
.../test/randomwalk/concurrent/Apocalypse.java | 34 -
.../test/randomwalk/concurrent/BatchScan.java | 84 ---
.../test/randomwalk/concurrent/BatchWrite.java | 82 ---
.../test/randomwalk/concurrent/BulkImport.java | 151 -----
.../concurrent/ChangeAuthorizations.java | 63 --
.../concurrent/ChangePermissions.java | 156 -----
.../randomwalk/concurrent/CheckPermission.java | 70 ---
.../test/randomwalk/concurrent/CloneTable.java | 66 --
.../test/randomwalk/concurrent/Compact.java | 57 --
.../concurrent/ConcurrentFixture.java | 73 ---
.../test/randomwalk/concurrent/Config.java | 235 -------
.../randomwalk/concurrent/CreateNamespace.java | 49 --
.../test/randomwalk/concurrent/CreateTable.java | 61 --
.../test/randomwalk/concurrent/CreateUser.java | 49 --
.../randomwalk/concurrent/DeleteNamespace.java | 52 --
.../test/randomwalk/concurrent/DeleteRange.java | 66 --
.../test/randomwalk/concurrent/DeleteTable.java | 49 --
.../test/randomwalk/concurrent/DropUser.java | 48 --
.../randomwalk/concurrent/IsolatedScan.java | 74 ---
.../test/randomwalk/concurrent/ListSplits.java | 54 --
.../test/randomwalk/concurrent/Merge.java | 59 --
.../randomwalk/concurrent/OfflineTable.java | 56 --
.../randomwalk/concurrent/RenameNamespace.java | 53 --
.../test/randomwalk/concurrent/RenameTable.java | 90 ---
.../test/randomwalk/concurrent/Replication.java | 203 ------
.../test/randomwalk/concurrent/ScanTable.java | 72 ---
.../test/randomwalk/concurrent/Setup.java | 71 ---
.../test/randomwalk/concurrent/Shutdown.java | 63 --
.../test/randomwalk/concurrent/StartAll.java | 58 --
.../randomwalk/concurrent/StopTabletServer.java | 84 ---
.../test/randomwalk/conditional/Compact.java | 48 --
.../test/randomwalk/conditional/Flush.java | 48 --
.../test/randomwalk/conditional/Init.java | 94 ---
.../test/randomwalk/conditional/Merge.java | 49 --
.../test/randomwalk/conditional/Setup.java | 60 --
.../test/randomwalk/conditional/Split.java | 45 --
.../test/randomwalk/conditional/TearDown.java | 35 --
.../test/randomwalk/conditional/Transfer.java | 135 ----
.../test/randomwalk/conditional/Utils.java | 35 --
.../test/randomwalk/conditional/Verify.java | 89 ---
.../accumulo/test/randomwalk/image/Commit.java | 35 --
.../test/randomwalk/image/ImageFixture.java | 134 ----
.../test/randomwalk/image/ScanMeta.java | 111 ----
.../accumulo/test/randomwalk/image/TableOp.java | 81 ---
.../accumulo/test/randomwalk/image/Verify.java | 131 ----
.../accumulo/test/randomwalk/image/Write.java | 97 ---
.../test/randomwalk/multitable/Commit.java | 40 --
.../test/randomwalk/multitable/CopyTable.java | 92 ---
.../test/randomwalk/multitable/CopyTool.java | 131 ----
.../test/randomwalk/multitable/CreateTable.java | 67 --
.../test/randomwalk/multitable/DropTable.java | 51 --
.../multitable/MultiTableFixture.java | 74 ---
.../randomwalk/multitable/OfflineTable.java | 47 --
.../test/randomwalk/multitable/Write.java | 89 ---
.../randomwalk/security/AlterSystemPerm.java | 101 ---
.../test/randomwalk/security/AlterTable.java | 74 ---
.../randomwalk/security/AlterTablePerm.java | 180 ------
.../test/randomwalk/security/Authenticate.java | 82 ---
.../test/randomwalk/security/ChangePass.java | 94 ---
.../test/randomwalk/security/CreateTable.java | 75 ---
.../test/randomwalk/security/CreateUser.java | 70 ---
.../test/randomwalk/security/DropTable.java | 87 ---
.../test/randomwalk/security/DropUser.java | 68 --
.../randomwalk/security/SecurityFixture.java | 120 ----
.../randomwalk/security/SecurityHelper.java | 215 -------
.../test/randomwalk/security/SetAuths.java | 100 ---
.../test/randomwalk/security/TableOp.java | 257 --------
.../test/randomwalk/security/Validate.java | 124 ----
.../randomwalk/security/WalkingSecurity.java | 505 ---------------
.../test/randomwalk/sequential/BatchVerify.java | 132 ----
.../test/randomwalk/sequential/Commit.java | 36 --
.../randomwalk/sequential/MapRedVerify.java | 79 ---
.../randomwalk/sequential/MapRedVerifyTool.java | 156 -----
.../sequential/SequentialFixture.java | 80 ---
.../test/randomwalk/sequential/Write.java | 50 --
.../test/randomwalk/shard/BulkInsert.java | 191 ------
.../test/randomwalk/shard/CloneIndex.java | 45 --
.../accumulo/test/randomwalk/shard/Commit.java | 33 -
.../test/randomwalk/shard/CompactFilter.java | 94 ---
.../accumulo/test/randomwalk/shard/Delete.java | 58 --
.../test/randomwalk/shard/DeleteSomeDocs.java | 80 ---
.../test/randomwalk/shard/DeleteWord.java | 97 ---
.../test/randomwalk/shard/ExportIndex.java | 118 ----
.../accumulo/test/randomwalk/shard/Flush.java | 45 --
.../accumulo/test/randomwalk/shard/Grep.java | 97 ---
.../accumulo/test/randomwalk/shard/Insert.java | 136 ----
.../accumulo/test/randomwalk/shard/Merge.java | 49 --
.../accumulo/test/randomwalk/shard/Reindex.java | 66 --
.../accumulo/test/randomwalk/shard/Search.java | 105 ----
.../test/randomwalk/shard/ShardFixture.java | 137 ----
.../test/randomwalk/shard/SortTool.java | 75 ---
.../accumulo/test/randomwalk/shard/Split.java | 41 --
.../test/randomwalk/shard/VerifyIndex.java | 71 ---
.../test/randomwalk/unit/CreateTable.java | 30 -
.../test/randomwalk/unit/DeleteTable.java | 29 -
.../accumulo/test/randomwalk/unit/Ingest.java | 29 -
.../accumulo/test/randomwalk/unit/Scan.java | 29 -
.../accumulo/test/randomwalk/unit/Verify.java | 29 -
.../replication/ReplicationRandomWalkIT.java | 67 --
test/src/main/resources/randomwalk/module.xsd | 69 --
test/src/main/resources/unit/Basic.xml | 37 --
test/src/main/resources/unit/Simple.xml | 43 --
.../accumulo/test/randomwalk/FrameworkTest.java | 67 --
test/src/test/resources/randomwalk/Basic.xml | 37 --
test/src/test/resources/randomwalk/Simple.xml | 43 --
test/system/randomwalk/README.md | 99 ---
test/system/randomwalk/bin/apocalypse.sh | 49 --
test/system/randomwalk/bin/copy-config.sh | 38 --
test/system/randomwalk/bin/kill-all.sh | 40 --
test/system/randomwalk/bin/kill-local.sh | 19 -
test/system/randomwalk/bin/reset-cluster.sh | 83 ---
test/system/randomwalk/bin/start-all.sh | 62 --
test/system/randomwalk/bin/start-local.sh | 79 ---
test/system/randomwalk/conf/logger.xml.example | 74 ---
test/system/randomwalk/conf/modules/All.xml | 65 --
test/system/randomwalk/conf/modules/Bulk.xml | 61 --
.../randomwalk/conf/modules/Concurrent.xml | 181 ------
.../randomwalk/conf/modules/Conditional.xml | 74 ---
test/system/randomwalk/conf/modules/Image.xml | 70 ---
.../randomwalk/conf/modules/LongClean.xml | 60 --
.../randomwalk/conf/modules/LongDirty.xml | 60 --
.../system/randomwalk/conf/modules/LongEach.xml | 54 --
.../randomwalk/conf/modules/MultiTable.xml | 60 --
.../system/randomwalk/conf/modules/Security.xml | 224 -------
.../randomwalk/conf/modules/Sequential.xml | 51 --
test/system/randomwalk/conf/modules/Shard.xml | 123 ----
.../randomwalk/conf/modules/ShortClean.xml | 60 --
.../randomwalk/conf/modules/ShortDirty.xml | 60 --
.../randomwalk/conf/modules/ShortEach.xml | 54 --
.../randomwalk/conf/modules/unit/Basic.xml | 37 --
.../randomwalk/conf/modules/unit/Simple.xml | 43 --
.../randomwalk/conf/randomwalk.conf.example | 26 -
test/system/randomwalk/conf/walkers.example | 16 -
155 files changed, 4 insertions(+), 12999 deletions(-)
----------------------------------------------------------------------
[6/9] accumulo git commit: ACCUMULO-4510 Removing random walk test
code
Posted by mw...@apache.org.
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/Verify.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/Verify.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/Verify.java
deleted file mode 100644
index 97fec75..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/Verify.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.bulk;
-
-import static java.nio.charset.StandardCharsets.UTF_8;
-
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.Map.Entry;
-import java.util.Properties;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-
-import org.apache.accumulo.core.cli.ClientOnRequiredTable;
-import org.apache.accumulo.core.client.RowIterator;
-import org.apache.accumulo.core.client.Scanner;
-import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.Value;
-import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-import org.apache.hadoop.io.Text;
-
-public class Verify extends Test {
-
- static byte[] zero = new byte[] {'0'};
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- ThreadPoolExecutor threadPool = Setup.getThreadPool(state);
- threadPool.shutdown();
- int lastSize = 0;
- while (!threadPool.isTerminated()) {
- int size = threadPool.getQueue().size() + threadPool.getActiveCount();
- log.info("Waiting for " + size + " nodes to complete");
- if (size != lastSize)
- makingProgress();
- lastSize = size;
- threadPool.awaitTermination(10, TimeUnit.SECONDS);
- }
- if (!"true".equals(state.get("bulkImportSuccess"))) {
- log.info("Not verifying bulk import test due to import failures");
- return;
- }
-
- String user = env.getConnector().whoami();
- Authorizations auths = env.getConnector().securityOperations().getUserAuthorizations(user);
- Scanner scanner = env.getConnector().createScanner(Setup.getTableName(), auths);
- scanner.fetchColumnFamily(BulkPlusOne.CHECK_COLUMN_FAMILY);
- for (Entry<Key,Value> entry : scanner) {
- byte[] value = entry.getValue().get();
- if (!Arrays.equals(value, zero)) {
- throw new Exception("Bad key at " + entry);
- }
- }
-
- scanner.clearColumns();
- scanner.fetchColumnFamily(BulkPlusOne.MARKER_CF);
- RowIterator rowIter = new RowIterator(scanner);
-
- while (rowIter.hasNext()) {
- Iterator<Entry<Key,Value>> row = rowIter.next();
- long prev = 0;
- Text rowText = null;
- while (row.hasNext()) {
- Entry<Key,Value> entry = row.next();
-
- if (rowText == null)
- rowText = entry.getKey().getRow();
-
- long curr = Long.parseLong(entry.getKey().getColumnQualifier().toString());
-
- if (curr - 1 != prev)
- throw new Exception("Bad marker count " + entry.getKey() + " " + entry.getValue() + " " + prev);
-
- if (!entry.getValue().toString().equals("1"))
- throw new Exception("Bad marker value " + entry.getKey() + " " + entry.getValue());
-
- prev = curr;
- }
-
- if (BulkPlusOne.counter.get() != prev) {
- throw new Exception("Row " + rowText + " does not have all markers " + BulkPlusOne.counter.get() + " " + prev);
- }
- }
-
- log.info("Test successful on table " + Setup.getTableName());
- env.getConnector().tableOperations().delete(Setup.getTableName());
- }
-
- public static void main(String args[]) throws Exception {
- ClientOnRequiredTable opts = new ClientOnRequiredTable();
- opts.parseArgs(Verify.class.getName(), args);
- Scanner scanner = opts.getConnector().createScanner(opts.getTableName(), opts.auths);
- scanner.fetchColumnFamily(BulkPlusOne.CHECK_COLUMN_FAMILY);
- Text startBadRow = null;
- Text lastBadRow = null;
- Value currentBadValue = null;
- for (Entry<Key,Value> entry : scanner) {
- // System.out.println("Entry: " + entry);
- byte[] value = entry.getValue().get();
- if (!Arrays.equals(value, zero)) {
- if (currentBadValue == null || entry.getValue().equals(currentBadValue)) {
- // same value, keep skipping ahead
- lastBadRow = new Text(entry.getKey().getRow());
- if (startBadRow == null)
- startBadRow = lastBadRow;
- } else {
- // new bad value, report
- report(startBadRow, lastBadRow, currentBadValue);
- startBadRow = lastBadRow = new Text(entry.getKey().getRow());
- }
- currentBadValue = new Value(entry.getValue());
- } else {
- // end of bad range, report
- if (startBadRow != null) {
- report(startBadRow, lastBadRow, currentBadValue);
- }
- startBadRow = lastBadRow = null;
- currentBadValue = null;
- }
- }
- if (startBadRow != null) {
- report(startBadRow, lastBadRow, currentBadValue);
- }
- }
-
- private static void report(Text startBadRow, Text lastBadRow, Value value) {
- System.out.println("Bad value " + new String(value.get(), UTF_8));
- System.out.println(" Range [" + startBadRow + " -> " + lastBadRow + "]");
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/AddSplits.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/AddSplits.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/AddSplits.java
deleted file mode 100644
index dc040a6..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/AddSplits.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.concurrent;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-import java.util.Random;
-import java.util.TreeSet;
-
-import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.core.client.TableNotFoundException;
-import org.apache.accumulo.core.client.TableOfflineException;
-import org.apache.accumulo.core.metadata.MetadataTable;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-import org.apache.hadoop.io.Text;
-
-public class AddSplits extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- Connector conn = env.getConnector();
-
- Random rand = (Random) state.get("rand");
-
- @SuppressWarnings("unchecked")
- List<String> tableNames = (List<String>) state.get("tables");
- tableNames = new ArrayList<>(tableNames);
- tableNames.add(MetadataTable.NAME);
- String tableName = tableNames.get(rand.nextInt(tableNames.size()));
-
- TreeSet<Text> splits = new TreeSet<>();
-
- for (int i = 0; i < rand.nextInt(10) + 1; i++)
- splits.add(new Text(String.format("%016x", rand.nextLong() & 0x7fffffffffffffffl)));
-
- try {
- conn.tableOperations().addSplits(tableName, splits);
- log.debug("Added " + splits.size() + " splits " + tableName);
- } catch (TableNotFoundException e) {
- log.debug("AddSplits " + tableName + " failed, doesnt exist");
- } catch (TableOfflineException e) {
- log.debug("AddSplits " + tableName + " failed, offline");
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/Apocalypse.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/Apocalypse.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/Apocalypse.java
deleted file mode 100644
index b2d3d50..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/Apocalypse.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.concurrent;
-
-import java.util.Properties;
-
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class Apocalypse extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- Process exec = Runtime.getRuntime().exec(new String[] {System.getenv("ACCUMULO_HOME") + "/test/system/randomwalk/bin/apocalypse.sh"});
- if (exec.waitFor() != 0)
- throw new RuntimeException("apocalypse.sh returned a non-zero response: " + exec.exitValue());
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/BatchScan.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/BatchScan.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/BatchScan.java
deleted file mode 100644
index 111e6c7..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/BatchScan.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.concurrent;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map.Entry;
-import java.util.Properties;
-import java.util.Random;
-
-import org.apache.accumulo.core.client.AccumuloSecurityException;
-import org.apache.accumulo.core.client.BatchScanner;
-import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.core.client.TableDeletedException;
-import org.apache.accumulo.core.client.TableNotFoundException;
-import org.apache.accumulo.core.client.TableOfflineException;
-import org.apache.accumulo.core.data.Key;
-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.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class BatchScan extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- Connector conn = env.getConnector();
-
- Random rand = (Random) state.get("rand");
-
- @SuppressWarnings("unchecked")
- List<String> tableNames = (List<String>) state.get("tables");
-
- String tableName = tableNames.get(rand.nextInt(tableNames.size()));
-
- try {
- BatchScanner bs = conn.createBatchScanner(tableName, Authorizations.EMPTY, 3);
- List<Range> ranges = new ArrayList<>();
- for (int i = 0; i < rand.nextInt(2000) + 1; i++)
- ranges.add(new Range(String.format("%016x", rand.nextLong() & 0x7fffffffffffffffl)));
-
- bs.setRanges(ranges);
-
- try {
- Iterator<Entry<Key,Value>> iter = bs.iterator();
- while (iter.hasNext())
- iter.next();
- } finally {
- bs.close();
- }
-
- log.debug("Wrote to " + tableName);
- } catch (TableNotFoundException e) {
- log.debug("BatchScan " + tableName + " failed, doesnt exist");
- } catch (TableDeletedException tde) {
- log.debug("BatchScan " + tableName + " failed, table deleted");
- } catch (TableOfflineException e) {
- log.debug("BatchScan " + tableName + " failed, offline");
- } catch (RuntimeException e) {
- if (e.getCause() instanceof AccumuloSecurityException) {
- log.debug("BatchScan " + tableName + " failed, permission error");
- } else {
- throw e;
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/BatchWrite.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/BatchWrite.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/BatchWrite.java
deleted file mode 100644
index 76f5cbd..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/BatchWrite.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.concurrent;
-
-import static java.nio.charset.StandardCharsets.UTF_8;
-
-import java.util.List;
-import java.util.Properties;
-import java.util.Random;
-
-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.TableDeletedException;
-import org.apache.accumulo.core.client.TableNotFoundException;
-import org.apache.accumulo.core.client.TableOfflineException;
-import org.apache.accumulo.core.data.Mutation;
-import org.apache.accumulo.core.data.Value;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class BatchWrite extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- Connector conn = env.getConnector();
-
- Random rand = (Random) state.get("rand");
-
- @SuppressWarnings("unchecked")
- List<String> tableNames = (List<String>) state.get("tables");
-
- String tableName = tableNames.get(rand.nextInt(tableNames.size()));
-
- try {
- BatchWriter bw = conn.createBatchWriter(tableName, new BatchWriterConfig());
- try {
- int numRows = rand.nextInt(100000);
- for (int i = 0; i < numRows; i++) {
- Mutation m = new Mutation(String.format("%016x", rand.nextLong() & 0x7fffffffffffffffl));
- long val = rand.nextLong() & 0x7fffffffffffffffl;
- for (int j = 0; j < 10; j++) {
- m.put("cf", "cq" + j, new Value(String.format("%016x", val).getBytes(UTF_8)));
- }
-
- bw.addMutation(m);
- }
- } finally {
- bw.close();
- }
-
- log.debug("Wrote to " + tableName);
- } catch (TableNotFoundException e) {
- log.debug("BatchWrite " + tableName + " failed, doesnt exist");
- } catch (TableOfflineException e) {
- log.debug("BatchWrite " + tableName + " failed, offline");
- } catch (MutationsRejectedException mre) {
- if (mre.getCause() instanceof TableDeletedException)
- log.debug("BatchWrite " + tableName + " failed, table deleted");
- else if (mre.getCause() instanceof TableOfflineException)
- log.debug("BatchWrite " + tableName + " failed, offline");
- else
- throw mre;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/BulkImport.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/BulkImport.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/BulkImport.java
deleted file mode 100644
index 0e5e439..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/BulkImport.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.concurrent;
-
-import static java.nio.charset.StandardCharsets.UTF_8;
-
-import java.io.IOException;
-import java.util.List;
-import java.util.Properties;
-import java.util.Random;
-import java.util.TreeSet;
-
-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.TableNotFoundException;
-import org.apache.accumulo.core.client.TableOfflineException;
-import org.apache.accumulo.core.conf.AccumuloConfiguration;
-import org.apache.accumulo.core.data.ColumnUpdate;
-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.file.blockfile.impl.CachableBlockFile;
-import org.apache.accumulo.core.file.rfile.RFile;
-import org.apache.accumulo.core.file.streams.PositionedOutputs;
-import org.apache.accumulo.core.util.CachedConfiguration;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-
-public class BulkImport extends Test {
-
- public static class RFileBatchWriter implements BatchWriter {
-
- RFile.Writer writer;
-
- public RFileBatchWriter(Configuration conf, FileSystem fs, String file) throws IOException {
- AccumuloConfiguration aconf = AccumuloConfiguration.getDefaultConfiguration();
- CachableBlockFile.Writer cbw = new CachableBlockFile.Writer(PositionedOutputs.wrap(fs.create(new Path(file), false,
- conf.getInt("io.file.buffer.size", 4096), (short) conf.getInt("dfs.replication", 3), conf.getLong("dfs.block.size", 1 << 26))), "gz", conf, aconf);
- writer = new RFile.Writer(cbw, 100000);
- writer.startDefaultLocalityGroup();
- }
-
- @Override
- public void addMutation(Mutation m) throws MutationsRejectedException {
- List<ColumnUpdate> updates = m.getUpdates();
- for (ColumnUpdate cu : updates) {
- Key key = new Key(m.getRow(), cu.getColumnFamily(), cu.getColumnQualifier(), cu.getColumnVisibility(), 42, false, false);
- Value val = new Value(cu.getValue(), false);
-
- try {
- writer.append(key, val);
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
- }
-
- @Override
- public void addMutations(Iterable<Mutation> iterable) throws MutationsRejectedException {
- for (Mutation mutation : iterable)
- addMutation(mutation);
- }
-
- @Override
- public void flush() throws MutationsRejectedException {}
-
- @Override
- public void close() throws MutationsRejectedException {
- try {
- writer.close();
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
-
- }
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- Connector conn = env.getConnector();
-
- Random rand = (Random) state.get("rand");
-
- @SuppressWarnings("unchecked")
- List<String> tableNames = (List<String>) state.get("tables");
-
- String tableName = tableNames.get(rand.nextInt(tableNames.size()));
-
- Configuration conf = CachedConfiguration.getInstance();
- FileSystem fs = FileSystem.get(conf);
-
- String bulkDir = "/tmp/concurrent_bulk/b_" + String.format("%016x", rand.nextLong() & 0x7fffffffffffffffl);
-
- fs.mkdirs(new Path(bulkDir));
- fs.mkdirs(new Path(bulkDir + "_f"));
-
- try {
- BatchWriter bw = new RFileBatchWriter(conf, fs, bulkDir + "/file01.rf");
- try {
- TreeSet<Long> rows = new TreeSet<>();
- int numRows = rand.nextInt(100000);
- for (int i = 0; i < numRows; i++) {
- rows.add(rand.nextLong() & 0x7fffffffffffffffl);
- }
-
- for (Long row : rows) {
- Mutation m = new Mutation(String.format("%016x", row));
- long val = rand.nextLong() & 0x7fffffffffffffffl;
- for (int j = 0; j < 10; j++) {
- m.put("cf", "cq" + j, new Value(String.format("%016x", val).getBytes(UTF_8)));
- }
-
- bw.addMutation(m);
- }
- } finally {
- bw.close();
- }
-
- conn.tableOperations().importDirectory(tableName, bulkDir, bulkDir + "_f", rand.nextBoolean());
-
- log.debug("BulkImported to " + tableName);
- } catch (TableNotFoundException e) {
- log.debug("BulkImport " + tableName + " failed, doesnt exist");
- } catch (TableOfflineException toe) {
- log.debug("BulkImport " + tableName + " failed, offline");
- } finally {
- fs.delete(new Path(bulkDir), true);
- fs.delete(new Path(bulkDir + "_f"), true);
- }
-
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/ChangeAuthorizations.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/ChangeAuthorizations.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/ChangeAuthorizations.java
deleted file mode 100644
index 646c415..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/ChangeAuthorizations.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.concurrent;
-
-import static java.nio.charset.StandardCharsets.UTF_8;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-import java.util.Random;
-
-import org.apache.accumulo.core.client.AccumuloSecurityException;
-import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class ChangeAuthorizations extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- Connector conn = env.getConnector();
-
- Random rand = (Random) state.get("rand");
-
- @SuppressWarnings("unchecked")
- List<String> userNames = (List<String>) state.get("users");
-
- String userName = userNames.get(rand.nextInt(userNames.size()));
- try {
- List<byte[]> auths = new ArrayList<>(conn.securityOperations().getUserAuthorizations(userName).getAuthorizations());
-
- if (rand.nextBoolean()) {
- String authorization = String.format("a%d", rand.nextInt(5000));
- log.debug("adding authorization " + authorization);
- auths.add(authorization.getBytes(UTF_8));
- } else {
- if (auths.size() > 0) {
- log.debug("removing authorization " + new String(auths.remove(0), UTF_8));
- }
- }
- conn.securityOperations().changeUserAuthorizations(userName, new Authorizations(auths));
- } catch (AccumuloSecurityException ex) {
- log.debug("Unable to change user authorizations: " + ex.getCause());
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/ChangePermissions.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/ChangePermissions.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/ChangePermissions.java
deleted file mode 100644
index 7e8f789..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/ChangePermissions.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.concurrent;
-
-import java.util.ArrayList;
-import java.util.EnumSet;
-import java.util.List;
-import java.util.Properties;
-import java.util.Random;
-
-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.impl.thrift.TableOperationExceptionType;
-import org.apache.accumulo.core.client.impl.thrift.ThriftTableOperationException;
-import org.apache.accumulo.core.security.NamespacePermission;
-import org.apache.accumulo.core.security.SystemPermission;
-import org.apache.accumulo.core.security.TablePermission;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class ChangePermissions extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- Connector conn = env.getConnector();
-
- Random rand = (Random) state.get("rand");
-
- @SuppressWarnings("unchecked")
- List<String> userNames = (List<String>) state.get("users");
- String userName = userNames.get(rand.nextInt(userNames.size()));
-
- @SuppressWarnings("unchecked")
- List<String> tableNames = (List<String>) state.get("tables");
- String tableName = tableNames.get(rand.nextInt(tableNames.size()));
-
- @SuppressWarnings("unchecked")
- List<String> namespaces = (List<String>) state.get("namespaces");
- String namespace = namespaces.get(rand.nextInt(namespaces.size()));
-
- try {
- int dice = rand.nextInt(3);
- if (dice == 0)
- changeSystemPermission(conn, rand, userName);
- else if (dice == 1)
- changeTablePermission(conn, rand, userName, tableName);
- else if (dice == 2)
- changeNamespacePermission(conn, rand, userName, namespace);
- } catch (AccumuloSecurityException ex) {
- log.debug("Unable to change user permissions: " + ex.getCause());
- } catch (AccumuloException ex) {
- Throwable cause = ex.getCause();
- if (cause != null && cause instanceof ThriftTableOperationException) {
- ThriftTableOperationException toe = (ThriftTableOperationException) cause.getCause();
- if (toe.type == TableOperationExceptionType.NAMESPACE_NOTFOUND) {
- log.debug("Unable to change user permissions: " + toe);
- return;
- }
- }
- }
- }
-
- private void changeTablePermission(Connector conn, Random rand, String userName, String tableName) throws AccumuloException, AccumuloSecurityException {
-
- EnumSet<TablePermission> perms = EnumSet.noneOf(TablePermission.class);
- for (TablePermission p : TablePermission.values()) {
- if (conn.securityOperations().hasTablePermission(userName, tableName, p))
- perms.add(p);
- }
-
- EnumSet<TablePermission> more = EnumSet.allOf(TablePermission.class);
- more.removeAll(perms);
-
- if (rand.nextBoolean() && more.size() > 0) {
- List<TablePermission> moreList = new ArrayList<>(more);
- TablePermission choice = moreList.get(rand.nextInt(moreList.size()));
- log.debug("adding permission " + choice);
- conn.securityOperations().grantTablePermission(userName, tableName, choice);
- } else {
- if (perms.size() > 0) {
- List<TablePermission> permList = new ArrayList<>(perms);
- TablePermission choice = permList.get(rand.nextInt(permList.size()));
- log.debug("removing permission " + choice);
- conn.securityOperations().revokeTablePermission(userName, tableName, choice);
- }
- }
- }
-
- private void changeSystemPermission(Connector conn, Random rand, String userName) throws AccumuloException, AccumuloSecurityException {
- EnumSet<SystemPermission> perms = EnumSet.noneOf(SystemPermission.class);
- for (SystemPermission p : SystemPermission.values()) {
- if (conn.securityOperations().hasSystemPermission(userName, p))
- perms.add(p);
- }
-
- EnumSet<SystemPermission> more = EnumSet.allOf(SystemPermission.class);
- more.removeAll(perms);
- more.remove(SystemPermission.GRANT);
-
- if (rand.nextBoolean() && more.size() > 0) {
- List<SystemPermission> moreList = new ArrayList<>(more);
- SystemPermission choice = moreList.get(rand.nextInt(moreList.size()));
- log.debug("adding permission " + choice);
- conn.securityOperations().grantSystemPermission(userName, choice);
- } else {
- if (perms.size() > 0) {
- List<SystemPermission> permList = new ArrayList<>(perms);
- SystemPermission choice = permList.get(rand.nextInt(permList.size()));
- log.debug("removing permission " + choice);
- conn.securityOperations().revokeSystemPermission(userName, choice);
- }
- }
- }
-
- private void changeNamespacePermission(Connector conn, Random rand, String userName, String namespace) throws AccumuloException, AccumuloSecurityException {
-
- EnumSet<NamespacePermission> perms = EnumSet.noneOf(NamespacePermission.class);
- for (NamespacePermission p : NamespacePermission.values()) {
- if (conn.securityOperations().hasNamespacePermission(userName, namespace, p))
- perms.add(p);
- }
-
- EnumSet<NamespacePermission> more = EnumSet.allOf(NamespacePermission.class);
- more.removeAll(perms);
-
- if (rand.nextBoolean() && more.size() > 0) {
- List<NamespacePermission> moreList = new ArrayList<>(more);
- NamespacePermission choice = moreList.get(rand.nextInt(moreList.size()));
- log.debug("adding permission " + choice);
- conn.securityOperations().grantNamespacePermission(userName, namespace, choice);
- } else {
- if (perms.size() > 0) {
- List<NamespacePermission> permList = new ArrayList<>(perms);
- NamespacePermission choice = permList.get(rand.nextInt(permList.size()));
- log.debug("removing permission " + choice);
- conn.securityOperations().revokeNamespacePermission(userName, namespace, choice);
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/CheckPermission.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/CheckPermission.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/CheckPermission.java
deleted file mode 100644
index d759fef..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/CheckPermission.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.concurrent;
-
-import java.util.List;
-import java.util.Properties;
-import java.util.Random;
-
-import org.apache.accumulo.core.client.AccumuloSecurityException;
-import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.core.security.NamespacePermission;
-import org.apache.accumulo.core.security.SystemPermission;
-import org.apache.accumulo.core.security.TablePermission;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class CheckPermission extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- Connector conn = env.getConnector();
-
- Random rand = (Random) state.get("rand");
-
- @SuppressWarnings("unchecked")
- List<String> userNames = (List<String>) state.get("users");
- String userName = userNames.get(rand.nextInt(userNames.size()));
-
- @SuppressWarnings("unchecked")
- List<String> tableNames = (List<String>) state.get("tables");
- String tableName = tableNames.get(rand.nextInt(tableNames.size()));
-
- @SuppressWarnings("unchecked")
- List<String> namespaces = (List<String>) state.get("namespaces");
- String namespace = namespaces.get(rand.nextInt(namespaces.size()));
-
- try {
- int dice = rand.nextInt(2);
- if (dice == 0) {
- log.debug("Checking systerm permission " + userName);
- conn.securityOperations().hasSystemPermission(userName, SystemPermission.values()[rand.nextInt(SystemPermission.values().length)]);
- } else if (dice == 1) {
- log.debug("Checking table permission " + userName + " " + tableName);
- conn.securityOperations().hasTablePermission(userName, tableName, TablePermission.values()[rand.nextInt(TablePermission.values().length)]);
- } else if (dice == 2) {
- log.debug("Checking namespace permission " + userName + " " + namespace);
- conn.securityOperations().hasNamespacePermission(userName, namespace, NamespacePermission.values()[rand.nextInt(NamespacePermission.values().length)]);
- }
-
- } catch (AccumuloSecurityException ex) {
- log.debug("Unable to check permissions: " + ex.getCause());
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/CloneTable.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/CloneTable.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/CloneTable.java
deleted file mode 100644
index 90ad14a..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/CloneTable.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.concurrent;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Properties;
-import java.util.Random;
-
-import org.apache.accumulo.core.client.AccumuloException;
-import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.core.client.NamespaceNotFoundException;
-import org.apache.accumulo.core.client.TableExistsException;
-import org.apache.accumulo.core.client.TableNotFoundException;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class CloneTable extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- Connector conn = env.getConnector();
-
- Random rand = (Random) state.get("rand");
-
- @SuppressWarnings("unchecked")
- List<String> tableNames = (List<String>) state.get("tables");
-
- String srcTableName = tableNames.get(rand.nextInt(tableNames.size()));
- String newTableName = tableNames.get(rand.nextInt(tableNames.size()));
- boolean flush = rand.nextBoolean();
-
- try {
- log.debug("Cloning table " + srcTableName + " " + newTableName + " " + flush);
- conn.tableOperations().clone(srcTableName, newTableName, flush, new HashMap<String,String>(), new HashSet<String>());
- } catch (TableExistsException e) {
- log.debug("Clone " + srcTableName + " failed, " + newTableName + " exists");
- } catch (TableNotFoundException e) {
- log.debug("Clone " + srcTableName + " failed, doesnt exist");
- } catch (IllegalArgumentException e) {
- log.debug("Clone: " + e.toString());
- } catch (AccumuloException e) {
- Throwable cause = e.getCause();
- if (cause != null && cause instanceof NamespaceNotFoundException)
- log.debug("Clone: " + srcTableName + " to " + newTableName + " failed, namespace not found");
- else
- throw e;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/Compact.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/Compact.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/Compact.java
deleted file mode 100644
index d0f1010..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/Compact.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.concurrent;
-
-import java.util.List;
-import java.util.Properties;
-import java.util.Random;
-
-import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.core.client.TableNotFoundException;
-import org.apache.accumulo.core.client.TableOfflineException;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-import org.apache.hadoop.io.Text;
-
-public class Compact extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- Connector conn = env.getConnector();
-
- Random rand = (Random) state.get("rand");
-
- @SuppressWarnings("unchecked")
- List<String> tableNames = (List<String>) state.get("tables");
-
- String tableName = tableNames.get(rand.nextInt(tableNames.size()));
-
- List<Text> range = ConcurrentFixture.generateRange(rand);
-
- try {
- boolean wait = rand.nextBoolean();
- conn.tableOperations().compact(tableName, range.get(0), range.get(1), false, wait);
- log.debug((wait ? "compacted " : "initiated compaction ") + tableName + " from " + range.get(0) + " to " + range.get(1));
- } catch (TableNotFoundException tne) {
- log.debug("compact " + tableName + " from " + range.get(0) + " to " + range.get(1) + " failed, doesnt exist");
- } catch (TableOfflineException toe) {
- log.debug("compact " + tableName + " from " + range.get(0) + " to " + range.get(1) + " failed, offline");
- }
-
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/ConcurrentFixture.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/ConcurrentFixture.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/ConcurrentFixture.java
deleted file mode 100644
index 403a66a..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/ConcurrentFixture.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.concurrent;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Random;
-
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.Fixture;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.hadoop.io.Text;
-
-/**
- * When multiple instance of this test suite are run, all instances will operate on the same set of table names.
- *
- *
- */
-
-public class ConcurrentFixture extends Fixture {
-
- @Override
- public void setUp(State state, Environment env) throws Exception {}
-
- @Override
- public void tearDown(State state, Environment env) throws Exception {}
-
- /**
- *
- * @param rand
- * A Random to use
- * @return A two element list with first being smaller than the second, but either value (or both) can be null
- */
- public static List<Text> generateRange(Random rand) {
- ArrayList<Text> toRet = new ArrayList<>(2);
-
- long firstLong = rand.nextLong();
-
- long secondLong = rand.nextLong();
- Text first = null, second = null;
-
- // Having all negative values = null might be too frequent
- if (firstLong >= 0)
- first = new Text(String.format("%016x", firstLong & 0x7fffffffffffffffl));
- if (secondLong >= 0)
- second = new Text(String.format("%016x", secondLong & 0x7fffffffffffffffl));
-
- if (first != null && second != null && first.compareTo(second) > 0) {
- Text swap = first;
- first = second;
- second = swap;
- }
-
- toRet.add(first);
- toRet.add(second);
-
- return toRet;
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/Config.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/Config.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/Config.java
deleted file mode 100644
index b05e08c..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/Config.java
+++ /dev/null
@@ -1,235 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.concurrent;
-
-import java.util.Properties;
-import java.util.SortedSet;
-
-import org.apache.accumulo.core.client.AccumuloException;
-import org.apache.accumulo.core.client.impl.thrift.TableOperationExceptionType;
-import org.apache.accumulo.core.client.impl.thrift.ThriftTableOperationException;
-import org.apache.accumulo.core.conf.Property;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-import org.apache.commons.math3.random.RandomDataGenerator;
-
-public class Config extends Test {
-
- private static final String LAST_SETTING = "lastSetting";
-
- private static final String LAST_TABLE_SETTING = "lastTableSetting";
-
- private static final String LAST_NAMESPACE_SETTING = "lastNamespaceSetting";
-
- static class Setting {
- public Property property;
- public long min;
- public long max;
-
- public Setting(Property property, long min, long max) {
- this.property = property;
- this.min = min;
- this.max = max;
- }
- }
-
- static Setting s(Property property, long min, long max) {
- return new Setting(property, min, max);
- }
-
- // @formatter:off
- Setting[] settings = {
- s(Property.TSERV_BLOOM_LOAD_MAXCONCURRENT, 1, 10),
- s(Property.TSERV_BULK_PROCESS_THREADS, 1, 10),
- s(Property.TSERV_BULK_RETRY, 1, 10),
- s(Property.TSERV_BULK_TIMEOUT, 10, 600),
- s(Property.TSERV_BULK_ASSIGNMENT_THREADS, 1, 10),
- s(Property.TSERV_DATACACHE_SIZE, 0, 1000000000L),
- s(Property.TSERV_INDEXCACHE_SIZE, 0, 1000000000L),
- s(Property.TSERV_CLIENT_TIMEOUT, 100, 10000),
- s(Property.TSERV_MAJC_MAXCONCURRENT, 1, 10),
- s(Property.TSERV_MAJC_DELAY, 100, 10000),
- s(Property.TSERV_MAJC_THREAD_MAXOPEN, 3, 100),
- s(Property.TSERV_MINC_MAXCONCURRENT, 1, 10),
- s(Property.TSERV_DEFAULT_BLOCKSIZE, 100000, 10000000L),
- s(Property.TSERV_MAX_IDLE, 10000, 500 * 1000),
- s(Property.TSERV_MAXMEM, 1000000, 3 * 1024 * 1024 * 1024L),
- s(Property.TSERV_READ_AHEAD_MAXCONCURRENT, 1, 25),
- s(Property.TSERV_MIGRATE_MAXCONCURRENT, 1, 10),
- s(Property.TSERV_TOTAL_MUTATION_QUEUE_MAX, 10000, 1024 * 1024),
- s(Property.TSERV_RECOVERY_MAX_CONCURRENT, 1, 100),
- s(Property.TSERV_SCAN_MAX_OPENFILES, 10, 1000),
- s(Property.TSERV_THREADCHECK, 100, 10000),
- s(Property.TSERV_MINTHREADS, 1, 100),
- s(Property.TSERV_SESSION_MAXIDLE, 100, 5 * 60 * 1000),
- s(Property.TSERV_SORT_BUFFER_SIZE, 1024 * 1024, 1024 * 1024 * 1024L),
- s(Property.TSERV_TABLET_SPLIT_FINDMIDPOINT_MAXOPEN, 5, 100),
- s(Property.TSERV_WAL_BLOCKSIZE, 1024 * 1024, 1024 * 1024 * 1024 * 10L),
- s(Property.TSERV_WORKQ_THREADS, 1, 10),
- s(Property.MASTER_BULK_THREADPOOL_SIZE, 1, 10),
- s(Property.MASTER_BULK_RETRIES, 1, 10),
- s(Property.MASTER_BULK_TIMEOUT, 10, 600),
- s(Property.MASTER_FATE_THREADPOOL_SIZE, 1, 100),
- s(Property.MASTER_RECOVERY_DELAY, 0, 100),
- s(Property.MASTER_LEASE_RECOVERY_WAITING_PERIOD, 0, 10),
- s(Property.MASTER_RECOVERY_MAXTIME, 10, 1000),
- s(Property.MASTER_THREADCHECK, 100, 10000),
- s(Property.MASTER_MINTHREADS, 1, 200),};
-
- Setting[] tableSettings = {
- s(Property.TABLE_MAJC_RATIO, 1, 10),
- s(Property.TABLE_MAJC_COMPACTALL_IDLETIME, 100, 10 * 60 * 60 * 1000L),
- s(Property.TABLE_SPLIT_THRESHOLD, 10 * 1024, 10L * 1024 * 1024 * 1024),
- s(Property.TABLE_MINC_COMPACT_IDLETIME, 100, 100 * 60 * 60 * 1000L),
- s(Property.TABLE_SCAN_MAXMEM, 10 * 1024, 10 * 1024 * 1024),
- s(Property.TABLE_FILE_COMPRESSED_BLOCK_SIZE, 10 * 1024, 10 * 1024 * 1024L),
- s(Property.TABLE_FILE_COMPRESSED_BLOCK_SIZE_INDEX, 10 * 1024, 10 * 1024 * 1024L),
- s(Property.TABLE_FILE_REPLICATION, 0, 5),
- s(Property.TABLE_FILE_MAX, 2, 50),};
- // @formatter:on
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- // reset any previous setting
- Object lastSetting = state.getOkIfAbsent(LAST_SETTING);
- if (lastSetting != null) {
- int choice = Integer.parseInt(lastSetting.toString());
- Property property = settings[choice].property;
- log.debug("Setting " + property.getKey() + " back to " + property.getDefaultValue());
- env.getConnector().instanceOperations().setProperty(property.getKey(), property.getDefaultValue());
- }
- lastSetting = state.getOkIfAbsent(LAST_TABLE_SETTING);
- if (lastSetting != null) {
- String parts[] = lastSetting.toString().split(",");
- String table = parts[0];
- int choice = Integer.parseInt(parts[1]);
- Property property = tableSettings[choice].property;
- if (env.getConnector().tableOperations().exists(table)) {
- log.debug("Setting " + property.getKey() + " on " + table + " back to " + property.getDefaultValue());
- try {
- env.getConnector().tableOperations().setProperty(table, property.getKey(), property.getDefaultValue());
- } catch (AccumuloException ex) {
- if (ex.getCause() instanceof ThriftTableOperationException) {
- ThriftTableOperationException ttoe = (ThriftTableOperationException) ex.getCause();
- if (ttoe.type == TableOperationExceptionType.NOTFOUND)
- return;
- }
- throw ex;
- }
- }
- }
- lastSetting = state.getOkIfAbsent(LAST_NAMESPACE_SETTING);
- if (lastSetting != null) {
- String parts[] = lastSetting.toString().split(",");
- String namespace = parts[0];
- int choice = Integer.parseInt(parts[1]);
- Property property = tableSettings[choice].property;
- if (env.getConnector().namespaceOperations().exists(namespace)) {
- log.debug("Setting " + property.getKey() + " on " + namespace + " back to " + property.getDefaultValue());
- try {
- env.getConnector().namespaceOperations().setProperty(namespace, property.getKey(), property.getDefaultValue());
- } catch (AccumuloException ex) {
- if (ex.getCause() instanceof ThriftTableOperationException) {
- ThriftTableOperationException ttoe = (ThriftTableOperationException) ex.getCause();
- if (ttoe.type == TableOperationExceptionType.NAMESPACE_NOTFOUND)
- return;
- }
- throw ex;
- }
- }
- }
- state.remove(LAST_SETTING);
- state.remove(LAST_TABLE_SETTING);
- state.remove(LAST_NAMESPACE_SETTING);
- RandomDataGenerator random = new RandomDataGenerator();
- int dice = random.nextInt(0, 2);
- if (dice == 0) {
- changeTableSetting(random, state, env, props);
- } else if (dice == 1) {
- changeNamespaceSetting(random, state, env, props);
- } else {
- changeSetting(random, state, env, props);
- }
- }
-
- private void changeTableSetting(RandomDataGenerator random, State state, Environment env, Properties props) throws Exception {
- // pick a random property
- int choice = random.nextInt(0, tableSettings.length - 1);
- Setting setting = tableSettings[choice];
-
- // pick a random table
- SortedSet<String> tables = env.getConnector().tableOperations().list().tailSet("ctt").headSet("ctu");
- if (tables.isEmpty())
- return;
- String table = random.nextSample(tables, 1)[0].toString();
-
- // generate a random value
- long newValue = random.nextLong(setting.min, setting.max);
- state.set(LAST_TABLE_SETTING, table + "," + choice);
- log.debug("Setting " + setting.property.getKey() + " on table " + table + " to " + newValue);
- try {
- env.getConnector().tableOperations().setProperty(table, setting.property.getKey(), "" + newValue);
- } catch (AccumuloException ex) {
- if (ex.getCause() instanceof ThriftTableOperationException) {
- ThriftTableOperationException ttoe = (ThriftTableOperationException) ex.getCause();
- if (ttoe.type == TableOperationExceptionType.NOTFOUND)
- return;
- }
- throw ex;
- }
- }
-
- private void changeNamespaceSetting(RandomDataGenerator random, State state, Environment env, Properties props) throws Exception {
- // pick a random property
- int choice = random.nextInt(0, tableSettings.length - 1);
- Setting setting = tableSettings[choice];
-
- // pick a random table
- SortedSet<String> namespaces = env.getConnector().namespaceOperations().list().tailSet("nspc").headSet("nspd");
- if (namespaces.isEmpty())
- return;
- String namespace = random.nextSample(namespaces, 1)[0].toString();
-
- // generate a random value
- long newValue = random.nextLong(setting.min, setting.max);
- state.set(LAST_NAMESPACE_SETTING, namespace + "," + choice);
- log.debug("Setting " + setting.property.getKey() + " on namespace " + namespace + " to " + newValue);
- try {
- env.getConnector().namespaceOperations().setProperty(namespace, setting.property.getKey(), "" + newValue);
- } catch (AccumuloException ex) {
- if (ex.getCause() instanceof ThriftTableOperationException) {
- ThriftTableOperationException ttoe = (ThriftTableOperationException) ex.getCause();
- if (ttoe.type == TableOperationExceptionType.NAMESPACE_NOTFOUND)
- return;
- }
- throw ex;
- }
- }
-
- private void changeSetting(RandomDataGenerator random, State state, Environment env, Properties props) throws Exception {
- // pick a random property
- int choice = random.nextInt(0, settings.length - 1);
- Setting setting = settings[choice];
- // generate a random value
- long newValue = random.nextLong(setting.min, setting.max);
- state.set(LAST_SETTING, "" + choice);
- log.debug("Setting " + setting.property.getKey() + " to " + newValue);
- env.getConnector().instanceOperations().setProperty(setting.property.getKey(), "" + newValue);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/CreateNamespace.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/CreateNamespace.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/CreateNamespace.java
deleted file mode 100644
index a30c958..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/CreateNamespace.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.concurrent;
-
-import java.util.List;
-import java.util.Properties;
-import java.util.Random;
-
-import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.core.client.NamespaceExistsException;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class CreateNamespace extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- Connector conn = env.getConnector();
-
- Random rand = (Random) state.get("rand");
-
- @SuppressWarnings("unchecked")
- List<String> namespaces = (List<String>) state.get("namespaces");
-
- String namespace = namespaces.get(rand.nextInt(namespaces.size()));
-
- try {
- conn.namespaceOperations().create(namespace);
- log.debug("Created namespace " + namespace);
- } catch (NamespaceExistsException e) {
- log.debug("Create namespace " + namespace + " failed, it exists");
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/CreateTable.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/CreateTable.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/CreateTable.java
deleted file mode 100644
index 30d49f0..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/CreateTable.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.concurrent;
-
-import java.util.List;
-import java.util.Properties;
-import java.util.Random;
-
-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.NamespaceNotFoundException;
-import org.apache.accumulo.core.client.TableExistsException;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class CreateTable extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- Connector conn = env.getConnector();
-
- Random rand = (Random) state.get("rand");
-
- @SuppressWarnings("unchecked")
- List<String> tableNames = (List<String>) state.get("tables");
-
- String tableName = tableNames.get(rand.nextInt(tableNames.size()));
-
- try {
- conn.tableOperations().create(tableName);
- log.debug("Created table " + tableName);
- } catch (TableExistsException e) {
- log.debug("Create " + tableName + " failed, it exists");
- } catch (AccumuloException e) {
- if (e.getCause() != null && e.getCause() instanceof NamespaceNotFoundException)
- log.debug("Create " + tableName + " failed, the namespace does not exist");
- else
- throw e;
- } catch (IllegalArgumentException e) {
- log.debug("Create: " + e.toString());
- } catch (AccumuloSecurityException e) {
- log.debug("Could not create table: " + e);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/CreateUser.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/CreateUser.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/CreateUser.java
deleted file mode 100644
index e73e80a..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/CreateUser.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.concurrent;
-
-import java.util.List;
-import java.util.Properties;
-import java.util.Random;
-
-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.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class CreateUser extends Test {
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- Connector conn = env.getConnector();
-
- Random rand = (Random) state.get("rand");
-
- @SuppressWarnings("unchecked")
- List<String> userNames = (List<String>) state.get("users");
-
- String userName = userNames.get(rand.nextInt(userNames.size()));
-
- try {
- log.debug("Creating user " + userName);
- conn.securityOperations().createLocalUser(userName, new PasswordToken(userName + "pass"));
- } catch (AccumuloSecurityException ex) {
- log.debug("Create user failed " + ex.getCause());
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/DeleteNamespace.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/DeleteNamespace.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/DeleteNamespace.java
deleted file mode 100644
index 07d7350..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/DeleteNamespace.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.concurrent;
-
-import java.util.List;
-import java.util.Properties;
-import java.util.Random;
-
-import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.core.client.NamespaceNotEmptyException;
-import org.apache.accumulo.core.client.NamespaceNotFoundException;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class DeleteNamespace extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- Connector conn = env.getConnector();
-
- Random rand = (Random) state.get("rand");
-
- @SuppressWarnings("unchecked")
- List<String> namespaces = (List<String>) state.get("namespaces");
-
- String namespace = namespaces.get(rand.nextInt(namespaces.size()));
-
- try {
- conn.namespaceOperations().delete(namespace);
- log.debug("Deleted namespace " + namespace);
- } catch (NamespaceNotFoundException e) {
- log.debug("Delete namespace " + namespace + " failed, doesnt exist");
- } catch (NamespaceNotEmptyException e) {
- log.debug("Delete namespace " + namespace + " failed, not empty");
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/DeleteRange.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/DeleteRange.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/DeleteRange.java
deleted file mode 100644
index c164b6b..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/DeleteRange.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.concurrent;
-
-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.client.Connector;
-import org.apache.accumulo.core.client.TableNotFoundException;
-import org.apache.accumulo.core.client.TableOfflineException;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-import org.apache.hadoop.io.Text;
-
-public class DeleteRange extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- Connector conn = env.getConnector();
-
- Random rand = (Random) state.get("rand");
-
- @SuppressWarnings("unchecked")
- List<String> tableNames = (List<String>) state.get("tables");
-
- String tableName = tableNames.get(rand.nextInt(tableNames.size()));
-
- List<Text> range = new ArrayList<>();
- do {
- range.add(new Text(String.format("%016x", rand.nextLong() & 0x7fffffffffffffffl)));
- range.add(new Text(String.format("%016x", rand.nextLong() & 0x7fffffffffffffffl)));
- } while (range.get(0).equals(range.get(1)));
- Collections.sort(range);
- if (rand.nextInt(20) == 0)
- range.set(0, null);
- if (rand.nextInt(20) == 0)
- range.set(1, null);
-
- try {
- conn.tableOperations().deleteRows(tableName, range.get(0), range.get(1));
- log.debug("deleted rows (" + range.get(0) + " -> " + range.get(1) + "] in " + tableName);
- } catch (TableNotFoundException tne) {
- log.debug("deleted rows " + tableName + " failed, doesnt exist");
- } catch (TableOfflineException toe) {
- log.debug("deleted rows " + tableName + " failed, offline");
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/DeleteTable.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/DeleteTable.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/DeleteTable.java
deleted file mode 100644
index 4bee7f1..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/DeleteTable.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.concurrent;
-
-import java.util.List;
-import java.util.Properties;
-import java.util.Random;
-
-import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.core.client.TableNotFoundException;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class DeleteTable extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- Connector conn = env.getConnector();
-
- Random rand = (Random) state.get("rand");
-
- @SuppressWarnings("unchecked")
- List<String> tableNames = (List<String>) state.get("tables");
-
- String tableName = tableNames.get(rand.nextInt(tableNames.size()));
-
- try {
- conn.tableOperations().delete(tableName);
- log.debug("Deleted table " + tableName);
- } catch (TableNotFoundException e) {
- log.debug("Delete " + tableName + " failed, doesnt exist");
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/DropUser.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/DropUser.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/DropUser.java
deleted file mode 100644
index a4442c6..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/DropUser.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.concurrent;
-
-import java.util.List;
-import java.util.Properties;
-import java.util.Random;
-
-import org.apache.accumulo.core.client.AccumuloSecurityException;
-import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class DropUser extends Test {
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- Connector conn = env.getConnector();
-
- Random rand = (Random) state.get("rand");
-
- @SuppressWarnings("unchecked")
- List<String> userNames = (List<String>) state.get("users");
-
- String userName = userNames.get(rand.nextInt(userNames.size()));
-
- try {
- log.debug("Dropping user " + userName);
- conn.securityOperations().dropLocalUser(userName);
- } catch (AccumuloSecurityException ex) {
- log.debug("Unable to drop " + ex.getCause());
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/IsolatedScan.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/IsolatedScan.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/IsolatedScan.java
deleted file mode 100644
index eac39fa..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/IsolatedScan.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.concurrent;
-
-import java.util.List;
-import java.util.Map.Entry;
-import java.util.Properties;
-import java.util.Random;
-
-import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.core.client.IsolatedScanner;
-import org.apache.accumulo.core.client.RowIterator;
-import org.apache.accumulo.core.client.TableDeletedException;
-import org.apache.accumulo.core.client.TableNotFoundException;
-import org.apache.accumulo.core.client.TableOfflineException;
-import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.Value;
-import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.core.util.PeekingIterator;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class IsolatedScan extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- Connector conn = env.getConnector();
-
- Random rand = (Random) state.get("rand");
-
- @SuppressWarnings("unchecked")
- List<String> tableNames = (List<String>) state.get("tables");
-
- String tableName = tableNames.get(rand.nextInt(tableNames.size()));
-
- try {
- RowIterator iter = new RowIterator(new IsolatedScanner(conn.createScanner(tableName, Authorizations.EMPTY)));
-
- while (iter.hasNext()) {
- PeekingIterator<Entry<Key,Value>> row = new PeekingIterator<>(iter.next());
- Entry<Key,Value> kv = null;
- if (row.hasNext())
- kv = row.peek();
- while (row.hasNext()) {
- Entry<Key,Value> currentKV = row.next();
- if (!kv.getValue().equals(currentKV.getValue()))
- throw new Exception("values not equal " + kv + " " + currentKV);
- }
- }
- log.debug("Isolated scan " + tableName);
- } catch (TableDeletedException e) {
- log.debug("Isolated scan " + tableName + " failed, table deleted");
- } catch (TableNotFoundException e) {
- log.debug("Isolated scan " + tableName + " failed, doesnt exist");
- } catch (TableOfflineException e) {
- log.debug("Isolated scan " + tableName + " failed, offline");
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/ListSplits.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/ListSplits.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/ListSplits.java
deleted file mode 100644
index 6944092..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/ListSplits.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.concurrent;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Properties;
-import java.util.Random;
-
-import org.apache.accumulo.core.client.AccumuloSecurityException;
-import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.core.client.TableNotFoundException;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-import org.apache.hadoop.io.Text;
-
-public class ListSplits extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- Connector conn = env.getConnector();
-
- Random rand = (Random) state.get("rand");
-
- @SuppressWarnings("unchecked")
- List<String> tableNames = (List<String>) state.get("tables");
-
- String tableName = tableNames.get(rand.nextInt(tableNames.size()));
-
- try {
- Collection<Text> splits = conn.tableOperations().listSplits(tableName);
- log.debug("Table " + tableName + " had " + splits.size() + " splits");
- } catch (TableNotFoundException e) {
- log.debug("listSplits " + tableName + " failed, doesnt exist");
- } catch (AccumuloSecurityException ase) {
- log.debug("listSplits " + tableName + " failed, " + ase.getMessage());
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/Merge.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/Merge.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/Merge.java
deleted file mode 100644
index fe84dca..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/Merge.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.concurrent;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-import java.util.Random;
-
-import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.core.client.TableNotFoundException;
-import org.apache.accumulo.core.client.TableOfflineException;
-import org.apache.accumulo.core.metadata.MetadataTable;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-import org.apache.hadoop.io.Text;
-
-public class Merge extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- Connector conn = env.getConnector();
-
- Random rand = (Random) state.get("rand");
-
- @SuppressWarnings("unchecked")
- List<String> tableNames = (List<String>) state.get("tables");
- tableNames = new ArrayList<>(tableNames);
- tableNames.add(MetadataTable.NAME);
- String tableName = tableNames.get(rand.nextInt(tableNames.size()));
-
- List<Text> range = ConcurrentFixture.generateRange(rand);
-
- try {
- conn.tableOperations().merge(tableName, range.get(0), range.get(1));
- log.debug("merged " + tableName + " from " + range.get(0) + " to " + range.get(1));
- } catch (TableOfflineException toe) {
- log.debug("merge " + tableName + " from " + range.get(0) + " to " + range.get(1) + " failed, table is not online");
- } catch (TableNotFoundException tne) {
- log.debug("merge " + tableName + " from " + range.get(0) + " to " + range.get(1) + " failed, doesnt exist");
- }
-
- }
-}
[2/9] accumulo git commit: ACCUMULO-4510 Removing random walk test
code
Posted by mw...@apache.org.
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/DeleteSomeDocs.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/DeleteSomeDocs.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/DeleteSomeDocs.java
deleted file mode 100644
index 08fcb4f..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/DeleteSomeDocs.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.shard;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Properties;
-import java.util.Random;
-
-import org.apache.accumulo.core.client.BatchDeleter;
-import org.apache.accumulo.core.client.BatchWriterConfig;
-import org.apache.accumulo.core.client.IteratorSetting;
-import org.apache.accumulo.core.data.Range;
-import org.apache.accumulo.core.iterators.user.RegExFilter;
-import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-//a test created to test the batch deleter
-public class DeleteSomeDocs extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- // delete documents that where the document id matches a given pattern from doc and index table
- // using the batch deleter
-
- Random rand = (Random) state.get("rand");
- String indexTableName = (String) state.get("indexTableName");
- String dataTableName = (String) state.get("docTableName");
-
- ArrayList<String> patterns = new ArrayList<>();
-
- for (Object key : props.keySet())
- if (key instanceof String && ((String) key).startsWith("pattern"))
- patterns.add(props.getProperty((String) key));
-
- String pattern = patterns.get(rand.nextInt(patterns.size()));
- BatchWriterConfig bwc = new BatchWriterConfig();
- BatchDeleter ibd = env.getConnector().createBatchDeleter(indexTableName, Authorizations.EMPTY, 8, bwc);
- ibd.setRanges(Collections.singletonList(new Range()));
-
- IteratorSetting iterSettings = new IteratorSetting(100, RegExFilter.class);
- RegExFilter.setRegexs(iterSettings, null, null, pattern, null, false);
-
- ibd.addScanIterator(iterSettings);
-
- ibd.delete();
-
- ibd.close();
-
- BatchDeleter dbd = env.getConnector().createBatchDeleter(dataTableName, Authorizations.EMPTY, 8, bwc);
- dbd.setRanges(Collections.singletonList(new Range()));
-
- iterSettings = new IteratorSetting(100, RegExFilter.class);
- RegExFilter.setRegexs(iterSettings, pattern, null, null, null, false);
-
- dbd.addScanIterator(iterSettings);
-
- dbd.delete();
-
- dbd.close();
-
- log.debug("Deleted documents w/ id matching '" + pattern + "'");
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/DeleteWord.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/DeleteWord.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/DeleteWord.java
deleted file mode 100644
index 9de0240..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/DeleteWord.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.shard;
-
-import java.util.ArrayList;
-import java.util.Map.Entry;
-import java.util.Properties;
-import java.util.Random;
-
-import org.apache.accumulo.core.client.BatchScanner;
-import org.apache.accumulo.core.client.BatchWriter;
-import org.apache.accumulo.core.client.Scanner;
-import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.Mutation;
-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.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-import org.apache.hadoop.io.Text;
-
-/**
- * Delete all documents containing a particular word.
- *
- */
-
-public class DeleteWord extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- String indexTableName = (String) state.get("indexTableName");
- String docTableName = (String) state.get("docTableName");
- int numPartitions = (Integer) state.get("numPartitions");
- Random rand = (Random) state.get("rand");
-
- String wordToDelete = Insert.generateRandomWord(rand);
-
- // use index to find all documents containing word
- Scanner scanner = env.getConnector().createScanner(indexTableName, Authorizations.EMPTY);
- scanner.fetchColumnFamily(new Text(wordToDelete));
-
- ArrayList<Range> documentsToDelete = new ArrayList<>();
-
- for (Entry<Key,Value> entry : scanner)
- documentsToDelete.add(new Range(entry.getKey().getColumnQualifier()));
-
- if (documentsToDelete.size() > 0) {
- // use a batch scanner to fetch all documents
- BatchScanner bscanner = env.getConnector().createBatchScanner(docTableName, Authorizations.EMPTY, 8);
- bscanner.setRanges(documentsToDelete);
-
- BatchWriter ibw = env.getMultiTableBatchWriter().getBatchWriter(indexTableName);
- BatchWriter dbw = env.getMultiTableBatchWriter().getBatchWriter(docTableName);
-
- int count = 0;
-
- for (Entry<Key,Value> entry : bscanner) {
- String docID = entry.getKey().getRow().toString();
- String doc = entry.getValue().toString();
-
- Insert.unindexDocument(ibw, doc, docID, numPartitions);
-
- Mutation m = new Mutation(docID);
- m.putDelete("doc", "");
-
- dbw.addMutation(m);
- count++;
- }
-
- bscanner.close();
-
- env.getMultiTableBatchWriter().flush();
-
- if (count != documentsToDelete.size()) {
- throw new Exception("Batch scanner did not return expected number of docs " + count + " " + documentsToDelete.size());
- }
- }
-
- log.debug("Deleted " + documentsToDelete.size() + " documents containing " + wordToDelete);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/ExportIndex.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/ExportIndex.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/ExportIndex.java
deleted file mode 100644
index 5b57ace..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/ExportIndex.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.shard;
-
-import static java.nio.charset.StandardCharsets.UTF_8;
-
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map.Entry;
-import java.util.Properties;
-
-import org.apache.accumulo.core.conf.Property;
-import org.apache.accumulo.core.util.CachedConfiguration;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.FileUtil;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.io.Text;
-
-/**
- *
- */
-public class ExportIndex extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
-
- String indexTableName = (String) state.get("indexTableName");
- String tmpIndexTableName = indexTableName + "_tmp";
-
- String exportDir = "/tmp/shard_export/" + indexTableName;
- String copyDir = "/tmp/shard_export/" + tmpIndexTableName;
-
- FileSystem fs = FileSystem.get(CachedConfiguration.getInstance());
-
- fs.delete(new Path("/tmp/shard_export/" + indexTableName), true);
- fs.delete(new Path("/tmp/shard_export/" + tmpIndexTableName), true);
-
- // disable spits, so that splits can be compared later w/o worrying one table splitting and the other not
- env.getConnector().tableOperations().setProperty(indexTableName, Property.TABLE_SPLIT_THRESHOLD.getKey(), "20G");
-
- long t1 = System.currentTimeMillis();
-
- env.getConnector().tableOperations().flush(indexTableName, null, null, true);
- env.getConnector().tableOperations().offline(indexTableName);
-
- long t2 = System.currentTimeMillis();
-
- env.getConnector().tableOperations().exportTable(indexTableName, exportDir);
-
- long t3 = System.currentTimeMillis();
-
- // copy files
- BufferedReader reader = new BufferedReader(new InputStreamReader(fs.open(new Path(exportDir, "distcp.txt")), UTF_8));
- String file = null;
- while ((file = reader.readLine()) != null) {
- Path src = new Path(file);
- Path dest = new Path(new Path(copyDir), src.getName());
- FileUtil.copy(fs, src, fs, dest, false, true, CachedConfiguration.getInstance());
- }
-
- reader.close();
-
- long t4 = System.currentTimeMillis();
-
- env.getConnector().tableOperations().online(indexTableName);
- env.getConnector().tableOperations().importTable(tmpIndexTableName, copyDir);
-
- long t5 = System.currentTimeMillis();
-
- fs.delete(new Path(exportDir), true);
- fs.delete(new Path(copyDir), true);
-
- HashSet<Text> splits1 = new HashSet<>(env.getConnector().tableOperations().listSplits(indexTableName));
- HashSet<Text> splits2 = new HashSet<>(env.getConnector().tableOperations().listSplits(tmpIndexTableName));
-
- if (!splits1.equals(splits2))
- throw new Exception("Splits not equals " + indexTableName + " " + tmpIndexTableName);
-
- HashMap<String,String> props1 = new HashMap<>();
- for (Entry<String,String> entry : env.getConnector().tableOperations().getProperties(indexTableName))
- props1.put(entry.getKey(), entry.getValue());
-
- HashMap<String,String> props2 = new HashMap<>();
- for (Entry<String,String> entry : env.getConnector().tableOperations().getProperties(tmpIndexTableName))
- props2.put(entry.getKey(), entry.getValue());
-
- if (!props1.equals(props2))
- throw new Exception("Props not equals " + indexTableName + " " + tmpIndexTableName);
-
- // unset the split threshold
- env.getConnector().tableOperations().removeProperty(indexTableName, Property.TABLE_SPLIT_THRESHOLD.getKey());
- env.getConnector().tableOperations().removeProperty(tmpIndexTableName, Property.TABLE_SPLIT_THRESHOLD.getKey());
-
- log.debug("Imported " + tmpIndexTableName + " from " + indexTableName + " flush: " + (t2 - t1) + "ms export: " + (t3 - t2) + "ms copy:" + (t4 - t3)
- + "ms import:" + (t5 - t4) + "ms");
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/Flush.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/Flush.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/Flush.java
deleted file mode 100644
index 39d32c4..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/Flush.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.shard;
-
-import java.util.Properties;
-import java.util.Random;
-
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class Flush extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- String indexTableName = (String) state.get("indexTableName");
- String dataTableName = (String) state.get("docTableName");
- Random rand = (Random) state.get("rand");
-
- String table;
-
- if (rand.nextDouble() < .5)
- table = indexTableName;
- else
- table = dataTableName;
-
- env.getConnector().tableOperations().flush(table, null, null, true);
- log.debug("Flushed " + table);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/Grep.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/Grep.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/Grep.java
deleted file mode 100644
index 7409ea7..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/Grep.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.shard;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Map.Entry;
-import java.util.Properties;
-import java.util.Random;
-
-import org.apache.accumulo.core.client.BatchScanner;
-import org.apache.accumulo.core.client.IteratorSetting;
-import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.Range;
-import org.apache.accumulo.core.data.Value;
-import org.apache.accumulo.core.iterators.user.IntersectingIterator;
-import org.apache.accumulo.core.iterators.user.RegExFilter;
-import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-import org.apache.hadoop.io.Text;
-
-public class Grep extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- // pick a few randoms words... grep for those words and search the index
- // ensure both return the same set of documents
-
- String indexTableName = (String) state.get("indexTableName");
- String dataTableName = (String) state.get("docTableName");
- Random rand = (Random) state.get("rand");
-
- Text words[] = new Text[rand.nextInt(4) + 2];
-
- for (int i = 0; i < words.length; i++) {
- words[i] = new Text(Insert.generateRandomWord(rand));
- }
-
- BatchScanner bs = env.getConnector().createBatchScanner(indexTableName, Authorizations.EMPTY, 16);
- IteratorSetting ii = new IteratorSetting(20, "ii", IntersectingIterator.class.getName());
- IntersectingIterator.setColumnFamilies(ii, words);
- bs.addScanIterator(ii);
- bs.setRanges(Collections.singleton(new Range()));
-
- HashSet<Text> documentsFoundInIndex = new HashSet<>();
-
- for (Entry<Key,Value> entry2 : bs) {
- documentsFoundInIndex.add(entry2.getKey().getColumnQualifier());
- }
-
- bs.close();
-
- bs = env.getConnector().createBatchScanner(dataTableName, Authorizations.EMPTY, 16);
-
- for (int i = 0; i < words.length; i++) {
- IteratorSetting more = new IteratorSetting(20 + i, "ii" + i, RegExFilter.class);
- RegExFilter.setRegexs(more, null, null, null, "(^|(.*\\s))" + words[i] + "($|(\\s.*))", false);
- bs.addScanIterator(more);
- }
-
- bs.setRanges(Collections.singleton(new Range()));
-
- HashSet<Text> documentsFoundByGrep = new HashSet<>();
-
- for (Entry<Key,Value> entry2 : bs) {
- documentsFoundByGrep.add(entry2.getKey().getRow());
- }
-
- bs.close();
-
- if (!documentsFoundInIndex.equals(documentsFoundByGrep)) {
- throw new Exception("Set of documents found not equal for words " + Arrays.asList(words).toString() + " " + documentsFoundInIndex + " "
- + documentsFoundByGrep);
- }
-
- log.debug("Grep and index agree " + Arrays.asList(words).toString() + " " + documentsFoundInIndex.size());
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/Insert.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/Insert.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/Insert.java
deleted file mode 100644
index 8482a59..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/Insert.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.shard;
-
-import java.util.HashSet;
-import java.util.Properties;
-import java.util.Random;
-
-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.TableNotFoundException;
-import org.apache.accumulo.core.data.Mutation;
-import org.apache.accumulo.core.data.Value;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class Insert extends Test {
-
- static final int NUM_WORDS = 100000;
- static final int MIN_WORDS_PER_DOC = 10;
- static final int MAX_WORDS_PER_DOC = 3000;
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- String indexTableName = (String) state.get("indexTableName");
- String dataTableName = (String) state.get("docTableName");
- int numPartitions = (Integer) state.get("numPartitions");
- Random rand = (Random) state.get("rand");
- long nextDocID = (Long) state.get("nextDocID");
-
- BatchWriter dataWriter = env.getMultiTableBatchWriter().getBatchWriter(dataTableName);
- BatchWriter indexWriter = env.getMultiTableBatchWriter().getBatchWriter(indexTableName);
-
- String docID = insertRandomDocument(nextDocID++, dataWriter, indexWriter, indexTableName, dataTableName, numPartitions, rand);
-
- log.debug("Inserted document " + docID);
-
- state.set("nextDocID", Long.valueOf(nextDocID));
- }
-
- static String insertRandomDocument(long did, BatchWriter dataWriter, BatchWriter indexWriter, String indexTableName, String dataTableName, int numPartitions,
- Random rand) throws TableNotFoundException, Exception, AccumuloException, AccumuloSecurityException {
- String doc = createDocument(rand);
-
- String docID = new StringBuilder(String.format("%016x", did)).reverse().toString();
-
- saveDocument(dataWriter, docID, doc);
- indexDocument(indexWriter, doc, docID, numPartitions);
-
- return docID;
- }
-
- static void saveDocument(BatchWriter bw, String docID, String doc) throws Exception {
-
- Mutation m = new Mutation(docID);
- m.put("doc", "", doc);
-
- bw.addMutation(m);
- }
-
- static String createDocument(Random rand) {
- StringBuilder sb = new StringBuilder();
-
- int numWords = rand.nextInt(MAX_WORDS_PER_DOC - MIN_WORDS_PER_DOC) + MIN_WORDS_PER_DOC;
-
- for (int i = 0; i < numWords; i++) {
- String word = generateRandomWord(rand);
-
- if (i > 0)
- sb.append(" ");
-
- sb.append(word);
- }
-
- return sb.toString();
- }
-
- static String generateRandomWord(Random rand) {
- return Integer.toString(rand.nextInt(NUM_WORDS), Character.MAX_RADIX);
- }
-
- static String genPartition(int partition) {
- return String.format("%06x", Math.abs(partition));
- }
-
- static void indexDocument(BatchWriter bw, String doc, String docId, int numPartitions) throws Exception {
- indexDocument(bw, doc, docId, numPartitions, false);
- }
-
- static void unindexDocument(BatchWriter bw, String doc, String docId, int numPartitions) throws Exception {
- indexDocument(bw, doc, docId, numPartitions, true);
- }
-
- static void indexDocument(BatchWriter bw, String doc, String docId, int numPartitions, boolean delete) throws Exception {
-
- String[] tokens = doc.split("\\W+");
-
- String partition = genPartition(doc.hashCode() % numPartitions);
-
- Mutation m = new Mutation(partition);
-
- HashSet<String> tokensSeen = new HashSet<>();
-
- for (String token : tokens) {
- token = token.toLowerCase();
-
- if (!tokensSeen.contains(token)) {
- tokensSeen.add(token);
- if (delete)
- m.putDelete(token, docId);
- else
- m.put(token, docId, new Value(new byte[0]));
- }
- }
-
- if (m.size() > 0)
- bw.addMutation(m);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/Merge.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/Merge.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/Merge.java
deleted file mode 100644
index 910e64c..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/Merge.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.shard;
-
-import java.util.Collection;
-import java.util.Properties;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-import org.apache.hadoop.io.Text;
-
-public class Merge extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- String indexTableName = (String) state.get("indexTableName");
-
- Collection<Text> splits = env.getConnector().tableOperations().listSplits(indexTableName);
- SortedSet<Text> splitSet = new TreeSet<>(splits);
- log.debug("merging " + indexTableName);
- env.getConnector().tableOperations().merge(indexTableName, null, null);
- org.apache.accumulo.core.util.Merge merge = new org.apache.accumulo.core.util.Merge();
- merge.mergomatic(env.getConnector(), indexTableName, null, null, 256 * 1024 * 1024, true);
- splits = env.getConnector().tableOperations().listSplits(indexTableName);
- if (splits.size() > splitSet.size()) {
- // throw an excpetion so that test will die an no further changes to table will occur...
- // this way table is left as is for debugging.
- throw new Exception("There are more tablets after a merge: " + splits.size() + " was " + splitSet.size());
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/Reindex.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/Reindex.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/Reindex.java
deleted file mode 100644
index 5aed6e3..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/Reindex.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.shard;
-
-import java.util.Map.Entry;
-import java.util.Properties;
-import java.util.Random;
-
-import org.apache.accumulo.core.client.BatchWriter;
-import org.apache.accumulo.core.client.BatchWriterConfig;
-import org.apache.accumulo.core.client.Scanner;
-import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.Value;
-import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class Reindex extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- String indexTableName = (String) state.get("indexTableName");
- String tmpIndexTableName = indexTableName + "_tmp";
- String docTableName = (String) state.get("docTableName");
- int numPartitions = (Integer) state.get("numPartitions");
-
- Random rand = (Random) state.get("rand");
-
- ShardFixture.createIndexTable(this.log, state, env, "_tmp", rand);
-
- Scanner scanner = env.getConnector().createScanner(docTableName, Authorizations.EMPTY);
- BatchWriter tbw = env.getConnector().createBatchWriter(tmpIndexTableName, new BatchWriterConfig());
-
- int count = 0;
-
- for (Entry<Key,Value> entry : scanner) {
- String docID = entry.getKey().getRow().toString();
- String doc = entry.getValue().toString();
-
- Insert.indexDocument(tbw, doc, docID, numPartitions);
-
- count++;
- }
-
- tbw.close();
-
- log.debug("Reindexed " + count + " documents into " + tmpIndexTableName);
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/Search.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/Search.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/Search.java
deleted file mode 100644
index bccb280..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/Search.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.shard;
-
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map.Entry;
-import java.util.Properties;
-import java.util.Random;
-
-import org.apache.accumulo.core.client.BatchScanner;
-import org.apache.accumulo.core.client.IteratorSetting;
-import org.apache.accumulo.core.client.Scanner;
-import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.Range;
-import org.apache.accumulo.core.data.Value;
-import org.apache.accumulo.core.iterators.user.IntersectingIterator;
-import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-import org.apache.hadoop.io.Text;
-
-public class Search extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- String indexTableName = (String) state.get("indexTableName");
- String dataTableName = (String) state.get("docTableName");
-
- Random rand = (Random) state.get("rand");
-
- Entry<Key,Value> entry = findRandomDocument(state, env, dataTableName, rand);
- if (entry == null)
- return;
-
- Text docID = entry.getKey().getRow();
- String doc = entry.getValue().toString();
-
- String[] tokens = doc.split("\\W+");
- int numSearchTerms = rand.nextInt(6);
- if (numSearchTerms < 2)
- numSearchTerms = 2;
-
- HashSet<String> searchTerms = new HashSet<>();
- while (searchTerms.size() < numSearchTerms)
- searchTerms.add(tokens[rand.nextInt(tokens.length)]);
-
- Text columns[] = new Text[searchTerms.size()];
- int index = 0;
- for (String term : searchTerms) {
- columns[index++] = new Text(term);
- }
-
- log.debug("Looking up terms " + searchTerms + " expect to find " + docID);
-
- BatchScanner bs = env.getConnector().createBatchScanner(indexTableName, Authorizations.EMPTY, 10);
- IteratorSetting ii = new IteratorSetting(20, "ii", IntersectingIterator.class);
- IntersectingIterator.setColumnFamilies(ii, columns);
- bs.addScanIterator(ii);
- bs.setRanges(Collections.singleton(new Range()));
-
- boolean sawDocID = false;
-
- for (Entry<Key,Value> entry2 : bs) {
- if (entry2.getKey().getColumnQualifier().equals(docID)) {
- sawDocID = true;
- break;
- }
- }
-
- bs.close();
-
- if (!sawDocID)
- throw new Exception("Did not see doc " + docID + " in index. terms:" + searchTerms + " " + indexTableName + " " + dataTableName);
- }
-
- static Entry<Key,Value> findRandomDocument(State state, Environment env, String dataTableName, Random rand) throws Exception {
- Scanner scanner = env.getConnector().createScanner(dataTableName, Authorizations.EMPTY);
- scanner.setBatchSize(1);
- scanner.setRange(new Range(Integer.toString(rand.nextInt(0xfffffff), 16), null));
-
- Iterator<Entry<Key,Value>> iter = scanner.iterator();
- if (!iter.hasNext())
- return null;
-
- return iter.next();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/ShardFixture.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/ShardFixture.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/ShardFixture.java
deleted file mode 100644
index 99e3a61..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/ShardFixture.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.shard;
-
-import java.net.InetAddress;
-import java.util.Random;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.core.client.MultiTableBatchWriter;
-import org.apache.accumulo.core.client.MutationsRejectedException;
-import org.apache.accumulo.core.conf.Property;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.Fixture;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.hadoop.io.Text;
-import org.apache.log4j.Logger;
-
-public class ShardFixture extends Fixture {
-
- static SortedSet<Text> genSplits(long max, int numTablets, String format) {
-
- int numSplits = numTablets - 1;
- long distance = max / numTablets;
- long split = distance;
-
- TreeSet<Text> splits = new TreeSet<>();
-
- for (int i = 0; i < numSplits; i++) {
- splits.add(new Text(String.format(format, split)));
- split += distance;
- }
-
- return splits;
- }
-
- static void createIndexTable(Logger log, State state, Environment env, String suffix, Random rand) throws Exception {
- Connector conn = env.getConnector();
- String name = (String) state.get("indexTableName") + suffix;
- int numPartitions = (Integer) state.get("numPartitions");
- boolean enableCache = (Boolean) state.get("cacheIndex");
- conn.tableOperations().create(name);
-
- String tableId = conn.tableOperations().tableIdMap().get(name);
- log.info("Created index table " + name + "(id:" + tableId + ")");
-
- SortedSet<Text> splits = genSplits(numPartitions, rand.nextInt(numPartitions) + 1, "%06x");
- conn.tableOperations().addSplits(name, splits);
-
- log.info("Added " + splits.size() + " splits to " + name);
-
- if (enableCache) {
- conn.tableOperations().setProperty(name, Property.TABLE_INDEXCACHE_ENABLED.getKey(), "true");
- conn.tableOperations().setProperty(name, Property.TABLE_BLOCKCACHE_ENABLED.getKey(), "true");
-
- log.info("Enabled caching for table " + name);
- }
- }
-
- @Override
- public void setUp(State state, Environment env) throws Exception {
- String hostname = InetAddress.getLocalHost().getHostName().replaceAll("[-.]", "_");
- String pid = env.getPid();
-
- Random rand = new Random();
-
- int numPartitions = rand.nextInt(90) + 10;
-
- state.set("indexTableName", String.format("ST_index_%s_%s_%d", hostname, pid, System.currentTimeMillis()));
- state.set("docTableName", String.format("ST_docs_%s_%s_%d", hostname, pid, System.currentTimeMillis()));
- state.set("numPartitions", Integer.valueOf(numPartitions));
- state.set("cacheIndex", rand.nextDouble() < .5);
- state.set("rand", rand);
- state.set("nextDocID", Long.valueOf(0));
-
- Connector conn = env.getConnector();
-
- createIndexTable(this.log, state, env, "", rand);
-
- String docTableName = (String) state.get("docTableName");
- conn.tableOperations().create(docTableName);
-
- String tableId = conn.tableOperations().tableIdMap().get(docTableName);
- log.info("Created doc table " + docTableName + " (id:" + tableId + ")");
-
- SortedSet<Text> splits = genSplits(0xff, rand.nextInt(32) + 1, "%02x");
- conn.tableOperations().addSplits(docTableName, splits);
-
- log.info("Added " + splits.size() + " splits to " + docTableName);
-
- if (rand.nextDouble() < .5) {
- conn.tableOperations().setProperty((String) state.get("docTableName"), Property.TABLE_BLOOM_ENABLED.getKey(), "true");
- log.info("Enabled bloom filters for table " + (String) state.get("docTableName"));
- }
- }
-
- @Override
- public void tearDown(State state, Environment env) throws Exception {
- // We have resources we need to clean up
- if (env.isMultiTableBatchWriterInitialized()) {
- MultiTableBatchWriter mtbw = env.getMultiTableBatchWriter();
- try {
- mtbw.close();
- } catch (MutationsRejectedException e) {
- log.error("Ignoring mutations that weren't flushed", e);
- }
-
- // Reset the MTBW on the state to null
- env.resetMultiTableBatchWriter();
- }
-
- Connector conn = env.getConnector();
-
- log.info("Deleting index and doc tables");
-
- conn.tableOperations().delete((String) state.get("indexTableName"));
- conn.tableOperations().delete((String) state.get("docTableName"));
-
- log.debug("Exiting shard test");
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/SortTool.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/SortTool.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/SortTool.java
deleted file mode 100644
index cdeccb3..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/SortTool.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.shard;
-
-import java.util.Collection;
-
-import org.apache.accumulo.core.client.mapreduce.AccumuloFileOutputFormat;
-import org.apache.accumulo.core.client.mapreduce.lib.partition.KeyRangePartitioner;
-import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.Value;
-import org.apache.hadoop.conf.Configured;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.io.Text;
-import org.apache.hadoop.mapreduce.Job;
-import org.apache.hadoop.mapreduce.lib.input.SequenceFileInputFormat;
-import org.apache.hadoop.util.Tool;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class SortTool extends Configured implements Tool {
- protected final Logger log = LoggerFactory.getLogger(this.getClass());
- private String outputDir;
- private String seqFile;
- private String splitFile;
- private Collection<Text> splits;
-
- public SortTool(String seqFile, String outputDir, String splitFile, Collection<Text> splits) {
- this.outputDir = outputDir;
- this.seqFile = seqFile;
- this.splitFile = splitFile;
- this.splits = splits;
- }
-
- @Override
- public int run(String[] args) throws Exception {
- Job job = Job.getInstance(getConf(), this.getClass().getSimpleName());
- job.setJarByClass(this.getClass());
-
- if (job.getJar() == null) {
- log.error("M/R requires a jar file! Run mvn package.");
- return 1;
- }
-
- job.setInputFormatClass(SequenceFileInputFormat.class);
- SequenceFileInputFormat.setInputPaths(job, seqFile);
-
- job.setPartitionerClass(KeyRangePartitioner.class);
- KeyRangePartitioner.setSplitFile(job, splitFile);
-
- job.setMapOutputKeyClass(Key.class);
- job.setMapOutputValueClass(Value.class);
-
- job.setNumReduceTasks(splits.size() + 1);
-
- job.setOutputFormatClass(AccumuloFileOutputFormat.class);
- AccumuloFileOutputFormat.setOutputPath(job, new Path(outputDir));
-
- job.waitForCompletion(true);
- return job.isSuccessful() ? 0 : 1;
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/Split.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/Split.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/Split.java
deleted file mode 100644
index 0420fb8..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/Split.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.shard;
-
-import java.util.Properties;
-import java.util.Random;
-import java.util.SortedSet;
-
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-import org.apache.hadoop.io.Text;
-
-public class Split extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- String indexTableName = (String) state.get("indexTableName");
- int numPartitions = (Integer) state.get("numPartitions");
- Random rand = (Random) state.get("rand");
-
- SortedSet<Text> splitSet = ShardFixture.genSplits(numPartitions, rand.nextInt(numPartitions) + 1, "%06x");
- log.debug("adding splits " + indexTableName);
- env.getConnector().tableOperations().addSplits(indexTableName, splitSet);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/VerifyIndex.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/VerifyIndex.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/VerifyIndex.java
deleted file mode 100644
index 70440d8..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/VerifyIndex.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.shard;
-
-import java.util.Iterator;
-import java.util.Map.Entry;
-import java.util.Properties;
-
-import org.apache.accumulo.core.client.Scanner;
-import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.PartialKey;
-import org.apache.accumulo.core.data.Value;
-import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class VerifyIndex extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
-
- String indexTableName = (String) state.get("indexTableName");
- String tmpIndexTableName = indexTableName + "_tmp";
-
- // scan new and old index and verify identical
- Scanner indexScanner1 = env.getConnector().createScanner(tmpIndexTableName, Authorizations.EMPTY);
- Scanner indexScanner2 = env.getConnector().createScanner(indexTableName, Authorizations.EMPTY);
-
- Iterator<Entry<Key,Value>> iter = indexScanner2.iterator();
-
- int count = 0;
-
- for (Entry<Key,Value> entry : indexScanner1) {
- if (!iter.hasNext())
- throw new Exception("index rebuild mismatch " + entry.getKey() + " " + indexTableName);
-
- Key key1 = entry.getKey();
- Key key2 = iter.next().getKey();
-
- if (!key1.equals(key2, PartialKey.ROW_COLFAM_COLQUAL))
- throw new Exception("index rebuild mismatch " + key1 + " " + key2 + " " + indexTableName + " " + tmpIndexTableName);
- count++;
- if (count % 1000 == 0)
- makingProgress();
- }
-
- if (iter.hasNext())
- throw new Exception("index rebuild mismatch " + iter.next().getKey() + " " + tmpIndexTableName);
-
- log.debug("Verified " + count + " index entries ");
-
- env.getConnector().tableOperations().delete(indexTableName);
- env.getConnector().tableOperations().rename(tmpIndexTableName, indexTableName);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/unit/CreateTable.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/unit/CreateTable.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/unit/CreateTable.java
deleted file mode 100644
index 2e14de7..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/unit/CreateTable.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.accumulo.test.randomwalk.unit;
-
-import java.util.Properties;
-
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class CreateTable extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {}
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/unit/DeleteTable.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/unit/DeleteTable.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/unit/DeleteTable.java
deleted file mode 100644
index c0b7e65..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/unit/DeleteTable.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.unit;
-
-import java.util.Properties;
-
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class DeleteTable extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {}
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/unit/Ingest.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/unit/Ingest.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/unit/Ingest.java
deleted file mode 100644
index 40f3555..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/unit/Ingest.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.unit;
-
-import java.util.Properties;
-
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class Ingest extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {}
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/unit/Scan.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/unit/Scan.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/unit/Scan.java
deleted file mode 100644
index 5273ea8..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/unit/Scan.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.unit;
-
-import java.util.Properties;
-
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class Scan extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {}
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/unit/Verify.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/unit/Verify.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/unit/Verify.java
deleted file mode 100644
index c41d633..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/unit/Verify.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.unit;
-
-import java.util.Properties;
-
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class Verify extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {}
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/replication/ReplicationRandomWalkIT.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/replication/ReplicationRandomWalkIT.java b/test/src/main/java/org/apache/accumulo/test/replication/ReplicationRandomWalkIT.java
deleted file mode 100644
index 80bc69d..0000000
--- a/test/src/main/java/org/apache/accumulo/test/replication/ReplicationRandomWalkIT.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.replication;
-
-import static org.apache.accumulo.core.conf.Property.TSERV_ARCHIVE_WALOGS;
-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.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.concurrent.Replication;
-import org.apache.hadoop.conf.Configuration;
-import org.junit.Test;
-
-public class ReplicationRandomWalkIT extends ConfigurableMacBase {
-
- @Override
- protected void configure(MiniAccumuloConfigImpl cfg, Configuration hadoopCoreSite) {
- cfg.setProperty(TSERV_ARCHIVE_WALOGS, "false");
- cfg.setProperty(TSERV_WALOG_MAX_SIZE, "1M");
- cfg.setNumTservers(1);
- }
-
- @Test(timeout = 5 * 60 * 1000)
- public void runReplicationRandomWalkStep() throws Exception {
- Replication r = new Replication();
-
- Environment env = new Environment(new Properties()) {
- @Override
- public String getUserName() {
- return "root";
- }
-
- @Override
- public String getPassword() {
- return ROOT_PASSWORD;
- }
-
- @Override
- public Connector getConnector() throws AccumuloException, AccumuloSecurityException {
- return ReplicationRandomWalkIT.this.getConnector();
- }
-
- };
- r.visit(null, env, null);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/resources/randomwalk/module.xsd
----------------------------------------------------------------------
diff --git a/test/src/main/resources/randomwalk/module.xsd b/test/src/main/resources/randomwalk/module.xsd
deleted file mode 100644
index bcdaaae0..0000000
--- a/test/src/main/resources/randomwalk/module.xsd
+++ /dev/null
@@ -1,69 +0,0 @@
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
- <xsd:element name="module" type="ModuleType"/>
-
- <xsd:complexType name="ModuleType">
- <xsd:sequence>
- <xsd:element name="package" type="PrefixType" minOccurs="0" maxOccurs="unbounded"/>
- <xsd:element name="fixture" type="InitType" minOccurs="0" maxOccurs="1"/>
- <xsd:element name="init" type="InitType"/>
- <xsd:element name="node" type="NodeType" minOccurs="1" maxOccurs="unbounded"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:complexType name="PrefixType">
- <xsd:attribute name="prefix" type="xsd:string"/>
- <xsd:attribute name="value" type="xsd:string"/>
- </xsd:complexType>
-
- <xsd:complexType name="InitType">
- <xsd:attribute name="id" type="xsd:string"/>
- <xsd:attribute name="maxHops" type="xsd:nonNegativeInteger"/>
- <xsd:attribute name="maxSec" type="xsd:nonNegativeInteger"/>
- <xsd:attribute name="teardown" type="xsd:boolean"/>
- </xsd:complexType>
-
- <xsd:complexType name="NodeType">
- <xsd:sequence>
- <xsd:element name="alias" type="AliasType" minOccurs="0" maxOccurs="unbounded"/>
- <xsd:element name="property" type="PropertyType" minOccurs="0" maxOccurs="unbounded"/>
- <xsd:element name="edge" type="EdgeType" minOccurs="1" maxOccurs="unbounded"/>
- </xsd:sequence>
- <xsd:attribute name="id" type="xsd:string"/>
- <xsd:attribute name="src" type="xsd:string"/>
- <xsd:attribute name="maxHops" type="xsd:nonNegativeInteger"/>
- <xsd:attribute name="maxSec" type="xsd:nonNegativeInteger"/>
- <xsd:attribute name="teardown" type="xsd:boolean"/>
- </xsd:complexType>
-
- <xsd:complexType name="EdgeType">
- <xsd:attribute name="id" type="xsd:string"/>
- <xsd:attribute name="weight" type="xsd:positiveInteger"/>
- </xsd:complexType>
-
- <xsd:complexType name="AliasType">
- <xsd:attribute name="name" type="xsd:string"/>
- </xsd:complexType>
-
- <xsd:complexType name="PropertyType">
- <xsd:attribute name="key" type="xsd:string"/>
- <xsd:attribute name="value" type="xsd:string"/>
- </xsd:complexType>
-
-</xsd:schema>
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/resources/unit/Basic.xml
----------------------------------------------------------------------
diff --git a/test/src/main/resources/unit/Basic.xml b/test/src/main/resources/unit/Basic.xml
deleted file mode 100644
index 2dead02..0000000
--- a/test/src/main/resources/unit/Basic.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<module>
-
-<package prefix="test" value="org.apache.accumulo.test.randomwalk.unit"/>
-
-<init id="test.CreateTable"/>
-
-<node id="test.CreateTable">
- <edge id="unit/Simple.xml" weight="1"/>
-</node>
-
-<node id="unit/Simple.xml">
- <edge id="unit/Simple.xml" weight="3"/>
- <edge id="test.DeleteTable" weight="1"/>
-</node>
-
-<node id="test.DeleteTable">
- <edge id="END" weight="1"/>
-</node>
-
-</module>
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/resources/unit/Simple.xml
----------------------------------------------------------------------
diff --git a/test/src/main/resources/unit/Simple.xml b/test/src/main/resources/unit/Simple.xml
deleted file mode 100644
index cad940e..0000000
--- a/test/src/main/resources/unit/Simple.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<module>
-
-<package prefix="test" value="org.apache.accumulo.test.randomwalk.unit"/>
-
-<init id="dummy.all"/>
-
-<node id="dummy.all">
- <edge id="test.Ingest" weight="1"/>
- <edge id="test.Verify" weight="1"/>
- <edge id="test.Scan" weight="1"/>
- <edge id="END" weight="1"/>
-</node>
-
-<node id="test.Ingest">
- <edge id="dummy.all" weight="1"/>
-</node>
-
-<node id="test.Verify">
- <edge id="dummy.all" weight="1"/>
-</node>
-
-<node id="test.Scan">
- <edge id="dummy.all" weight="1"/>
-</node>
-
-</module>
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/test/java/org/apache/accumulo/test/randomwalk/FrameworkTest.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/accumulo/test/randomwalk/FrameworkTest.java b/test/src/test/java/org/apache/accumulo/test/randomwalk/FrameworkTest.java
deleted file mode 100644
index ca003ab..0000000
--- a/test/src/test/java/org/apache/accumulo/test/randomwalk/FrameworkTest.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URISyntaxException;
-
-import javax.xml.XMLConstants;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.validation.Schema;
-import javax.xml.validation.SchemaFactory;
-
-import org.apache.accumulo.test.randomwalk.unit.CreateTable;
-import org.w3c.dom.Document;
-import org.xml.sax.SAXException;
-
-public class FrameworkTest {
-
- // Need to use fully qualified name here because of conflict with org.apache.accumulo.test.randomwalk.Test
- @org.junit.Test
- public void testXML() throws SAXException, URISyntaxException, ParserConfigurationException, IOException {
- SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
- Schema moduleSchema = sf.newSchema(getFile("/randomwalk/module.xsd"));
-
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
- dbf.setSchema(moduleSchema);
-
- DocumentBuilder docbuilder = dbf.newDocumentBuilder();
- Document document = docbuilder.parse(getFile("/randomwalk/Basic.xml"));
-
- assertNotEquals("Parsing randomwalk xml should result in nodes.", 0, document.getChildNodes().getLength());
- }
-
- private File getFile(String resource) throws URISyntaxException {
- return new File(this.getClass().getResource(resource).toURI());
- }
-
- @org.junit.Test
- public void testRWTest() {
- Test t1 = new CreateTable();
- assertEquals("org.apache.accumulo.test.randomwalk.unit.CreateTable", t1.toString());
-
- Test t2 = new CreateTable();
- assertEquals("CreateTable test nodes were not equal.", t1, t2);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/test/resources/randomwalk/Basic.xml
----------------------------------------------------------------------
diff --git a/test/src/test/resources/randomwalk/Basic.xml b/test/src/test/resources/randomwalk/Basic.xml
deleted file mode 100644
index 2dead02..0000000
--- a/test/src/test/resources/randomwalk/Basic.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<module>
-
-<package prefix="test" value="org.apache.accumulo.test.randomwalk.unit"/>
-
-<init id="test.CreateTable"/>
-
-<node id="test.CreateTable">
- <edge id="unit/Simple.xml" weight="1"/>
-</node>
-
-<node id="unit/Simple.xml">
- <edge id="unit/Simple.xml" weight="3"/>
- <edge id="test.DeleteTable" weight="1"/>
-</node>
-
-<node id="test.DeleteTable">
- <edge id="END" weight="1"/>
-</node>
-
-</module>
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/test/resources/randomwalk/Simple.xml
----------------------------------------------------------------------
diff --git a/test/src/test/resources/randomwalk/Simple.xml b/test/src/test/resources/randomwalk/Simple.xml
deleted file mode 100644
index cad940e..0000000
--- a/test/src/test/resources/randomwalk/Simple.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<module>
-
-<package prefix="test" value="org.apache.accumulo.test.randomwalk.unit"/>
-
-<init id="dummy.all"/>
-
-<node id="dummy.all">
- <edge id="test.Ingest" weight="1"/>
- <edge id="test.Verify" weight="1"/>
- <edge id="test.Scan" weight="1"/>
- <edge id="END" weight="1"/>
-</node>
-
-<node id="test.Ingest">
- <edge id="dummy.all" weight="1"/>
-</node>
-
-<node id="test.Verify">
- <edge id="dummy.all" weight="1"/>
-</node>
-
-<node id="test.Scan">
- <edge id="dummy.all" weight="1"/>
-</node>
-
-</module>
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/system/randomwalk/README.md
----------------------------------------------------------------------
diff --git a/test/system/randomwalk/README.md b/test/system/randomwalk/README.md
deleted file mode 100644
index 786a160..0000000
--- a/test/system/randomwalk/README.md
+++ /dev/null
@@ -1,99 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements. See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-
-Apache Accumulo Random Walk Tests
-=================================
-
-The randomwalk framework needs to be configured for your Accumulo instance by
-doing the following steps:
-
-1. Make sure you have both `ACCUMULO_HOME` and `HADOOP_HOME` set in your
- `$ACCUMULO_CONF_DIR/accumulo-env.sh`.
-
-2. Create 'randomwalk.conf' file in the `conf` directory containing settings
- needed by walkers to connect to Accumulo.
-
-3. Create a 'walkers' file in the `conf` directory containing the hostnames of
- the machines where you want random walkers to run.
-
-3. Create a 'logger.xml' file in the `conf` directory from `logger.xml.example`.
-
-The command below starts random walkers on all machines listed in 'walkers'.
-The argument `Image.xml` indicates the module to use (which is located at
-`conf/modules/Image.xml`):
-
-> `$ ./bin/start-all.sh Image.xml`
-
-All modules must be in `conf/modules` and can be referenced without this prefix.
-For example, a module located at `conf/modules/foo/bar.xml` is started as
-the following:
-
-> `$ ./bin/start-all.sh foo/bar.xml`
-
-This command will load all configuration in the `conf` directory to HDFS and
-start identical random walkers on each node. These random walkers will
-download the current configuration from HDFS and place them in the `tmp/`
-directory.
-
-Random walkers will drop their logs in the `logs/` directory. If you are running
-multiple walkers and want ERROR/WARNs dropped to an NFS-hosted log, please set
-`NFS_LOGPATH` to a NFS-mounted directory and uncomment the NFS appender in `logger.xml`.
-
-You can kill all walkers on the machines listed in the 'walkers' file using
-the following command:
-
-> `$ ./bin/kill-all.sh`
-
-Module-Specific Configuration
------------------------------
-
-The user accounts for walkers that run the Concurrent.xml module must have
-password-less SSH access to the entire Accumulo cluster, so that they may run
-`$ACCUMULO_HOME/bin/start-all.sh`. Note that this is not the same script as the
-one that starts random walkers; it is the script to start up an Accumulo
-cluster. You can test that access is in place by running
-`$ACCUMULO_HOME/bin/start-all.sh` from the command line of each walker account.
-
-The above access is also needed for any modules that include Concurrent.xml,
-e.g., ShortClean.xml, LongClean.xml.
-
-Other Useful Commands
----------------------
-
-Copies configuration in `conf/` to HDFS:
-
-> `$ copy-config.sh`
-
-Copies configuration from HDFS into `tmp/` and starts only one local random walker.
-
-> `$ start-local.sh All.xml`
-
-Stops all local random walkers:
-
-> `$ pkill -f randomwalk.Framework`
-
-Known Issues
-------------
-
-If you are running randomwalk tests while exercising Hadoop's high availability
-(HA) failover capabilities, you should use Hadoop version 2.1.0 or later.
-Failover scenarios are more likely to cause randomwalk test failures under
-earlier Hadoop versions. See the following issue reports for more details.
-
-* [HDFS-4404](https://issues.apache.org/jira/browse/HDFS-4404)
-* [HADOOP-9792](https://issues.apache.org/jira/browse/HADOOP-9792)
-
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/system/randomwalk/bin/apocalypse.sh
----------------------------------------------------------------------
diff --git a/test/system/randomwalk/bin/apocalypse.sh b/test/system/randomwalk/bin/apocalypse.sh
deleted file mode 100755
index e62b008..0000000
--- a/test/system/randomwalk/bin/apocalypse.sh
+++ /dev/null
@@ -1,49 +0,0 @@
-#! /usr/bin/env bash
-
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#copied below from hadoop-config.sh
-this="$0"
-while [[ -h "$this" ]]; do
- ls=$(ls -ld "$this")
- link=$(expr "$ls" : '.*-> \(.*\)$')
- if expr "$link" : '.*/.*' > /dev/null; then
- this="$link"
- else
- this=$(dirname "$this")/"$link"
- fi
-done
-bin=$(dirname "$this")
-script=$(basename "$this")
-bin=$(cd "$bin"; pwd)
-this="$bin/$script"
-
-ACCUMULO_HOME=$(dirname "$this")/../../../..
-export ACCUMULO_HOME=$(cd "$ACCUMULO_HOME"; pwd)
-
-if [[ -f $ACCUMULO_HOME/conf/accumulo-env.sh ]] ; then
- . "$ACCUMULO_HOME/conf/accumulo-env.sh"
-fi
-
-if [[ -z $HADOOP_PREFIX ]] ; then
- echo "HADOOP_PREFIX is not set. Please make sure it's set globally."
- exit 1
-fi
-
-echo 'killing all accumulo processes'
-pssh -h "$ACCUMULO_HOME/conf/tservers" "pkill -9 -f app=[tmg].*org.apache.accumulo.start " < /dev/null
-pssh -h "$ACCUMULO_HOME/conf/masters" "pkill -9 -f app=[tmg].*org.apache.accumulo.start " < /dev/null
-exit 0
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/system/randomwalk/bin/copy-config.sh
----------------------------------------------------------------------
diff --git a/test/system/randomwalk/bin/copy-config.sh b/test/system/randomwalk/bin/copy-config.sh
deleted file mode 100755
index 48afc19..0000000
--- a/test/system/randomwalk/bin/copy-config.sh
+++ /dev/null
@@ -1,38 +0,0 @@
-#! /usr/bin/env bash
-
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-if [[ -z $HADOOP_PREFIX ]] ; then
- echo "HADOOP_PREFIX is not set. Please make sure it's set globally."
- exit 1
-fi
-
-if [[ -z $ACCUMULO_HOME ]] ; then
- echo "ACCUMULO_HOME is not set. Please make sure it's set globally."
- exit 1
-fi
-
-RW_HOME=$ACCUMULO_HOME/test/system/randomwalk
-
-cd "$RW_HOME"
-
-tar czf config.tgz conf
-"$HADOOP_PREFIX/bin/hadoop" fs -rmr /randomwalk 2>/dev/null
-"$HADOOP_PREFIX/bin/hadoop" fs -mkdir /randomwalk
-"$HADOOP_PREFIX/bin/hadoop" fs -put config.tgz /randomwalk
-"$HADOOP_PREFIX/bin/hadoop" fs -setrep 3 /randomwalk/config.tgz
-rm config.tgz
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/system/randomwalk/bin/kill-all.sh
----------------------------------------------------------------------
diff --git a/test/system/randomwalk/bin/kill-all.sh b/test/system/randomwalk/bin/kill-all.sh
deleted file mode 100755
index e4bc0be..0000000
--- a/test/system/randomwalk/bin/kill-all.sh
+++ /dev/null
@@ -1,40 +0,0 @@
-#! /usr/bin/env bash
-
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#copied below from hadoop-config.sh
-this="$0"
-while [[ -h "$this" ]]; do
- ls=$(ls -ld "$this")
- link=$(expr "$ls" : '.*-> \(.*\)$')
- if expr "$link" : '.*/.*' > /dev/null; then
- this="$link"
- else
- this=$(dirname "$this")/"$link"
- fi
-done
-bin=$(dirname "$this")
-script=$(basename "$this")
-bin=$(cd "$bin"; pwd)
-this="$bin/$script"
-
-ACCUMULO_HOME=$(dirname "$this")/../../../..
-export ACCUMULO_HOME=$(cd "$ACCUMULO_HOME"; pwd)
-
-RW_HOME=$ACCUMULO_HOME/test/system/randomwalk
-
-echo 'killing random walkers'
-pssh -h "$RW_HOME/conf/walkers" "pkill -f [r]andomwalk.Framework" < /dev/null
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/system/randomwalk/bin/kill-local.sh
----------------------------------------------------------------------
diff --git a/test/system/randomwalk/bin/kill-local.sh b/test/system/randomwalk/bin/kill-local.sh
deleted file mode 100755
index 2b35437..0000000
--- a/test/system/randomwalk/bin/kill-local.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#! /usr/bin/env bash
-
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-pkill -f randomwalk.Framework
[8/9] accumulo git commit: ACCUMULO-4510 Updated TESTING.md due to RW
move
Posted by mw...@apache.org.
ACCUMULO-4510 Updated TESTING.md due to RW move
Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/5effa31c
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/5effa31c
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/5effa31c
Branch: refs/heads/master
Commit: 5effa31c01f5c021fc0a0d2138d8c29561d2fe0d
Parents: b24c338
Author: Mike Walch <mw...@apache.org>
Authored: Mon Jan 9 17:31:22 2017 -0500
Committer: Mike Walch <mw...@apache.org>
Committed: Mon Jan 9 17:31:22 2017 -0500
----------------------------------------------------------------------
TESTING.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/accumulo/blob/5effa31c/TESTING.md
----------------------------------------------------------------------
diff --git a/TESTING.md b/TESTING.md
index 23feb83..98790e0 100644
--- a/TESTING.md
+++ b/TESTING.md
@@ -171,12 +171,12 @@ These files do exist in the build tree, but at different locations)
# Manual Distributed Testing
-Apache Accumulo also contains a number of tests which are suitable for running against large clusters for hours to days
-at a time, for example the [Continuous Ingest][1] and [Randomwalk test][2] suites. These all exist in the repository under
-`test/system` and contain their own README files for configuration and use.
+Apache Accumulo has a number of tests which are suitable for running against large clusters for hours to days at a time.
+Some of these test suites (like the [Continuous Ingest][1] test) exist in the repository under `test/system` and contain their
+own README files for configuration. Others (like the Random Walk test) are in the [accumulo-testing repo][2].
[1]: test/system/continuous/README.md
-[2]: test/system/randomwalk/README.md
+[2]: https://github.com/apache/accumulo-testing
[3]: https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
[4]: http://maven.apache.org/surefire/maven-surefire-plugin/
[5]: http://maven.apache.org/surefire/maven-failsafe-plugin/
[3/9] accumulo git commit: ACCUMULO-4510 Removing random walk test
code
Posted by mw...@apache.org.
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/SetAuths.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/SetAuths.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/security/SetAuths.java
deleted file mode 100644
index 97ce6ed..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/SetAuths.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.security;
-
-import java.util.Properties;
-import java.util.Random;
-
-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.impl.Credentials;
-import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
-import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class SetAuths extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- String authsString = props.getProperty("auths", "_random");
-
- String targetUser = props.getProperty("system");
- String target;
- String authPrincipal;
- AuthenticationToken authToken;
- if ("table".equals(targetUser)) {
- target = WalkingSecurity.get(state, env).getTabUserName();
- authPrincipal = WalkingSecurity.get(state, env).getSysUserName();
- authToken = WalkingSecurity.get(state, env).getSysToken();
- } else {
- target = WalkingSecurity.get(state, env).getSysUserName();
- authPrincipal = env.getUserName();
- authToken = env.getToken();
- }
- Connector conn = env.getInstance().getConnector(authPrincipal, authToken);
-
- boolean exists = WalkingSecurity.get(state, env).userExists(target);
- boolean hasPermission = WalkingSecurity.get(state, env).canChangeAuthorizations(new Credentials(authPrincipal, authToken).toThrift(env.getInstance()),
- target);
-
- Authorizations auths;
- if (authsString.equals("_random")) {
- String[] possibleAuths = WalkingSecurity.get(state, env).getAuthsArray();
-
- Random r = new Random();
- int i = r.nextInt(possibleAuths.length);
- String[] authSet = new String[i];
- int length = possibleAuths.length;
- for (int j = 0; j < i; j++) {
- int nextRand = r.nextInt(length);
- authSet[j] = possibleAuths[nextRand];
- length--;
- possibleAuths[nextRand] = possibleAuths[length];
- possibleAuths[length] = authSet[j];
- }
- auths = new Authorizations(authSet);
- } else {
- auths = new Authorizations(authsString.split(","));
- }
-
- try {
- conn.securityOperations().changeUserAuthorizations(target, auths);
- } catch (AccumuloSecurityException ae) {
- switch (ae.getSecurityErrorCode()) {
- case PERMISSION_DENIED:
- if (hasPermission)
- throw new AccumuloException("Got a security exception when I should have had permission.", ae);
- else
- return;
- case USER_DOESNT_EXIST:
- if (exists)
- throw new AccumuloException("Got security exception when the user should have existed", ae);
- else
- return;
- default:
- throw new AccumuloException("Got unexpected exception", ae);
- }
- }
- WalkingSecurity.get(state, env).changeAuthorizations(target, auths);
- if (!hasPermission)
- throw new AccumuloException("Didn't get Security Exception when we should have");
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/TableOp.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/TableOp.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/security/TableOp.java
deleted file mode 100644
index 477d95f..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/TableOp.java
+++ /dev/null
@@ -1,257 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.security;
-
-import static java.nio.charset.StandardCharsets.UTF_8;
-
-import java.util.Iterator;
-import java.util.Map.Entry;
-import java.util.Properties;
-import java.util.Random;
-import java.util.SortedSet;
-import java.util.TreeSet;
-import java.util.UUID;
-
-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;
-import org.apache.accumulo.core.client.security.SecurityErrorCode;
-import org.apache.accumulo.core.conf.AccumuloConfiguration;
-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.file.FileOperations;
-import org.apache.accumulo.core.file.FileSKVWriter;
-import org.apache.accumulo.core.file.rfile.RFile;
-import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.core.security.ColumnVisibility;
-import org.apache.accumulo.core.security.TablePermission;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.io.Text;
-
-public class TableOp extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- Connector conn = env.getInstance().getConnector(WalkingSecurity.get(state, env).getTabUserName(), WalkingSecurity.get(state, env).getTabToken());
-
- String action = props.getProperty("action", "_random");
- TablePermission tp;
- if ("_random".equalsIgnoreCase(action)) {
- Random r = new Random();
- tp = TablePermission.values()[r.nextInt(TablePermission.values().length)];
- } else {
- tp = TablePermission.valueOf(action);
- }
-
- boolean tableExists = WalkingSecurity.get(state, env).getTableExists();
- String tableName = WalkingSecurity.get(state, env).getTableName();
- String namespaceName = WalkingSecurity.get(state, env).getNamespaceName();
-
- switch (tp) {
- case READ: {
- boolean canRead = WalkingSecurity.get(state, env).canScan(WalkingSecurity.get(state, env).getTabCredentials(), tableName, namespaceName);
- Authorizations auths = WalkingSecurity.get(state, env).getUserAuthorizations(WalkingSecurity.get(state, env).getTabCredentials());
- boolean ambiguousZone = WalkingSecurity.get(state, env).inAmbiguousZone(conn.whoami(), tp);
- boolean ambiguousAuths = WalkingSecurity.get(state, env).ambiguousAuthorizations(conn.whoami());
-
- Scanner scan = null;
- try {
- scan = conn.createScanner(tableName, conn.securityOperations().getUserAuthorizations(conn.whoami()));
- int seen = 0;
- Iterator<Entry<Key,Value>> iter = scan.iterator();
- while (iter.hasNext()) {
- Entry<Key,Value> entry = iter.next();
- Key k = entry.getKey();
- seen++;
- if (!auths.contains(k.getColumnVisibilityData()) && !ambiguousAuths)
- 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);
- for (Entry<String,Integer> entry : WalkingSecurity.get(state, env).getAuthsMap().entrySet()) {
- if (auths.contains(entry.getKey().getBytes(UTF_8)))
- seen = seen - entry.getValue();
- }
- if (seen != 0 && !ambiguousAuths)
- throw new AccumuloException("Got mismatched amounts of data");
- } catch (TableNotFoundException tnfe) {
- if (tableExists)
- throw new AccumuloException("Accumulo and test suite out of sync: table " + tableName, tnfe);
- return;
- } catch (AccumuloSecurityException ae) {
- if (ae.getSecurityErrorCode().equals(SecurityErrorCode.PERMISSION_DENIED)) {
- if (canRead && !ambiguousZone)
- throw new AccumuloException("Table read permission out of sync with Accumulo: table " + tableName, ae);
- else
- return;
- }
- if (ae.getSecurityErrorCode().equals(SecurityErrorCode.BAD_AUTHORIZATIONS)) {
- if (ambiguousAuths)
- return;
- else
- throw new AccumuloException("Mismatched authorizations! ", ae);
- }
- throw new AccumuloException("Unexpected exception!", ae);
- } catch (RuntimeException re) {
- if (re.getCause() instanceof AccumuloSecurityException
- && ((AccumuloSecurityException) re.getCause()).getSecurityErrorCode().equals(SecurityErrorCode.PERMISSION_DENIED)) {
- if (canRead && !ambiguousZone)
- throw new AccumuloException("Table read permission out of sync with Accumulo: table " + tableName, re.getCause());
- else
- return;
- }
- if (re.getCause() instanceof AccumuloSecurityException
- && ((AccumuloSecurityException) re.getCause()).getSecurityErrorCode().equals(SecurityErrorCode.BAD_AUTHORIZATIONS)) {
- if (ambiguousAuths)
- return;
- else
- throw new AccumuloException("Mismatched authorizations! ", re.getCause());
- }
-
- throw new AccumuloException("Unexpected exception!", re);
- } finally {
- if (scan != null) {
- scan.close();
- scan = null;
- }
-
- }
-
- break;
- }
- case WRITE:
- boolean canWrite = WalkingSecurity.get(state, env).canWrite(WalkingSecurity.get(state, env).getTabCredentials(), tableName, namespaceName);
- boolean ambiguousZone = WalkingSecurity.get(state, env).inAmbiguousZone(conn.whoami(), tp);
-
- String key = WalkingSecurity.get(state, env).getLastKey() + "1";
- Mutation m = new Mutation(new Text(key));
- for (String s : WalkingSecurity.get(state, env).getAuthsArray()) {
- m.put(new Text(), new Text(), new ColumnVisibility(s), new Value("value".getBytes(UTF_8)));
- }
- BatchWriter writer = null;
- try {
- try {
- writer = conn.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);
- return;
- }
- boolean works = true;
- try {
- writer.addMutation(m);
- writer.close();
- } catch (MutationsRejectedException mre) {
- // Currently no method for detecting reason for mre. Waiting on ACCUMULO-670
- // For now, just wait a second and go again if they can write!
- if (!canWrite)
- return;
-
- if (ambiguousZone) {
- Thread.sleep(1000);
- try {
- writer = conn.createBatchWriter(tableName, new BatchWriterConfig().setMaxWriteThreads(1));
- writer.addMutation(m);
- writer.close();
- writer = null;
- } catch (MutationsRejectedException mre2) {
- throw new AccumuloException("Mutation exception!", mre2);
- }
- }
- }
- if (works)
- for (String s : WalkingSecurity.get(state, env).getAuthsArray())
- WalkingSecurity.get(state, env).increaseAuthMap(s, 1);
- } finally {
- if (writer != null) {
- writer.close();
- writer = null;
- }
- }
- break;
- case BULK_IMPORT:
- key = WalkingSecurity.get(state, env).getLastKey() + "1";
- SortedSet<Key> keys = new TreeSet<>();
- for (String s : WalkingSecurity.get(state, env).getAuthsArray()) {
- Key k = new Key(key, "", "", s);
- keys.add(k);
- }
- Path dir = new Path("/tmp", "bulk_" + UUID.randomUUID().toString());
- Path fail = new Path(dir.toString() + "_fail");
- FileSystem fs = WalkingSecurity.get(state, env).getFs();
- FileSKVWriter f = FileOperations.getInstance().newWriterBuilder().forFile(dir + "/securityBulk." + RFile.EXTENSION, fs, fs.getConf())
- .withTableConfiguration(AccumuloConfiguration.getDefaultConfiguration()).build();
- f.startDefaultLocalityGroup();
- fs.mkdirs(fail);
- for (Key k : keys)
- f.append(k, new Value("Value".getBytes(UTF_8)));
- f.close();
- try {
- conn.tableOperations().importDirectory(tableName, dir.toString(), fail.toString(), true);
- } catch (TableNotFoundException tnfe) {
- if (tableExists)
- throw new AccumuloException("Table didn't exist when it should have: " + tableName);
- return;
- } catch (AccumuloSecurityException ae) {
- if (ae.getSecurityErrorCode().equals(SecurityErrorCode.PERMISSION_DENIED)) {
- if (WalkingSecurity.get(state, env).canBulkImport(WalkingSecurity.get(state, env).getTabCredentials(), tableName, namespaceName))
- 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()))
- return;
- }
- throw new AccumuloException("Unexpected exception!", ae);
- }
- for (String s : WalkingSecurity.get(state, env).getAuthsArray())
- WalkingSecurity.get(state, env).increaseAuthMap(s, 1);
- fs.delete(dir, true);
- fs.delete(fail, true);
-
- if (!WalkingSecurity.get(state, env).canBulkImport(WalkingSecurity.get(state, env).getTabCredentials(), tableName, namespaceName))
- throw new AccumuloException("Bulk Import succeeded when it should have failed: " + dir + " table " + tableName);
- break;
- case ALTER_TABLE:
- AlterTable.renameTable(conn, state, env, tableName, tableName + "plus",
- WalkingSecurity.get(state, env).canAlterTable(WalkingSecurity.get(state, env).getTabCredentials(), tableName, namespaceName), tableExists);
- break;
-
- case GRANT:
- props.setProperty("task", "grant");
- props.setProperty("perm", "random");
- props.setProperty("source", "table");
- props.setProperty("target", "system");
- AlterTablePerm.alter(state, env, props);
- break;
-
- case DROP_TABLE:
- props.setProperty("source", "table");
- DropTable.dropTable(state, env, props);
- break;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/Validate.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/Validate.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/security/Validate.java
deleted file mode 100644
index d2fc795..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/Validate.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.security;
-
-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.core.client.impl.thrift.ThriftSecurityException;
-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.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-import org.apache.log4j.Logger;
-
-public class Validate extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- validate(state, env, log);
- }
-
- public static void validate(State state, Environment env, Logger log) throws Exception {
- Connector conn = env.getConnector();
-
- boolean tableExists = WalkingSecurity.get(state, env).getTableExists();
- boolean cloudTableExists = conn.tableOperations().list().contains(WalkingSecurity.get(state, env).getTableName());
- if (tableExists != cloudTableExists)
- throw new AccumuloException("Table existance out of sync");
-
- boolean tableUserExists = WalkingSecurity.get(state, env).userExists(WalkingSecurity.get(state, env).getTabUserName());
- boolean cloudTableUserExists = conn.securityOperations().listLocalUsers().contains(WalkingSecurity.get(state, env).getTabUserName());
- if (tableUserExists != cloudTableUserExists)
- throw new AccumuloException("Table User existance out of sync");
-
- Properties props = new Properties();
- props.setProperty("target", "system");
- Authenticate.authenticate(env.getUserName(), env.getToken(), state, env, props);
- props.setProperty("target", "table");
- Authenticate.authenticate(env.getUserName(), env.getToken(), state, env, props);
-
- for (String user : new String[] {WalkingSecurity.get(state, env).getSysUserName(), WalkingSecurity.get(state, env).getTabUserName()}) {
- for (SystemPermission sp : SystemPermission.values()) {
- boolean hasSp = WalkingSecurity.get(state, env).hasSystemPermission(user, sp);
- boolean accuHasSp;
- try {
- accuHasSp = conn.securityOperations().hasSystemPermission(user, sp);
- log.debug("Just checked to see if user " + user + " has system perm " + sp.name() + " with answer " + accuHasSp);
- } catch (AccumuloSecurityException ae) {
- if (ae.getSecurityErrorCode().equals(SecurityErrorCode.USER_DOESNT_EXIST)) {
- if (tableUserExists)
- throw new AccumuloException("Got user DNE error when they should", ae);
- else
- continue;
- } else
- throw new AccumuloException("Unexpected exception!", ae);
- }
- if (hasSp != accuHasSp)
- throw new AccumuloException(user + " existance out of sync for system perm " + sp + " hasSp/CloudhasSP " + hasSp + " " + accuHasSp);
- }
-
- for (TablePermission tp : TablePermission.values()) {
- boolean hasTp = WalkingSecurity.get(state, env).hasTablePermission(user, WalkingSecurity.get(state, env).getTableName(), tp);
- boolean accuHasTp;
- try {
- accuHasTp = conn.securityOperations().hasTablePermission(user, WalkingSecurity.get(state, env).getTableName(), tp);
- log.debug("Just checked to see if user " + user + " has table perm " + tp.name() + " with answer " + accuHasTp);
- } catch (AccumuloSecurityException ae) {
- if (ae.getSecurityErrorCode().equals(SecurityErrorCode.USER_DOESNT_EXIST)) {
- if (tableUserExists)
- throw new AccumuloException("Got user DNE error when they should", ae);
- else
- continue;
- } else if (ae.getSecurityErrorCode().equals(SecurityErrorCode.TABLE_DOESNT_EXIST)) {
- if (tableExists)
- throw new AccumuloException("Got table DNE when it should", ae);
- else
- continue;
- } else
- throw new AccumuloException("Unexpected exception!", ae);
- }
- if (hasTp != accuHasTp)
- throw new AccumuloException(user + " existance out of sync for table perm " + tp + " hasTp/CloudhasTP " + hasTp + " " + accuHasTp);
- }
-
- }
-
- Authorizations accuAuths;
- Authorizations auths;
- try {
- auths = WalkingSecurity.get(state, env).getUserAuthorizations(WalkingSecurity.get(state, env).getTabCredentials());
- accuAuths = conn.securityOperations().getUserAuthorizations(WalkingSecurity.get(state, env).getTabUserName());
- } catch (ThriftSecurityException ae) {
- if (ae.getCode() == org.apache.accumulo.core.client.impl.thrift.SecurityErrorCode.USER_DOESNT_EXIST) {
- if (tableUserExists)
- throw new AccumuloException("Table user didn't exist when they should.", ae);
- else
- return;
- }
- throw new AccumuloException("Unexpected exception!", ae);
- }
- if (!auths.equals(accuAuths))
- throw new AccumuloException("Table User authorizations out of sync");
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/WalkingSecurity.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/WalkingSecurity.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/security/WalkingSecurity.java
deleted file mode 100644
index 0c440af..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/WalkingSecurity.java
+++ /dev/null
@@ -1,505 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.security;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeSet;
-
-import org.apache.accumulo.core.client.AccumuloSecurityException;
-import org.apache.accumulo.core.client.NamespaceNotFoundException;
-import org.apache.accumulo.core.client.TableNotFoundException;
-import org.apache.accumulo.core.client.impl.Credentials;
-import org.apache.accumulo.core.client.impl.thrift.SecurityErrorCode;
-import org.apache.accumulo.core.client.impl.thrift.ThriftSecurityException;
-import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
-import org.apache.accumulo.core.client.security.tokens.PasswordToken;
-import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.core.security.NamespacePermission;
-import org.apache.accumulo.core.security.SystemPermission;
-import org.apache.accumulo.core.security.TablePermission;
-import org.apache.accumulo.core.security.thrift.TCredentials;
-import org.apache.accumulo.core.util.CachedConfiguration;
-import org.apache.accumulo.server.AccumuloServerContext;
-import org.apache.accumulo.server.client.HdfsZooInstance;
-import org.apache.accumulo.server.conf.ServerConfigurationFactory;
-import org.apache.accumulo.server.security.SecurityOperation;
-import org.apache.accumulo.server.security.handler.Authenticator;
-import org.apache.accumulo.server.security.handler.Authorizor;
-import org.apache.accumulo.server.security.handler.PermissionHandler;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.hadoop.fs.FileSystem;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- *
- */
-public class WalkingSecurity extends SecurityOperation implements Authorizor, Authenticator, PermissionHandler {
- State state = null;
- Environment env = null;
- private static final Logger log = LoggerFactory.getLogger(WalkingSecurity.class);
-
- private static final String tableName = "SecurityTableName";
- private static final String namespaceName = "SecurityNamespaceName";
- private static final String userName = "UserName";
-
- private static final String userPass = "UserPass";
- private static final String userExists = "UserExists";
- private static final String tableExists = "TableExists";
- private static final String namespaceExists = "NamespaceExists";
-
- private static final String connector = "UserConnection";
-
- private static final String authsMap = "authorizationsCountMap";
- private static final String lastKey = "lastMutationKey";
- private static final String filesystem = "securityFileSystem";
-
- private static WalkingSecurity instance = null;
-
- public WalkingSecurity(AccumuloServerContext context, Authorizor author, Authenticator authent, PermissionHandler pm) {
- super(context, author, authent, pm);
- }
-
- public WalkingSecurity(State state2, Environment env2) {
- super(new AccumuloServerContext(new ServerConfigurationFactory(HdfsZooInstance.getInstance())));
- this.state = state2;
- this.env = env2;
- authorizor = this;
- authenticator = this;
- permHandle = this;
- }
-
- public static WalkingSecurity get(State state, Environment env) {
- if (instance == null || instance.state != state) {
- instance = new WalkingSecurity(state, env);
- state.set(tableExists, Boolean.toString(false));
- state.set(namespaceExists, Boolean.toString(false));
- state.set(authsMap, new HashMap<String,Integer>());
- }
-
- return instance;
- }
-
- @Override
- public void initialize(String instanceId, boolean initialize) {
- throw new UnsupportedOperationException("nope");
- }
-
- @Override
- public boolean validSecurityHandlers(Authenticator one, PermissionHandler two) {
- return this.getClass().equals(one.getClass()) && this.getClass().equals(two.getClass());
- }
-
- @Override
- public boolean validSecurityHandlers(Authenticator one, Authorizor two) {
- return this.getClass().equals(one.getClass()) && this.getClass().equals(two.getClass());
- }
-
- @Override
- public boolean validSecurityHandlers(Authorizor one, PermissionHandler two) {
- return this.getClass().equals(one.getClass()) && this.getClass().equals(two.getClass());
- }
-
- @Override
- public void initializeSecurity(TCredentials rootuser, String token) throws ThriftSecurityException {
- throw new UnsupportedOperationException("nope");
- }
-
- @Override
- public void changeAuthorizations(String user, Authorizations authorizations) throws AccumuloSecurityException {
- state.set(user + "_auths", authorizations);
- state.set("Auths-" + user + '-' + "time", System.currentTimeMillis());
- }
-
- @Override
- public Authorizations getCachedUserAuthorizations(String user) throws AccumuloSecurityException {
- return (Authorizations) state.get(user + "_auths");
- }
-
- public boolean ambiguousAuthorizations(String userName) {
- Long setTime = state.getLong("Auths-" + userName + '-' + "time");
- if (setTime == null)
- throw new RuntimeException("WTF? Auths-" + userName + '-' + "time is null");
- if (System.currentTimeMillis() < (setTime + 1000))
- return true;
- return false;
- }
-
- @Override
- public void initUser(String user) throws AccumuloSecurityException {
- changeAuthorizations(user, new Authorizations());
- }
-
- @Override
- public Set<String> listUsers() throws AccumuloSecurityException {
- Set<String> userList = new TreeSet<>();
- for (String user : new String[] {getSysUserName(), getTabUserName()}) {
- if (userExists(user))
- userList.add(user);
- }
- return userList;
- }
-
- @Override
- public boolean authenticateUser(String principal, AuthenticationToken token) {
- PasswordToken pass = (PasswordToken) state.get(principal + userPass);
- boolean ret = pass.equals(token);
- return ret;
- }
-
- @Override
- public void createUser(String principal, AuthenticationToken token) throws AccumuloSecurityException {
- state.set(principal + userExists, Boolean.toString(true));
- changePassword(principal, token);
- cleanUser(principal);
- }
-
- @Override
- public void dropUser(String user) throws AccumuloSecurityException {
- state.set(user + userExists, Boolean.toString(false));
- cleanUser(user);
- if (user.equals(getTabUserName()))
- state.set("table" + connector, null);
- }
-
- @Override
- public void changePassword(String principal, AuthenticationToken token) throws AccumuloSecurityException {
- state.set(principal + userPass, token);
- state.set(principal + userPass + "time", System.currentTimeMillis());
- }
-
- @Override
- public boolean userExists(String user) {
- return Boolean.parseBoolean(state.getString(user + userExists));
- }
-
- @Override
- public boolean hasSystemPermission(String user, SystemPermission permission) throws AccumuloSecurityException {
- boolean res = Boolean.parseBoolean(state.getString("Sys-" + user + '-' + permission.name()));
- return res;
- }
-
- @Override
- public boolean hasCachedSystemPermission(String user, SystemPermission permission) throws AccumuloSecurityException {
- return hasSystemPermission(user, permission);
- }
-
- @Override
- public boolean hasTablePermission(String user, String table, TablePermission permission) throws AccumuloSecurityException, TableNotFoundException {
- return Boolean.parseBoolean(state.getString("Tab-" + user + '-' + permission.name()));
- }
-
- @Override
- public boolean hasCachedTablePermission(String user, String table, TablePermission permission) throws AccumuloSecurityException, TableNotFoundException {
- return hasTablePermission(user, table, permission);
- }
-
- @Override
- public boolean hasNamespacePermission(String user, String namespace, NamespacePermission permission) throws AccumuloSecurityException,
- NamespaceNotFoundException {
- return Boolean.parseBoolean(state.getString("Nsp-" + user + '-' + permission.name()));
- }
-
- @Override
- public boolean hasCachedNamespacePermission(String user, String namespace, NamespacePermission permission) throws AccumuloSecurityException,
- NamespaceNotFoundException {
- return hasNamespacePermission(user, namespace, permission);
- }
-
- @Override
- public void grantSystemPermission(String user, SystemPermission permission) throws AccumuloSecurityException {
- setSysPerm(state, user, permission, true);
- }
-
- @Override
- public void revokeSystemPermission(String user, SystemPermission permission) throws AccumuloSecurityException {
- setSysPerm(state, user, permission, false);
- }
-
- @Override
- public void grantTablePermission(String user, String table, TablePermission permission) throws AccumuloSecurityException, TableNotFoundException {
- setTabPerm(state, user, permission, table, true);
- }
-
- private static void setSysPerm(State state, String userName, SystemPermission tp, boolean value) {
- log.debug((value ? "Gave" : "Took") + " the system permission " + tp.name() + (value ? " to" : " from") + " user " + userName);
- state.set("Sys-" + userName + '-' + tp.name(), Boolean.toString(value));
- }
-
- private void setTabPerm(State state, String userName, TablePermission tp, String table, boolean value) {
- if (table.equals(userName))
- throw new RuntimeException("This is also fucked up");
- log.debug((value ? "Gave" : "Took") + " the table permission " + tp.name() + (value ? " to" : " from") + " user " + userName);
- state.set("Tab-" + userName + '-' + tp.name(), Boolean.toString(value));
- if (tp.equals(TablePermission.READ) || tp.equals(TablePermission.WRITE))
- state.set("Tab-" + userName + '-' + tp.name() + '-' + "time", System.currentTimeMillis());
- }
-
- @Override
- public void revokeTablePermission(String user, String table, TablePermission permission) throws AccumuloSecurityException, TableNotFoundException {
- setTabPerm(state, user, permission, table, false);
- }
-
- @Override
- public void grantNamespacePermission(String user, String namespace, NamespacePermission permission) throws AccumuloSecurityException,
- NamespaceNotFoundException {
- setNspPerm(state, user, permission, namespace, true);
- }
-
- private void setNspPerm(State state, String userName, NamespacePermission tnp, String namespace, boolean value) {
- if (namespace.equals(userName))
- throw new RuntimeException("I don't even know");
- log.debug((value ? "Gave" : "Took") + " the table permission " + tnp.name() + (value ? " to" : " from") + " user " + userName);
- state.set("Nsp-" + userName + '-' + tnp.name(), Boolean.toString(value));
- if (tnp.equals(NamespacePermission.READ) || tnp.equals(NamespacePermission.WRITE))
- state.set("Nsp-" + userName + '-' + tnp.name() + '-' + "time", System.currentTimeMillis());
- }
-
- @Override
- public void revokeNamespacePermission(String user, String namespace, NamespacePermission permission) throws AccumuloSecurityException,
- NamespaceNotFoundException {
- setNspPerm(state, user, permission, namespace, false);
- }
-
- @Override
- public void cleanTablePermissions(String table) throws AccumuloSecurityException, TableNotFoundException {
- for (String user : new String[] {getSysUserName(), getTabUserName()}) {
- for (TablePermission tp : TablePermission.values()) {
- revokeTablePermission(user, table, tp);
- }
- }
- state.set(tableExists, Boolean.toString(false));
- }
-
- @Override
- public void cleanNamespacePermissions(String namespace) throws AccumuloSecurityException, NamespaceNotFoundException {
- for (String user : new String[] {getSysUserName(), getNspUserName()}) {
- for (NamespacePermission tnp : NamespacePermission.values()) {
- revokeNamespacePermission(user, namespace, tnp);
- }
- }
- state.set(namespaceExists, Boolean.toString(false));
- }
-
- @Override
- public void cleanUser(String user) throws AccumuloSecurityException {
- if (getTableExists())
- for (TablePermission tp : TablePermission.values())
- try {
- revokeTablePermission(user, getTableName(), tp);
- } catch (TableNotFoundException e) {
- // ignore
- }
- for (SystemPermission sp : SystemPermission.values())
- revokeSystemPermission(user, sp);
- }
-
- public String getTabUserName() {
- return state.getString("table" + userName);
- }
-
- public String getSysUserName() {
- return state.getString("system" + userName);
- }
-
- public String getNspUserName() {
- return state.getString("namespace" + userName);
- }
-
- public void setTabUserName(String name) {
- state.set("table" + userName, name);
- state.set(name + userExists, Boolean.toString(false));
- }
-
- public void setNspUserName(String name) {
- state.set("namespace" + userName, name);
- state.set(name + userExists, Boolean.toString(false));
- }
-
- public void setSysUserName(String name) {
- state.set("system" + userName, name);
- }
-
- public String getTableName() {
- return state.getString(tableName);
- }
-
- public String getNamespaceName() {
- return state.getString(namespaceName);
- }
-
- public boolean getTableExists() {
- return Boolean.parseBoolean(state.getString(tableExists));
- }
-
- public boolean getNamespaceExists() {
- return Boolean.parseBoolean(state.getString(namespaceExists));
- }
-
- public TCredentials getSysCredentials() {
- return new Credentials(getSysUserName(), getSysToken()).toThrift(this.env.getInstance());
- }
-
- public TCredentials getTabCredentials() {
- return new Credentials(getTabUserName(), getTabToken()).toThrift(this.env.getInstance());
- }
-
- public AuthenticationToken getSysToken() {
- return new PasswordToken(getSysPassword());
- }
-
- public AuthenticationToken getTabToken() {
- return new PasswordToken(getTabPassword());
- }
-
- public byte[] getUserPassword(String user) {
- Object obj = state.get(user + userPass);
- if (obj instanceof PasswordToken) {
- return ((PasswordToken) obj).getPassword();
- }
- return null;
- }
-
- public byte[] getSysPassword() {
- Object obj = state.get(getSysUserName() + userPass);
- if (obj instanceof PasswordToken) {
- return ((PasswordToken) obj).getPassword();
- }
- return null;
- }
-
- public byte[] getTabPassword() {
- Object obj = state.get(getTabUserName() + userPass);
- if (obj instanceof PasswordToken) {
- return ((PasswordToken) obj).getPassword();
- }
- return null;
- }
-
- public boolean userPassTransient(String user) {
- return System.currentTimeMillis() - state.getLong(user + userPass + "time") < 1000;
- }
-
- public void setTableName(String tName) {
- state.set(tableName, tName);
- }
-
- public void setNamespaceName(String nsName) {
- state.set(namespaceName, nsName);
- }
-
- @Override
- public void initTable(String table) throws AccumuloSecurityException {
- state.set(tableExists, Boolean.toString(true));
- state.set(tableName, table);
- }
-
- public String[] getAuthsArray() {
- return new String[] {"Fishsticks", "PotatoSkins", "Ribs", "Asparagus", "Paper", "Towels", "Lint", "Brush", "Celery"};
- }
-
- public boolean inAmbiguousZone(String userName, TablePermission tp) {
- if (tp.equals(TablePermission.READ) || tp.equals(TablePermission.WRITE)) {
- Long setTime = state.getLong("Tab-" + userName + '-' + tp.name() + '-' + "time");
- if (setTime == null)
- throw new RuntimeException("WTF? Tab-" + userName + '-' + tp.name() + '-' + "time is null");
- if (System.currentTimeMillis() < (setTime + 1000))
- return true;
- }
- return false;
- }
-
- @SuppressWarnings("unchecked")
- public Map<String,Integer> getAuthsMap() {
- return (Map<String,Integer>) state.get(authsMap);
- }
-
- public String getLastKey() {
- return state.getString(lastKey);
- }
-
- public void increaseAuthMap(String s, int increment) {
- Integer curVal = getAuthsMap().get(s);
- if (curVal == null) {
- curVal = Integer.valueOf(0);
- getAuthsMap().put(s, curVal);
- }
- curVal += increment;
- }
-
- public FileSystem getFs() {
- FileSystem fs = null;
- try {
- fs = (FileSystem) state.get(filesystem);
- } catch (RuntimeException re) {}
-
- if (fs == null) {
- try {
- fs = FileSystem.get(CachedConfiguration.getInstance());
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- state.set(filesystem, fs);
- }
- return fs;
- }
-
- @Override
- public boolean canAskAboutUser(TCredentials credentials, String user) throws ThriftSecurityException {
- try {
- return super.canAskAboutUser(credentials, user);
- } catch (ThriftSecurityException tse) {
- if (tse.getCode().equals(SecurityErrorCode.PERMISSION_DENIED))
- return false;
- throw tse;
- }
- }
-
- @Override
- public boolean validTokenClass(String tokenClass) {
- return tokenClass.equals(PasswordToken.class.getName());
- }
-
- public static void clearInstance() {
- instance = null;
- }
-
- @Override
- public Set<Class<? extends AuthenticationToken>> getSupportedTokenTypes() {
- Set<Class<? extends AuthenticationToken>> cs = new HashSet<>();
- cs.add(PasswordToken.class);
- return cs;
- }
-
- @Override
- public boolean isValidAuthorizations(String user, List<ByteBuffer> auths) throws AccumuloSecurityException {
- Collection<ByteBuffer> userauths = getCachedUserAuthorizations(user).getAuthorizationsBB();
- for (ByteBuffer auth : auths)
- if (!userauths.contains(auth))
- return false;
- return true;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/sequential/BatchVerify.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/sequential/BatchVerify.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/sequential/BatchVerify.java
deleted file mode 100644
index 074cbcf..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/sequential/BatchVerify.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.sequential;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map.Entry;
-import java.util.Properties;
-import java.util.Random;
-
-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;
-import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-import org.apache.hadoop.io.Text;
-
-public class BatchVerify extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
-
- Random rand = new Random();
-
- long numWrites = state.getLong("numWrites");
- int maxVerify = Integer.parseInt(props.getProperty("maxVerify", "2000"));
- long numVerify = rand.nextInt(maxVerify - 1) + 1;
-
- if (numVerify > (numWrites / 4)) {
- numVerify = numWrites / 4;
- }
-
- Connector conn = env.getConnector();
- BatchScanner scanner = conn.createBatchScanner(state.getString("seqTableName"), new Authorizations(), 2);
-
- try {
- int count = 0;
- List<Range> ranges = new ArrayList<>();
- while (count < numVerify) {
- long rangeStart = rand.nextInt((int) numWrites);
- long rangeEnd = rangeStart + 99;
- if (rangeEnd > (numWrites - 1)) {
- rangeEnd = numWrites - 1;
- }
- count += rangeEnd - rangeStart + 1;
- ranges.add(new Range(new Text(String.format("%010d", rangeStart)), new Text(String.format("%010d", rangeEnd))));
- }
-
- ranges = Range.mergeOverlapping(ranges);
- if (ranges.size() > 1) {
- Collections.sort(ranges);
- }
-
- if (count == 0 || ranges.size() == 0)
- return;
-
- log.debug(String.format("scanning %d rows in the following %d ranges:", count, ranges.size()));
- for (Range r : ranges) {
- log.debug(r);
- }
-
- scanner.setRanges(ranges);
-
- List<Key> keys = new ArrayList<>();
- for (Entry<Key,Value> entry : scanner) {
- keys.add(entry.getKey());
- }
-
- log.debug("scan returned " + keys.size() + " rows. now verifying...");
-
- Collections.sort(keys);
-
- Iterator<Key> iterator = keys.iterator();
- int curKey = Integer.parseInt(iterator.next().getRow().toString());
- boolean done = false;
- for (Range r : ranges) {
- int start = Integer.parseInt(r.getStartKey().getRow().toString());
- int end = Integer.parseInt(String.copyValueOf(r.getEndKey().getRow().toString().toCharArray(), 0, 10));
- for (int i = start; i <= end; i++) {
-
- if (done) {
- log.error("missing key " + i);
- break;
- }
-
- while (curKey < i) {
- log.error("extra key " + curKey);
- if (iterator.hasNext() == false) {
- done = true;
- break;
- }
- curKey = Integer.parseInt(iterator.next().getRow().toString());
- }
-
- if (curKey > i) {
- log.error("missing key " + i);
- }
-
- if (iterator.hasNext()) {
- curKey = Integer.parseInt(iterator.next().getRow().toString());
- } else {
- done = true;
- }
- }
- }
-
- log.debug("verify is now complete");
- } finally {
- scanner.close();
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/sequential/Commit.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/sequential/Commit.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/sequential/Commit.java
deleted file mode 100644
index 84adae1..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/sequential/Commit.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.sequential;
-
-import java.util.Properties;
-
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class Commit extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
-
- env.getMultiTableBatchWriter().flush();
-
- log.debug("Committed " + state.getLong("numWrites") + " writes. Total writes: " + state.getLong("totalWrites"));
- state.set("numWrites", Long.valueOf(0));
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/sequential/MapRedVerify.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/sequential/MapRedVerify.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/sequential/MapRedVerify.java
deleted file mode 100644
index 20cd686..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/sequential/MapRedVerify.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.sequential;
-
-import java.util.Map.Entry;
-import java.util.Properties;
-
-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.Range;
-import org.apache.accumulo.core.data.Value;
-import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.core.util.CachedConfiguration;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-import org.apache.hadoop.util.ToolRunner;
-
-public class MapRedVerify extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
-
- String[] args = new String[8];
- args[0] = "-libjars";
- args[1] = getMapReduceJars();
- args[2] = env.getUserName();
- args[3] = env.getPassword();
- if (null == args[3]) {
- args[3] = env.getKeytab();
- }
- args[4] = state.getString("seqTableName");
- args[5] = env.getInstance().getInstanceName();
- args[6] = env.getConfigProperty("ZOOKEEPERS");
- args[7] = args[4] + "_MR";
-
- if (ToolRunner.run(CachedConfiguration.getInstance(), new MapRedVerifyTool(), args) != 0) {
- log.error("Failed to run map/red verify");
- return;
- }
-
- Scanner outputScanner = env.getConnector().createScanner(args[7], Authorizations.EMPTY);
- outputScanner.setRange(new Range());
-
- int count = 0;
- Key lastKey = null;
- for (Entry<Key,Value> entry : outputScanner) {
- Key current = entry.getKey();
- if (lastKey != null && lastKey.getColumnFamily().equals(current.getRow())) {
- log.info(entry.getKey());
- count++;
- }
- lastKey = current;
- }
-
- if (count > 1) {
- log.error("Gaps in output");
- }
-
- log.debug("Dropping table: " + args[7]);
- Connector conn = env.getConnector();
- conn.tableOperations().delete(args[7]);
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/sequential/MapRedVerifyTool.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/sequential/MapRedVerifyTool.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/sequential/MapRedVerifyTool.java
deleted file mode 100644
index 5de5cf7..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/sequential/MapRedVerifyTool.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.sequential;
-
-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.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;
-import org.apache.hadoop.io.Text;
-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.apache.log4j.Logger;
-
-public class MapRedVerifyTool extends Configured implements Tool {
- protected final Logger log = Logger.getLogger(this.getClass());
-
- public static class SeqMapClass extends Mapper<Key,Value,NullWritable,IntWritable> {
- @Override
- public void map(Key row, Value data, Context output) throws IOException, InterruptedException {
- Integer num = Integer.valueOf(row.getRow().toString());
- output.write(NullWritable.get(), new IntWritable(num.intValue()));
- }
- }
-
- public static class SeqReduceClass extends Reducer<NullWritable,IntWritable,Text,Mutation> {
- @Override
- public void reduce(NullWritable ignore, Iterable<IntWritable> values, Context output) throws IOException, InterruptedException {
- Iterator<IntWritable> iterator = values.iterator();
-
- if (iterator.hasNext() == false) {
- return;
- }
-
- int start = iterator.next().get();
- int index = start;
- while (iterator.hasNext()) {
- int next = iterator.next().get();
- if (next != index + 1) {
- writeMutation(output, start, index);
- start = next;
- }
- index = next;
- }
- writeMutation(output, start, index);
- }
-
- public void writeMutation(Context output, int start, int end) throws IOException, InterruptedException {
- Mutation m = new Mutation(new Text(String.format("%010d", start)));
- m.put(new Text(String.format("%010d", end)), new Text(""), new Value(new byte[0]));
- output.write(null, m);
- }
- }
-
- @Override
- public int run(String[] args) throws Exception {
- Job job = Job.getInstance(getConf(), this.getClass().getSimpleName());
- job.setJarByClass(this.getClass());
-
- if (job.getJar() == null) {
- log.error("M/R requires a jar file! Run mvn package.");
- return 1;
- }
-
- ClientConfiguration clientConf = ClientConfiguration.loadDefault().withInstance(args[3]).withZkHosts(args[4]);
-
- AccumuloInputFormat.setInputTableName(job, args[2]);
- AccumuloInputFormat.setZooKeeperInstance(job, clientConf);
- AccumuloOutputFormat.setDefaultTableName(job, args[5]);
- AccumuloOutputFormat.setZooKeeperInstance(job, clientConf);
-
- job.setInputFormatClass(AccumuloInputFormat.class);
- if (clientConf.getBoolean(ClientProperty.INSTANCE_RPC_SASL_ENABLED.getKey(), false)) {
- // 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);
-
- job.setReducerClass(SeqReduceClass.class);
- job.setNumReduceTasks(1);
-
- job.setOutputFormatClass(AccumuloOutputFormat.class);
- AccumuloOutputFormat.setCreateTables(job, true);
-
- job.waitForCompletion(true);
- return job.isSuccessful() ? 0 : 1;
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/sequential/SequentialFixture.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/sequential/SequentialFixture.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/sequential/SequentialFixture.java
deleted file mode 100644
index 9565cc5..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/sequential/SequentialFixture.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.sequential;
-
-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;
-import org.apache.accumulo.core.client.impl.Tables;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.Fixture;
-import org.apache.accumulo.test.randomwalk.State;
-
-public class SequentialFixture extends Fixture {
-
- String seqTableName;
-
- @Override
- public void setUp(State state, Environment env) throws Exception {
-
- Connector conn = env.getConnector();
- Instance instance = env.getInstance();
-
- String hostname = InetAddress.getLocalHost().getHostName().replaceAll("[-.]", "_");
-
- seqTableName = String.format("sequential_%s_%s_%d", hostname, env.getPid(), System.currentTimeMillis());
- state.set("seqTableName", seqTableName);
-
- try {
- conn.tableOperations().create(seqTableName);
- log.debug("Created table " + seqTableName + " (id:" + Tables.getNameToIdMap(instance).get(seqTableName) + ")");
- } catch (TableExistsException e) {
- log.warn("Table " + seqTableName + " already exists!");
- throw e;
- }
- conn.tableOperations().setProperty(seqTableName, "table.scan.max.memory", "1K");
-
- state.set("numWrites", Long.valueOf(0));
- state.set("totalWrites", Long.valueOf(0));
- }
-
- @Override
- public void tearDown(State state, Environment env) throws Exception {
- // We have resources we need to clean up
- if (env.isMultiTableBatchWriterInitialized()) {
- MultiTableBatchWriter mtbw = env.getMultiTableBatchWriter();
- try {
- mtbw.close();
- } catch (MutationsRejectedException e) {
- log.error("Ignoring mutations that weren't flushed", e);
- }
-
- // Reset the MTBW on the state to null
- env.resetMultiTableBatchWriter();
- }
-
- log.debug("Dropping tables: " + seqTableName);
-
- Connector conn = env.getConnector();
-
- conn.tableOperations().delete(seqTableName);
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/sequential/Write.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/sequential/Write.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/sequential/Write.java
deleted file mode 100644
index 5398d99..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/sequential/Write.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.sequential;
-
-import static java.nio.charset.StandardCharsets.UTF_8;
-
-import java.util.Properties;
-
-import org.apache.accumulo.core.client.BatchWriter;
-import org.apache.accumulo.core.data.Mutation;
-import org.apache.accumulo.core.data.Value;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-import org.apache.hadoop.io.Text;
-
-public class Write extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
-
- BatchWriter bw = env.getMultiTableBatchWriter().getBatchWriter(state.getString("seqTableName"));
-
- state.set("numWrites", state.getLong("numWrites") + 1);
-
- Long totalWrites = state.getLong("totalWrites") + 1;
- if (totalWrites % 10000 == 0) {
- log.debug("Total writes: " + totalWrites);
- }
- state.set("totalWrites", totalWrites);
-
- Mutation m = new Mutation(new Text(String.format("%010d", totalWrites)));
- m.put(new Text("cf"), new Text("cq"), new Value("val".getBytes(UTF_8)));
- bw.addMutation(m);
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/BulkInsert.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/BulkInsert.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/BulkInsert.java
deleted file mode 100644
index 96d57c4..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/BulkInsert.java
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.shard;
-
-import static com.google.common.util.concurrent.Uninterruptibles.sleepUninterruptibly;
-import static java.nio.charset.StandardCharsets.UTF_8;
-
-import java.io.BufferedOutputStream;
-import java.io.IOException;
-import java.io.PrintStream;
-import java.util.Base64;
-import java.util.Collection;
-import java.util.List;
-import java.util.Properties;
-import java.util.Random;
-import java.util.concurrent.TimeUnit;
-
-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.data.ColumnUpdate;
-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.CachedConfiguration;
-import org.apache.accumulo.core.util.TextUtil;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.FileStatus;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.io.SequenceFile;
-import org.apache.hadoop.io.Text;
-import org.apache.hadoop.util.ToolRunner;
-
-public class BulkInsert extends Test {
-
- class SeqfileBatchWriter implements BatchWriter {
-
- SequenceFile.Writer writer;
-
- SeqfileBatchWriter(Configuration conf, FileSystem fs, String file) throws IOException {
- writer = SequenceFile.createWriter(conf, SequenceFile.Writer.file(fs.makeQualified(new Path(file))), SequenceFile.Writer.keyClass(Key.class),
- SequenceFile.Writer.valueClass(Value.class));
- }
-
- @Override
- public void addMutation(Mutation m) throws MutationsRejectedException {
- List<ColumnUpdate> updates = m.getUpdates();
- for (ColumnUpdate cu : updates) {
- Key key = new Key(m.getRow(), cu.getColumnFamily(), cu.getColumnQualifier(), cu.getColumnVisibility(), Long.MAX_VALUE, false, false);
- Value val = new Value(cu.getValue(), false);
-
- try {
- writer.append(key, val);
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
- }
-
- @Override
- public void addMutations(Iterable<Mutation> iterable) throws MutationsRejectedException {
- for (Mutation mutation : iterable)
- addMutation(mutation);
- }
-
- @Override
- public void flush() throws MutationsRejectedException {}
-
- @Override
- public void close() throws MutationsRejectedException {
- try {
- writer.close();
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
-
- }
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
-
- String indexTableName = (String) state.get("indexTableName");
- String dataTableName = (String) state.get("docTableName");
- int numPartitions = (Integer) state.get("numPartitions");
- Random rand = (Random) state.get("rand");
- long nextDocID = (Long) state.get("nextDocID");
-
- int minInsert = Integer.parseInt(props.getProperty("minInsert"));
- int maxInsert = Integer.parseInt(props.getProperty("maxInsert"));
- int numToInsert = rand.nextInt(maxInsert - minInsert) + minInsert;
-
- int maxSplits = Integer.parseInt(props.getProperty("maxSplits"));
-
- Configuration conf = CachedConfiguration.getInstance();
- FileSystem fs = FileSystem.get(conf);
-
- String rootDir = "/tmp/shard_bulk/" + dataTableName;
-
- fs.mkdirs(new Path(rootDir));
-
- BatchWriter dataWriter = new SeqfileBatchWriter(conf, fs, rootDir + "/data.seq");
- BatchWriter indexWriter = new SeqfileBatchWriter(conf, fs, rootDir + "/index.seq");
-
- for (int i = 0; i < numToInsert; i++) {
- String docID = Insert.insertRandomDocument(nextDocID++, dataWriter, indexWriter, indexTableName, dataTableName, numPartitions, rand);
- log.debug("Bulk inserting document " + docID);
- }
-
- state.set("nextDocID", Long.valueOf(nextDocID));
-
- dataWriter.close();
- indexWriter.close();
-
- sort(state, env, fs, dataTableName, rootDir + "/data.seq", rootDir + "/data_bulk", rootDir + "/data_work", maxSplits);
- sort(state, env, fs, indexTableName, rootDir + "/index.seq", rootDir + "/index_bulk", rootDir + "/index_work", maxSplits);
-
- bulkImport(fs, state, env, dataTableName, rootDir, "data");
- bulkImport(fs, state, env, indexTableName, rootDir, "index");
-
- fs.delete(new Path(rootDir), true);
- }
-
- private void bulkImport(FileSystem fs, State state, Environment env, String tableName, String rootDir, String prefix) throws Exception {
- while (true) {
- String bulkDir = rootDir + "/" + prefix + "_bulk";
- String failDir = rootDir + "/" + prefix + "_failure";
- Path failPath = new Path(failDir);
- fs.delete(failPath, true);
- fs.mkdirs(failPath);
- env.getConnector().tableOperations().importDirectory(tableName, bulkDir, failDir, true);
-
- FileStatus[] failures = fs.listStatus(failPath);
- if (failures != null && failures.length > 0) {
- log.warn("Failed to bulk import some files, retrying ");
-
- for (FileStatus failure : failures) {
- if (!failure.getPath().getName().endsWith(".seq"))
- fs.rename(failure.getPath(), new Path(new Path(bulkDir), failure.getPath().getName()));
- else
- log.debug("Ignoring " + failure.getPath());
- }
- sleepUninterruptibly(3, TimeUnit.SECONDS);
- } else
- break;
- }
- }
-
- private void sort(State state, Environment env, FileSystem fs, String tableName, String seqFile, String outputDir, String workDir, int maxSplits)
- throws Exception {
-
- PrintStream out = new PrintStream(new BufferedOutputStream(fs.create(new Path(workDir + "/splits.txt"))), false, UTF_8.name());
-
- Connector conn = env.getConnector();
-
- Collection<Text> splits = conn.tableOperations().listSplits(tableName, maxSplits);
- for (Text split : splits)
- out.println(Base64.getEncoder().encodeToString(TextUtil.getBytes(split)));
-
- out.close();
-
- SortTool sortTool = new SortTool(seqFile, outputDir, workDir + "/splits.txt", splits);
-
- String[] args = new String[2];
- args[0] = "-libjars";
- args[1] = getMapReduceJars();
-
- if (ToolRunner.run(CachedConfiguration.getInstance(), sortTool, args) != 0) {
- throw new Exception("Failed to run map/red verify");
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/CloneIndex.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/CloneIndex.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/CloneIndex.java
deleted file mode 100644
index 0d3d38e..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/CloneIndex.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.shard;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Properties;
-
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class CloneIndex extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
-
- String indexTableName = (String) state.get("indexTableName");
- String tmpIndexTableName = indexTableName + "_tmp";
-
- long t1 = System.currentTimeMillis();
- env.getConnector().tableOperations().flush(indexTableName, null, null, true);
- long t2 = System.currentTimeMillis();
- env.getConnector().tableOperations().clone(indexTableName, tmpIndexTableName, false, new HashMap<String,String>(), new HashSet<String>());
- long t3 = System.currentTimeMillis();
-
- log.debug("Cloned " + tmpIndexTableName + " from " + indexTableName + " flush: " + (t2 - t1) + "ms clone: " + (t3 - t2) + "ms");
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/Commit.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/Commit.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/Commit.java
deleted file mode 100644
index d3f9ed7..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/Commit.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.shard;
-
-import java.util.Properties;
-
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class Commit extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- env.getMultiTableBatchWriter().flush();
- log.debug("Committed inserts ");
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/CompactFilter.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/CompactFilter.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/CompactFilter.java
deleted file mode 100644
index 42dc9dc..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/CompactFilter.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.shard;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map.Entry;
-import java.util.Properties;
-import java.util.Random;
-
-import org.apache.accumulo.core.client.BatchScanner;
-import org.apache.accumulo.core.client.IteratorSetting;
-import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.Range;
-import org.apache.accumulo.core.data.Value;
-import org.apache.accumulo.core.iterators.user.RegExFilter;
-import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-import org.apache.hadoop.io.Text;
-
-/**
- * Test deleting documents by using a compaction filter iterator
- */
-public class CompactFilter extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- String indexTableName = (String) state.get("indexTableName");
- String docTableName = (String) state.get("docTableName");
- Random rand = (Random) state.get("rand");
-
- String deleteChar = Integer.toHexString(rand.nextInt(16)) + "";
- String regex = "^[0-9a-f][" + deleteChar + "].*";
-
- ArrayList<IteratorSetting> documentFilters = new ArrayList<>();
-
- IteratorSetting is = new IteratorSetting(21, "ii", RegExFilter.class);
- RegExFilter.setRegexs(is, regex, null, null, null, false);
- RegExFilter.setNegate(is, true);
- documentFilters.add(is);
-
- long t1 = System.currentTimeMillis();
- env.getConnector().tableOperations().compact(docTableName, null, null, documentFilters, true, true);
- long t2 = System.currentTimeMillis();
- long t3 = t2 - t1;
-
- ArrayList<IteratorSetting> indexFilters = new ArrayList<>();
-
- is = new IteratorSetting(21, RegExFilter.class);
- RegExFilter.setRegexs(is, null, null, regex, null, false);
- RegExFilter.setNegate(is, true);
- indexFilters.add(is);
-
- t1 = System.currentTimeMillis();
- env.getConnector().tableOperations().compact(indexTableName, null, null, indexFilters, true, true);
- t2 = System.currentTimeMillis();
-
- log.debug("Filtered documents using compaction iterators " + regex + " " + (t3) + " " + (t2 - t1));
-
- BatchScanner bscanner = env.getConnector().createBatchScanner(docTableName, new Authorizations(), 10);
-
- List<Range> ranges = new ArrayList<>();
- for (int i = 0; i < 16; i++) {
- ranges.add(Range.prefix(new Text(Integer.toHexString(i) + "" + deleteChar)));
- }
-
- bscanner.setRanges(ranges);
- Iterator<Entry<Key,Value>> iter = bscanner.iterator();
-
- if (iter.hasNext()) {
- throw new Exception("Saw unexpected document " + iter.next().getKey());
- }
-
- bscanner.close();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/Delete.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/Delete.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/Delete.java
deleted file mode 100644
index 4cc0304..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/shard/Delete.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.shard;
-
-import java.util.Map.Entry;
-import java.util.Properties;
-import java.util.Random;
-
-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.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class Delete extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- String indexTableName = (String) state.get("indexTableName");
- String dataTableName = (String) state.get("docTableName");
- int numPartitions = (Integer) state.get("numPartitions");
- Random rand = (Random) state.get("rand");
-
- Entry<Key,Value> entry = Search.findRandomDocument(state, env, dataTableName, rand);
- if (entry == null)
- return;
-
- String docID = entry.getKey().getRow().toString();
- String doc = entry.getValue().toString();
-
- Insert.unindexDocument(env.getMultiTableBatchWriter().getBatchWriter(indexTableName), doc, docID, numPartitions);
-
- Mutation m = new Mutation(docID);
- m.putDelete("doc", "");
-
- env.getMultiTableBatchWriter().getBatchWriter(dataTableName).addMutation(m);
-
- log.debug("Deleted document " + docID);
-
- env.getMultiTableBatchWriter().flush();
- }
-
-}
[5/9] accumulo git commit: ACCUMULO-4510 Removing random walk test
code
Posted by mw...@apache.org.
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/OfflineTable.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/OfflineTable.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/OfflineTable.java
deleted file mode 100644
index b5af0b7..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/OfflineTable.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.concurrent;
-
-import java.util.List;
-import java.util.Properties;
-import java.util.Random;
-import java.util.concurrent.TimeUnit;
-
-import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.core.client.TableNotFoundException;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-import static com.google.common.util.concurrent.Uninterruptibles.sleepUninterruptibly;
-
-public class OfflineTable extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- Connector conn = env.getConnector();
-
- Random rand = (Random) state.get("rand");
-
- @SuppressWarnings("unchecked")
- List<String> tableNames = (List<String>) state.get("tables");
-
- String tableName = tableNames.get(rand.nextInt(tableNames.size()));
-
- try {
- conn.tableOperations().offline(tableName, rand.nextBoolean());
- log.debug("Offlined " + tableName);
- sleepUninterruptibly(rand.nextInt(200), TimeUnit.MILLISECONDS);
- conn.tableOperations().online(tableName, rand.nextBoolean());
- log.debug("Onlined " + tableName);
- } catch (TableNotFoundException tne) {
- log.debug("offline or online failed " + tableName + ", doesnt exist");
- }
-
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/RenameNamespace.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/RenameNamespace.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/RenameNamespace.java
deleted file mode 100644
index f46fa12..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/RenameNamespace.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.concurrent;
-
-import java.util.List;
-import java.util.Properties;
-import java.util.Random;
-
-import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.core.client.NamespaceExistsException;
-import org.apache.accumulo.core.client.NamespaceNotFoundException;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class RenameNamespace extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- Connector conn = env.getConnector();
-
- Random rand = (Random) state.get("rand");
-
- @SuppressWarnings("unchecked")
- List<String> namespaces = (List<String>) state.get("namespaces");
-
- String srcName = namespaces.get(rand.nextInt(namespaces.size()));
- String newName = namespaces.get(rand.nextInt(namespaces.size()));
-
- try {
- conn.namespaceOperations().rename(srcName, newName);
- log.debug("Renamed namespace " + srcName + " " + newName);
- } catch (NamespaceExistsException e) {
- log.debug("Rename namespace " + srcName + " failed, " + newName + " exists");
- } catch (NamespaceNotFoundException e) {
- log.debug("Rename namespace " + srcName + " failed, doesn't exist");
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/RenameTable.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/RenameTable.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/RenameTable.java
deleted file mode 100644
index 57119eb..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/RenameTable.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.concurrent;
-
-import java.util.List;
-import java.util.Properties;
-import java.util.Random;
-
-import org.apache.accumulo.core.client.AccumuloException;
-import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.core.client.NamespaceNotFoundException;
-import org.apache.accumulo.core.client.TableExistsException;
-import org.apache.accumulo.core.client.TableNotFoundException;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class RenameTable extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- Connector conn = env.getConnector();
-
- Random rand = (Random) state.get("rand");
-
- @SuppressWarnings("unchecked")
- List<String> tableNames = (List<String>) state.get("tables");
-
- String srcTableName = tableNames.get(rand.nextInt(tableNames.size()));
- String newTableName = tableNames.get(rand.nextInt(tableNames.size()));
-
- String srcNamespace = "", newNamespace = "";
-
- int index = srcTableName.indexOf('.');
- if (-1 != index) {
- srcNamespace = srcTableName.substring(0, index);
- }
-
- index = newTableName.indexOf('.');
- if (-1 != index) {
- newNamespace = newTableName.substring(0, index);
- }
-
- try {
- conn.tableOperations().rename(srcTableName, newTableName);
- log.debug("Renamed table " + srcTableName + " " + newTableName);
- } catch (TableExistsException e) {
- log.debug("Rename " + srcTableName + " failed, " + newTableName + " exists");
- } catch (TableNotFoundException e) {
- Throwable cause = e.getCause();
- if (null != cause) {
- // Rename has to have failed on the destination namespace, because the source namespace
- // couldn't be deleted with our table in it
- if (cause.getClass().isAssignableFrom(NamespaceNotFoundException.class)) {
- log.debug("Rename failed because new namespace doesn't exist: " + newNamespace, cause);
- // Avoid the final src/dest namespace check
- return;
- }
- }
-
- log.debug("Rename " + srcTableName + " failed, doesnt exist");
- } catch (IllegalArgumentException e) {
- log.debug("Rename: " + e.toString());
- } catch (AccumuloException e) {
- // Catch the expected failure when we try to rename a table into a new namespace
- if (!srcNamespace.equals(newNamespace)) {
- return;
- }
- log.debug("Rename " + srcTableName + " failed.", e);
- }
-
- if (!srcNamespace.equals(newNamespace)) {
- log.error("RenameTable operation should have failed when renaming across namespaces.");
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/Replication.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/Replication.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/Replication.java
deleted file mode 100644
index 9f3e0aa..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/Replication.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.concurrent;
-
-import static org.apache.accumulo.core.conf.Property.MASTER_REPLICATION_SCAN_INTERVAL;
-import static org.apache.accumulo.core.conf.Property.REPLICATION_NAME;
-import static org.apache.accumulo.core.conf.Property.REPLICATION_PEERS;
-import static org.apache.accumulo.core.conf.Property.REPLICATION_PEER_PASSWORD;
-import static org.apache.accumulo.core.conf.Property.REPLICATION_PEER_USER;
-import static org.apache.accumulo.core.conf.Property.REPLICATION_WORK_ASSIGNMENT_SLEEP;
-import static org.apache.accumulo.core.conf.Property.REPLICATION_WORK_PROCESSOR_DELAY;
-import static org.apache.accumulo.core.conf.Property.REPLICATION_WORK_PROCESSOR_PERIOD;
-import static org.apache.accumulo.core.conf.Property.TABLE_REPLICATION;
-import static org.apache.accumulo.core.conf.Property.TABLE_REPLICATION_TARGET;
-import static org.apache.accumulo.server.replication.ReplicaSystemFactory.getPeerConfigurationValue;
-
-import java.util.Map.Entry;
-import java.util.Properties;
-import java.util.Random;
-import java.util.Set;
-import java.util.SortedSet;
-import java.util.TreeSet;
-import java.util.UUID;
-import java.util.concurrent.TimeUnit;
-
-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;
-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.replication.ReplicationTable;
-import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-import org.apache.accumulo.tserver.replication.AccumuloReplicaSystem;
-import org.apache.hadoop.io.Text;
-
-import static com.google.common.util.concurrent.Uninterruptibles.sleepUninterruptibly;
-
-public class Replication extends Test {
-
- final int ROWS = 1000;
- final int COLS = 50;
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- final Connector c = env.getConnector();
- final Instance inst = c.getInstance();
- final String instName = inst.getInstanceName();
- final InstanceOperations iOps = c.instanceOperations();
- final TableOperations tOps = c.tableOperations();
-
- // Replicate to ourselves
- iOps.setProperty(REPLICATION_NAME.getKey(), instName);
- iOps.setProperty(REPLICATION_PEERS.getKey() + instName, getPeerConfigurationValue(AccumuloReplicaSystem.class, instName + "," + inst.getZooKeepers()));
- iOps.setProperty(REPLICATION_PEER_USER.getKey() + instName, env.getUserName());
- iOps.setProperty(REPLICATION_PEER_PASSWORD.getKey() + instName, env.getPassword());
- // Tweak some replication parameters to make the replication go faster
- iOps.setProperty(MASTER_REPLICATION_SCAN_INTERVAL.getKey(), "1s");
- iOps.setProperty(REPLICATION_WORK_ASSIGNMENT_SLEEP.getKey(), "1s");
- iOps.setProperty(REPLICATION_WORK_PROCESSOR_DELAY.getKey(), "1s");
- iOps.setProperty(REPLICATION_WORK_PROCESSOR_PERIOD.getKey(), "1s");
-
- // Ensure the replication table is online
- ReplicationTable.setOnline(c);
- boolean online = ReplicationTable.isOnline(c);
- for (int i = 0; i < 10; i++) {
- if (online)
- break;
- sleepUninterruptibly(2, TimeUnit.SECONDS);
- online = ReplicationTable.isOnline(c);
- }
- assertTrue("Replication table was not online", online);
-
- // Make a source and destination table
- final String sourceTable = ("repl-source-" + UUID.randomUUID()).replace('-', '_');
- final String destTable = ("repl-dest-" + UUID.randomUUID()).replace('-', '_');
- final String tables[] = new String[] {sourceTable, destTable};
-
- for (String tableName : tables) {
- log.debug("creating " + tableName);
- tOps.create(tableName);
- }
-
- // Point the source to the destination
- final String destID = tOps.tableIdMap().get(destTable);
- tOps.setProperty(sourceTable, TABLE_REPLICATION.getKey(), "true");
- tOps.setProperty(sourceTable, TABLE_REPLICATION_TARGET.getKey() + instName, destID);
-
- // zookeeper propagation wait
- sleepUninterruptibly(5, TimeUnit.SECONDS);
-
- // Maybe split the tables
- Random rand = new Random(System.currentTimeMillis());
- for (String tableName : tables) {
- if (rand.nextBoolean()) {
- splitTable(tOps, tableName);
- }
- }
-
- // write some checkable data
- BatchWriter bw = c.createBatchWriter(sourceTable, null);
- for (int row = 0; row < ROWS; row++) {
- Mutation m = new Mutation(itos(row));
- for (int col = 0; col < COLS; col++) {
- m.put("", itos(col), "");
- }
- bw.addMutation(m);
- }
- bw.close();
-
- // attempt to force the WAL to roll so replication begins
- final Set<String> origRefs = c.replicationOperations().referencedFiles(sourceTable);
- // write some data we will ignore
- while (true) {
- final Set<String> updatedFileRefs = c.replicationOperations().referencedFiles(sourceTable);
- updatedFileRefs.retainAll(origRefs);
- log.debug("updateFileRefs size " + updatedFileRefs.size());
- if (updatedFileRefs.isEmpty()) {
- break;
- }
- bw = c.createBatchWriter(sourceTable, null);
- for (int row = 0; row < ROWS; row++) {
- Mutation m = new Mutation(itos(row));
- for (int col = 0; col < COLS; col++) {
- m.put("ignored", itos(col), "");
- }
- bw.addMutation(m);
- }
- bw.close();
- }
-
- // wait a little while for replication to take place
- sleepUninterruptibly(30, TimeUnit.SECONDS);
-
- // check the data
- Scanner scanner = c.createScanner(destTable, Authorizations.EMPTY);
- scanner.fetchColumnFamily(new Text(""));
- int row = 0;
- int col = 0;
- for (Entry<Key,Value> entry : scanner) {
- assertEquals(row, Integer.parseInt(entry.getKey().getRow().toString()));
- assertEquals(col, Integer.parseInt(entry.getKey().getColumnQualifier().toString()));
- col++;
- if (col == COLS) {
- row++;
- col = 0;
- }
- }
- assertEquals(ROWS, row);
- assertEquals(0, col);
-
- // cleanup
- for (String tableName : tables) {
- log.debug("Deleting " + tableName);
- tOps.delete(tableName);
- }
- }
-
- // junit isn't a dependency
- private void assertEquals(int expected, int actual) {
- if (expected != actual)
- throw new RuntimeException(String.format("%d fails to match expected value %d", actual, expected));
- }
-
- // junit isn't a dependency
- private void assertTrue(String string, boolean test) {
- if (!test)
- throw new RuntimeException(string);
- }
-
- private static String itos(int i) {
- return String.format("%08d", i);
- }
-
- private void splitTable(TableOperations tOps, String tableName) throws Exception {
- SortedSet<Text> splits = new TreeSet<>();
- for (int i = 1; i <= 9; i++) {
- splits.add(new Text(itos(i * (ROWS / 10))));
- }
- log.debug("Adding splits to " + tableName);
- tOps.addSplits(tableName, splits);
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/ScanTable.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/ScanTable.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/ScanTable.java
deleted file mode 100644
index e0bec38..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/ScanTable.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.concurrent;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map.Entry;
-import java.util.Properties;
-import java.util.Random;
-
-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.TableDeletedException;
-import org.apache.accumulo.core.client.TableNotFoundException;
-import org.apache.accumulo.core.client.TableOfflineException;
-import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.Value;
-import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class ScanTable extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- Connector conn = env.getConnector();
-
- Random rand = (Random) state.get("rand");
-
- @SuppressWarnings("unchecked")
- List<String> tableNames = (List<String>) state.get("tables");
-
- String tableName = tableNames.get(rand.nextInt(tableNames.size()));
-
- try {
- Scanner scanner = conn.createScanner(tableName, Authorizations.EMPTY);
- Iterator<Entry<Key,Value>> iter = scanner.iterator();
- while (iter.hasNext()) {
- iter.next();
- }
- log.debug("Scanned " + tableName);
- } catch (TableDeletedException e) {
- log.debug("Scan " + tableName + " failed, table deleted");
- } catch (TableNotFoundException e) {
- log.debug("Scan " + tableName + " failed, doesnt exist");
- } catch (TableOfflineException e) {
- log.debug("Scan " + tableName + " failed, offline");
- } catch (RuntimeException e) {
- if (e.getCause() instanceof AccumuloSecurityException) {
- log.debug("BatchScan " + tableName + " failed, permission error");
- } else {
- throw e;
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/Setup.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/Setup.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/Setup.java
deleted file mode 100644
index ee7ae32..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/Setup.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.concurrent;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-import java.util.Random;
-
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class Setup extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- Random rand = new Random();
- state.set("rand", rand);
-
- int numTables = Integer.parseInt(props.getProperty("numTables", "9"));
- int numNamespaces = Integer.parseInt(props.getProperty("numNamespaces", "2"));
- log.debug("numTables = " + numTables);
- log.debug("numNamespaces = " + numNamespaces);
- List<String> tables = new ArrayList<>();
- List<String> namespaces = new ArrayList<>();
-
- for (int i = 0; i < numNamespaces; i++) {
- namespaces.add(String.format("nspc_%03d", i));
- }
-
- // Make tables in the default namespace
- double tableCeil = Math.ceil((double) numTables / (numNamespaces + 1));
- for (int i = 0; i < tableCeil; i++) {
- tables.add(String.format("ctt_%03d", i));
- }
-
- // Make tables in each namespace
- double tableFloor = Math.floor(numTables / (numNamespaces + 1));
- for (String n : namespaces) {
- for (int i = 0; i < tableFloor; i++) {
- tables.add(String.format(n + ".ctt_%03d", i));
- }
- }
-
- state.set("tables", tables);
- state.set("namespaces", namespaces);
-
- int numUsers = Integer.parseInt(props.getProperty("numUsers", "5"));
- log.debug("numUsers = " + numUsers);
- List<String> users = new ArrayList<>();
- for (int i = 0; i < numUsers; i++)
- users.add(String.format("user%03d", i));
- state.set("users", users);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/Shutdown.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/Shutdown.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/Shutdown.java
deleted file mode 100644
index eeaeea6..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/Shutdown.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.concurrent;
-
-import java.util.Properties;
-import java.util.concurrent.TimeUnit;
-
-import org.apache.accumulo.core.client.impl.MasterClient;
-import org.apache.accumulo.core.master.thrift.MasterClientService.Client;
-import org.apache.accumulo.core.master.thrift.MasterGoalState;
-import org.apache.accumulo.core.trace.Tracer;
-import org.apache.accumulo.master.state.SetGoalState;
-import org.apache.accumulo.server.AccumuloServerContext;
-import org.apache.accumulo.server.client.HdfsZooInstance;
-import org.apache.accumulo.server.conf.ServerConfigurationFactory;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-import static com.google.common.util.concurrent.Uninterruptibles.sleepUninterruptibly;
-
-public class Shutdown extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- log.info("shutting down");
- SetGoalState.main(new String[] {MasterGoalState.CLEAN_STOP.name()});
-
- while (!env.getConnector().instanceOperations().getTabletServers().isEmpty()) {
- sleepUninterruptibly(1, TimeUnit.SECONDS);
- }
-
- while (true) {
- try {
- AccumuloServerContext context = new AccumuloServerContext(new ServerConfigurationFactory(HdfsZooInstance.getInstance()));
- Client client = MasterClient.getConnection(context);
- client.getMasterStats(Tracer.traceInfo(), context.rpcCreds());
- } catch (Exception e) {
- // assume this is due to server shutdown
- break;
- }
- sleepUninterruptibly(1, TimeUnit.SECONDS);
- }
-
- log.info("servers stopped");
- sleepUninterruptibly(10, TimeUnit.SECONDS);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/StartAll.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/StartAll.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/StartAll.java
deleted file mode 100644
index cfc0053..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/StartAll.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.concurrent;
-
-import java.util.Properties;
-import java.util.concurrent.TimeUnit;
-
-import org.apache.accumulo.core.client.impl.MasterClient;
-import org.apache.accumulo.core.master.thrift.MasterClientService.Client;
-import org.apache.accumulo.core.master.thrift.MasterGoalState;
-import org.apache.accumulo.core.master.thrift.MasterMonitorInfo;
-import org.apache.accumulo.core.trace.Tracer;
-import org.apache.accumulo.master.state.SetGoalState;
-import org.apache.accumulo.server.AccumuloServerContext;
-import org.apache.accumulo.server.client.HdfsZooInstance;
-import org.apache.accumulo.server.conf.ServerConfigurationFactory;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-import static com.google.common.util.concurrent.Uninterruptibles.sleepUninterruptibly;
-
-public class StartAll extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- log.info("Starting all servers");
- SetGoalState.main(new String[] {MasterGoalState.NORMAL.name()});
- Process exec = Runtime.getRuntime().exec(new String[] {System.getenv().get("ACCUMULO_HOME") + "/bin/start-all.sh"});
- exec.waitFor();
- while (true) {
- try {
- AccumuloServerContext context = new AccumuloServerContext(new ServerConfigurationFactory(HdfsZooInstance.getInstance()));
- Client client = MasterClient.getConnection(context);
- MasterMonitorInfo masterStats = client.getMasterStats(Tracer.traceInfo(), context.rpcCreds());
- if (!masterStats.tServerInfo.isEmpty())
- break;
- } catch (Exception ex) {
- sleepUninterruptibly(1, TimeUnit.SECONDS);
- }
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/StopTabletServer.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/StopTabletServer.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/StopTabletServer.java
deleted file mode 100644
index d819cc0..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/StopTabletServer.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.concurrent;
-
-import static java.nio.charset.StandardCharsets.UTF_8;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Properties;
-import java.util.Set;
-
-import org.apache.accumulo.core.Constants;
-import org.apache.accumulo.core.client.Instance;
-import org.apache.accumulo.core.util.AddressUtil;
-import org.apache.accumulo.core.zookeeper.ZooUtil;
-import org.apache.accumulo.fate.zookeeper.ZooReader;
-import org.apache.accumulo.server.master.state.TServerInstance;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-import org.apache.zookeeper.KeeperException;
-import org.apache.zookeeper.data.Stat;
-
-public class StopTabletServer extends Test {
-
- Set<TServerInstance> getTServers(Instance instance) throws KeeperException, InterruptedException {
- Set<TServerInstance> result = new HashSet<>();
- ZooReader rdr = new ZooReader(instance.getZooKeepers(), instance.getZooKeepersSessionTimeOut());
- String base = ZooUtil.getRoot(instance) + Constants.ZTSERVERS;
- for (String child : rdr.getChildren(base)) {
- try {
- List<String> children = rdr.getChildren(base + "/" + child);
- if (children.size() > 0) {
- Collections.sort(children);
- Stat stat = new Stat();
- byte[] data = rdr.getData(base + "/" + child + "/" + children.get(0), stat);
- if (!"master".equals(new String(data, UTF_8))) {
- result.add(new TServerInstance(AddressUtil.parseAddress(child, false), stat.getEphemeralOwner()));
- }
- }
- } catch (KeeperException.NoNodeException ex) {
- // someone beat us too it
- }
- }
- return result;
- }
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
-
- Instance instance = env.getInstance();
-
- List<TServerInstance> currentServers = new ArrayList<>(getTServers(instance));
- Collections.shuffle(currentServers);
- Runtime runtime = Runtime.getRuntime();
- if (currentServers.size() > 1) {
- TServerInstance victim = currentServers.get(0);
- log.info("Stopping " + victim.hostPort());
- Process exec = runtime.exec(new String[] {System.getenv("ACCUMULO_HOME") + "/bin/accumulo", "admin", "stop", victim.hostPort()});
- if (exec.waitFor() != 0)
- throw new RuntimeException("admin stop returned a non-zero response: " + exec.exitValue());
- Set<TServerInstance> set = getTServers(instance);
- if (set.contains(victim))
- throw new RuntimeException("Failed to stop " + victim);
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Compact.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Compact.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Compact.java
deleted file mode 100644
index 1b0e03b..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Compact.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.conditional;
-
-import java.util.Properties;
-import java.util.Random;
-
-import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-import org.apache.hadoop.io.Text;
-
-/**
- *
- */
-public class Compact extends Test {
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- String table = state.getString("tableName");
- Random rand = (Random) state.get("rand");
- Connector conn = env.getConnector();
- Text row1 = new Text(Utils.getBank(rand.nextInt((Integer) state.get("numBanks"))));
- Text row2 = new Text(Utils.getBank(rand.nextInt((Integer) state.get("numBanks"))));
-
- if (row1.compareTo(row2) >= 0) {
- row1 = null;
- row2 = null;
- }
-
- log.debug("compacting " + row1 + " " + row2);
- conn.tableOperations().compact(table, row1, row2, rand.nextBoolean(), rand.nextBoolean());
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Flush.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Flush.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Flush.java
deleted file mode 100644
index cb5c5f1..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Flush.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.conditional;
-
-import java.util.Properties;
-import java.util.Random;
-
-import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-import org.apache.hadoop.io.Text;
-
-/**
- *
- */
-public class Flush extends Test {
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- String table = state.getString("tableName");
- Random rand = (Random) state.get("rand");
- Connector conn = env.getConnector();
- Text row1 = new Text(Utils.getBank(rand.nextInt((Integer) state.get("numBanks"))));
- Text row2 = new Text(Utils.getBank(rand.nextInt((Integer) state.get("numBanks"))));
-
- if (row1.compareTo(row2) >= 0) {
- row1 = null;
- row2 = null;
- }
-
- log.debug("flushing " + row1 + " " + row2);
- conn.tableOperations().flush(table, row1, row2, rand.nextBoolean());
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Init.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Init.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Init.java
deleted file mode 100644
index 4668802..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Init.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.conditional;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Properties;
-import java.util.Random;
-import java.util.TreeSet;
-
-import org.apache.accumulo.core.client.ConditionalWriter;
-import org.apache.accumulo.core.client.ConditionalWriter.Status;
-import org.apache.accumulo.core.data.Condition;
-import org.apache.accumulo.core.data.ConditionalMutation;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-import org.apache.hadoop.io.Text;
-
-/**
- *
- */
-public class Init extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
-
- int numBanks = (Integer) state.get("numBanks");
- int numAccts = (Integer) state.get("numAccts");
-
- // add some splits to spread ingest out a little
- TreeSet<Text> splits = new TreeSet<>();
- for (int i = 1; i < 10; i++)
- splits.add(new Text(Utils.getBank((int) (numBanks * .1 * i))));
- env.getConnector().tableOperations().addSplits((String) state.get("tableName"), splits);
- log.debug("Added splits " + splits);
-
- ArrayList<Integer> banks = new ArrayList<>();
- for (int i = 0; i < numBanks; i++)
- banks.add(i);
- // shuffle for case when multiple threads are adding banks
- Collections.shuffle(banks, (Random) state.get("rand"));
-
- ConditionalWriter cw = (ConditionalWriter) state.get("cw");
-
- for (int i : banks) {
- ConditionalMutation m = new ConditionalMutation(Utils.getBank(i));
- int acceptedCount = 0;
- for (int j = 0; j < numAccts; j++) {
- String cf = Utils.getAccount(j);
- m.addCondition(new Condition(cf, "seq"));
- m.put(cf, "bal", "100");
- m.put(cf, "seq", Utils.getSeq(0));
-
- if (j % 1000 == 0 && j > 0) {
- Status status = cw.write(m).getStatus();
-
- while (status == Status.UNKNOWN)
- status = cw.write(m).getStatus();
-
- if (status == Status.ACCEPTED)
- acceptedCount++;
- m = new ConditionalMutation(Utils.getBank(i));
- }
-
- }
- if (m.getConditions().size() > 0) {
- Status status = cw.write(m).getStatus();
- while (status == Status.UNKNOWN)
- status = cw.write(m).getStatus();
-
- if (status == Status.ACCEPTED)
- acceptedCount++;
- }
-
- log.debug("Added bank " + Utils.getBank(i) + " " + acceptedCount);
- }
-
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Merge.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Merge.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Merge.java
deleted file mode 100644
index 2124518..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Merge.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.conditional;
-
-import java.util.Properties;
-import java.util.Random;
-
-import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-import org.apache.hadoop.io.Text;
-
-/**
- *
- */
-public class Merge extends Test {
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- String table = state.getString("tableName");
- Random rand = (Random) state.get("rand");
- Connector conn = env.getConnector();
- Text row1 = new Text(Utils.getBank(rand.nextInt((Integer) state.get("numBanks"))));
- Text row2 = new Text(Utils.getBank(rand.nextInt((Integer) state.get("numBanks"))));
-
- if (row1.compareTo(row2) >= 0) {
- row1 = null;
- row2 = null;
- }
-
- log.debug("merging " + row1 + " " + row2);
- conn.tableOperations().merge(table, row1, row2);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Setup.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Setup.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Setup.java
deleted file mode 100644
index c22d5b8..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Setup.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.conditional;
-
-import java.util.Properties;
-import java.util.Random;
-
-import org.apache.accumulo.core.client.ConditionalWriter;
-import org.apache.accumulo.core.client.ConditionalWriterConfig;
-import org.apache.accumulo.core.client.TableExistsException;
-import org.apache.accumulo.core.conf.Property;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class Setup extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- Random rand = new Random();
- state.set("rand", rand);
-
- int numBanks = Integer.parseInt(props.getProperty("numBanks", "1000"));
- log.debug("numBanks = " + numBanks);
- state.set("numBanks", numBanks);
-
- int numAccts = Integer.parseInt(props.getProperty("numAccts", "10000"));
- log.debug("numAccts = " + numAccts);
- state.set("numAccts", numAccts);
-
- String tableName = "banks";
- state.set("tableName", tableName);
-
- try {
- env.getConnector().tableOperations().create(tableName);
- log.debug("created table " + tableName);
- boolean blockCache = rand.nextBoolean();
- env.getConnector().tableOperations().setProperty(tableName, Property.TABLE_BLOCKCACHE_ENABLED.getKey(), blockCache + "");
- log.debug("set " + Property.TABLE_BLOCKCACHE_ENABLED.getKey() + " " + blockCache);
- } catch (TableExistsException tee) {}
-
- ConditionalWriter cw = env.getConnector().createConditionalWriter(tableName, new ConditionalWriterConfig().setMaxWriteThreads(1));
- state.set("cw", cw);
-
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Split.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Split.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Split.java
deleted file mode 100644
index 0d7fee1..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Split.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.conditional;
-
-import java.util.Arrays;
-import java.util.Properties;
-import java.util.Random;
-import java.util.TreeSet;
-
-import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-import org.apache.hadoop.io.Text;
-
-/**
- *
- */
-public class Split extends Test {
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- String table = state.getString("tableName");
- Random rand = (Random) state.get("rand");
- Connector conn = env.getConnector();
- String row = Utils.getBank(rand.nextInt((Integer) state.get("numBanks")));
-
- log.debug("adding split " + row);
- conn.tableOperations().addSplits(table, new TreeSet<>(Arrays.asList(new Text(row))));
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/TearDown.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/TearDown.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/TearDown.java
deleted file mode 100644
index 0c59eae..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/TearDown.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.conditional;
-
-import java.util.Properties;
-
-import org.apache.accumulo.core.client.ConditionalWriter;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-/**
- *
- */
-public class TearDown extends Test {
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- ConditionalWriter cw = (ConditionalWriter) state.get("cw");
- cw.close();
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Transfer.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Transfer.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Transfer.java
deleted file mode 100644
index da30df5..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Transfer.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.conditional;
-
-import java.util.Map.Entry;
-import java.util.Properties;
-import java.util.Random;
-
-import org.apache.accumulo.core.client.ConditionalWriter;
-import org.apache.accumulo.core.client.ConditionalWriter.Status;
-import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.core.client.IsolatedScanner;
-import org.apache.accumulo.core.client.Scanner;
-import org.apache.accumulo.core.data.Condition;
-import org.apache.accumulo.core.data.ConditionalMutation;
-import org.apache.accumulo.core.data.Key;
-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.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-import org.apache.commons.math3.distribution.ZipfDistribution;
-import org.apache.hadoop.io.Text;
-
-/**
- *
- */
-public class Transfer extends Test {
-
- private static class Account {
- int seq;
- int bal;
-
- void setBal(String s) {
- bal = Integer.parseInt(s);
- }
-
- void setSeq(String s) {
- seq = Integer.parseInt(s);
- }
-
- @Override
- public String toString() {
- return seq + " " + bal;
- }
- }
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- String table = state.getString("tableName");
- Random rand = (Random) state.get("rand");
- Connector conn = env.getConnector();
-
- int numAccts = (Integer) state.get("numAccts");
- // note: non integer exponents are slow
-
- ZipfDistribution zdiBanks = new ZipfDistribution((Integer) state.get("numBanks"), 1);
- String bank = Utils.getBank(zdiBanks.inverseCumulativeProbability(rand.nextDouble()));
- ZipfDistribution zdiAccts = new ZipfDistribution(numAccts, 1);
- String acct1 = Utils.getAccount(zdiAccts.inverseCumulativeProbability(rand.nextDouble()));
- String acct2 = Utils.getAccount(zdiAccts.inverseCumulativeProbability(rand.nextDouble()));
- while (acct2.equals(acct1)) {
- // intentionally not using zipf distribution to pick on retry
- acct2 = Utils.getAccount(rand.nextInt(numAccts));
- }
-
- // TODO document how data should be read when using ConditionalWriter
- try (Scanner scanner = new IsolatedScanner(conn.createScanner(table, Authorizations.EMPTY))) {
-
- scanner.setRange(new Range(bank));
- scanner.fetchColumnFamily(new Text(acct1));
- scanner.fetchColumnFamily(new Text(acct2));
-
- Account a1 = new Account();
- Account a2 = new Account();
- Account a;
-
- for (Entry<Key,Value> entry : scanner) {
- String cf = entry.getKey().getColumnFamilyData().toString();
- String cq = entry.getKey().getColumnQualifierData().toString();
-
- if (cf.equals(acct1))
- a = a1;
- else if (cf.equals(acct2))
- a = a2;
- else
- throw new Exception("Unexpected column fam: " + cf);
-
- if (cq.equals("bal"))
- a.setBal(entry.getValue().toString());
- else if (cq.equals("seq"))
- a.setSeq(entry.getValue().toString());
- else
- throw new Exception("Unexpected column qual: " + cq);
- }
-
- int amt = rand.nextInt(50);
-
- log.debug("transfer req " + bank + " " + amt + " " + acct1 + " " + a1 + " " + acct2 + " " + a2);
-
- if (a1.bal >= amt) {
- ConditionalMutation cm = new ConditionalMutation(bank, new Condition(acct1, "seq").setValue(Utils.getSeq(a1.seq)),
- new Condition(acct2, "seq").setValue(Utils.getSeq(a2.seq)));
- cm.put(acct1, "bal", (a1.bal - amt) + "");
- cm.put(acct2, "bal", (a2.bal + amt) + "");
- cm.put(acct1, "seq", Utils.getSeq(a1.seq + 1));
- cm.put(acct2, "seq", Utils.getSeq(a2.seq + 1));
-
- ConditionalWriter cw = (ConditionalWriter) state.get("cw");
- Status status = cw.write(cm).getStatus();
- while (status == Status.UNKNOWN) {
- log.debug("retrying transfer " + status);
- status = cw.write(cm).getStatus();
- }
- log.debug("transfer result " + bank + " " + status + " " + a1 + " " + a2);
- }
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Utils.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Utils.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Utils.java
deleted file mode 100644
index 1c83686..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Utils.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.conditional;
-
-/**
- *
- */
-public class Utils {
-
- static String getBank(int b) {
- return String.format("b%03d", b);
- }
-
- static String getAccount(int a) {
- return "acct" + String.format("%06d", a);
- }
-
- static String getSeq(int s) {
- return String.format("%06d", s);
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Verify.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Verify.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Verify.java
deleted file mode 100644
index 6c46f73..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Verify.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.conditional;
-
-import java.util.Map.Entry;
-import java.util.Properties;
-
-import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.core.client.IsolatedScanner;
-import org.apache.accumulo.core.client.IteratorSetting;
-import org.apache.accumulo.core.client.Scanner;
-import org.apache.accumulo.core.client.TableNotFoundException;
-import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.Range;
-import org.apache.accumulo.core.data.Value;
-import org.apache.accumulo.core.iterators.user.ColumnSliceFilter;
-import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-/**
- *
- */
-public class Verify extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- String table = state.getString("tableName");
- Connector conn = env.getConnector();
-
- int numAccts = (Integer) state.get("numAccts");
-
- for (int i = 0; i < (Integer) state.get("numBanks"); i++)
- verifyBank(table, conn, Utils.getBank(i), numAccts);
-
- }
-
- private void verifyBank(String table, Connector conn, String row, int numAccts) throws TableNotFoundException, Exception {
- log.debug("Verifying bank " + row);
-
- int count = 0;
- int sum = 0;
- int min = Integer.MAX_VALUE;
- int max = Integer.MIN_VALUE;
-
- // TODO do not use IsolatedScanner, just enable isolation on scanner
- try (Scanner scanner = new IsolatedScanner(conn.createScanner(table, Authorizations.EMPTY))) {
-
- scanner.setRange(new Range(row));
- IteratorSetting iterConf = new IteratorSetting(100, "cqsl", ColumnSliceFilter.class);
- ColumnSliceFilter.setSlice(iterConf, "bal", true, "bal", true);
- scanner.clearScanIterators();
- scanner.addScanIterator(iterConf);
-
- for (Entry<Key,Value> entry : scanner) {
- int bal = Integer.parseInt(entry.getValue().toString());
- sum += bal;
- if (bal > max)
- max = bal;
- if (bal < min)
- min = bal;
- count++;
- }
-
- }
-
- if (count > 0 && sum != numAccts * 100) {
- throw new Exception("Sum is off " + sum);
- }
-
- log.debug("Verified " + row + " count = " + count + " sum = " + sum + " min = " + min + " max = " + max);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/image/Commit.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/image/Commit.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/image/Commit.java
deleted file mode 100644
index 4468591..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/image/Commit.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.image;
-
-import java.util.Properties;
-
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-public class Commit extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
- env.getMultiTableBatchWriter().flush();
-
- log.debug("Committed " + state.getLong("numWrites") + " writes. Total writes: " + state.getLong("totalWrites"));
- state.set("numWrites", Long.valueOf(0));
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/image/ImageFixture.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/image/ImageFixture.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/image/ImageFixture.java
deleted file mode 100644
index b37ff90..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/image/ImageFixture.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.image;
-
-import java.net.InetAddress;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Random;
-import java.util.Set;
-import java.util.SortedSet;
-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;
-import org.apache.accumulo.core.client.impl.Tables;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.Fixture;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.hadoop.io.Text;
-
-public class ImageFixture extends Fixture {
-
- String imageTableName;
- String indexTableName;
-
- @Override
- public void setUp(State state, Environment env) throws Exception {
-
- Connector conn = env.getConnector();
- Instance instance = env.getInstance();
-
- SortedSet<Text> splits = new TreeSet<>();
- for (int i = 1; i < 256; i++) {
- splits.add(new Text(String.format("%04x", i << 8)));
- }
-
- String hostname = InetAddress.getLocalHost().getHostName().replaceAll("[-.]", "_");
- String pid = env.getPid();
-
- imageTableName = String.format("img_%s_%s_%d", hostname, pid, System.currentTimeMillis());
- state.set("imageTableName", imageTableName);
-
- indexTableName = String.format("img_ndx_%s_%s_%d", hostname, pid, System.currentTimeMillis());
- state.set("indexTableName", indexTableName);
-
- try {
- conn.tableOperations().create(imageTableName);
- conn.tableOperations().addSplits(imageTableName, splits);
- log.debug("Created table " + imageTableName + " (id:" + Tables.getNameToIdMap(instance).get(imageTableName) + ")");
- } catch (TableExistsException e) {
- log.error("Table " + imageTableName + " already exists.");
- throw e;
- }
-
- try {
- conn.tableOperations().create(indexTableName);
- log.debug("Created table " + indexTableName + " (id:" + Tables.getNameToIdMap(instance).get(indexTableName) + ")");
- } catch (TableExistsException e) {
- log.error("Table " + imageTableName + " already exists.");
- throw e;
- }
-
- Random rand = new Random();
- if (rand.nextInt(10) < 5) {
- // setup locality groups
- Map<String,Set<Text>> groups = getLocalityGroups();
-
- conn.tableOperations().setLocalityGroups(imageTableName, groups);
- log.debug("Configured locality groups for " + imageTableName + " groups = " + groups);
- }
-
- state.set("numWrites", Long.valueOf(0));
- state.set("totalWrites", Long.valueOf(0));
- state.set("verified", Integer.valueOf(0));
- state.set("lastIndexRow", new Text(""));
- }
-
- static Map<String,Set<Text>> getLocalityGroups() {
- Map<String,Set<Text>> groups = new HashMap<>();
-
- HashSet<Text> lg1 = new HashSet<>();
- lg1.add(Write.CONTENT_COLUMN_FAMILY);
- groups.put("lg1", lg1);
-
- HashSet<Text> lg2 = new HashSet<>();
- lg2.add(Write.META_COLUMN_FAMILY);
- groups.put("lg2", lg2);
- return groups;
- }
-
- @Override
- public void tearDown(State state, Environment env) throws Exception {
- // We have resources we need to clean up
- if (env.isMultiTableBatchWriterInitialized()) {
- MultiTableBatchWriter mtbw = env.getMultiTableBatchWriter();
- try {
- mtbw.close();
- } catch (MutationsRejectedException e) {
- log.error("Ignoring mutations that weren't flushed", e);
- }
-
- // Reset the MTBW on the state to null
- env.resetMultiTableBatchWriter();
- }
-
- // Now we can safely delete the tables
- log.debug("Dropping tables: " + imageTableName + " " + indexTableName);
-
- Connector conn = env.getConnector();
-
- conn.tableOperations().delete(imageTableName);
- conn.tableOperations().delete(indexTableName);
-
- log.debug("Final total of writes: " + state.getLong("totalWrites"));
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/image/ScanMeta.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/image/ScanMeta.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/image/ScanMeta.java
deleted file mode 100644
index 49d33d0..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/image/ScanMeta.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.image;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Properties;
-import java.util.Random;
-import java.util.UUID;
-
-import org.apache.accumulo.core.client.BatchScanner;
-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.Range;
-import org.apache.accumulo.core.data.Value;
-import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-import org.apache.hadoop.io.Text;
-
-public class ScanMeta extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
-
- // scan just the metadata of the images table to find N hashes... use the batch scanner to lookup those N hashes in the index table
- // this scan will test locality groups....
-
- String indexTableName = state.getString("indexTableName");
- String imageTableName = state.getString("imageTableName");
-
- String uuid = UUID.randomUUID().toString();
-
- Connector conn = env.getConnector();
-
- Scanner imageScanner = conn.createScanner(imageTableName, new Authorizations());
-
- imageScanner.setRange(new Range(new Text(uuid), null));
- imageScanner.fetchColumn(Write.META_COLUMN_FAMILY, Write.SHA1_COLUMN_QUALIFIER);
-
- int minScan = Integer.parseInt(props.getProperty("minScan"));
- int maxScan = Integer.parseInt(props.getProperty("maxScan"));
-
- Random rand = new Random();
- int numToScan = rand.nextInt(maxScan - minScan) + minScan;
-
- Map<Text,Text> hashes = new HashMap<>();
-
- Iterator<Entry<Key,Value>> iter = imageScanner.iterator();
-
- while (iter.hasNext() && numToScan > 0) {
-
- Entry<Key,Value> entry = iter.next();
-
- hashes.put(new Text(entry.getValue().get()), entry.getKey().getRow());
-
- numToScan--;
- }
-
- log.debug("Found " + hashes.size() + " hashes starting at " + uuid);
-
- if (hashes.isEmpty()) {
- return;
- }
-
- // use batch scanner to verify all of these exist in index
- BatchScanner indexScanner = conn.createBatchScanner(indexTableName, Authorizations.EMPTY, 3);
- ArrayList<Range> ranges = new ArrayList<>();
- for (Text row : hashes.keySet()) {
- ranges.add(new Range(row));
- }
-
- indexScanner.setRanges(ranges);
-
- Map<Text,Text> hashes2 = new HashMap<>();
-
- for (Entry<Key,Value> entry : indexScanner)
- hashes2.put(entry.getKey().getRow(), new Text(entry.getValue().get()));
-
- log.debug("Looked up " + ranges.size() + " ranges, found " + hashes2.size());
-
- if (!hashes.equals(hashes2)) {
- log.error("uuids from doc table : " + hashes.values());
- log.error("uuids from index : " + hashes2.values());
- throw new Exception("Mismatch between document table and index " + indexTableName + " " + imageTableName);
- }
-
- indexScanner.close();
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/image/TableOp.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/image/TableOp.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/image/TableOp.java
deleted file mode 100644
index d2b5e2f..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/image/TableOp.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.image;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Random;
-import java.util.Set;
-
-import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.core.client.admin.TableOperations;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-import org.apache.hadoop.io.Text;
-
-public class TableOp extends Test {
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
-
- // choose a table
- Random rand = new Random();
- String tableName;
- if (rand.nextInt(10) < 8) {
- tableName = state.getString("imageTableName");
- } else {
- tableName = state.getString("indexTableName");
- }
-
- // check if chosen table exists
- Connector conn = env.getConnector();
- TableOperations tableOps = conn.tableOperations();
- if (tableOps.exists(tableName) == false) {
- log.error("Table " + tableName + " does not exist!");
- return;
- }
-
- // choose a random action
- int num = rand.nextInt(10);
- if (num > 6) {
- log.debug("Retrieving info for " + tableName);
- tableOps.getLocalityGroups(tableName);
- tableOps.getProperties(tableName);
- tableOps.listSplits(tableName);
- tableOps.list();
- } else {
- log.debug("Clearing locator cache for " + tableName);
- tableOps.clearLocatorCache(tableName);
- }
-
- if (rand.nextInt(10) < 3) {
- Map<String,Set<Text>> groups = tableOps.getLocalityGroups(state.getString("imageTableName"));
-
- if (groups.size() == 0) {
- log.debug("Adding locality groups to " + state.getString("imageTableName"));
- groups = ImageFixture.getLocalityGroups();
- } else {
- log.debug("Removing locality groups from " + state.getString("imageTableName"));
- groups = new HashMap<>();
- }
-
- tableOps.setLocalityGroups(state.getString("imageTableName"), groups);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/b24c338a/test/src/main/java/org/apache/accumulo/test/randomwalk/image/Verify.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/image/Verify.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/image/Verify.java
deleted file mode 100644
index cfac23f..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/image/Verify.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.image;
-
-import static java.nio.charset.StandardCharsets.UTF_8;
-
-import java.security.MessageDigest;
-import java.util.Iterator;
-import java.util.Map.Entry;
-import java.util.Properties;
-import java.util.Random;
-import java.util.UUID;
-
-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.Range;
-import org.apache.accumulo.core.data.Value;
-import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.test.randomwalk.Environment;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-import org.apache.hadoop.io.Text;
-
-public class Verify extends Test {
-
- String indexTableName;
- String imageTableName;
-
- @Override
- public void visit(State state, Environment env, Properties props) throws Exception {
-
- Random rand = new Random();
-
- int maxVerify = Integer.parseInt(props.getProperty("maxVerify"));
- int numVerifications = rand.nextInt(maxVerify - 1) + 1;
-
- indexTableName = state.getString("indexTableName");
- imageTableName = state.getString("imageTableName");
-
- Connector conn = env.getConnector();
-
- Scanner indexScanner = conn.createScanner(indexTableName, new Authorizations());
- Scanner imageScanner = conn.createScanner(imageTableName, new Authorizations());
-
- String uuid = UUID.randomUUID().toString();
-
- MessageDigest alg = MessageDigest.getInstance("SHA-1");
- alg.update(uuid.getBytes(UTF_8));
-
- indexScanner.setRange(new Range(new Text(alg.digest()), null));
- indexScanner.setBatchSize(numVerifications);
-
- Text curRow = null;
- int count = 0;
- for (Entry<Key,Value> entry : indexScanner) {
-
- curRow = entry.getKey().getRow();
- String rowToVerify = entry.getValue().toString();
-
- verifyRow(imageScanner, rowToVerify);
-
- count++;
- if (count == numVerifications) {
- break;
- }
- }
-
- if (count != numVerifications && curRow != null) {
- Text lastRow = (Text) state.get("lastIndexRow");
- if (lastRow.compareTo(curRow) != 0) {
- log.error("Verified only " + count + " of " + numVerifications + " - curRow " + curRow + " lastKey " + lastRow);
- }
- }
-
- int verified = ((Integer) state.get("verified")).intValue() + numVerifications;
- log.debug("Verified " + numVerifications + " - Total " + verified);
- state.set("verified", Integer.valueOf(verified));
- }
-
- public void verifyRow(Scanner scanner, String row) throws Exception {
-
- scanner.setRange(new Range(new Text(row)));
- scanner.clearColumns();
- scanner.fetchColumnFamily(Write.CONTENT_COLUMN_FAMILY);
- scanner.fetchColumn(Write.META_COLUMN_FAMILY, Write.SHA1_COLUMN_QUALIFIER);
-
- Iterator<Entry<Key,Value>> scanIter = scanner.iterator();
-
- if (scanIter.hasNext() == false) {
- log.error("Found row(" + row + ") in " + indexTableName + " but not " + imageTableName);
- return;
- }
-
- // get image
- Entry<Key,Value> entry = scanIter.next();
- byte[] imageBytes = entry.getValue().get();
-
- MessageDigest alg = MessageDigest.getInstance("SHA-1");
- alg.update(imageBytes);
- byte[] localHash = alg.digest();
-
- // get stored hash
- entry = scanIter.next();
- byte[] storedHash = entry.getValue().get();
-
- if (localHash.length != storedHash.length) {
- throw new Exception("Hash lens do not match for " + row);
- }
-
- for (int i = 0; i < localHash.length; i++) {
- if (localHash[i] != storedHash[i]) {
- throw new Exception("Hashes do not match for " + row);
- }
- }
- }
-}