You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by ct...@apache.org on 2018/09/09 08:24:25 UTC

[accumulo] branch master updated (351193c -> f068801)

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

ctubbsii pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/accumulo.git.


    from 351193c  Merge branch '1.9'
     new 851c2d1  Fix #639 Update JUnit usage
     new f068801  Merge branch '1.9'

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../core/client/mapred/RangeInputSplitTest.java    |  27 +--
 .../core/client/mapreduce/RangeInputSplitTest.java |  35 ++--
 .../client/mapreduce/impl/BatchInputSplitTest.java |  25 ++-
 .../mapreduce/lib/impl/ConfiguratorBaseTest.java   |   9 +-
 .../core/client/BatchWriterConfigTest.java         |  11 +-
 .../client/admin/NewTableConfigurationTest.java    |   6 +-
 .../core/client/impl/BulkSerializeTest.java        |   5 +-
 .../core/client/impl/ClientConfConverterTest.java  |   5 +-
 .../core/client/impl/ClientContextTest.java        |  17 +-
 .../client/impl/ConcurrentKeyExtentCacheTest.java  |  16 +-
 .../client/impl/ConditionalComparatorTest.java     |  30 +--
 .../accumulo/core/client/impl/ScannerImplTest.java |   3 +-
 .../client/impl/TableOperationsHelperTest.java     |  44 ++--
 .../client/lexicoder/BigIntegerLexicoderTest.java  |   4 +
 .../core/client/lexicoder/BytesLexicoderTest.java  |   2 +
 .../core/client/lexicoder/DateLexicoderTest.java   |   2 +
 .../core/client/lexicoder/DoubleLexicoderTest.java |   4 +
 .../core/client/lexicoder/FloatLexicoderTest.java  |   3 +
 .../client/lexicoder/IntegerLexicoderTest.java     |   4 +
 .../core/client/lexicoder/LexicoderTest.java       |   6 +-
 .../core/client/lexicoder/ListLexicoderTest.java   |   8 +-
 .../core/client/lexicoder/LongLexicoderTest.java   |   4 +
 .../core/client/lexicoder/PairLexicoderTest.java   |   4 +
 .../client/lexicoder/ReverseLexicoderTest.java     |   3 +
 .../core/client/lexicoder/StringLexicoderTest.java |   2 +
 .../core/client/lexicoder/TextLexicoderTest.java   |   2 +
 .../client/lexicoder/UIntegerLexicoderTest.java    |   4 +
 .../core/client/lexicoder/ULongLexicoderTest.java  |   4 +
 .../core/client/lexicoder/UUIDLexicoderTest.java   |   4 +
 .../lexicoder/impl/AbstractLexicoderTest.java      |   3 +
 .../core/client/lexicoder/impl/ByteUtilsTest.java  |  32 +--
 .../client/security/SecurityErrorCodeTest.java     |   5 +-
 .../tokens/CredentialProviderTokenTest.java        |  23 +-
 .../client/security/tokens/PasswordTokenTest.java  |   6 +-
 .../client/summary/CountingSummarizerTest.java     |  46 ++--
 .../summarizers/EntryLengthSummarizersTest.java    |  35 ++--
 .../core/conf/AccumuloConfigurationTest.java       |  60 +++---
 .../accumulo/core/conf/ClientPropertyTest.java     |  24 ++-
 .../conf/CredentialProviderFactoryShimTest.java    |  36 ++--
 .../accumulo/core/conf/SiteConfigurationTest.java  |  19 +-
 .../core/constraints/NoDeleteConstraintTest.java   |  10 +-
 .../apache/accumulo/core/data/MutationTest.java    |  55 +++--
 .../org/apache/accumulo/core/data/RangeTest.java   |  58 +++++-
 .../blockfile/cache/BlockCacheFactoryTest.java     |   5 +-
 .../blockfile/cache/BlockCacheManagerTest.java     |  11 +-
 .../file/blockfile/cache/TestCachedBlockQueue.java |   9 +-
 .../file/blockfile/cache/TestLruBlockCache.java    |  30 ++-
 .../accumulo/core/file/rfile/BlockIndexTest.java   |  23 +-
 .../accumulo/core/file/rfile/KeyShortenerTest.java |  22 +-
 .../core/file/rfile/MultiLevelIndexTest.java       |   9 +-
 .../apache/accumulo/core/file/rfile/RFileTest.java |  30 ++-
 .../core/file/rfile/RolllingStatsTest.java         |  17 +-
 .../core/file/rfile/bcfile/CompressionTest.java    |  46 ++--
 .../file/streams/RateLimitedInputStreamTest.java   |   7 +-
 .../file/streams/RateLimitedOutputStreamTest.java  |   7 +-
 .../accumulo/core/iterators/IteratorUtilTest.java  |  13 +-
 .../system/ColumnFamilySkippingIteratorTest.java   |  12 +-
 .../core/iterators/system/ColumnFilterTest.java    |  32 +--
 .../iterators/system/DeletingIteratorTest.java     |  15 +-
 .../core/iterators/system/MultiIteratorTest.java   |  16 +-
 .../system/SourceSwitchingIteratorTest.java        |  18 +-
 .../iterators/system/VisibilityFilterTest.java     |  11 +-
 .../accumulo/core/iterators/user/CombinerTest.java |  13 +-
 .../iterators/user/IndexedDocIteratorTest.java     |  17 +-
 .../core/iterators/user/LargeRowFilterTest.java    |  13 +-
 .../iterators/user/RowDeletingIteratorTest.java    |  13 +-
 .../iterators/user/TransformingIteratorTest.java   |   9 +-
 .../user/WholeColumnFamilyIteratorTest.java        |  15 +-
 .../core/metadata/schema/LinkingIteratorTest.java  |   4 +-
 .../ReplicationConfigurationUtilTest.java          |  17 +-
 .../core/replication/ReplicationSchemaTest.java    |  23 +-
 .../core/replication/ReplicationTargetTest.java    |  20 +-
 .../spi/scan/IdleRatioScanPrioritizerTest.java     |  15 +-
 .../core/spi/scan/SimpleScanDispatcherTest.java    |  12 +-
 .../core/summary/SummaryCollectionTest.java        |  17 +-
 .../accumulo/core/util/ByteBufferUtilTest.java     |  38 ++--
 .../core/util/CompletableFutureUtilTest.java       |   7 +-
 .../apache/accumulo/core/util/FastFormatTest.java  |  54 ++---
 .../apache/accumulo/core/util/PartitionerTest.java |   9 +-
 .../apache/accumulo/core/util/TextUtilTest.java    |  13 +-
 .../core/util/UnsynchronizedBufferTest.java        |   6 +-
 .../core/volume/NonConfiguredVolumeTest.java       |   9 +-
 .../org/apache/accumulo/fate/AgeOffStoreTest.java  |  38 ++--
 .../apache/accumulo/fate/ReadOnlyStoreTest.java    |  20 +-
 .../apache/accumulo/fate/util/AddressUtilTest.java |  12 +-
 .../org/apache/accumulo/fate/util/RetryTest.java   |  63 +++---
 .../fate/zookeeper/TransactionWatcherTest.java     |  33 +--
 .../zookeeper/ZooKeeperConnectionInfoTest.java     |   7 +-
 .../fate/zookeeper/ZooReaderWriterTest.java        |   7 +-
 .../minicluster/MiniAccumuloClusterTest.java       |  34 +--
 .../impl/MiniAccumuloClusterImplTest.java          |  27 +--
 pom.xml                                            |   8 +
 .../org/apache/accumulo/proxy/ProxyServerTest.java |   6 +-
 .../accumulo/server/ServerConstantsTest.java       |  16 +-
 .../apache/accumulo/server/ServerContextTest.java  |   9 +-
 .../org/apache/accumulo/server/ServerOptsTest.java |   5 +-
 .../accumulo/server/client/BulkImporterTest.java   |  34 +--
 .../org/apache/accumulo/server/fs/FileRefTest.java |  69 +++---
 .../apache/accumulo/server/fs/FileTypeTest.java    |  60 +++---
 .../apache/accumulo/server/fs/ViewFSUtilsTest.java |  19 +-
 .../accumulo/server/fs/VolumeManagerImplTest.java  |  11 +-
 .../apache/accumulo/server/fs/VolumeUtilTest.java  | 127 +++++------
 .../iterators/MetadataBulkLoadFilterTest.java      |   5 +-
 .../server/master/balancer/GroupBalancerTest.java  |  18 +-
 ...tRegexTableLoadBalancerReconfigurationTest.java |  16 +-
 .../balancer/HostRegexTableLoadBalancerTest.java   | 232 ++++++++++-----------
 .../master/balancer/TableLoadBalancerTest.java     |   8 +-
 .../server/replication/StatusCombinerTest.java     |  64 +++---
 .../server/replication/StatusUtilTest.java         |  16 +-
 .../server/replication/proto/StatusTest.java       |  11 +-
 .../TCredentialsUpdatingInvocationHandlerTest.java |   7 +-
 .../security/handler/ZKAuthenticatorTest.java      |  14 +-
 .../apache/accumulo/server/util/FileUtilTest.java  |  27 +--
 .../server/util/ReplicationTableUtilTest.java      |  28 +--
 .../apache/accumulo/gc/GarbageCollectionTest.java  |  29 ++-
 ...DistributedWorkQueueWorkAssignerHelperTest.java |   7 +-
 .../MasterReplicationCoordinatorTest.java          |  11 +-
 .../replication/SequentialWorkAssignerTest.java    |   6 +-
 .../replication/UnorderedWorkAssignerTest.java     |  16 +-
 .../accumulo/master/replication/WorkMakerTest.java |  13 +-
 .../master/state/RootTabletStateStoreTest.java     |   7 +-
 .../accumulo/master/tableOps/ImportTableTest.java  |   5 +-
 .../tableOps/bulkVer2/PrepBulkImportTest.java      |   8 +-
 .../accumulo/monitor/ShowTraceLinkTypeTest.java    |   5 +-
 .../accumulo/monitor/ZooKeeperStatusTest.java      |   7 +-
 .../org/apache/accumulo/monitor/it/WebViewsIT.java |  13 +-
 .../monitor/util/AccumuloMonitorAppenderTest.java  |  32 +--
 .../monitor/util/ParameterValidatorTest.java       |  43 ++--
 .../accumulo/tserver/CheckTabletMetadataTest.java  |  14 +-
 .../accumulo/tserver/CountingIteratorTest.java     |   5 +-
 .../apache/accumulo/tserver/InMemoryMapTest.java   |  11 +-
 .../org/apache/accumulo/tserver/MemValueTest.java  |   5 +-
 .../accumulo/tserver/WalRemovalOrderTest.java      |   5 +-
 .../SizeLimitCompactionStrategyTest.java           |  16 +-
 .../compaction/TwoTierCompactionStrategyTest.java  |  39 ++--
 .../ConfigurableCompactionStrategyTest.java        |  23 +-
 .../apache/accumulo/tserver/log/LogEventsTest.java |   5 +-
 .../accumulo/tserver/log/LogFileKeyTest.java       |  13 +-
 .../tserver/log/SortedLogRecoveryTest.java         | 166 +++++++--------
 .../replication/AccumuloReplicaSystemTest.java     |  63 +++---
 .../replication/ReplicationProcessorTest.java      |   4 +-
 .../accumulo/tserver/tablet/RootFilesTest.java     |   6 +-
 .../apache/accumulo/tserver/tablet/TabletTest.java |  14 +-
 .../shell/commands/DeleteTableCommandTest.java     |   5 +-
 .../classloader/vfs/AccumuloClasspathTest.java     |  17 +-
 .../vfs/AccumuloReloadingVFSClassLoaderTest.java   |  57 ++---
 .../vfs/AccumuloVFSClassLoaderTest.java            |  30 +--
 .../start/classloader/vfs/ContextManagerTest.java  |  21 +-
 .../vfs/providers/VfsClassLoaderTest.java          |  12 +-
 .../org/apache/accumulo/harness/TestingKdc.java    |   7 +-
 .../accumulo/test/ArbitraryTablePropertiesIT.java  |  27 +--
 .../accumulo/test/BadDeleteMarkersCreatedIT.java   |  10 +-
 .../accumulo/test/BatchWriterInTabletServerIT.java |  13 +-
 .../accumulo/test/CompactionRateLimitingIT.java    |   5 +-
 .../apache/accumulo/test/ConditionalWriterIT.java  | 210 +++++++++----------
 .../org/apache/accumulo/test/ExistingMacIT.java    |   7 +-
 .../org/apache/accumulo/test/ImportExportIT.java   |  31 +--
 .../accumulo/test/InterruptibleScannersIT.java     |   5 +-
 .../accumulo/test/IsolationAndDeepCopyIT.java      |  11 +-
 .../apache/accumulo/test/KeyValueEqualityIT.java   |  12 +-
 .../org/apache/accumulo/test/LargeSplitRowIT.java  |  44 ++--
 .../java/org/apache/accumulo/test/LocatorIT.java   |  20 +-
 .../test/MissingWalHeaderCompletesRecoveryIT.java  |  16 +-
 .../accumulo/test/MultiTableBatchWriterIT.java     |  23 +-
 .../accumulo/test/NewTableConfigurationIT.java     |  30 +--
 .../test/RecoveryCompactionsAreFlushesIT.java      |   5 +-
 .../java/org/apache/accumulo/test/SampleIT.java    |  22 +-
 .../org/apache/accumulo/test/ShellConfigIT.java    |   9 +-
 .../org/apache/accumulo/test/ShellServerIT.java    |   9 +-
 .../accumulo/test/TableConfigurationUpdateIT.java  |   8 +-
 .../apache/accumulo/test/TableOperationsIT.java    |   9 +-
 .../accumulo/test/UserCompactionStrategyIT.java    |  40 ++--
 .../java/org/apache/accumulo/test/VolumeIT.java    |  44 ++--
 .../org/apache/accumulo/test/YieldScannersIT.java  |  31 ++-
 .../BalanceInPresenceOfOfflineTableIT.java         |   4 +-
 .../test/functional/BatchWriterFlushIT.java        |  12 +-
 .../accumulo/test/functional/BulkLoadIT.java       |   9 +-
 .../apache/accumulo/test/functional/CleanUpIT.java |  18 +-
 .../accumulo/test/functional/CloneTestIT.java      |  26 +--
 .../test/functional/ConcurrentDeleteTableIT.java   |  10 +-
 .../test/functional/ConfigurableCompactionIT.java  |   4 +-
 .../accumulo/test/functional/ConnectorIT.java      |  52 ++---
 .../accumulo/test/functional/CreateAndUseIT.java   |  11 +-
 .../test/functional/CreateInitialSplitsIT.java     |   1 -
 .../accumulo/test/functional/DeleteFailIT.java     |   5 +-
 .../test/functional/DeleteTableDuringSplitIT.java  |   6 +-
 .../test/functional/FunctionalTestUtils.java       |   6 +-
 .../test/functional/GarbageCollectorIT.java        |  27 +--
 .../accumulo/test/functional/KerberosProxyIT.java  |   8 +-
 .../accumulo/test/functional/LargeRowIT.java       |   4 +-
 .../accumulo/test/functional/MetadataIT.java       |   8 +-
 .../accumulo/test/functional/NativeMapIT.java      |   3 +-
 .../accumulo/test/functional/PermissionsIT.java    |   3 +-
 .../apache/accumulo/test/functional/RestartIT.java |   4 +-
 .../apache/accumulo/test/functional/ScannerIT.java |   5 +-
 .../apache/accumulo/test/functional/SummaryIT.java | 154 +++++++-------
 .../accumulo/test/functional/TooManyDeletesIT.java |  17 +-
 .../accumulo/test/functional/WALSunnyDayIT.java    |   3 +-
 .../CloseWriteAheadLogReferencesIT.java            |   9 +-
 .../test/mapred/AccumuloInputFormatIT.java         |  27 ++-
 .../test/mapreduce/AccumuloInputFormatIT.java      |  27 ++-
 .../apache/accumulo/test/master/MergeStateIT.java  |  15 +-
 .../accumulo/test/master/SuspendedTabletsIT.java   |  17 +-
 .../test/replication/CyclicReplicationIT.java      |  19 +-
 .../test/replication/FinishedWorkUpdaterIT.java    |  21 +-
 ...GarbageCollectorCommunicatesWithTServersIT.java |  59 +++---
 .../test/replication/KerberosReplicationIT.java    |  13 +-
 .../replication/MultiInstanceReplicationIT.java    |  76 +++----
 .../replication/MultiTserverReplicationIT.java     |  20 +-
 .../RemoveCompleteReplicationRecordsIT.java        |  28 +--
 .../accumulo/test/replication/ReplicationIT.java   | 154 +++++++-------
 .../replication/ReplicationOperationsImplIT.java   |  43 ++--
 .../test/replication/SequentialWorkAssignerIT.java |  53 ++---
 .../test/replication/StatusCombinerMacIT.java      |  22 +-
 .../accumulo/test/replication/StatusMakerIT.java   |  59 +++---
 .../UnorderedWorkAssignerReplicationIT.java        |  80 +++----
 .../UnusedWalDoesntCloseReplicationStatusIT.java   |  10 +-
 .../accumulo/test/replication/WorkMakerIT.java     |  30 +--
 .../apache/accumulo/test/rpc/ThriftBehaviorIT.java |  20 +-
 .../accumulo/test/fate/zookeeper/ZooLockTest.java  |  95 +++++----
 220 files changed, 2756 insertions(+), 2335 deletions(-)


[accumulo] 01/01: Merge branch '1.9'

Posted by ct...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit f06880126cec565433a734eb7aae7ec01f763737
Merge: 351193c 851c2d1
Author: Christopher Tubbs <ct...@apache.org>
AuthorDate: Sun Sep 9 04:05:14 2018 -0400

    Merge branch '1.9'

 .../core/client/mapred/RangeInputSplitTest.java    |  27 +--
 .../core/client/mapreduce/RangeInputSplitTest.java |  35 ++--
 .../client/mapreduce/impl/BatchInputSplitTest.java |  25 ++-
 .../mapreduce/lib/impl/ConfiguratorBaseTest.java   |   9 +-
 .../core/client/BatchWriterConfigTest.java         |  11 +-
 .../client/admin/NewTableConfigurationTest.java    |   6 +-
 .../core/client/impl/BulkSerializeTest.java        |   5 +-
 .../core/client/impl/ClientConfConverterTest.java  |   5 +-
 .../core/client/impl/ClientContextTest.java        |  17 +-
 .../client/impl/ConcurrentKeyExtentCacheTest.java  |  16 +-
 .../client/impl/ConditionalComparatorTest.java     |  30 +--
 .../accumulo/core/client/impl/ScannerImplTest.java |   3 +-
 .../client/impl/TableOperationsHelperTest.java     |  44 ++--
 .../client/lexicoder/BigIntegerLexicoderTest.java  |   4 +
 .../core/client/lexicoder/BytesLexicoderTest.java  |   2 +
 .../core/client/lexicoder/DateLexicoderTest.java   |   2 +
 .../core/client/lexicoder/DoubleLexicoderTest.java |   4 +
 .../core/client/lexicoder/FloatLexicoderTest.java  |   3 +
 .../client/lexicoder/IntegerLexicoderTest.java     |   4 +
 .../core/client/lexicoder/LexicoderTest.java       |   6 +-
 .../core/client/lexicoder/ListLexicoderTest.java   |   8 +-
 .../core/client/lexicoder/LongLexicoderTest.java   |   4 +
 .../core/client/lexicoder/PairLexicoderTest.java   |   4 +
 .../client/lexicoder/ReverseLexicoderTest.java     |   3 +
 .../core/client/lexicoder/StringLexicoderTest.java |   2 +
 .../core/client/lexicoder/TextLexicoderTest.java   |   2 +
 .../client/lexicoder/UIntegerLexicoderTest.java    |   4 +
 .../core/client/lexicoder/ULongLexicoderTest.java  |   4 +
 .../core/client/lexicoder/UUIDLexicoderTest.java   |   4 +
 .../lexicoder/impl/AbstractLexicoderTest.java      |   3 +
 .../core/client/lexicoder/impl/ByteUtilsTest.java  |  32 +--
 .../client/security/SecurityErrorCodeTest.java     |   5 +-
 .../tokens/CredentialProviderTokenTest.java        |  23 +-
 .../client/security/tokens/PasswordTokenTest.java  |   6 +-
 .../client/summary/CountingSummarizerTest.java     |  46 ++--
 .../summarizers/EntryLengthSummarizersTest.java    |  35 ++--
 .../core/conf/AccumuloConfigurationTest.java       |  60 +++---
 .../accumulo/core/conf/ClientPropertyTest.java     |  24 ++-
 .../conf/CredentialProviderFactoryShimTest.java    |  36 ++--
 .../accumulo/core/conf/SiteConfigurationTest.java  |  19 +-
 .../core/constraints/NoDeleteConstraintTest.java   |  10 +-
 .../apache/accumulo/core/data/MutationTest.java    |  55 +++--
 .../org/apache/accumulo/core/data/RangeTest.java   |  58 +++++-
 .../blockfile/cache/BlockCacheFactoryTest.java     |   5 +-
 .../blockfile/cache/BlockCacheManagerTest.java     |  11 +-
 .../file/blockfile/cache/TestCachedBlockQueue.java |   9 +-
 .../file/blockfile/cache/TestLruBlockCache.java    |  30 ++-
 .../accumulo/core/file/rfile/BlockIndexTest.java   |  23 +-
 .../accumulo/core/file/rfile/KeyShortenerTest.java |  22 +-
 .../core/file/rfile/MultiLevelIndexTest.java       |   9 +-
 .../apache/accumulo/core/file/rfile/RFileTest.java |  30 ++-
 .../core/file/rfile/RolllingStatsTest.java         |  17 +-
 .../core/file/rfile/bcfile/CompressionTest.java    |  46 ++--
 .../file/streams/RateLimitedInputStreamTest.java   |   7 +-
 .../file/streams/RateLimitedOutputStreamTest.java  |   7 +-
 .../accumulo/core/iterators/IteratorUtilTest.java  |  13 +-
 .../system/ColumnFamilySkippingIteratorTest.java   |  12 +-
 .../core/iterators/system/ColumnFilterTest.java    |  32 +--
 .../iterators/system/DeletingIteratorTest.java     |  15 +-
 .../core/iterators/system/MultiIteratorTest.java   |  16 +-
 .../system/SourceSwitchingIteratorTest.java        |  18 +-
 .../iterators/system/VisibilityFilterTest.java     |  11 +-
 .../accumulo/core/iterators/user/CombinerTest.java |  13 +-
 .../iterators/user/IndexedDocIteratorTest.java     |  17 +-
 .../core/iterators/user/LargeRowFilterTest.java    |  13 +-
 .../iterators/user/RowDeletingIteratorTest.java    |  13 +-
 .../iterators/user/TransformingIteratorTest.java   |   9 +-
 .../user/WholeColumnFamilyIteratorTest.java        |  15 +-
 .../core/metadata/schema/LinkingIteratorTest.java  |   4 +-
 .../ReplicationConfigurationUtilTest.java          |  17 +-
 .../core/replication/ReplicationSchemaTest.java    |  23 +-
 .../core/replication/ReplicationTargetTest.java    |  20 +-
 .../spi/scan/IdleRatioScanPrioritizerTest.java     |  15 +-
 .../core/spi/scan/SimpleScanDispatcherTest.java    |  12 +-
 .../core/summary/SummaryCollectionTest.java        |  17 +-
 .../accumulo/core/util/ByteBufferUtilTest.java     |  38 ++--
 .../core/util/CompletableFutureUtilTest.java       |   7 +-
 .../apache/accumulo/core/util/FastFormatTest.java  |  54 ++---
 .../apache/accumulo/core/util/PartitionerTest.java |   9 +-
 .../apache/accumulo/core/util/TextUtilTest.java    |  13 +-
 .../core/util/UnsynchronizedBufferTest.java        |   6 +-
 .../core/volume/NonConfiguredVolumeTest.java       |   9 +-
 .../org/apache/accumulo/fate/AgeOffStoreTest.java  |  38 ++--
 .../apache/accumulo/fate/ReadOnlyStoreTest.java    |  20 +-
 .../apache/accumulo/fate/util/AddressUtilTest.java |  12 +-
 .../org/apache/accumulo/fate/util/RetryTest.java   |  63 +++---
 .../fate/zookeeper/TransactionWatcherTest.java     |  33 +--
 .../zookeeper/ZooKeeperConnectionInfoTest.java     |   7 +-
 .../fate/zookeeper/ZooReaderWriterTest.java        |   7 +-
 .../minicluster/MiniAccumuloClusterTest.java       |  34 +--
 .../impl/MiniAccumuloClusterImplTest.java          |  27 +--
 pom.xml                                            |   8 +
 .../org/apache/accumulo/proxy/ProxyServerTest.java |   6 +-
 .../accumulo/server/ServerConstantsTest.java       |  16 +-
 .../apache/accumulo/server/ServerContextTest.java  |   9 +-
 .../org/apache/accumulo/server/ServerOptsTest.java |   5 +-
 .../accumulo/server/client/BulkImporterTest.java   |  34 +--
 .../org/apache/accumulo/server/fs/FileRefTest.java |  69 +++---
 .../apache/accumulo/server/fs/FileTypeTest.java    |  60 +++---
 .../apache/accumulo/server/fs/ViewFSUtilsTest.java |  19 +-
 .../accumulo/server/fs/VolumeManagerImplTest.java  |  11 +-
 .../apache/accumulo/server/fs/VolumeUtilTest.java  | 127 +++++------
 .../iterators/MetadataBulkLoadFilterTest.java      |   5 +-
 .../server/master/balancer/GroupBalancerTest.java  |  18 +-
 ...tRegexTableLoadBalancerReconfigurationTest.java |  16 +-
 .../balancer/HostRegexTableLoadBalancerTest.java   | 232 ++++++++++-----------
 .../master/balancer/TableLoadBalancerTest.java     |   8 +-
 .../server/replication/StatusCombinerTest.java     |  64 +++---
 .../server/replication/StatusUtilTest.java         |  16 +-
 .../server/replication/proto/StatusTest.java       |  11 +-
 .../TCredentialsUpdatingInvocationHandlerTest.java |   7 +-
 .../security/handler/ZKAuthenticatorTest.java      |  14 +-
 .../apache/accumulo/server/util/FileUtilTest.java  |  27 +--
 .../server/util/ReplicationTableUtilTest.java      |  28 +--
 .../apache/accumulo/gc/GarbageCollectionTest.java  |  29 ++-
 ...DistributedWorkQueueWorkAssignerHelperTest.java |   7 +-
 .../MasterReplicationCoordinatorTest.java          |  11 +-
 .../replication/SequentialWorkAssignerTest.java    |   6 +-
 .../replication/UnorderedWorkAssignerTest.java     |  16 +-
 .../accumulo/master/replication/WorkMakerTest.java |  13 +-
 .../master/state/RootTabletStateStoreTest.java     |   7 +-
 .../accumulo/master/tableOps/ImportTableTest.java  |   5 +-
 .../tableOps/bulkVer2/PrepBulkImportTest.java      |   8 +-
 .../accumulo/monitor/ShowTraceLinkTypeTest.java    |   5 +-
 .../accumulo/monitor/ZooKeeperStatusTest.java      |   7 +-
 .../org/apache/accumulo/monitor/it/WebViewsIT.java |  13 +-
 .../monitor/util/AccumuloMonitorAppenderTest.java  |  32 +--
 .../monitor/util/ParameterValidatorTest.java       |  43 ++--
 .../accumulo/tserver/CheckTabletMetadataTest.java  |  14 +-
 .../accumulo/tserver/CountingIteratorTest.java     |   5 +-
 .../apache/accumulo/tserver/InMemoryMapTest.java   |  11 +-
 .../org/apache/accumulo/tserver/MemValueTest.java  |   5 +-
 .../accumulo/tserver/WalRemovalOrderTest.java      |   5 +-
 .../SizeLimitCompactionStrategyTest.java           |  16 +-
 .../compaction/TwoTierCompactionStrategyTest.java  |  39 ++--
 .../ConfigurableCompactionStrategyTest.java        |  23 +-
 .../apache/accumulo/tserver/log/LogEventsTest.java |   5 +-
 .../accumulo/tserver/log/LogFileKeyTest.java       |  13 +-
 .../tserver/log/SortedLogRecoveryTest.java         | 166 +++++++--------
 .../replication/AccumuloReplicaSystemTest.java     |  63 +++---
 .../replication/ReplicationProcessorTest.java      |   4 +-
 .../accumulo/tserver/tablet/RootFilesTest.java     |   6 +-
 .../apache/accumulo/tserver/tablet/TabletTest.java |  14 +-
 .../shell/commands/DeleteTableCommandTest.java     |   5 +-
 .../classloader/vfs/AccumuloClasspathTest.java     |  17 +-
 .../vfs/AccumuloReloadingVFSClassLoaderTest.java   |  57 ++---
 .../vfs/AccumuloVFSClassLoaderTest.java            |  30 +--
 .../start/classloader/vfs/ContextManagerTest.java  |  21 +-
 .../vfs/providers/VfsClassLoaderTest.java          |  12 +-
 .../org/apache/accumulo/harness/TestingKdc.java    |   7 +-
 .../accumulo/test/ArbitraryTablePropertiesIT.java  |  27 +--
 .../accumulo/test/BadDeleteMarkersCreatedIT.java   |  10 +-
 .../accumulo/test/BatchWriterInTabletServerIT.java |  13 +-
 .../accumulo/test/CompactionRateLimitingIT.java    |   5 +-
 .../apache/accumulo/test/ConditionalWriterIT.java  | 210 +++++++++----------
 .../org/apache/accumulo/test/ExistingMacIT.java    |   7 +-
 .../org/apache/accumulo/test/ImportExportIT.java   |  31 +--
 .../accumulo/test/InterruptibleScannersIT.java     |   5 +-
 .../accumulo/test/IsolationAndDeepCopyIT.java      |  11 +-
 .../apache/accumulo/test/KeyValueEqualityIT.java   |  12 +-
 .../org/apache/accumulo/test/LargeSplitRowIT.java  |  44 ++--
 .../java/org/apache/accumulo/test/LocatorIT.java   |  20 +-
 .../test/MissingWalHeaderCompletesRecoveryIT.java  |  16 +-
 .../accumulo/test/MultiTableBatchWriterIT.java     |  23 +-
 .../accumulo/test/NewTableConfigurationIT.java     |  30 +--
 .../test/RecoveryCompactionsAreFlushesIT.java      |   5 +-
 .../java/org/apache/accumulo/test/SampleIT.java    |  22 +-
 .../org/apache/accumulo/test/ShellConfigIT.java    |   9 +-
 .../org/apache/accumulo/test/ShellServerIT.java    |   9 +-
 .../accumulo/test/TableConfigurationUpdateIT.java  |   8 +-
 .../apache/accumulo/test/TableOperationsIT.java    |   9 +-
 .../accumulo/test/UserCompactionStrategyIT.java    |  40 ++--
 .../java/org/apache/accumulo/test/VolumeIT.java    |  44 ++--
 .../org/apache/accumulo/test/YieldScannersIT.java  |  31 ++-
 .../BalanceInPresenceOfOfflineTableIT.java         |   4 +-
 .../test/functional/BatchWriterFlushIT.java        |  12 +-
 .../accumulo/test/functional/BulkLoadIT.java       |   9 +-
 .../apache/accumulo/test/functional/CleanUpIT.java |  18 +-
 .../accumulo/test/functional/CloneTestIT.java      |  26 +--
 .../test/functional/ConcurrentDeleteTableIT.java   |  10 +-
 .../test/functional/ConfigurableCompactionIT.java  |   4 +-
 .../accumulo/test/functional/ConnectorIT.java      |  52 ++---
 .../accumulo/test/functional/CreateAndUseIT.java   |  11 +-
 .../test/functional/CreateInitialSplitsIT.java     |   1 -
 .../accumulo/test/functional/DeleteFailIT.java     |   5 +-
 .../test/functional/DeleteTableDuringSplitIT.java  |   6 +-
 .../test/functional/FunctionalTestUtils.java       |   6 +-
 .../test/functional/GarbageCollectorIT.java        |  27 +--
 .../accumulo/test/functional/KerberosProxyIT.java  |   8 +-
 .../accumulo/test/functional/LargeRowIT.java       |   4 +-
 .../accumulo/test/functional/MetadataIT.java       |   8 +-
 .../accumulo/test/functional/NativeMapIT.java      |   3 +-
 .../accumulo/test/functional/PermissionsIT.java    |   3 +-
 .../apache/accumulo/test/functional/RestartIT.java |   4 +-
 .../apache/accumulo/test/functional/ScannerIT.java |   5 +-
 .../apache/accumulo/test/functional/SummaryIT.java | 154 +++++++-------
 .../accumulo/test/functional/TooManyDeletesIT.java |  17 +-
 .../accumulo/test/functional/WALSunnyDayIT.java    |   3 +-
 .../CloseWriteAheadLogReferencesIT.java            |   9 +-
 .../test/mapred/AccumuloInputFormatIT.java         |  27 ++-
 .../test/mapreduce/AccumuloInputFormatIT.java      |  27 ++-
 .../apache/accumulo/test/master/MergeStateIT.java  |  15 +-
 .../accumulo/test/master/SuspendedTabletsIT.java   |  17 +-
 .../test/replication/CyclicReplicationIT.java      |  19 +-
 .../test/replication/FinishedWorkUpdaterIT.java    |  21 +-
 ...GarbageCollectorCommunicatesWithTServersIT.java |  59 +++---
 .../test/replication/KerberosReplicationIT.java    |  13 +-
 .../replication/MultiInstanceReplicationIT.java    |  76 +++----
 .../replication/MultiTserverReplicationIT.java     |  20 +-
 .../RemoveCompleteReplicationRecordsIT.java        |  28 +--
 .../accumulo/test/replication/ReplicationIT.java   | 154 +++++++-------
 .../replication/ReplicationOperationsImplIT.java   |  43 ++--
 .../test/replication/SequentialWorkAssignerIT.java |  53 ++---
 .../test/replication/StatusCombinerMacIT.java      |  22 +-
 .../accumulo/test/replication/StatusMakerIT.java   |  59 +++---
 .../UnorderedWorkAssignerReplicationIT.java        |  80 +++----
 .../UnusedWalDoesntCloseReplicationStatusIT.java   |  10 +-
 .../accumulo/test/replication/WorkMakerIT.java     |  30 +--
 .../apache/accumulo/test/rpc/ThriftBehaviorIT.java |  20 +-
 .../accumulo/test/fate/zookeeper/ZooLockTest.java  |  95 +++++----
 220 files changed, 2756 insertions(+), 2335 deletions(-)

diff --cc client/mapreduce/src/test/java/org/apache/accumulo/core/client/mapred/RangeInputSplitTest.java
index c36511d,0000000..628f5b6
mode 100644,000000..100644
--- a/client/mapreduce/src/test/java/org/apache/accumulo/core/client/mapred/RangeInputSplitTest.java
+++ b/client/mapreduce/src/test/java/org/apache/accumulo/core/client/mapred/RangeInputSplitTest.java
@@@ -1,113 -1,0 +1,116 @@@
 +/*
 + * 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.core.client.mapred;
 +
++import static org.junit.Assert.assertArrayEquals;
++import static org.junit.Assert.assertEquals;
++import static org.junit.Assert.assertTrue;
++
 +import java.io.ByteArrayInputStream;
 +import java.io.ByteArrayOutputStream;
 +import java.io.DataInputStream;
 +import java.io.DataOutputStream;
 +import java.io.IOException;
 +import java.util.ArrayList;
 +import java.util.Arrays;
 +import java.util.HashSet;
 +import java.util.Set;
 +
 +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.iterators.user.SummingCombiner;
 +import org.apache.accumulo.core.iterators.user.WholeRowIterator;
 +import org.apache.accumulo.core.util.Pair;
 +import org.apache.hadoop.io.Text;
 +import org.apache.log4j.Level;
- import org.junit.Assert;
 +import org.junit.Test;
 +
 +import com.google.common.collect.ImmutableMap;
 +
 +public class RangeInputSplitTest {
 +
 +  @Test
 +  public void testSimpleWritable() throws IOException {
 +    RangeInputSplit split = new RangeInputSplit("table", "1", new Range(new Key("a"), new Key("b")),
 +        new String[] {"localhost"});
 +
 +    ByteArrayOutputStream baos = new ByteArrayOutputStream();
 +    DataOutputStream dos = new DataOutputStream(baos);
 +    split.write(dos);
 +
 +    RangeInputSplit newSplit = new RangeInputSplit();
 +
 +    ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
 +    DataInputStream dis = new DataInputStream(bais);
 +    newSplit.readFields(dis);
 +
-     Assert.assertEquals(split.getRange(), newSplit.getRange());
-     Assert.assertTrue(Arrays.equals(split.getLocations(), newSplit.getLocations()));
++    assertEquals(split.getRange(), newSplit.getRange());
++    assertTrue(Arrays.equals(split.getLocations(), newSplit.getLocations()));
 +  }
 +
 +  @Test
 +  public void testAllFieldsWritable() throws IOException {
 +    RangeInputSplit split = new RangeInputSplit("table", "1", new Range(new Key("a"), new Key("b")),
 +        new String[] {"localhost"});
 +
 +    Set<Pair<Text,Text>> fetchedColumns = new HashSet<>();
 +
 +    fetchedColumns.add(new Pair<>(new Text("colf1"), new Text("colq1")));
 +    fetchedColumns.add(new Pair<>(new Text("colf2"), new Text("colq2")));
 +
 +    // Fake some iterators
 +    ArrayList<IteratorSetting> iterators = new ArrayList<>();
 +    IteratorSetting setting = new IteratorSetting(50, SummingCombiner.class);
 +    setting.addOption("foo", "bar");
 +    iterators.add(setting);
 +
 +    setting = new IteratorSetting(100, WholeRowIterator.class);
 +    setting.addOption("bar", "foo");
 +    iterators.add(setting);
 +
 +    split.setOffline(true);
 +    split.setIsolatedScan(true);
 +    split.setUsesLocalIterators(true);
 +    split.setFetchedColumns(fetchedColumns);
 +    split.setIterators(iterators);
 +    split.setLogLevel(Level.WARN);
 +    split.setExecutionHints(ImmutableMap.of("priority", "9"));
 +
 +    ByteArrayOutputStream baos = new ByteArrayOutputStream();
 +    DataOutputStream dos = new DataOutputStream(baos);
 +    split.write(dos);
 +
 +    RangeInputSplit newSplit = new RangeInputSplit();
 +
 +    ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
 +    DataInputStream dis = new DataInputStream(bais);
 +    newSplit.readFields(dis);
 +
-     Assert.assertEquals(split.getRange(), newSplit.getRange());
-     Assert.assertArrayEquals(split.getLocations(), newSplit.getLocations());
++    assertEquals(split.getRange(), newSplit.getRange());
++    assertArrayEquals(split.getLocations(), newSplit.getLocations());
 +
-     Assert.assertEquals(split.isOffline(), newSplit.isOffline());
-     Assert.assertEquals(split.isIsolatedScan(), newSplit.isOffline());
-     Assert.assertEquals(split.usesLocalIterators(), newSplit.usesLocalIterators());
-     Assert.assertEquals(split.getFetchedColumns(), newSplit.getFetchedColumns());
-     Assert.assertEquals(split.getIterators(), newSplit.getIterators());
-     Assert.assertEquals(split.getLogLevel(), newSplit.getLogLevel());
-     Assert.assertEquals(split.getExecutionHints(), newSplit.getExecutionHints());
++    assertEquals(split.isOffline(), newSplit.isOffline());
++    assertEquals(split.isIsolatedScan(), newSplit.isOffline());
++    assertEquals(split.usesLocalIterators(), newSplit.usesLocalIterators());
++    assertEquals(split.getFetchedColumns(), newSplit.getFetchedColumns());
++    assertEquals(split.getIterators(), newSplit.getIterators());
++    assertEquals(split.getLogLevel(), newSplit.getLogLevel());
++    assertEquals(split.getExecutionHints(), newSplit.getExecutionHints());
 +  }
 +
 +}
diff --cc client/mapreduce/src/test/java/org/apache/accumulo/core/client/mapreduce/RangeInputSplitTest.java
index 9d36f9d,0000000..18e69b0
mode 100644,000000..100644
--- a/client/mapreduce/src/test/java/org/apache/accumulo/core/client/mapreduce/RangeInputSplitTest.java
+++ b/client/mapreduce/src/test/java/org/apache/accumulo/core/client/mapreduce/RangeInputSplitTest.java
@@@ -1,117 -1,0 +1,120 @@@
 +/*
 + * 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.core.client.mapreduce;
 +
++import static org.junit.Assert.assertArrayEquals;
++import static org.junit.Assert.assertEquals;
++import static org.junit.Assert.assertTrue;
++
 +import java.io.ByteArrayInputStream;
 +import java.io.ByteArrayOutputStream;
 +import java.io.DataInputStream;
 +import java.io.DataOutputStream;
 +import java.io.IOException;
 +import java.util.ArrayList;
 +import java.util.Arrays;
 +import java.util.HashSet;
 +import java.util.Set;
 +
 +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.iterators.user.SummingCombiner;
 +import org.apache.accumulo.core.iterators.user.WholeRowIterator;
 +import org.apache.accumulo.core.util.Pair;
 +import org.apache.hadoop.io.Text;
 +import org.apache.log4j.Level;
- import org.junit.Assert;
 +import org.junit.Test;
 +
 +import com.google.common.collect.ImmutableMap;
 +
 +public class RangeInputSplitTest {
 +
 +  @Test
 +  public void testSimpleWritable() throws IOException {
 +    RangeInputSplit split = new RangeInputSplit("table", "1", new Range(new Key("a"), new Key("b")),
 +        new String[] {"localhost"});
 +
 +    ByteArrayOutputStream baos = new ByteArrayOutputStream();
 +    DataOutputStream dos = new DataOutputStream(baos);
 +    split.write(dos);
 +
 +    RangeInputSplit newSplit = new RangeInputSplit();
 +
 +    ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
 +    DataInputStream dis = new DataInputStream(bais);
 +    newSplit.readFields(dis);
 +
-     Assert.assertEquals(split.getTableName(), newSplit.getTableName());
-     Assert.assertEquals(split.getTableId(), newSplit.getTableId());
-     Assert.assertEquals(split.getRange(), newSplit.getRange());
-     Assert.assertTrue(Arrays.equals(split.getLocations(), newSplit.getLocations()));
++    assertEquals(split.getTableName(), newSplit.getTableName());
++    assertEquals(split.getTableId(), newSplit.getTableId());
++    assertEquals(split.getRange(), newSplit.getRange());
++    assertTrue(Arrays.equals(split.getLocations(), newSplit.getLocations()));
 +  }
 +
 +  @Test
 +  public void testAllFieldsWritable() throws IOException {
 +    RangeInputSplit split = new RangeInputSplit("table", "1", new Range(new Key("a"), new Key("b")),
 +        new String[] {"localhost"});
 +
 +    Set<Pair<Text,Text>> fetchedColumns = new HashSet<>();
 +
 +    fetchedColumns.add(new Pair<>(new Text("colf1"), new Text("colq1")));
 +    fetchedColumns.add(new Pair<>(new Text("colf2"), new Text("colq2")));
 +
 +    // Fake some iterators
 +    ArrayList<IteratorSetting> iterators = new ArrayList<>();
 +    IteratorSetting setting = new IteratorSetting(50, SummingCombiner.class);
 +    setting.addOption("foo", "bar");
 +    iterators.add(setting);
 +
 +    setting = new IteratorSetting(100, WholeRowIterator.class);
 +    setting.addOption("bar", "foo");
 +    iterators.add(setting);
 +
 +    split.setTableName("table");
 +    split.setOffline(true);
 +    split.setIsolatedScan(true);
 +    split.setUsesLocalIterators(true);
 +    split.setFetchedColumns(fetchedColumns);
 +    split.setIterators(iterators);
 +    split.setLogLevel(Level.WARN);
 +    split.setExecutionHints(ImmutableMap.of("priority", "9"));
 +
 +    ByteArrayOutputStream baos = new ByteArrayOutputStream();
 +    DataOutputStream dos = new DataOutputStream(baos);
 +    split.write(dos);
 +
 +    RangeInputSplit newSplit = new RangeInputSplit();
 +
 +    ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
 +    DataInputStream dis = new DataInputStream(bais);
 +    newSplit.readFields(dis);
 +
-     Assert.assertEquals(split.getRange(), newSplit.getRange());
-     Assert.assertArrayEquals(split.getLocations(), newSplit.getLocations());
- 
-     Assert.assertEquals(split.getTableName(), newSplit.getTableName());
-     Assert.assertEquals(split.isOffline(), newSplit.isOffline());
-     Assert.assertEquals(split.isIsolatedScan(), newSplit.isOffline());
-     Assert.assertEquals(split.usesLocalIterators(), newSplit.usesLocalIterators());
-     Assert.assertEquals(split.getFetchedColumns(), newSplit.getFetchedColumns());
-     Assert.assertEquals(split.getIterators(), newSplit.getIterators());
-     Assert.assertEquals(split.getLogLevel(), newSplit.getLogLevel());
-     Assert.assertEquals(split.getExecutionHints(), newSplit.getExecutionHints());
++    assertEquals(split.getRange(), newSplit.getRange());
++    assertArrayEquals(split.getLocations(), newSplit.getLocations());
++
++    assertEquals(split.getTableName(), newSplit.getTableName());
++    assertEquals(split.isOffline(), newSplit.isOffline());
++    assertEquals(split.isIsolatedScan(), newSplit.isOffline());
++    assertEquals(split.usesLocalIterators(), newSplit.usesLocalIterators());
++    assertEquals(split.getFetchedColumns(), newSplit.getFetchedColumns());
++    assertEquals(split.getIterators(), newSplit.getIterators());
++    assertEquals(split.getLogLevel(), newSplit.getLogLevel());
++    assertEquals(split.getExecutionHints(), newSplit.getExecutionHints());
 +  }
 +
 +}
diff --cc client/mapreduce/src/test/java/org/apache/accumulo/core/client/mapreduce/impl/BatchInputSplitTest.java
index 0e4a1ce,0000000..2781f00
mode 100644,000000..100644
--- a/client/mapreduce/src/test/java/org/apache/accumulo/core/client/mapreduce/impl/BatchInputSplitTest.java
+++ b/client/mapreduce/src/test/java/org/apache/accumulo/core/client/mapreduce/impl/BatchInputSplitTest.java
@@@ -1,111 -1,0 +1,114 @@@
 +/*
 + * 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.core.client.mapreduce.impl;
 +
++import static org.junit.Assert.assertArrayEquals;
++import static org.junit.Assert.assertEquals;
++import static org.junit.Assert.assertTrue;
++
 +import java.io.ByteArrayInputStream;
 +import java.io.ByteArrayOutputStream;
 +import java.io.DataInputStream;
 +import java.io.DataOutputStream;
 +import java.io.IOException;
 +import java.util.ArrayList;
 +import java.util.Arrays;
 +import java.util.Collections;
 +import java.util.HashSet;
 +import java.util.List;
 +import java.util.Set;
 +
 +import org.apache.accumulo.core.client.IteratorSetting;
 +import org.apache.accumulo.core.client.impl.Table;
 +import org.apache.accumulo.core.data.Key;
 +import org.apache.accumulo.core.data.Range;
 +import org.apache.accumulo.core.iterators.user.SummingCombiner;
 +import org.apache.accumulo.core.iterators.user.WholeRowIterator;
 +import org.apache.accumulo.core.util.Pair;
 +import org.apache.hadoop.io.Text;
 +import org.apache.log4j.Level;
- import org.junit.Assert;
 +import org.junit.Test;
 +
 +public class BatchInputSplitTest {
 +
 +  @Test
 +  public void testSimpleWritable() throws IOException {
 +    List<Range> ranges = Collections.singletonList(new Range(new Key("a"), new Key("b")));
 +    BatchInputSplit split = new BatchInputSplit("table", Table.ID.of("1"), ranges,
 +        new String[] {"localhost"});
 +
 +    ByteArrayOutputStream baos = new ByteArrayOutputStream();
 +    DataOutputStream dos = new DataOutputStream(baos);
 +    split.write(dos);
 +
 +    BatchInputSplit newSplit = new BatchInputSplit();
 +
 +    ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
 +    DataInputStream dis = new DataInputStream(bais);
 +    newSplit.readFields(dis);
 +
-     Assert.assertEquals(split.getTableName(), newSplit.getTableName());
-     Assert.assertEquals(split.getTableId(), newSplit.getTableId());
-     Assert.assertEquals(split.getRanges(), newSplit.getRanges());
-     Assert.assertTrue(Arrays.equals(split.getLocations(), newSplit.getLocations()));
++    assertEquals(split.getTableName(), newSplit.getTableName());
++    assertEquals(split.getTableId(), newSplit.getTableId());
++    assertEquals(split.getRanges(), newSplit.getRanges());
++    assertTrue(Arrays.equals(split.getLocations(), newSplit.getLocations()));
 +  }
 +
 +  @Test
 +  public void testAllFieldsWritable() throws IOException {
 +    List<Range> ranges = Collections.singletonList(new Range(new Key("a"), new Key("b")));
 +    BatchInputSplit split = new BatchInputSplit("table", Table.ID.of("1"), ranges,
 +        new String[] {"localhost"});
 +
 +    Set<Pair<Text,Text>> fetchedColumns = new HashSet<>();
 +
 +    fetchedColumns.add(new Pair<>(new Text("colf1"), new Text("colq1")));
 +    fetchedColumns.add(new Pair<>(new Text("colf2"), new Text("colq2")));
 +
 +    // Fake some iterators
 +    ArrayList<IteratorSetting> iterators = new ArrayList<>();
 +    IteratorSetting setting = new IteratorSetting(50, SummingCombiner.class);
 +    setting.addOption("foo", "bar");
 +    iterators.add(setting);
 +
 +    setting = new IteratorSetting(100, WholeRowIterator.class);
 +    setting.addOption("bar", "foo");
 +    iterators.add(setting);
 +
 +    split.setTableName("table");
 +    split.setFetchedColumns(fetchedColumns);
 +    split.setIterators(iterators);
 +    split.setLogLevel(Level.WARN);
 +
 +    ByteArrayOutputStream baos = new ByteArrayOutputStream();
 +    DataOutputStream dos = new DataOutputStream(baos);
 +    split.write(dos);
 +
 +    BatchInputSplit newSplit = new BatchInputSplit();
 +
 +    ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
 +    DataInputStream dis = new DataInputStream(bais);
 +    newSplit.readFields(dis);
 +
-     Assert.assertEquals(split.getRanges(), newSplit.getRanges());
-     Assert.assertArrayEquals(split.getLocations(), newSplit.getLocations());
++    assertEquals(split.getRanges(), newSplit.getRanges());
++    assertArrayEquals(split.getLocations(), newSplit.getLocations());
 +
-     Assert.assertEquals(split.getTableName(), newSplit.getTableName());
-     Assert.assertEquals(split.getFetchedColumns(), newSplit.getFetchedColumns());
-     Assert.assertEquals(split.getIterators(), newSplit.getIterators());
-     Assert.assertEquals(split.getLogLevel(), newSplit.getLogLevel());
++    assertEquals(split.getTableName(), newSplit.getTableName());
++    assertEquals(split.getFetchedColumns(), newSplit.getFetchedColumns());
++    assertEquals(split.getIterators(), newSplit.getIterators());
++    assertEquals(split.getLogLevel(), newSplit.getLogLevel());
 +  }
 +}
diff --cc client/mapreduce/src/test/java/org/apache/accumulo/core/client/mapreduce/lib/impl/ConfiguratorBaseTest.java
index 6de701d,0000000..e9b9896
mode 100644,000000..100644
--- a/client/mapreduce/src/test/java/org/apache/accumulo/core/client/mapreduce/lib/impl/ConfiguratorBaseTest.java
+++ b/client/mapreduce/src/test/java/org/apache/accumulo/core/client/mapreduce/lib/impl/ConfiguratorBaseTest.java
@@@ -1,140 -1,0 +1,139 @@@
 +/*
 + * 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.core.client.mapreduce.lib.impl;
 +
 +import static org.junit.Assert.assertEquals;
 +import static org.junit.Assert.assertFalse;
 +import static org.junit.Assert.assertNotNull;
 +import static org.junit.Assert.assertTrue;
 +
 +import java.util.Properties;
 +
 +import org.apache.accumulo.core.Constants;
 +import org.apache.accumulo.core.client.AccumuloSecurityException;
 +import org.apache.accumulo.core.client.ClientInfo;
 +import org.apache.accumulo.core.client.Connector;
 +import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
 +import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 +import org.apache.accumulo.core.conf.ClientProperty;
 +import org.apache.hadoop.conf.Configuration;
 +import org.apache.log4j.Level;
 +import org.apache.log4j.Logger;
- import org.junit.Assert;
 +import org.junit.Test;
 +
 +public class ConfiguratorBaseTest {
 +
 +  private enum PrivateTestingEnum {
 +    SOMETHING, SOMETHING_ELSE
 +  }
 +
 +  @Test
 +  public void testEnumToConfKey() {
 +    assertEquals(this.getClass().getSimpleName() + ".PrivateTestingEnum.Something",
 +        ConfiguratorBase.enumToConfKey(this.getClass(), PrivateTestingEnum.SOMETHING));
 +    assertEquals(this.getClass().getSimpleName() + ".PrivateTestingEnum.SomethingElse",
 +        ConfiguratorBase.enumToConfKey(this.getClass(), PrivateTestingEnum.SOMETHING_ELSE));
 +  }
 +
 +  @Test
 +  public void testSetConnectorInfoClassOfQConfigurationStringAuthenticationToken() {
 +    Configuration conf = new Configuration();
 +    assertFalse(ConfiguratorBase.isConnectorInfoSet(this.getClass(), conf));
 +    ConfiguratorBase.setConnectorInfo(this.getClass(), conf, "testUser",
 +        new PasswordToken("testPassword"));
 +    assertTrue(ConfiguratorBase.isConnectorInfoSet(this.getClass(), conf));
 +    assertEquals("testUser", ConfiguratorBase.getPrincipal(this.getClass(), conf));
 +    AuthenticationToken token = ConfiguratorBase.getAuthenticationToken(this.getClass(), conf);
 +    assertNotNull(token);
 +    assertEquals(PasswordToken.class, token.getClass());
 +    assertEquals(new PasswordToken("testPassword"), token);
 +  }
 +
 +  @Test
 +  public void testSetConnectorInfoClassOfQConfigurationStringString()
 +      throws AccumuloSecurityException {
 +    Configuration conf = new Configuration();
 +    assertFalse(ConfiguratorBase.isConnectorInfoSet(this.getClass(), conf));
 +    ConfiguratorBase.setConnectorInfo(this.getClass(), conf, "testUser",
 +        new PasswordToken("testPass"));
 +    assertTrue(ConfiguratorBase.isConnectorInfoSet(this.getClass(), conf));
 +    assertEquals("testUser", ConfiguratorBase.getPrincipal(this.getClass(), conf));
 +    assertEquals("testPass", new String(((PasswordToken) ConfiguratorBase
 +        .getClientInfo(this.getClass(), conf).getAuthenticationToken()).getPassword()));
 +  }
 +
 +  @Test
 +  public void testSetClientInfo() {
 +    Configuration conf = new Configuration();
 +    ClientInfo info = Connector.builder().forInstance("myinstance", "myzookeepers")
 +        .usingPassword("user", "pass").info();
 +    ConfiguratorBase.setClientInfo(this.getClass(), conf, info);
 +    ClientInfo info2 = ConfiguratorBase.getClientInfo(this.getClass(), conf);
-     Assert.assertEquals("myinstance", info2.getInstanceName());
-     Assert.assertEquals("myzookeepers", info2.getZooKeepers());
-     Assert.assertEquals("user", info2.getPrincipal());
-     Assert.assertTrue(info2.getAuthenticationToken() instanceof PasswordToken);
++    assertEquals("myinstance", info2.getInstanceName());
++    assertEquals("myzookeepers", info2.getZooKeepers());
++    assertEquals("user", info2.getPrincipal());
++    assertTrue(info2.getAuthenticationToken() instanceof PasswordToken);
 +  }
 +
 +  @SuppressWarnings("deprecation")
 +  @Test
 +  public void testSetZooKeeperInstance() {
 +    Configuration conf = new Configuration();
 +    ConfiguratorBase.setZooKeeperInstance(this.getClass(), conf,
 +        org.apache.accumulo.core.client.ClientConfiguration.create()
 +            .withInstance("testInstanceName").withZkHosts("testZooKeepers").withSsl(true)
 +            .withZkTimeout(15000));
 +
 +    org.apache.accumulo.core.client.ClientConfiguration clientConf = ConfiguratorBase
 +        .getClientConfiguration(this.getClass(), conf);
 +    assertEquals("testInstanceName", clientConf
 +        .get(org.apache.accumulo.core.client.ClientConfiguration.ClientProperty.INSTANCE_NAME));
 +
 +    Properties props = ConfiguratorBase.getClientInfo(this.getClass(), conf).getProperties();
 +    assertEquals("testInstanceName", props.getProperty(ClientProperty.INSTANCE_NAME.getKey()));
 +    assertEquals("testZooKeepers", props.getProperty(ClientProperty.INSTANCE_ZOOKEEPERS.getKey()));
 +    assertEquals("true", props.getProperty(ClientProperty.SSL_ENABLED.getKey()));
 +    assertEquals("15000", props.getProperty(ClientProperty.INSTANCE_ZOOKEEPERS_TIMEOUT.getKey()));
 +  }
 +
 +  @Test
 +  public void testSetLogLevel() {
 +    Configuration conf = new Configuration();
 +    Level currentLevel = Logger.getLogger(this.getClass()).getLevel();
 +
 +    ConfiguratorBase.setLogLevel(this.getClass(), conf, Level.DEBUG);
 +    Logger.getLogger(this.getClass()).setLevel(currentLevel);
 +    assertEquals(Level.DEBUG, ConfiguratorBase.getLogLevel(this.getClass(), conf));
 +
 +    ConfiguratorBase.setLogLevel(this.getClass(), conf, Level.INFO);
 +    Logger.getLogger(this.getClass()).setLevel(currentLevel);
 +    assertEquals(Level.INFO, ConfiguratorBase.getLogLevel(this.getClass(), conf));
 +
 +    ConfiguratorBase.setLogLevel(this.getClass(), conf, Level.FATAL);
 +    Logger.getLogger(this.getClass()).setLevel(currentLevel);
 +    assertEquals(Level.FATAL, ConfiguratorBase.getLogLevel(this.getClass(), conf));
 +  }
 +
 +  @Test
 +  public void testSetVisibilityCacheSize() {
 +    Configuration conf = new Configuration();
 +    assertEquals(Constants.DEFAULT_VISIBILITY_CACHE_SIZE,
 +        ConfiguratorBase.getVisibilityCacheSize(conf));
 +    ConfiguratorBase.setVisibilityCacheSize(conf, 2000);
 +    assertEquals(2000, ConfiguratorBase.getVisibilityCacheSize(conf));
 +  }
 +}
diff --cc core/src/test/java/org/apache/accumulo/core/client/BatchWriterConfigTest.java
index 052dfeb,ce2037f..daf40f3
--- a/core/src/test/java/org/apache/accumulo/core/client/BatchWriterConfigTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/client/BatchWriterConfigTest.java
@@@ -27,9 -27,11 +27,8 @@@ import java.io.DataOutputStream
  import java.io.IOException;
  import java.util.concurrent.TimeUnit;
  
- import org.junit.Assert;
  import org.junit.Test;
  
 -/**
 - *
 - */
  public class BatchWriterConfigTest {
  
    @Test
@@@ -199,24 -201,6 +198,24 @@@
      assertEquals(cfg1.hashCode(), cfg2.hashCode());
    }
  
 +  @Test
 +  public void testMerge() {
 +    BatchWriterConfig cfg1 = new BatchWriterConfig(), cfg2 = new BatchWriterConfig();
 +    cfg1.setMaxMemory(1234);
 +    cfg2.setMaxMemory(5858);
 +    cfg2.setDurability(Durability.LOG);
 +    cfg2.setMaxLatency(456, TimeUnit.MILLISECONDS);
 +
-     Assert.assertEquals(Durability.DEFAULT, cfg1.getDurability());
++    assertEquals(Durability.DEFAULT, cfg1.getDurability());
 +
 +    BatchWriterConfig merged = cfg1.merge(cfg2);
 +
-     Assert.assertEquals(1234, merged.getMaxMemory());
-     Assert.assertEquals(Durability.LOG, merged.getDurability());
-     Assert.assertEquals(456, merged.getMaxLatency(TimeUnit.MILLISECONDS));
-     Assert.assertEquals(3, merged.getMaxWriteThreads());
++    assertEquals(1234, merged.getMaxMemory());
++    assertEquals(Durability.LOG, merged.getDurability());
++    assertEquals(456, merged.getMaxLatency(TimeUnit.MILLISECONDS));
++    assertEquals(3, merged.getMaxWriteThreads());
 +  }
 +
    private byte[] createBytes(BatchWriterConfig bwConfig) throws IOException {
      ByteArrayOutputStream baos = new ByteArrayOutputStream();
      bwConfig.write(new DataOutputStream(baos));
diff --cc core/src/test/java/org/apache/accumulo/core/client/admin/NewTableConfigurationTest.java
index 738e335,0000000..dea710d
mode 100644,000000..100644
--- a/core/src/test/java/org/apache/accumulo/core/client/admin/NewTableConfigurationTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/client/admin/NewTableConfigurationTest.java
@@@ -1,100 -1,0 +1,96 @@@
 +/*
 + * 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.core.client.admin;
 +
 +import static org.junit.Assert.assertEquals;
 +import static org.junit.Assert.assertTrue;
 +
 +import java.util.Collection;
 +import java.util.Iterator;
 +import java.util.SortedSet;
 +import java.util.TreeSet;
 +
 +import org.apache.hadoop.io.Text;
 +import org.junit.Before;
 +import org.junit.Test;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
 +
 +public class NewTableConfigurationTest {
 +
-   private static final Logger log = LoggerFactory.getLogger(NewTableConfigurationTest.class);
- 
 +  private SortedSet<Text> splits;
 +
 +  @Before
 +  public void populateSplits() {
-     splits = new TreeSet<Text>();
++    splits = new TreeSet<>();
 +    splits.add(new Text("ccccc"));
 +    splits.add(new Text("aaaaa"));
 +    splits.add(new Text("ddddd"));
 +    splits.add(new Text("abcde"));
 +    splits.add(new Text("bbbbb"));
 +  }
 +
 +  /**
 +   * Verify the withSplits/getSplits methods do as expected.
 +   *
 +   * The withSplits() takes a SortedSet as its input. Verify that the set orders the data even if
 +   * input non-ordered.
 +   *
 +   * The getSplits should return a SortedSet. Test verifies set performs ordering and the input set
 +   * and output set are equal.
 +   */
 +  @Test
 +  public void testWithAndGetSplits() {
 +    NewTableConfiguration ntc = new NewTableConfiguration().withSplits(splits);
 +    Collection<Text> ntcSplits = ntc.getSplits();
 +    Iterator<Text> splitIt = splits.iterator();
 +    Iterator<Text> ntcIt = ntcSplits.iterator();
 +    while (splitIt.hasNext() && ntcIt.hasNext()) {
 +      assertEquals(splitIt.next(), ntcIt.next());
 +    }
 +    // verify splits is in sorted order
 +    Iterator<Text> it = splits.iterator();
 +    Text current = new Text("");
 +    while (it.hasNext()) {
 +      Text nxt = it.next();
 +      assertTrue(current.toString().compareTo(nxt.toString()) < 0);
 +      current = nxt;
 +    }
 +    // verify ntcSplits is in sorted order
 +    Iterator<Text> it2 = ntcSplits.iterator();
 +    current = new Text("");
 +    while (it2.hasNext()) {
 +      Text nxt = it2.next();
 +      assertTrue(current.toString().compareTo(nxt.toString()) < 0);
 +      current = nxt;
 +    }
 +
 +    NewTableConfiguration ntc2 = new NewTableConfiguration();
 +    Collection<Text> splits = ntc2.getSplits();
 +    assertTrue(splits.isEmpty());
 +
 +  }
 +
 +  /**
 +   * Verify that createOffline option
 +   */
 +  @Test
 +  public void testCreateOffline() {
 +    NewTableConfiguration ntcOffline = new NewTableConfiguration().createOffline();
 +    assertTrue(ntcOffline.getInitialTableState() == InitialTableState.OFFLINE);
 +    NewTableConfiguration ntcOnline = new NewTableConfiguration();
 +    assertTrue(ntcOnline.getInitialTableState() == InitialTableState.ONLINE);
 +  }
 +}
diff --cc core/src/test/java/org/apache/accumulo/core/client/impl/BulkSerializeTest.java
index 34f453d,0000000..cb72123
mode 100644,000000..100644
--- a/core/src/test/java/org/apache/accumulo/core/client/impl/BulkSerializeTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/client/impl/BulkSerializeTest.java
@@@ -1,149 -1,0 +1,148 @@@
 +/*
 + * 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.core.client.impl;
 +
 +import static org.junit.Assert.assertEquals;
 +
 +import java.io.ByteArrayInputStream;
 +import java.io.ByteArrayOutputStream;
 +import java.util.HashMap;
 +import java.util.Map;
 +import java.util.SortedMap;
 +import java.util.TreeMap;
 +
 +import org.apache.accumulo.core.Constants;
 +import org.apache.accumulo.core.client.impl.Bulk.FileInfo;
 +import org.apache.accumulo.core.client.impl.Bulk.Files;
 +import org.apache.accumulo.core.client.impl.BulkSerialize.Input;
 +import org.apache.accumulo.core.client.impl.BulkSerialize.LoadMappingIterator;
 +import org.apache.accumulo.core.client.impl.Table.ID;
 +import org.apache.accumulo.core.data.impl.KeyExtent;
 +import org.apache.hadoop.io.Text;
- import org.junit.Assert;
 +import org.junit.Test;
 +
 +public class BulkSerializeTest {
 +
 +  @Test
 +  public void writeReadLoadMapping() throws Exception {
 +    Table.ID tableId = Table.ID.of("3");
 +    SortedMap<KeyExtent,Bulk.Files> mapping = generateMapping(tableId);
 +
 +    ByteArrayOutputStream baos = new ByteArrayOutputStream();
 +
 +    BulkSerialize.writeLoadMapping(mapping, "/some/dir", p -> baos);
 +
 +    ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
 +
 +    try (LoadMappingIterator lmi = BulkSerialize.readLoadMapping("/some/dir", tableId, p -> bais)) {
 +      SortedMap<KeyExtent,Bulk.Files> readMapping = new TreeMap<>();
 +      lmi.forEachRemaining(e -> readMapping.put(e.getKey(), e.getValue()));
-       Assert.assertEquals(mapping, readMapping);
++      assertEquals(mapping, readMapping);
 +    }
 +  }
 +
 +  @Test
 +  public void writeReadRenames() throws Exception {
 +
 +    Map<String,String> renames = new HashMap<>();
 +    for (String f : "f1 f2 f3 f4 f5".split(" "))
 +      renames.put("old_" + f + ".rf", "new_" + f + ".rf");
 +
 +    ByteArrayOutputStream baos = new ByteArrayOutputStream();
 +
 +    BulkSerialize.writeRenameMap(renames, "/some/dir", p -> baos);
 +
 +    ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
 +
 +    Map<String,String> readMap = BulkSerialize.readRenameMap("/some/dir", p -> bais);
 +
 +    assertEquals("Read renames file wrong size", renames.size(), readMap.size());
 +    assertEquals("Read renames file different from what was written.", renames, readMap);
 +  }
 +
 +  @Test
 +  public void testRemap() throws Exception {
 +    Table.ID tableId = Table.ID.of("3");
 +    SortedMap<KeyExtent,Bulk.Files> mapping = generateMapping(tableId);
 +
 +    SortedMap<KeyExtent,Bulk.Files> newNameMapping = new TreeMap<>();
 +
 +    Map<String,String> nameMap = new HashMap<>();
 +
 +    mapping.forEach((extent, files) -> {
 +      Files newFiles = new Files();
 +      files.forEach(fi -> {
 +        newFiles.add(new FileInfo("N" + fi.name, fi.estSize, fi.estEntries));
 +        nameMap.put(fi.name, "N" + fi.name);
 +      });
 +
 +      newNameMapping.put(extent, newFiles);
 +    });
 +
 +    ByteArrayOutputStream mappingBaos = new ByteArrayOutputStream();
 +    ByteArrayOutputStream nameBaos = new ByteArrayOutputStream();
 +
 +    BulkSerialize.writeRenameMap(nameMap, "/some/dir", p -> nameBaos);
 +    BulkSerialize.writeLoadMapping(mapping, "/some/dir", p -> mappingBaos);
 +
 +    Input input = p -> {
 +      if (p.getName().equals(Constants.BULK_LOAD_MAPPING)) {
 +        return new ByteArrayInputStream(mappingBaos.toByteArray());
 +      } else if (p.getName().equals(Constants.BULK_RENAME_FILE)) {
 +        return new ByteArrayInputStream(nameBaos.toByteArray());
 +      } else {
 +        throw new IllegalArgumentException("bad path " + p);
 +      }
 +    };
 +
 +    try (LoadMappingIterator lmi = BulkSerialize.getUpdatedLoadMapping("/some/dir", tableId,
 +        input)) {
 +      SortedMap<KeyExtent,Bulk.Files> actual = new TreeMap<>();
 +      lmi.forEachRemaining(e -> actual.put(e.getKey(), e.getValue()));
-       Assert.assertEquals(newNameMapping, actual);
++      assertEquals(newNameMapping, actual);
 +    }
 +
 +  }
 +
 +  public SortedMap<KeyExtent,Bulk.Files> generateMapping(ID tableId) {
 +    SortedMap<KeyExtent,Bulk.Files> mapping = new TreeMap<>();
 +    Bulk.Files testFiles = new Bulk.Files();
 +    Bulk.Files testFiles2 = new Bulk.Files();
 +    Bulk.Files testFiles3 = new Bulk.Files();
 +    long c = 0L;
 +    for (String f : "f1 f2 f3".split(" ")) {
 +      c++;
 +      testFiles.add(new Bulk.FileInfo(f, c, c));
 +    }
 +    c = 0L;
 +    for (String f : "g1 g2 g3".split(" ")) {
 +      c++;
 +      testFiles2.add(new Bulk.FileInfo(f, c, c));
 +    }
 +    for (String f : "h1 h2 h3".split(" ")) {
 +      c++;
 +      testFiles3.add(new Bulk.FileInfo(f, c, c));
 +    }
 +
 +    // add out of order to test sorting
 +    mapping.put(new KeyExtent(tableId, new Text("d"), new Text("c")), testFiles);
 +    mapping.put(new KeyExtent(tableId, new Text("c"), new Text("b")), testFiles2);
 +    mapping.put(new KeyExtent(tableId, new Text("b"), new Text("a")), testFiles3);
 +
 +    return mapping;
 +  }
 +}
diff --cc core/src/test/java/org/apache/accumulo/core/client/impl/ClientConfConverterTest.java
index 894aaec,0000000..2fd19bc
mode 100644,000000..100644
--- a/core/src/test/java/org/apache/accumulo/core/client/impl/ClientConfConverterTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/client/impl/ClientConfConverterTest.java
@@@ -1,44 -1,0 +1,45 @@@
 +/*
 + * 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.core.client.impl;
 +
++import static org.junit.Assert.assertEquals;
++
 +import java.util.Properties;
 +
 +import org.apache.accumulo.core.conf.ClientProperty;
- import org.junit.Assert;
 +import org.junit.Test;
 +
 +public class ClientConfConverterTest {
 +
 +  @Test
 +  public void testBasic() {
 +    Properties before = new Properties();
 +    before.setProperty(ClientProperty.INSTANCE_NAME.getKey(), "instance");
 +    before.setProperty(ClientProperty.INSTANCE_ZOOKEEPERS.getKey(), "zookeepers");
 +    ClientProperty.setPassword(before, "mypass");
 +    before.setProperty(ClientProperty.SSL_ENABLED.getKey(), "true");
 +    before.setProperty(ClientProperty.SSL_KEYSTORE_PATH.getKey(), "key_path");
 +    before.setProperty(ClientProperty.SSL_KEYSTORE_PASSWORD.getKey(), "key_pass");
 +    before.setProperty(ClientProperty.SSL_TRUSTSTORE_PATH.getKey(), "trust_path");
 +    before.setProperty(ClientProperty.SASL_ENABLED.getKey(), "true");
 +    before.setProperty(ClientProperty.SASL_KERBEROS_SERVER_PRIMARY.getKey(), "primary");
 +    before.setProperty(ClientProperty.BATCH_WRITER_MAX_WRITE_THREADS.getKey(), "5");
 +
 +    Properties after = ClientConfConverter.toProperties(ClientConfConverter.toClientConf(before));
-     Assert.assertEquals(before, after);
++    assertEquals(before, after);
 +  }
 +}
diff --cc core/src/test/java/org/apache/accumulo/core/client/impl/ClientContextTest.java
index 4244ed6,01bb169..f7def43
--- a/core/src/test/java/org/apache/accumulo/core/client/impl/ClientContextTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/client/impl/ClientContextTest.java
@@@ -67,10 -73,11 +70,10 @@@ public class ClientContextTest 
      }
  
      String absPath = getKeyStoreUrl(keystore);
 -    ClientConfiguration clientConf = ClientConfiguration.create()
 -        .with(Property.GENERAL_SECURITY_CREDENTIAL_PROVIDER_PATHS.getKey(), absPath);
 -
 -    AccumuloConfiguration accClientConf = ClientContext.convertClientConfig(clientConf);
 +    Properties props = new Properties();
 +    props.setProperty(Property.GENERAL_SECURITY_CREDENTIAL_PROVIDER_PATHS.getKey(), absPath);
 +    AccumuloConfiguration accClientConf = ClientConfConverter.toAccumuloConf(props);
-     Assert.assertEquals("mysecret", accClientConf.get(Property.INSTANCE_SECRET));
+     assertEquals("mysecret", accClientConf.get(Property.INSTANCE_SECRET));
    }
  
    @Test
@@@ -78,9 -85,11 +81,9 @@@
      if (!isCredentialProviderAvailable) {
        return;
      }
 -
 -    ClientConfiguration clientConf = ClientConfiguration.create();
 -
 -    AccumuloConfiguration accClientConf = ClientContext.convertClientConfig(clientConf);
 +    Properties props = new Properties();
 +    AccumuloConfiguration accClientConf = ClientConfConverter.toAccumuloConf(props);
-     Assert.assertEquals(Property.INSTANCE_SECRET.getDefaultValue(),
+     assertEquals(Property.INSTANCE_SECRET.getDefaultValue(),
          accClientConf.get(Property.INSTANCE_SECRET));
    }
  
@@@ -91,18 -100,19 +94,18 @@@
      }
  
      String absPath = getKeyStoreUrl(keystore);
 -    ClientConfiguration clientConf = ClientConfiguration.create()
 -        .with(Property.GENERAL_SECURITY_CREDENTIAL_PROVIDER_PATHS.getKey(), absPath);
 +    Properties clientProps = new Properties();
 +    clientProps.setProperty(Property.GENERAL_SECURITY_CREDENTIAL_PROVIDER_PATHS.getKey(), absPath);
  
 -    AccumuloConfiguration accClientConf = ClientContext.convertClientConfig(clientConf);
 +    AccumuloConfiguration accClientConf = ClientConfConverter.toAccumuloConf(clientProps);
      Map<String,String> props = new HashMap<>();
 -    Predicate<String> all = Predicates.alwaysTrue();
 -    accClientConf.getProperties(props, all);
 +    accClientConf.getProperties(props, x -> true);
  
      // Only sensitive properties are added
-     Assert.assertEquals(Property.GENERAL_RPC_TIMEOUT.getDefaultValue(),
+     assertEquals(Property.GENERAL_RPC_TIMEOUT.getDefaultValue(),
          props.get(Property.GENERAL_RPC_TIMEOUT.getKey()));
      // Only known properties are added
-     Assert.assertFalse(props.containsKey("ignored.property"));
-     Assert.assertEquals("mysecret", props.get(Property.INSTANCE_SECRET.getKey()));
+     assertFalse(props.containsKey("ignored.property"));
+     assertEquals("mysecret", props.get(Property.INSTANCE_SECRET.getKey()));
    }
  }
diff --cc core/src/test/java/org/apache/accumulo/core/client/impl/ConcurrentKeyExtentCacheTest.java
index 4b80665,0000000..52d30d3
mode 100644,000000..100644
--- a/core/src/test/java/org/apache/accumulo/core/client/impl/ConcurrentKeyExtentCacheTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/client/impl/ConcurrentKeyExtentCacheTest.java
@@@ -1,131 -1,0 +1,133 @@@
 +/*
 + * 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.core.client.impl;
 +
++import static org.junit.Assert.assertEquals;
++import static org.junit.Assert.assertTrue;
++
 +import java.io.IOException;
 +import java.security.SecureRandom;
 +import java.util.ArrayList;
 +import java.util.HashSet;
 +import java.util.List;
 +import java.util.Random;
 +import java.util.Set;
 +import java.util.concurrent.TimeUnit;
 +import java.util.concurrent.atomic.AtomicInteger;
 +import java.util.stream.Stream;
 +
 +import org.apache.accumulo.core.client.AccumuloException;
 +import org.apache.accumulo.core.client.AccumuloSecurityException;
 +import org.apache.accumulo.core.client.TableNotFoundException;
 +import org.apache.accumulo.core.data.impl.KeyExtent;
 +import org.apache.hadoop.io.Text;
- import org.junit.Assert;
 +import org.junit.BeforeClass;
 +import org.junit.Test;
 +
 +import com.google.common.util.concurrent.Uninterruptibles;
 +
 +public class ConcurrentKeyExtentCacheTest {
 +
 +  private static List<KeyExtent> extents = new ArrayList<>();
 +  private static Set<KeyExtent> extentsSet = new HashSet<>();
 +
 +  @BeforeClass
 +  public static void setupSplits() {
 +    Text prev = null;
 +    for (int i = 1; i < 256; i++) {
 +      Text endRow = new Text(String.format("%02x", i));
 +      extents.add(new KeyExtent(Table.ID.of("1"), endRow, prev));
 +      prev = endRow;
 +    }
 +
 +    extents.add(new KeyExtent(Table.ID.of("1"), null, prev));
 +
 +    extentsSet.addAll(extents);
 +  }
 +
 +  private static class TestCache extends ConcurrentKeyExtentCache {
 +
 +    AtomicInteger updates = new AtomicInteger(0);
 +
 +    TestCache() {
 +      super(null, null);
 +    }
 +
 +    @Override
 +    protected void updateCache(KeyExtent e) {
 +      super.updateCache(e);
 +      updates.incrementAndGet();
 +    }
 +
 +    @Override
 +    protected Stream<KeyExtent> lookupExtents(Text row) {
 +      int index = -1;
 +      for (int i = 0; i < extents.size(); i++) {
 +        if (extents.get(i).contains(row)) {
 +          index = i;
 +          break;
 +        }
 +      }
 +
 +      Uninterruptibles.sleepUninterruptibly(3, TimeUnit.MILLISECONDS);
 +
 +      return extents.subList(index, extents.size()).stream().limit(73);
 +    }
 +  }
 +
 +  private void testLookup(TestCache tc, Text lookupRow) {
 +    try {
 +      KeyExtent extent = tc.lookup(lookupRow);
-       Assert.assertTrue(extent.contains(lookupRow));
-       Assert.assertTrue(extentsSet.contains(extent));
++      assertTrue(extent.contains(lookupRow));
++      assertTrue(extentsSet.contains(extent));
 +    } catch (IOException | AccumuloException | AccumuloSecurityException
 +        | TableNotFoundException e) {
 +      throw new RuntimeException(e);
 +    }
 +  }
 +
 +  @Test
 +  public void testExactEndRows() {
 +    Random rand = new SecureRandom();
 +    TestCache tc = new TestCache();
 +    rand.ints(10000, 0, 256).mapToObj(i -> new Text(String.format("%02x", i))).sequential()
 +        .forEach(lookupRow -> testLookup(tc, lookupRow));
-     Assert.assertEquals(256, tc.updates.get());
++    assertEquals(256, tc.updates.get());
 +
 +    // try parallel
 +    TestCache tc2 = new TestCache();
 +    rand.ints(10000, 0, 256).mapToObj(i -> new Text(String.format("%02x", i))).parallel()
 +        .forEach(lookupRow -> testLookup(tc2, lookupRow));
-     Assert.assertEquals(256, tc2.updates.get());
++    assertEquals(256, tc2.updates.get());
 +  }
 +
 +  @Test
 +  public void testRandom() throws Exception {
 +    TestCache tc = new TestCache();
 +
 +    Random rand = new SecureRandom();
 +    rand.ints(10000).mapToObj(i -> new Text(String.format("%08x", i))).sequential()
 +        .forEach(lookupRow -> testLookup(tc, lookupRow));
-     Assert.assertEquals(256, tc.updates.get());
++    assertEquals(256, tc.updates.get());
 +
 +    // try parallel
 +    TestCache tc2 = new TestCache();
 +    rand.ints(10000).mapToObj(i -> new Text(String.format("%08x", i))).parallel()
 +        .forEach(lookupRow -> testLookup(tc2, lookupRow));
-     Assert.assertEquals(256, tc2.updates.get());
++    assertEquals(256, tc2.updates.get());
 +  }
 +}
diff --cc core/src/test/java/org/apache/accumulo/core/client/impl/ConditionalComparatorTest.java
index b8ba83c,61179b0..6458023
--- a/core/src/test/java/org/apache/accumulo/core/client/impl/ConditionalComparatorTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/client/impl/ConditionalComparatorTest.java
@@@ -17,11 -17,11 +17,13 @@@
  
  package org.apache.accumulo.core.client.impl;
  
++import static org.junit.Assert.assertEquals;
+ import static org.junit.Assert.assertTrue;
+ 
 -import org.apache.accumulo.core.client.impl.ConditionalWriterImpl.ConditionComparator;
 +import java.util.Comparator;
 +
  import org.apache.accumulo.core.data.Condition;
  import org.apache.accumulo.core.security.ColumnVisibility;
- import org.junit.Assert;
  import org.junit.Test;
  
  public class ConditionalComparatorTest {
@@@ -35,20 -35,20 +37,20 @@@
      Condition c6 = new Condition("a", "b").setVisibility(new ColumnVisibility("A&B"));
      Condition c7 = new Condition("a", "b").setVisibility(new ColumnVisibility("A&C"));
  
 -    ConditionComparator comparator = new ConditionComparator();
 +    Comparator<Condition> comparator = ConditionalWriterImpl.CONDITION_COMPARATOR;
  
-     Assert.assertEquals(0, comparator.compare(c1, c1));
-     Assert.assertTrue(comparator.compare(c1, c2) < 0);
-     Assert.assertTrue(comparator.compare(c2, c1) > 0);
-     Assert.assertTrue(comparator.compare(c1, c3) < 0);
-     Assert.assertTrue(comparator.compare(c3, c1) > 0);
-     Assert.assertTrue(comparator.compare(c1, c4) < 0);
-     Assert.assertTrue(comparator.compare(c4, c1) > 0);
-     Assert.assertTrue(comparator.compare(c5, c4) < 0);
-     Assert.assertTrue(comparator.compare(c4, c5) > 0);
-     Assert.assertTrue(comparator.compare(c1, c7) < 0);
-     Assert.assertTrue(comparator.compare(c7, c1) > 0);
-     Assert.assertTrue(comparator.compare(c6, c7) < 0);
-     Assert.assertTrue(comparator.compare(c7, c6) > 0);
 -    assertTrue(comparator.compare(c1, c1) == 0);
++    assertEquals(0, comparator.compare(c1, c1));
+     assertTrue(comparator.compare(c1, c2) < 0);
+     assertTrue(comparator.compare(c2, c1) > 0);
+     assertTrue(comparator.compare(c1, c3) < 0);
+     assertTrue(comparator.compare(c3, c1) > 0);
+     assertTrue(comparator.compare(c1, c4) < 0);
+     assertTrue(comparator.compare(c4, c1) > 0);
+     assertTrue(comparator.compare(c5, c4) < 0);
+     assertTrue(comparator.compare(c4, c5) > 0);
+     assertTrue(comparator.compare(c1, c7) < 0);
+     assertTrue(comparator.compare(c7, c1) > 0);
+     assertTrue(comparator.compare(c6, c7) < 0);
+     assertTrue(comparator.compare(c7, c6) > 0);
    }
  }
diff --cc core/src/test/java/org/apache/accumulo/core/client/impl/TableOperationsHelperTest.java
index 799c894,e732686..619d2dd
--- a/core/src/test/java/org/apache/accumulo/core/client/impl/TableOperationsHelperTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/client/impl/TableOperationsHelperTest.java
@@@ -353,14 -329,14 +357,14 @@@ public class TableOperationsHelperTest 
      setting = new IteratorSetting(20, "otherName", "some.classname");
      t.attachIterator("table", setting, EnumSet.of(IteratorScope.scan));
      Map<String,EnumSet<IteratorScope>> two = t.listIterators("table");
-     Assert.assertEquals(2, two.size());
-     Assert.assertTrue(two.containsKey("otherName"));
-     Assert.assertEquals(2, two.get("otherName").size());
-     Assert.assertTrue(two.get("otherName").contains(IteratorScope.majc));
-     Assert.assertTrue(two.get("otherName").contains(IteratorScope.scan));
-     Assert.assertTrue(two.containsKey("someName"));
-     Assert.assertEquals(1, two.get("someName").size());
-     Assert.assertTrue(two.get("someName").contains(IteratorScope.majc));
+     assertEquals(2, two.size());
+     assertTrue(two.containsKey("otherName"));
 -    assertTrue(two.get("otherName").size() == 2);
++    assertEquals(2, two.get("otherName").size());
+     assertTrue(two.get("otherName").contains(IteratorScope.majc));
+     assertTrue(two.get("otherName").contains(IteratorScope.scan));
+     assertTrue(two.containsKey("someName"));
 -    assertTrue(two.get("someName").size() == 1);
++    assertEquals(1, two.get("someName").size());
+     assertTrue(two.get("someName").contains(IteratorScope.majc));
      t.removeIterator("table", "someName", EnumSet.allOf(IteratorScope.class));
      check(t, "table",
          new String[] {"table.iterator.majc.otherName=20,some.classname",
diff --cc core/src/test/java/org/apache/accumulo/core/client/lexicoder/ListLexicoderTest.java
index 33fd6d9,311159a..2d48277
--- a/core/src/test/java/org/apache/accumulo/core/client/lexicoder/ListLexicoderTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/client/lexicoder/ListLexicoderTest.java
@@@ -32,25 -36,26 +36,26 @@@ public class ListLexicoderTest extends 
    private List<Long> data4 = new ArrayList<>();
    private List<Long> data5 = new ArrayList<>();
  
-   @Override
+   @Before
    public void setUp() {
  
 -    data1.add(1l);
 -    data1.add(2l);
 +    data1.add(1L);
 +    data1.add(2L);
  
 -    data2.add(1l);
 +    data2.add(1L);
  
 -    data3.add(1l);
 -    data3.add(3l);
 +    data3.add(1L);
 +    data3.add(3L);
  
 -    data4.add(1l);
 -    data4.add(2l);
 -    data4.add(3l);
 +    data4.add(1L);
 +    data4.add(2L);
 +    data4.add(3L);
  
 -    data5.add(2l);
 -    data5.add(1l);
 +    data5.add(2L);
 +    data5.add(1L);
    }
  
+   @Test
    public void testSortOrder() {
      List<List<Long>> data = new ArrayList<>();
  
diff --cc core/src/test/java/org/apache/accumulo/core/client/lexicoder/LongLexicoderTest.java
index a5f1596,2b7d977..dd55136
--- a/core/src/test/java/org/apache/accumulo/core/client/lexicoder/LongLexicoderTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/client/lexicoder/LongLexicoderTest.java
@@@ -24,18 -27,19 +27,19 @@@ public class LongLexicoderTest extends 
    public void testSortOrder() {
  
      assertSortOrder(new LongLexicoder(),
 -        Arrays.asList(Long.MIN_VALUE, 0xff1234567890abcdl, 0xffff1234567890abl, 0xffffff567890abcdl,
 -            0xffffffff7890abcdl, 0xffffffffff90abcdl, 0xffffffffffffabcdl, 0xffffffffffffffcdl, -1l,
 -            0l, 0x01l, 0x1234l, 0x123456l, 0x12345678l, 0x1234567890l, 0x1234567890abl,
 -            0x1234567890abcdl, 0x1234567890abcdefl, Long.MAX_VALUE));
 +        Arrays.asList(Long.MIN_VALUE, 0xff1234567890abcdL, 0xffff1234567890abL, 0xffffff567890abcdL,
 +            0xffffffff7890abcdL, 0xffffffffff90abcdL, 0xffffffffffffabcdL, 0xffffffffffffffcdL, -1L,
 +            0L, 0x01L, 0x1234L, 0x123456L, 0x12345678L, 0x1234567890L, 0x1234567890abL,
 +            0x1234567890abcdL, 0x1234567890abcdefL, Long.MAX_VALUE));
    }
  
+   @Test
    public void testDecodes() {
      assertDecodes(new LongLexicoder(), Long.MIN_VALUE);
 -    assertDecodes(new LongLexicoder(), -1l);
 -    assertDecodes(new LongLexicoder(), 0l);
 -    assertDecodes(new LongLexicoder(), 1l);
 -    assertDecodes(new LongLexicoder(), 2l);
 +    assertDecodes(new LongLexicoder(), -1L);
 +    assertDecodes(new LongLexicoder(), 0L);
 +    assertDecodes(new LongLexicoder(), 1L);
 +    assertDecodes(new LongLexicoder(), 2L);
      assertDecodes(new LongLexicoder(), Long.MAX_VALUE);
    }
  }
diff --cc core/src/test/java/org/apache/accumulo/core/client/lexicoder/PairLexicoderTest.java
index 9281d4d,9871e48..8ea103e
--- a/core/src/test/java/org/apache/accumulo/core/client/lexicoder/PairLexicoderTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/client/lexicoder/PairLexicoderTest.java
@@@ -36,10 -39,11 +39,11 @@@ public class PairLexicoderTest extends 
          new StringLexicoder());
  
      assertSortOrder(plexc2,
 -        Arrays.asList(new ComparablePair<>(0x100l, "a"), new ComparablePair<>(0x100l, "ab"),
 -            new ComparablePair<>(0xf0l, "a"), new ComparablePair<>(0xf0l, "ab")));
 +        Arrays.asList(new ComparablePair<>(0x100L, "a"), new ComparablePair<>(0x100L, "ab"),
 +            new ComparablePair<>(0xf0L, "a"), new ComparablePair<>(0xf0L, "ab")));
    }
  
+   @Test
    public void testDecodes() {
      PairLexicoder<String,String> plexc = new PairLexicoder<>(new StringLexicoder(),
          new StringLexicoder());
diff --cc core/src/test/java/org/apache/accumulo/core/client/lexicoder/ReverseLexicoderTest.java
index ca733f3,b557d94..4d29543
--- a/core/src/test/java/org/apache/accumulo/core/client/lexicoder/ReverseLexicoderTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/client/lexicoder/ReverseLexicoderTest.java
@@@ -67,11 -69,12 +69,12 @@@ public class ReverseLexicoderTest exten
  
    }
  
+   @Test
    public void testDecodes() {
      assertDecodes(new ReverseLexicoder<>(new LongLexicoder()), Long.MIN_VALUE);
 -    assertDecodes(new ReverseLexicoder<>(new LongLexicoder()), -1l);
 -    assertDecodes(new ReverseLexicoder<>(new LongLexicoder()), 0l);
 -    assertDecodes(new ReverseLexicoder<>(new LongLexicoder()), 1l);
 +    assertDecodes(new ReverseLexicoder<>(new LongLexicoder()), -1L);
 +    assertDecodes(new ReverseLexicoder<>(new LongLexicoder()), 0L);
 +    assertDecodes(new ReverseLexicoder<>(new LongLexicoder()), 1L);
      assertDecodes(new ReverseLexicoder<>(new LongLexicoder()), Long.MAX_VALUE);
    }
  }
diff --cc core/src/test/java/org/apache/accumulo/core/client/lexicoder/ULongLexicoderTest.java
index 5a6c037,99ed857..9cc2904
--- a/core/src/test/java/org/apache/accumulo/core/client/lexicoder/ULongLexicoderTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/client/lexicoder/ULongLexicoderTest.java
@@@ -25,48 -27,50 +27,50 @@@ public class ULongLexicoderTest extend
    public void testEncoding() {
      ULongLexicoder ull = new ULongLexicoder();
  
 -    assertEqualsB(ull.encode(0l), new byte[] {0x00});
 -    assertEqualsB(ull.encode(0x01l), new byte[] {0x01, 0x01});
 -    assertEqualsB(ull.encode(0x1234l), new byte[] {0x02, 0x12, 0x34});
 -    assertEqualsB(ull.encode(0x123456l), new byte[] {0x03, 0x12, 0x34, 0x56});
 -    assertEqualsB(ull.encode(0x12345678l), new byte[] {0x04, 0x12, 0x34, 0x56, 0x78});
 -    assertEqualsB(ull.encode(0x1234567890l),
 +    assertEqualsB(ull.encode(0L), new byte[] {0x00});
 +    assertEqualsB(ull.encode(0x01L), new byte[] {0x01, 0x01});
 +    assertEqualsB(ull.encode(0x1234L), new byte[] {0x02, 0x12, 0x34});
 +    assertEqualsB(ull.encode(0x123456L), new byte[] {0x03, 0x12, 0x34, 0x56});
 +    assertEqualsB(ull.encode(0x12345678L), new byte[] {0x04, 0x12, 0x34, 0x56, 0x78});
 +    assertEqualsB(ull.encode(0x1234567890L),
          new byte[] {0x05, 0x12, 0x34, 0x56, 0x78, (byte) 0x90});
 -    assertEqualsB(ull.encode(0x1234567890abl),
 +    assertEqualsB(ull.encode(0x1234567890abL),
          new byte[] {0x06, 0x12, 0x34, 0x56, 0x78, (byte) 0x90, (byte) 0xab});
 -    assertEqualsB(ull.encode(0x1234567890abcdl),
 +    assertEqualsB(ull.encode(0x1234567890abcdL),
          new byte[] {0x07, 0x12, 0x34, 0x56, 0x78, (byte) 0x90, (byte) 0xab, (byte) 0xcd});
 -    assertEqualsB(ull.encode(0x1234567890abcdefl), new byte[] {0x08, 0x12, 0x34, 0x56, 0x78,
 +    assertEqualsB(ull.encode(0x1234567890abcdefL), new byte[] {0x08, 0x12, 0x34, 0x56, 0x78,
          (byte) 0x90, (byte) 0xab, (byte) 0xcd, (byte) 0xef});
  
 -    assertEqualsB(ull.encode(0xff34567890abcdefl),
 +    assertEqualsB(ull.encode(0xff34567890abcdefL),
          new byte[] {0x09, 0x34, 0x56, 0x78, (byte) 0x90, (byte) 0xab, (byte) 0xcd, (byte) 0xef});
 -    assertEqualsB(ull.encode(0xffff567890abcdefl),
 +    assertEqualsB(ull.encode(0xffff567890abcdefL),
          new byte[] {0x0a, 0x56, 0x78, (byte) 0x90, (byte) 0xab, (byte) 0xcd, (byte) 0xef});
 -    assertEqualsB(ull.encode(0xffffff7890abcdefl),
 +    assertEqualsB(ull.encode(0xffffff7890abcdefL),
          new byte[] {0x0b, 0x78, (byte) 0x90, (byte) 0xab, (byte) 0xcd, (byte) 0xef});
 -    assertEqualsB(ull.encode(0xffffffff90abcdefl),
 +    assertEqualsB(ull.encode(0xffffffff90abcdefL),
          new byte[] {0x0c, (byte) 0x90, (byte) 0xab, (byte) 0xcd, (byte) 0xef});
 -    assertEqualsB(ull.encode(0xffffffffffabcdefl),
 +    assertEqualsB(ull.encode(0xffffffffffabcdefL),
          new byte[] {0x0d, (byte) 0xab, (byte) 0xcd, (byte) 0xef});
 -    assertEqualsB(ull.encode(0xffffffffffffcdefl), new byte[] {0x0e, (byte) 0xcd, (byte) 0xef});
 -    assertEqualsB(ull.encode(0xffffffffffffffefl), new byte[] {0x0f, (byte) 0xef});
 +    assertEqualsB(ull.encode(0xffffffffffffcdefL), new byte[] {0x0e, (byte) 0xcd, (byte) 0xef});
 +    assertEqualsB(ull.encode(0xffffffffffffffefL), new byte[] {0x0f, (byte) 0xef});
  
 -    assertEqualsB(ull.encode(-1l), new byte[] {16});
 +    assertEqualsB(ull.encode(-1L), new byte[] {16});
    }
  
+   @Test
    public void testSortOrder() {
      // only testing non negative
 -    assertSortOrder(new ULongLexicoder(), Arrays.asList(0l, 0x01l, 0x1234l, 0x123456l, 0x12345678l,
 -        0x1234567890l, 0x1234567890abl, 0x1234567890abcdl, 0x1234567890abcdefl, Long.MAX_VALUE));
 +    assertSortOrder(new ULongLexicoder(), Arrays.asList(0L, 0x01L, 0x1234L, 0x123456L, 0x12345678L,
 +        0x1234567890L, 0x1234567890abL, 0x1234567890abcdL, 0x1234567890abcdefL, Long.MAX_VALUE));
    }
  
+   @Test
    public void testDecodes() {
      assertDecodes(new ULongLexicoder(), Long.MIN_VALUE);
 -    assertDecodes(new ULongLexicoder(), -1l);
 -    assertDecodes(new ULongLexicoder(), 0l);
 -    assertDecodes(new ULongLexicoder(), 1l);
 -    assertDecodes(new ULongLexicoder(), 2l);
 +    assertDecodes(new ULongLexicoder(), -1L);
 +    assertDecodes(new ULongLexicoder(), 0L);
 +    assertDecodes(new ULongLexicoder(), 1L);
 +    assertDecodes(new ULongLexicoder(), 2L);
      assertDecodes(new ULongLexicoder(), Long.MAX_VALUE);
    }
  
diff --cc core/src/test/java/org/apache/accumulo/core/client/security/SecurityErrorCodeTest.java
index 6cdfa29,459fed4..5174421
--- a/core/src/test/java/org/apache/accumulo/core/client/security/SecurityErrorCodeTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/client/security/SecurityErrorCodeTest.java
@@@ -16,11 -16,15 +16,12 @@@
   */
  package org.apache.accumulo.core.client.security;
  
+ import static org.junit.Assert.assertEquals;
+ 
  import java.util.HashSet;
  
- import org.junit.Assert;
  import org.junit.Test;
  
 -/**
 - *
 - */
  public class SecurityErrorCodeTest {
  
    @Test
diff --cc core/src/test/java/org/apache/accumulo/core/client/security/tokens/CredentialProviderTokenTest.java
index eb562d9,03c5016..1a0b93b
--- a/core/src/test/java/org/apache/accumulo/core/client/security/tokens/CredentialProviderTokenTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/client/security/tokens/CredentialProviderTokenTest.java
@@@ -56,12 -59,10 +59,12 @@@ public class CredentialProviderTokenTes
      }
  
      CredentialProviderToken token = new CredentialProviderToken("root.password", keystorePath);
-     Assert.assertEquals("root.password", token.getName());
-     Assert.assertEquals(keystorePath, token.getCredentialProviders());
-     Assert.assertArrayEquals("password".getBytes(UTF_8), token.getPassword());
++    assertEquals("root.password", token.getName());
++    assertEquals(keystorePath, token.getCredentialProviders());
+     assertArrayEquals("password".getBytes(UTF_8), token.getPassword());
  
      token = new CredentialProviderToken("bob.password", keystorePath);
-     Assert.assertArrayEquals("bob".getBytes(UTF_8), token.getPassword());
+     assertArrayEquals("bob".getBytes(UTF_8), token.getPassword());
    }
  
    @Test
diff --cc core/src/test/java/org/apache/accumulo/core/client/security/tokens/PasswordTokenTest.java
index 026b631,2eb7e1d..698da75
--- a/core/src/test/java/org/apache/accumulo/core/client/security/tokens/PasswordTokenTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/client/security/tokens/PasswordTokenTest.java
@@@ -20,9 -21,11 +21,8 @@@ import static org.junit.Assert.assertEq
  
  import javax.security.auth.DestroyFailedException;
  
- import org.junit.Assert;
  import org.junit.Test;
  
 -/**
 - *
 - */
  public class PasswordTokenTest {
  
    @Test
diff --cc core/src/test/java/org/apache/accumulo/core/client/summary/CountingSummarizerTest.java
index d1e6b89,0000000..e8e14b8
mode 100644,000000..100644
--- a/core/src/test/java/org/apache/accumulo/core/client/summary/CountingSummarizerTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/client/summary/CountingSummarizerTest.java
@@@ -1,258 -1,0 +1,258 @@@
 +/*
 + * 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.core.client.summary;
 +
 +import static org.apache.accumulo.core.client.summary.CountingSummarizer.COUNTER_STAT_PREFIX;
 +import static org.apache.accumulo.core.client.summary.CountingSummarizer.DELETES_IGNORED_STAT;
 +import static org.apache.accumulo.core.client.summary.CountingSummarizer.EMITTED_STAT;
 +import static org.apache.accumulo.core.client.summary.CountingSummarizer.INGNORE_DELETES_OPT;
 +import static org.apache.accumulo.core.client.summary.CountingSummarizer.MAX_COUNTERS_OPT;
 +import static org.apache.accumulo.core.client.summary.CountingSummarizer.MAX_COUNTER_LEN_OPT;
 +import static org.apache.accumulo.core.client.summary.CountingSummarizer.SEEN_STAT;
 +import static org.apache.accumulo.core.client.summary.CountingSummarizer.TOO_LONG_STAT;
 +import static org.apache.accumulo.core.client.summary.CountingSummarizer.TOO_MANY_STAT;
++import static org.junit.Assert.assertEquals;
 +
 +import java.util.Arrays;
 +import java.util.HashMap;
 +
 +import org.apache.accumulo.core.client.summary.Summarizer.Collector;
 +import org.apache.accumulo.core.client.summary.summarizers.FamilySummarizer;
 +import org.apache.accumulo.core.client.summary.summarizers.VisibilitySummarizer;
 +import org.apache.accumulo.core.data.Key;
 +import org.apache.accumulo.core.data.Value;
- import org.junit.Assert;
 +import org.junit.Test;
 +
 +public class CountingSummarizerTest {
 +
 +  public static class MultiSummarizer extends CountingSummarizer<String> {
 +    @Override
 +    protected Converter<String> converter() {
 +      return (k, v, c) -> {
 +        c.accept("rp:" + k.getRowData().subSequence(0, 2));
 +        c.accept("fp:" + k.getColumnFamilyData().subSequence(0, 2));
 +        c.accept("qp:" + k.getColumnQualifierData().subSequence(0, 2));
 +      };
 +    }
 +  }
 +
 +  @Test
 +  public void testMultipleEmit() {
 +    SummarizerConfiguration sc = SummarizerConfiguration.builder(MultiSummarizer.class).build();
 +    MultiSummarizer countSum = new MultiSummarizer();
 +
 +    Summarizer.Collector collector = countSum.collector(sc);
 +
 +    Value val = new Value("abc");
 +
 +    HashMap<String,Long> expected = new HashMap<>();
 +
 +    for (String row : new String[] {"ask", "asleep", "some", "soul"}) {
 +      for (String fam : new String[] {"hop", "hope", "nope", "noop"}) {
 +        for (String qual : new String[] {"mad", "lad", "lab", "map"}) {
 +          collector.accept(new Key(row, fam, qual), val);
 +
 +          expected.merge("rp:" + row.substring(0, 2), 1L, Long::sum);
 +          expected.merge("fp:" + fam.substring(0, 2), 1L, Long::sum);
 +          expected.merge("qp:" + qual.substring(0, 2), 1L, Long::sum);
 +        }
 +      }
 +    }
 +
 +    HashMap<String,Long> stats = new HashMap<>();
 +    collector.summarize(stats::put);
 +
 +    CounterSummary csum = new CounterSummary(stats);
-     Assert.assertEquals(expected, csum.getCounters());
-     Assert.assertEquals(64, csum.getSeen());
-     Assert.assertEquals(3 * 64, csum.getEmitted());
-     Assert.assertEquals(0, csum.getIgnored());
-     Assert.assertEquals(0, csum.getDeletesIgnored());
++    assertEquals(expected, csum.getCounters());
++    assertEquals(64, csum.getSeen());
++    assertEquals(3 * 64, csum.getEmitted());
++    assertEquals(0, csum.getIgnored());
++    assertEquals(0, csum.getDeletesIgnored());
 +  }
 +
 +  @Test
 +  public void testSummarizing() {
 +    SummarizerConfiguration sc = SummarizerConfiguration.builder(FamilySummarizer.class)
 +        .addOptions(MAX_COUNTERS_OPT, "5", MAX_COUNTER_LEN_OPT, "10").build();
 +    FamilySummarizer countSum = new FamilySummarizer();
 +
 +    Value val = new Value("abc");
 +
 +    Summarizer.Collector collector = countSum.collector(sc);
 +    for (String fam : Arrays.asList("f1", "f1", "f1", "f2", "f1", "f70000000000000000000",
 +        "f70000000000000000001", "f2", "f3", "f4", "f5", "f6", "f7", "f3", "f7")) {
 +      collector.accept(new Key("r", fam), val);
 +    }
 +
 +    Key dk = new Key("r", "f2");
 +    dk.setDeleted(true);
 +    collector.accept(dk, new Value(""));
 +
 +    HashMap<String,Long> stats = new HashMap<>();
 +    collector.summarize(stats::put);
 +
 +    String p = COUNTER_STAT_PREFIX;
 +
 +    HashMap<String,Long> expected = new HashMap<>();
 +    expected.put(p + "f1", 4L);
 +    expected.put(p + "f2", 2L);
 +    expected.put(p + "f3", 2L);
 +    expected.put(p + "f4", 1L);
 +    expected.put(p + "f5", 1L);
 +    expected.put(TOO_LONG_STAT, 2L);
 +    expected.put(TOO_MANY_STAT, 3L);
 +    expected.put(SEEN_STAT, 16L);
 +    expected.put(EMITTED_STAT, 15L);
 +    expected.put(DELETES_IGNORED_STAT, 1L);
 +
-     Assert.assertEquals(expected, stats);
++    assertEquals(expected, stats);
 +
 +    CounterSummary csum = new CounterSummary(stats);
-     Assert.assertEquals(5, csum.getIgnored());
-     Assert.assertEquals(3, csum.getTooMany());
-     Assert.assertEquals(2, csum.getTooLong());
-     Assert.assertEquals(16, csum.getSeen());
-     Assert.assertEquals(15, csum.getEmitted());
-     Assert.assertEquals(1, csum.getDeletesIgnored());
++    assertEquals(5, csum.getIgnored());
++    assertEquals(3, csum.getTooMany());
++    assertEquals(2, csum.getTooLong());
++    assertEquals(16, csum.getSeen());
++    assertEquals(15, csum.getEmitted());
++    assertEquals(1, csum.getDeletesIgnored());
 +
 +    expected.clear();
 +    expected.put("f1", 4L);
 +    expected.put("f2", 2L);
 +    expected.put("f3", 2L);
 +    expected.put("f4", 1L);
 +    expected.put("f5", 1L);
-     Assert.assertEquals(expected, csum.getCounters());
++    assertEquals(expected, csum.getCounters());
 +
 +  }
 +
 +  @Test
 +  public void testMerge() {
 +    SummarizerConfiguration sc = SummarizerConfiguration.builder(VisibilitySummarizer.class)
 +        .addOption(MAX_COUNTERS_OPT, "5").build();
 +    VisibilitySummarizer countSum = new VisibilitySummarizer();
 +
 +    String p = COUNTER_STAT_PREFIX;
 +
 +    HashMap<String,Long> sm1 = new HashMap<>();
 +    sm1.put(p + "f001", 9L);
 +    sm1.put(p + "f002", 4L);
 +    sm1.put(p + "f003", 2L);
 +    sm1.put(p + "f004", 1L);
 +    sm1.put(p + "f005", 19L);
 +    sm1.put(EMITTED_STAT, 15L);
 +    sm1.put(SEEN_STAT, 5L);
 +    sm1.put(DELETES_IGNORED_STAT, 1L);
 +
 +    HashMap<String,Long> sm2 = new HashMap<>();
 +    sm2.put(p + "f001", 1L);
 +    sm2.put(p + "f002", 2L);
 +    sm2.put(p + "f00a", 7L);
 +    sm2.put(p + "f00b", 1L);
 +    sm2.put(p + "f00c", 17L);
 +    sm2.put(EMITTED_STAT, 18L);
 +    sm2.put(SEEN_STAT, 6L);
 +    sm2.put(DELETES_IGNORED_STAT, 2L);
 +
 +    countSum.combiner(sc).merge(sm1, sm2);
 +
 +    HashMap<String,Long> expected = new HashMap<>();
 +    expected.put(p + "f001", 10L);
 +    expected.put(p + "f002", 6L);
 +    expected.put(p + "f005", 19L);
 +    expected.put(p + "f00a", 7L);
 +    expected.put(p + "f00c", 17L);
 +    expected.put(TOO_LONG_STAT, 0L);
 +    expected.put(TOO_MANY_STAT, 4L);
 +    expected.put(EMITTED_STAT, 18L + 15L);
 +    expected.put(SEEN_STAT, 6L + 5L);
 +    expected.put(DELETES_IGNORED_STAT, 3L);
 +
-     Assert.assertEquals(expected, sm1);
++    assertEquals(expected, sm1);
 +
 +    sm2.clear();
 +    sm2.put(p + "f001", 19L);
 +    sm2.put(p + "f002", 2L);
 +    sm2.put(p + "f003", 3L);
 +    sm2.put(p + "f00b", 13L);
 +    sm2.put(p + "f00c", 2L);
 +    sm2.put(TOO_LONG_STAT, 1L);
 +    sm2.put(TOO_MANY_STAT, 3L);
 +    sm2.put(EMITTED_STAT, 21L);
 +    sm2.put(SEEN_STAT, 7L);
 +    sm2.put(DELETES_IGNORED_STAT, 5L);
 +
 +    countSum.combiner(sc).merge(sm1, sm2);
 +
 +    expected.clear();
 +    expected.put(p + "f001", 29L);
 +    expected.put(p + "f002", 8L);
 +    expected.put(p + "f005", 19L);
 +    expected.put(p + "f00b", 13L);
 +    expected.put(p + "f00c", 19L);
 +    expected.put(TOO_LONG_STAT, 1L);
 +    expected.put(TOO_MANY_STAT, 17L);
 +    expected.put(EMITTED_STAT, 21L + 18 + 15);
 +    expected.put(SEEN_STAT, 7L + 6 + 5);
 +    expected.put(DELETES_IGNORED_STAT, 8L);
 +  }
 +
 +  @Test
 +  public void testCountDeletes() {
 +    SummarizerConfiguration sc = SummarizerConfiguration.builder(FamilySummarizer.class)
 +        .addOptions(INGNORE_DELETES_OPT, "false").build();
 +    FamilySummarizer countSum = new FamilySummarizer();
 +
 +    Key k1 = new Key("r1", "f1");
 +    Key k2 = new Key("r1", "f1");
 +    k2.setDeleted(true);
 +    Key k3 = new Key("r1", "f2");
 +
 +    Collector collector = countSum.collector(sc);
 +    collector.accept(k1, new Value(""));
 +    collector.accept(k2, new Value(""));
 +    collector.accept(k3, new Value(""));
 +
 +    String p = COUNTER_STAT_PREFIX;
 +
 +    HashMap<String,Long> expected = new HashMap<>();
 +    expected.put(p + "f1", 2L);
 +    expected.put(p + "f2", 1L);
 +    expected.put(TOO_LONG_STAT, 0L);
 +    expected.put(TOO_MANY_STAT, 0L);
 +    expected.put(SEEN_STAT, 3L);
 +    expected.put(EMITTED_STAT, 3L);
 +    expected.put(DELETES_IGNORED_STAT, 0L);
 +
 +    HashMap<String,Long> stats = new HashMap<>();
 +    collector.summarize(stats::put);
-     Assert.assertEquals(expected, stats);
++    assertEquals(expected, stats);
 +
 +    CounterSummary csum = new CounterSummary(stats);
-     Assert.assertEquals(0, csum.getIgnored());
-     Assert.assertEquals(0, csum.getTooMany());
-     Assert.assertEquals(0, csum.getTooLong());
-     Assert.assertEquals(3, csum.getSeen());
-     Assert.assertEquals(3, csum.getEmitted());
-     Assert.assertEquals(0, csum.getDeletesIgnored());
++    assertEquals(0, csum.getIgnored());
++    assertEquals(0, csum.getTooMany());
++    assertEquals(0, csum.getTooLong());
++    assertEquals(3, csum.getSeen());
++    assertEquals(3, csum.getEmitted());
++    assertEquals(0, csum.getDeletesIgnored());
 +
 +    expected.clear();
 +    expected.put("f1", 2L);
 +    expected.put("f2", 1L);
-     Assert.assertEquals(expected, csum.getCounters());
++    assertEquals(expected, csum.getCounters());
 +  }
 +}
diff --cc core/src/test/java/org/apache/accumulo/core/client/summary/summarizers/EntryLengthSummarizersTest.java
index 456c42f,0000000..fb4f517
mode 100644,000000..100644
--- a/core/src/test/java/org/apache/accumulo/core/client/summary/summarizers/EntryLengthSummarizersTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/client/summary/summarizers/EntryLengthSummarizersTest.java
@@@ -1,1165 -1,0 +1,1166 @@@
 +/*
 + * 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.core.client.summary.summarizers;
 +
++import static org.junit.Assert.assertEquals;
++
 +import java.util.HashMap;
 +
 +import org.apache.accumulo.core.client.summary.Summarizer.Collector;
 +import org.apache.accumulo.core.client.summary.Summarizer.Combiner;
 +import org.apache.accumulo.core.client.summary.SummarizerConfiguration;
 +import org.apache.accumulo.core.data.Key;
 +import org.apache.accumulo.core.data.Value;
- import org.junit.Assert;
 +import org.junit.Test;
 +
 +public class EntryLengthSummarizersTest {
 +
 +  /* COLLECTOR TEST */
 +  /* Basic Test: Each test adds to the next, all are simple lengths. */
 +
 +  @Test
 +  public void testEmpty() {
 +    SummarizerConfiguration sc = SummarizerConfiguration.builder(EntryLengthSummarizer.class)
 +        .build();
 +    EntryLengthSummarizer entrySum = new EntryLengthSummarizer();
 +
 +    Collector collector = entrySum.collector(sc);
 +
 +    HashMap<String,Long> stats = new HashMap<>();
 +    collector.summarize(stats::put);
 +
 +    HashMap<String,Long> expected = new HashMap<>();
 +    expected.put("key.min", 0L);
 +    expected.put("key.max", 0L);
 +    expected.put("key.sum", 0L);
 +
 +    expected.put("row.min", 0L);
 +    expected.put("row.max", 0L);
 +    expected.put("row.sum", 0L);
 +
 +    expected.put("family.min", 0L);
 +    expected.put("family.max", 0L);
 +    expected.put("family.sum", 0L);
 +
 +    expected.put("qualifier.min", 0L);
 +    expected.put("qualifier.max", 0L);
 +    expected.put("qualifier.sum", 0L);
 +
 +    expected.put("visibility.min", 0L);
 +    expected.put("visibility.max", 0L);
 +    expected.put("visibility.sum", 0L);
 +
 +    expected.put("value.min", 0L);
 +    expected.put("value.max", 0L);
 +    expected.put("value.sum", 0L);
 +
 +    expected.put("total", 0L);
 +
-     Assert.assertEquals(expected, stats);
++    assertEquals(expected, stats);
 +  }
 +
 +  @Test
 +  public void testBasicRow() {
 +    SummarizerConfiguration sc = SummarizerConfiguration.builder(EntryLengthSummarizer.class)
 +        .build();
 +    EntryLengthSummarizer entrySum = new EntryLengthSummarizer();
 +
 +    Key k1 = new Key("r1");
 +    Key k2 = new Key("r2");
 +    Key k3 = new Key("r3");
 +
 +    Collector collector = entrySum.collector(sc);
 +    collector.accept(k1, new Value(""));
 +    collector.accept(k2, new Value(""));
 +    collector.accept(k3, new Value(""));
 +
 +    HashMap<String,Long> stats = new HashMap<>();
 +    collector.summarize(stats::put);
 +
 +    HashMap<String,Long> expected = new HashMap<>();
 +    expected.put("key.min", 2L);
 +    expected.put("key.max", 2L);
 +    expected.put("key.sum", 6L);
 +
 +    // Log2 Histogram
 +    expected.put("key.logHist.1", 3L);
 +
 +    expected.put("row.min", 2L);
 +    expected.put("row.max", 2L);
 +    expected.put("row.sum", 6L);
 +
 +    // Log2 Histogram
 +    expected.put("row.logHist.1", 3L);
 +
 +    expected.put("family.min", 0L);
 +    expected.put("family.max", 0L);
 +    expected.put("family.sum", 0L);
 +
 +    // Log2 Histogram
 +    expected.put("family.logHist.0", 3L);
 +
 +    expected.put("qualifier.min", 0L);
 +    expected.put("qualifier.max", 0L);
 +    expected.put("qualifier.sum", 0L);
 +
 +    // Log2 Histogram
 +    expected.put("qualifier.logHist.0", 3L);
 +
 +    expected.put("visibility.min", 0L);
 +    expected.put("visibility.max", 0L);
 +    expected.put("visibility.sum", 0L);
 +
 +    // Log2 Histogram
 +    expected.put("visibility.logHist.0", 3L);
 +
 +    expected.put("value.min", 0L);
 +    expected.put("value.max", 0L);
 +    expected.put("value.sum", 0L);
 +
 +    // Log2 Histogram
 +    expected.put("value.logHist.0", 3L);
 +
 +    expected.put("total", 3L);
 +
-     Assert.assertEquals(expected, stats);
++    assertEquals(expected, stats);
 +  }
 +
 +  @Test
 +  public void testBasicFamily() {
 +    SummarizerConfiguration sc = SummarizerConfiguration.builder(EntryLengthSummarizer.class)
 +        .build();
 +    EntryLengthSummarizer entrySum = new EntryLengthSummarizer();
 +
 +    Key k1 = new Key("r1", "f1");
 +    Key k2 = new Key("r2", "f2");
 +    Key k3 = new Key("r3", "f3");
 +
 +    Collector collector = entrySum.collector(sc);
 +    collector.accept(k1, new Value(""));
 +    collector.accept(k2, new Value(""));
 +    collector.accept(k3, new Value(""));
 +
 +    HashMap<String,Long> stats = new HashMap<>();
 +    collector.summarize(stats::put);
 +
 +    HashMap<String,Long> expected = new HashMap<>();
 +    expected.put("key.min", 4L);
 +    expected.put("key.max", 4L);
 +    expected.put("key.sum", 12L);
 +
 +    // Log2 Histogram
 +    expected.put("key.logHist.2", 3L);
 +
 +    expected.put("row.min", 2L);
 +    expected.put("row.max", 2L);
 +    expected.put("row.sum", 6L);
 +
 +    // Log2 Histogram
 +    expected.put("row.logHist.1", 3L);
 +
 +    expected.put("family.min", 2L);
 +    expected.put("family.max", 2L);
 +    expected.put("family.sum", 6L);
 +
 +    // Log2 Histogram
 +    expected.put("family.logHist.1", 3L);
 +
 +    expected.put("qualifier.min", 0L);
 +    expected.put("qualifier.max", 0L);
 +    expected.put("qualifier.sum", 0L);
 +
 +    // Log2 Histogram
 +    expected.put("qualifier.logHist.0", 3L);
 +
 +    expected.put("visibility.min", 0L);
 +    expected.put("visibility.max", 0L);
 +    expected.put("visibility.sum", 0L);
 +
 +    // Log2 Histogram
 +    expected.put("visibility.logHist.0", 3L);
 +
 +    expected.put("value.min", 0L);
 +    expected.put("value.max", 0L);
 +    expected.put("value.sum", 0L);
 +
 +    // Log2 Histogram
 +    expected.put("value.logHist.0", 3L);
 +
 +    expected.put("total", 3L);
 +
-     Assert.assertEquals(expected, stats);
++    assertEquals(expected, stats);
 +  }
 +
 +  @Test
 +  public void testBasicQualifier() {
 +    SummarizerConfiguration sc = SummarizerConfiguration.builder(EntryLengthSummarizer.class)
 +        .build();
 +    EntryLengthSummarizer entrySum = new EntryLengthSummarizer();
 +
 +    Key k1 = new Key("r1", "f1", "q1");
 +    Key k2 = new Key("r2", "f2", "q2");
 +    Key k3 = new Key("r3", "f3", "q3");
 +
 +    Collector collector = entrySum.collector(sc);
 +    collector.accept(k1, new Value(""));
 +    collector.accept(k2, new Value(""));
 +    collector.accept(k3, new Value(""));
 +
 +    HashMap<String,Long> stats = new HashMap<>();
 +    collector.summarize(stats::put);
 +
 +    HashMap<String,Long> expected = new HashMap<>();
 +    expected.put("key.min", 6L);
 +    expected.put("key.max", 6L);
 +    expected.put("key.sum", 18L);
 +
 +    // Log2 Histogram
 +    expected.put("key.logHist.3", 3L);
 +
 +    expected.put("row.min", 2L);
 +    expected.put("row.max", 2L);
 +    expected.put("row.sum", 6L);
 +
 +    // Log2 Histogram
 +    expected.put("row.logHist.1", 3L);
 +
 +    expected.put("family.min", 2L);
 +    expected.put("family.max", 2L);
 +    expected.put("family.sum", 6L);
 +
 +    // Log2 Histogram
 +    expected.put("family.logHist.1", 3L);
 +
 +    expected.put("qualifier.min", 2L);
 +    expected.put("qualifier.max", 2L);
 +    expected.put("qualifier.sum", 6L);
 +
 +    // Log2 Histogram
 +    expected.put("qualifier.logHist.1", 3L);
 +
 +    expected.put("visibility.min", 0L);
 +    expected.put("visibility.max", 0L);
 +    expected.put("visibility.sum", 0L);
 +
 +    // Log2 Histogram
 +    expected.put("visibility.logHist.0", 3L);
 +
 +    expected.put("value.min", 0L);
 +    expected.put("value.max", 0L);
 +    expected.put("value.sum", 0L);
 +
 +    // Log2 Histogram
 +    expected.put("value.logHist.0", 3L);
 +
 +    expected.put("total", 3L);
 +
-     Assert.assertEquals(expected, stats);
++    assertEquals(expected, stats);
 +  }
 +
 +  @Test
 +  public void testBasicVisibility() {
 +    SummarizerConfiguration sc = SummarizerConfiguration.builder(EntryLengthSummarizer.class)
 +        .build();
 +    EntryLengthSummarizer entrySum = new EntryLengthSummarizer();
 +
 +    Key k1 = new Key("r1", "f1", "q1", "v1");
 +    Key k2 = new Key("r2", "f2", "q2", "v2");
 +    Key k3 = new Key("r3", "f3", "q3", "v3");
 +
 +    Collector collector = entrySum.collector(sc);
 +    collector.accept(k1, new Value(""));
 +    collector.accept(k2, new Value(""));
 +    collector.accept(k3, new Value(""));
 +
 +    HashMap<String,Long> stats = new HashMap<>();
 +    collector.summarize(stats::put);
 +
 +    HashMap<String,Long> expected = new HashMap<>();
 +    expected.put("key.min", 8L);
 +    expected.put("key.max", 8L);
 +    expected.put("key.sum", 24L);
 +
 +    // Log2 Histogram
 +    expected.put("key.logHist.3", 3L);
 +
 +    expected.put("row.min", 2L);
 +    expected.put("row.max", 2L);
 +    expected.put("row.sum", 6L);
 +
 +    // Log2 Histogram
 +    expected.put("row.logHist.1", 3L);
 +
 +    expected.put("family.min", 2L);
 +    expected.put("family.max", 2L);
 +    expected.put("family.sum", 6L);
 +
 +    // Log2 Histogram
 +    expected.put("family.logHist.1", 3L);
 +
 +    expected.put("qualifier.min", 2L);
 +    expected.put("qualifier.max", 2L);
 +    expected.put("qualifier.sum", 6L);
 +
 +    // Log2 Histogram
 +    expected.put("qualifier.logHist.1", 3L);
 +
 +    expected.put("visibility.min", 2L);
 +    expected.put("visibility.max", 2L);
 +    expected.put("visibility.sum", 6L);
 +
 +    // Log2 Histogram
 +    expected.put("visibility.logHist.1", 3L);
 +
 +    expected.put("value.min", 0L);
 +    expected.put("value.max", 0L);
 +    expected.put("value.sum", 0L);
 +
 +    // Log2 Histogram
 +    expected.put("value.logHist.0", 3L);
 +
 +    expected.put("total", 3L);
 +
-     Assert.assertEquals(expected, stats);
++    assertEquals(expected, stats);
 +  }
 +
 +  @Test
 +  public void testBasicValue() {
 +    SummarizerConfiguration sc = SummarizerConfiguration.builder(EntryLengthSummarizer.class)
 +        .build();
 +    EntryLengthSummarizer entrySum = new EntryLengthSummarizer();
 +
 +    Key k1 = new Key("r1", "f1", "q1", "v1");
 +    Key k2 = new Key("r2", "f2", "q2", "v2");
 +    Key k3 = new Key("r3", "f3", "q3", "v3");
 +
 +    Collector collector = entrySum.collector(sc);
 +    collector.accept(k1, new Value("v1"));
 +    collector.accept(k2, new Value("v2"));
 +    collector.accept(k3, new Value("v3"));
 +
 +    HashMap<String,Long> stats = new HashMap<>();
 +    collector.summarize(stats::put);
 +
 +    HashMap<String,Long> expected = new HashMap<>();
 +    expected.put("key.min", 8L);
 +    expected.put("key.max", 8L);
 +    expected.put("key.sum", 24L);
 +
 +    // Log2 Histogram
 +    expected.put("key.logHist.3", 3L);
 +
 +    expected.put("row.min", 2L);
 +    expected.put("row.max", 2L);
 +    expected.put("row.sum", 6L);
 +
 +    // Log2 Histogram
 +    expected.put("row.logHist.1", 3L);
 +
 +    expected.put("family.min", 2L);
 +    expected.put("family.max", 2L);
 +    expected.put("family.sum", 6L);
 +
 +    // Log2 Histogram
 +    expected.put("family.logHist.1", 3L);
 +
 +    expected.put("qualifier.min", 2L);
 +    expected.put("qualifier.max", 2L);
 +    expected.put("qualifier.sum", 6L);
 +
 +    // Log2 Histogram
 +    expected.put("qualifier.logHist.1", 3L);
 +
 +    expected.put("visibility.min", 2L);
 +    expected.put("visibility.max", 2L);
 +    expected.put("visibility.sum", 6L);
 +
 +    // Log2 Histogram
 +    expected.put("visibility.logHist.1", 3L);
 +
 +    expected.put("value.min", 2L);
 +    expected.put("value.max", 2L);
 +    expected.put("value.sum", 6L);
 +
 +    // Log2 Histogram
 +    expected.put("value.logHist.1", 3L);
 +
 +    expected.put("total", 3L);
 +
-     Assert.assertEquals(expected, stats);
++    assertEquals(expected, stats);
 +  }
 +
 +  /* Complex Test: Each test adds to the next, all are mixed lengths. */
 +
 +  @Test
 +  public void testComplexRow() {
 +    SummarizerConfiguration sc = SummarizerConfiguration.builder(EntryLengthSummarizer.class)
 +        .build();
 +    EntryLengthSummarizer entrySum = new EntryLengthSummarizer();
 +
 +    Key k1 = new Key("r1");
 +    Key k2 = new Key("row2");
 +    Key k3 = new Key("columnRow3");
 +
 +    Collector collector = entrySum.collector(sc);
 +    collector.accept(k1, new Value(""));
 +    collector.accept(k2, new Value(""));
 +    collector.accept(k3, new Value(""));
 +
 +    HashMap<String,Long> stats = new HashMap<>();
 +    collector.summarize(stats::put);
 +
 +    HashMap<String,Long> expected = new HashMap<>();
 +    expected.put("key.min", 2L);
 +    expected.put("key.max", 10L);
 +    expected.put("key.sum", 16L);
 +
 +    // Log2 Histogram
 +    expected.put("key.logHist.1", 1L);
 +    expected.put("key.logHist.2", 1L);
 +    expected.put("key.logHist.3", 1L);
 +
 +    expected.put("row.min", 2L);
 +    expected.put("row.max", 10L);
 +    expected.put("row.sum", 16L);
 +
 +    // Log2 Histogram
 +    expected.put("row.logHist.1", 1L);
 +    expected.put("row.logHist.2", 1L);
 +    expected.put("row.logHist.3", 1L);
 +
 +    expected.put("family.min", 0L);
 +    expected.put("family.max", 0L);
 +    expected.put("family.sum", 0L);
 +
 +    // Log2 Histogram
 +    expected.put("family.logHist.0", 3L);
 +
 +    expected.put("qualifier.min", 0L);
 +    expected.put("qualifier.max", 0L);
 +    expected.put("qualifier.sum", 0L);
 +
 +    // Log2 Histogram
 +    expected.put("qualifier.logHist.0", 3L);
 +
 +    expected.put("visibility.min", 0L);
 +    expected.put("visibility.max", 0L);
 +    expected.put("visibility.sum", 0L);
 +
 +    // Log2 Histogram
 +    expected.put("visibility.logHist.0", 3L);
 +
 +    expected.put("value.min", 0L);
 +    expected.put("value.max", 0L);
 +    expected.put("value.sum", 0L);
 +
 +    // Log2 Histogram
 +    expected.put("value.logHist.0", 3L);
 +
 +    expected.put("total", 3L);
 +
-     Assert.assertEquals(expected, stats);
++    assertEquals(expected, stats);
 +  }
 +
 +  @Test
 +  public void testComplexFamily() {
 +    SummarizerConfiguration sc = SummarizerConfiguration.builder(EntryLengthSummarizer.class)
 +        .build();
 +    EntryLengthSummarizer entrySum = new EntryLengthSummarizer();
 +
 +    Key k1 = new Key("r1", "family1");
 +    Key k2 = new Key("row2", "columnFamily2");
 +    Key k3 = new Key("columnRow3", "f3");
 +
 +    Collector collector = entrySum.collector(sc);
 +    collector.accept(k1, new Value(""));
 +    collector.accept(k2, new Value(""));
 +    collector.accept(k3, new Value(""));
 +
 +    HashMap<String,Long> stats = new HashMap<>();
 +    collector.summarize(stats::put);
 +
 +    HashMap<String,Long> expected = new HashMap<>();
 +    expected.put("key.min", 9L);
 +    expected.put("key.max", 17L);
 +    expected.put("key.sum", 38L);
 +
 +    // Log2 Histogram
 +    expected.put("key.logHist.3", 1L);
 +    expected.put("key.logHist.4", 2L);
 +
 +    expected.put("row.min", 2L);
 +    expected.put("row.max", 10L);
 +    expected.put("row.sum", 16L);
 +
 +    // Log2 Histogram
 +    expected.put("row.logHist.1", 1L);
 +    expected.put("row.logHist.2", 1L);
 +    expected.put("row.logHist.3", 1L);
 +
 +    expected.put("family.min", 2L);
 +    expected.put("family.max", 13L);
 +    expected.put("family.sum", 22L);
 +
 +    // Log2 Histogram
 +    expected.put("family.logHist.1", 1L);
 +    expected.put("family.logHist.3", 1L);
 +    expected.put("family.logHist.4", 1L);
 +
 +    expected.put("qualifier.min", 0L);
 +    expected.put("qualifier.max", 0L);
 +    expected.put("qualifier.sum", 0L);
 +
 +    // Log2 Histogram
 +    expected.put("qualifier.logHist.0", 3L);
 +
 +    expected.put("visibility.min", 0L);
 +    expected.put("visibility.max", 0L);
 +    expected.put("visibility.sum", 0L);
 +
 +    // Log2 Histogram
 +    expected.put("visibility.logHist.0", 3L);
 +
 +    expected.put("value.min", 0L);
 +    expected.put("value.max", 0L);
 +    expected.put("value.sum", 0L);
 +
 +    // Log2 Histogram
 +    expected.put("value.logHist.0", 3L);
 +
 +    expected.put("total", 3L);
 +
-     Assert.assertEquals(expected, stats);
++    assertEquals(expected, stats);
 +  }
 +
 +  @Test
 +  public void testComplexQualifier() {
 +    SummarizerConfiguration sc = SummarizerConfiguration.builder(EntryLengthSummarizer.class)
 +        .build();
 +    EntryLengthSummarizer entrySum = new EntryLengthSummarizer();
 +
 +    Key k1 = new Key("r1", "family1", "columnQualifier1");
 +    Key k2 = new Key("row2", "columnFamily2", "q2");
 +    Key k3 = new Key("columnRow3", "f3", "qualifier3");
 +
 +    Collector collector = entrySum.collector(sc);
 +    collector.accept(k1, new Value(""));
 +    collector.accept(k2, new Value(""));
 +    collector.accept(k3, new Value(""));
 +
 +    HashMap<String,Long> stats = new HashMap<>();
 +    collector.summarize(stats::put);
 +
 +    HashMap<String,Long> expected = new HashMap<>();
 +    expected.put("key.min", 19L);
 +    expected.put("key.max", 25L);
 +    expected.put("key.sum", 66L);
 +
 +    // Log2 Histogram
 +    expected.put("key.logHist.4", 2L);
 +    expected.put("key.logHist.5", 1L);
 +
 +    expected.put("row.min", 2L);
 +    expected.put("row.max", 10L);
 +    expected.put("row.sum", 16L);
 +
 +    // Log2 Histogram
 +    expected.put("row.logHist.1", 1L);
 +    expected.put("row.logHist.2", 1L);
 +    expected.put("row.logHist.3", 1L);
 +
 +    expected.put("family.min", 2L);
 +    expected.put("family.max", 13L);
 +    expected.put("family.sum", 22L);
 +
 +    // Log2 Histogram
 +    expected.put("family.logHist.1", 1L);
 +    expected.put("family.logHist.3", 1L);
 +    expected.put("family.logHist.4", 1L);
 +
 +    expected.put("qualifier.min", 2L);
 +    expected.put("qualifier.max", 16L);
 +    expected.put("qualifier.sum", 28L);
 +
 +    // Log2 Histogram
 +    expected.put("qualifier.logHist.1", 1L);
 +    expected.put("qualifier.logHist.3", 1L);
 +    expected.put("qualifier.logHist.4", 1L);
 +
 +    expected.put("visibility.min", 0L);
 +    expected.put("visibility.max", 0L);
 +    expected.put("visibility.sum", 0L);
 +
 +    // Log2 Histogram
 +    expected.put("visibility.logHist.0", 3L);
 +
 +    expected.put("value.min", 0L);
 +    expected.put("value.max", 0L);
 +    expected.put("value.sum", 0L);
 +
 +    // Log2 Histogram
 +    expected.put("value.logHist.0", 3L);
 +
 +    expected.put("total", 3L);
 +
-     Assert.assertEquals(expected, stats);
++    assertEquals(expected, stats);
 +  }
 +
 +  @Test
 +  public void testComplexVisibility() {
 +    SummarizerConfiguration sc = SummarizerConfiguration.builder(EntryLengthSummarizer.class)
 +        .build();
 +    EntryLengthSummarizer entrySum = new EntryLengthSummarizer();
 +
 +    Key k1 = new Key("r1", "family1", "columnQualifier1", "v1");
 +    Key k2 = new Key("row2", "columnFamily2", "q2", "visibility2");
 +    Key k3 = new Key("columnRow3", "f3", "qualifier3", "columnVisibility3");
 +
 +    Collector collector = entrySum.collector(sc);
 +    collector.accept(k1, new Value(""));
 +    collector.accept(k2, new Value(""));
 +    collector.accept(k3, new Value(""));
 +
 +    HashMap<String,Long> stats = new HashMap<>();
 +    collector.summarize(stats::put);
 +
 +    HashMap<String,Long> expected = new HashMap<>();
 +    expected.put("key.min", 27L);
 +    expected.put("key.max", 39L);
 +    expected.put("key.sum", 96L);
 +
 +    // Log2 Histogram
 +    expected.put("key.logHist.5", 3L);
 +
 +    expected.put("row.min", 2L);
 +    expected.put("row.max", 10L);
 +    expected.put("row.sum", 16L);
 +
 +    // Log2 Histogram
 +    expected.put("row.logHist.1", 1L);
 +    expected.put("row.logHist.2", 1L);
 +    expected.put("row.logHist.3", 1L);
 +
 +    expected.put("family.min", 2L);
 +    expected.put("family.max", 13L);
 +    expected.put("family.sum", 22L);
 +
 +    // Log2 Histogram
 +    expected.put("family.logHist.1", 1L);
 +    expected.put("family.logHist.3", 1L);
 +    expected.put("family.logHist.4", 1L);
 +
 +    expected.put("qualifier.min", 2L);
 +    expected.put("qualifier.max", 16L);
 +    expected.put("qualifier.sum", 28L);
 +
 +    // Log2 Histogram
 +    expected.put("qualifier.logHist.1", 1L);
 +    expected.put("qualifier.logHist.3", 1L);
 +    expected.put("qualifier.logHist.4", 1L);
 +
 +    expected.put("visibility.min", 2L);
 +    expected.put("visibility.max", 17L);
 +    expected.put("visibility.sum", 30L);
 +
 +    // Log2 Histogram
 +    expected.put("visibility.logHist.1", 1L);
 +    expected.put("visibility.logHist.3", 1L);
 +    expected.put("visibility.logHist.4", 1L);
 +
 +    expected.put("value.min", 0L);
 +    expected.put("value.max", 0L);
 +    expected.put("value.sum", 0L);
 +
 +    // Log2 Histogram
 +    expected.put("value.logHist.0", 3L);
 +
 +    expected.put("total", 3L);
 +
-     Assert.assertEquals(expected, stats);
++    assertEquals(expected, stats);
 +  }
 +
 +  @Test
 +  public void testComplexValue() {
 +    SummarizerConfiguration sc = SummarizerConfiguration.builder(EntryLengthSummarizer.class)
 +        .build();
 +    EntryLengthSummarizer entrySum = new EntryLengthSummarizer();
 +
 +    Key k1 = new Key("r1", "family1", "columnQualifier1", "v1");
 +    Key k2 = new Key("row2", "columnFamily2", "q2", "visibility2");
 +    Key k3 = new Key("columnRow3", "f3", "qualifier3", "columnVisibility3");
 +
 +    Collector collector = entrySum.collector(sc);
 +    collector.accept(k1, new Value("v1"));
 +    collector.accept(k2, new Value("value2"));
 +    collector.accept(k3, new Value("keyValue3"));
 +
 +    HashMap<String,Long> stats = new HashMap<>();
 +    collector.summarize(stats::put);
 +
 +    HashMap<String,Long> expected = new HashMap<>();
 +    expected.put("key.min", 27L);
 +    expected.put("key.max", 39L);
 +    expected.put("key.sum", 96L);
 +
 +    // Log2 Histogram
 +    expected.put("key.logHist.5", 3L);
 +
 +    expected.put("row.min", 2L);
 +    expected.put("row.max", 10L);
 +    expected.put("row.sum", 16L);
 +
 +    // Log2 Histogram
 +    expected.put("row.logHist.1", 1L);
 +    expected.put("row.logHist.2", 1L);
 +    expected.put("row.logHist.3", 1L);
 +
 +    expected.put("family.min", 2L);
 +    expected.put("family.max", 13L);
 +    expected.put("family.sum", 22L);
 +
 +    // Log2 Histogram
 +    expected.put("family.logHist.1", 1L);
 +    expected.put("family.logHist.3", 1L);
 +    expected.put("family.logHist.4", 1L);
 +
 +    expected.put("qualifier.min", 2L);
 +    expected.put("qualifier.max", 16L);
 +    expected.put("qualifier.sum", 28L);
 +
 +    // Log2 Histogram
 +    expected.put("qualifier.logHist.1", 1L);
 +    expected.put("qualifier.logHist.3", 1L);
 +    expected.put("qualifier.logHist.4", 1L);
 +
 +    expected.put("visibility.min", 2L);
 +    expected.put("visibility.max", 17L);
 +    expected.put("visibility.sum", 30L);
 +
 +    // Log2 Histogram
 +    expected.put("visibility.logHist.1", 1L);
 +    expected.put("visibility.logHist.3", 1L);
 +    expected.put("visibility.logHist.4", 1L);
 +
 +    expected.put("value.min", 2L);
 +    expected.put("value.max", 9L);
 +    expected.put("value.sum", 17L);
 +
 +    // Log2 Histogram
 +    expected.put("value.logHist.1", 1L);
 +    expected.put("value.logHist.3", 2L);
 +
 +    expected.put("total", 3L);
 +
-     Assert.assertEquals(expected, stats);
++    assertEquals(expected, stats);
 +  }
 +
 +  /* Miscellaneous Test */
 +
 +  @Test
 +  public void testAll() {
 +    SummarizerConfiguration sc = SummarizerConfiguration.builder(EntryLengthSummarizer.class)
 +        .build();
 +    EntryLengthSummarizer entrySum = new EntryLengthSummarizer();
 +
 +    Key k1 = new Key("maximumnoqualifier", "f1", "q", "vis1");
 +    Key k2 = new Key("minKey", "fam2", "q2", "visibility2");
 +    Key k3 = new Key("row3", "f3", "qualifier3", "v3");
 +    Key k4 = new Key("r4", "family4", "qual4", "vis4");
 +    Key k5 = new Key("fifthrow", "thirdfamily", "q5", "v5");
 +    Key k6 = new Key("r6", "sixthfamily", "qual6", "visibi6");
 +
 +    Collector collector = entrySum.collector(sc);
 +    collector.accept(k1, new Value("v1"));
 +    collector.accept(k2, new Value("value2"));
 +    collector.accept(k3, new Value("val3"));
 +    collector.accept(k4, new Value("fourthvalue"));
 +    collector.accept(k5, new Value(""));
 +    collector.accept(k6, new Value("value6"));
 +
 +    HashMap<String,Long> stats = new HashMap<>();
 +    collector.summarize(stats::put);
 +
 +    HashMap<String,Long> expected = new HashMap<>();
 +    expected.put("key.min", 18L);
 +    expected.put("key.max", 25L);
 +    expected.put("key.sum", 132L);
 +
 +    // Log2 Histogram
 +    expected.put("key.logHist.4", 2L);
 +    expected.put("key.logHist.5", 4L);
 +
 +    expected.put("row.min", 2L);
 +    expected.put("row.max", 18L);
 +    expected.put("row.sum", 40L);
 +
 +    // Log2 Histogram
 +    expected.put("row.logHist.1", 2L);
 +    expected.put("row.logHist.2", 1L);
 +    expected.put("row.logHist.3", 2L);
 +    expected.put("row.logHist.4", 1L);
 +
 +    expected.put("family.min", 2L);
 +    expected.put("family.max", 11L);
 +    expected.put("family.sum", 37L);
 +
 +    // Log2 Histogram
 +    expected.put("family.logHist.1", 2L);
 +    expected.put("family.logHist.2", 1L);
 +    expected.put("family.logHist.3", 3L);
 +
 +    expected.put("qualifier.min", 1L);
 +    expected.put("qualifier.max", 10L);
 +    expected.put("qualifier.sum", 25L);
 +
 +    // Log2 Histogram
 +    expected.put("qualifier.logHist.0", 1L);
 +    expected.put("qualifier.logHist.1", 2L);
 +    expected.put("qualifier.logHist.2", 2L);
 +    expected.put("qualifier.logHist.3", 1L);
 +
 +    expected.put("visibility.min", 2L);
 +    expected.put("visibility.max", 11L);
 +    expected.put("visibility.sum", 30L);
 +
 +    // Log2 Histogram
 +    expected.put("visibility.logHist.1", 2L);
 +    expected.put("visibility.logHist.2", 2L);
 +    expected.put("visibility.logHist.3", 2L);
 +
 +    expected.put("value.min", 0L);
 +    expected.put("value.max", 11L);
 +    expected.put("value.sum", 29L);
 +
 +    // Log2 Histogram
 +    expected.put("value.logHist.0", 1L);
 +    expected.put("value.logHist.1", 1L);
 +    expected.put("value.logHist.2", 1L);
 +    expected.put("value.logHist.3", 3L);
 +
 +    expected.put("total", 6L);
 +
-     Assert.assertEquals(expected, stats);
++    assertEquals(expected, stats);
 +  }
 +
 +  @Test
 +  public void testLog2Histogram() {
 +    SummarizerConfiguration sc = SummarizerConfiguration.builder(EntryLengthSummarizer.class)
 +        .build();
 +    EntryLengthSummarizer entrySum = new EntryLengthSummarizer();
 +
 +    Key k1 = new Key("row1");
 +    Key k2 = new Key("row2");
 +    Key k3 = new Key("row3");
 +
 +    Collector collector = entrySum.collector(sc);
 +    collector.accept(k1, new Value("01"));
 +    collector.accept(k2, new Value("012345678"));
 +    collector.accept(k3, new Value("012345679"));
 +
 +    HashMap<String,Long> stats = new HashMap<>();
 +    collector.summarize(stats::put);
 +
 +    HashMap<String,Long> expected = new HashMap<>();
 +    expected.put("key.min", 4L);
 +    expected.put("key.max", 4L);
 +    expected.put("key.sum", 12L);
 +
 +    // Log2 Histogram for Key
 +    expected.put("key.logHist.2", 3L);
 +
 +    expected.put("row.min", 4L);
 +    expected.put("row.max", 4L);
 +    expected.put("row.sum", 12L);
 +
 +    // Log2 Histogram for Row
 +    expected.put("row.logHist.2", 3L);
 +
 +    expected.put("family.min", 0L);
 +    expected.put("family.max", 0L);
 +    expected.put("family.sum", 0L);
 +
 +    // Log2 Histogram for Family
 +    expected.put("family.logHist.0", 3L);
 +
 +    expected.put("qualifier.min", 0L);
 +    expected.put("qualifier.max", 0L);
 +    expected.put("qualifier.sum", 0L);
 +
 +    // Log2 Histogram for Qualifier
 +    expected.put("qualifier.logHist.0", 3L);
 +
 +    expected.put("visibility.min", 0L);
 +    expected.put("visibility.max", 0L);
 +    expected.put("visibility.sum", 0L);
 +
 +    // Log2 Histogram for Visibility
 +    expected.put("visibility.logHist.0", 3L);
 +
 +    expected.put("value.min", 2L);
 +    expected.put("value.max", 9L);
 +    expected.put("value.sum", 20L);
 +
 +    // Log2 Histogram for Value
 +    expected.put("value.logHist.1", 1L);
 +    expected.put("value.logHist.3", 2L);
 +
 +    expected.put("total", 3L);
 +
-     Assert.assertEquals(expected, stats);
++    assertEquals(expected, stats);
 +  }
 +
 +  /* COMBINER TEST */
 +
 +  @Test
 +  public void testCombine() {
 +    SummarizerConfiguration sc = SummarizerConfiguration.builder(EntryLengthSummarizer.class)
 +        .build();
 +    EntryLengthSummarizer entrySum = new EntryLengthSummarizer();
 +
 +    Collector collector1 = entrySum.collector(sc);
 +    collector1.accept(new Key("1", "f1", "q1"), new Value("v1"));
 +    collector1.accept(new Key("1234", "f1", "q1"), new Value("v111"));
 +    collector1.accept(new Key("12345678", "f1", "q1"), new Value("v111111"));
 +
 +    HashMap<String,Long> stats1 = new HashMap<>();
 +    collector1.summarize(stats1::put);
 +
 +    Collector collector2 = entrySum.collector(sc);
 +    collector2.accept(new Key("5432", "f11", "q12"), new Value("2"));
 +    collector2.accept(new Key("12", "f11", "q1234"), new Value("12"));
 +    collector2.accept(new Key("12", "f11", "q11234567"), new Value("4444"));
 +
 +    HashMap<String,Long> stats2 = new HashMap<>();
 +    collector2.summarize(stats2::put);
 +
 +    Combiner combiner = entrySum.combiner(sc);
 +    combiner.merge(stats1, stats2);
 +
 +    HashMap<String,Long> expected = new HashMap<>();
 +    expected.put("key.min", 5L);
 +    expected.put("key.max", 14L);
 +    expected.put("key.sum", 59L);
 +
 +    // Log2 Histogram for Key
 +    expected.put("key.logHist.2", 1L);
 +    expected.put("key.logHist.3", 3L);
 +    expected.put("key.logHist.4", 2L);
 +
 +    expected.put("row.min", 1L);
 +    expected.put("row.max", 8L);
 +    expected.put("row.sum", 21L);
 +
 +    // Log2 Histogram for Row
 +    expected.put("row.logHist.0", 1L);
 +    expected.put("row.logHist.1", 2L);
 +    expected.put("row.logHist.2", 2L);
 +    expected.put("row.logHist.3", 1L);
 +
 +    expected.put("family.min", 2L);
 +    expected.put("family.max", 3L);
 +    expected.put("family.sum", 15L);
 +
 +    // Log2 Histogram for Family
 +    expected.put("family.logHist.1", 3L);
 +    expected.put("family.logHist.2", 3L);
 +
 +    expected.put("qualifier.min", 2L);
 +    expected.put("qualifier.max", 9L);
 +    expected.put("qualifier.sum", 23L);
 +
 +    // Log2 Histogram for Qualifier
 +    expected.put("qualifier.logHist.1", 3L);
 +    expected.put("qualifier.logHist.2", 2L);
 +    expected.put("qualifier.logHist.3", 1L);
 +
 +    expected.put("visibility.min", 0L);
 +    expected.put("visibility.max", 0L);
 +    expected.put("visibility.sum", 0L);
 +
 +    // Log2 Histogram for Visibility
 +    expected.put("visibility.logHist.0", 6L);
 +
 +    expected.put("value.min", 1L);
 +    expected.put("value.max", 7L);
 +    expected.put("value.sum", 20L);
 +
 +    // Log2 Histogram for Value
 +    expected.put("value.logHist.0", 1L);
 +    expected.put("value.logHist.1", 2L);
 +    expected.put("value.logHist.2", 2L);
 +    expected.put("value.logHist.3", 1L);
 +
 +    expected.put("total", 6L);
 +
-     Assert.assertEquals(expected, stats1);
++    assertEquals(expected, stats1);
 +  }
 +
 +  @Test
 +  public void testCombine2() {
 +    SummarizerConfiguration sc = SummarizerConfiguration.builder(EntryLengthSummarizer.class)
 +        .build();
 +    EntryLengthSummarizer entrySum = new EntryLengthSummarizer();
 +
 +    Collector collector1 = entrySum.collector(sc);
 +    collector1.accept(new Key("12345678901234567890", "f12345", "q123456"),
 +        new Value("value1234567890"));
 +
 +    HashMap<String,Long> stats1 = new HashMap<>();
 +    collector1.summarize(stats1::put);
 +
 +    Collector collector2 = entrySum.collector(sc);
 +    collector2.accept(new Key("5432", "f11", "q12"), new Value("2"));
 +    collector2.accept(new Key("12", "f11", "q1234"), new Value("12"));
 +    collector2.accept(new Key("12", "f11", "q11234567"), new Value("4444"));
 +
 +    HashMap<String,Long> stats2 = new HashMap<>();
 +    collector2.summarize(stats2::put);
 +
 +    Combiner combiner = entrySum.combiner(sc);
 +    combiner.merge(stats1, stats2);
 +
 +    HashMap<String,Long> expected = new HashMap<>();
 +    expected.put("key.min", 10L);
 +    expected.put("key.max", 33L);
 +    expected.put("key.sum", 67L);
 +
 +    // Log2 Histogram for Key
 +    expected.put("key.logHist.3", 2L);
 +    expected.put("key.logHist.4", 1L);
 +    expected.put("key.logHist.5", 1L);
 +
 +    expected.put("row.min", 2L);
 +    expected.put("row.max", 20L);
 +    expected.put("row.sum", 28L);
 +
 +    // Log2 Histogram for Row
 +    expected.put("row.logHist.1", 2L);
 +    expected.put("row.logHist.2", 1L);
 +    expected.put("row.logHist.4", 1L);
 +
 +    expected.put("family.min", 3L);
 +    expected.put("family.max", 6L);
 +    expected.put("family.sum", 15L);
 +
 +    // Log2 Histogram for Family
 +    expected.put("family.logHist.2", 3L);
 +    expected.put("family.logHist.3", 1L);
 +
 +    expected.put("qualifier.min", 3L);
 +    expected.put("qualifier.max", 9L);
 +    expected.put("qualifier.sum", 24L);
 +
 +    // Log2 Histogram for Qualifier
 +    expected.put("qualifier.logHist.2", 2L);
 +    expected.put("qualifier.logHist.3", 2L);
 +
 +    expected.put("visibility.min", 0L);
 +    expected.put("visibility.max", 0L);
 +    expected.put("visibility.sum", 0L);
 +
 +    // Log2 Histogram for Visibility
 +    expected.put("visibility.logHist.0", 4L);
 +
 +    expected.put("value.min", 1L);
 +    expected.put("value.max", 15L);
 +    expected.put("value.sum", 22L);
 +
 +    // Log2 Histogram for Value
 +    expected.put("value.logHist.0", 1L);
 +    expected.put("value.logHist.1", 1L);
 +    expected.put("value.logHist.2", 1L);
 +    expected.put("value.logHist.4", 1L);
 +
 +    expected.put("total", 4L);
 +
-     Assert.assertEquals(expected, stats1);
++    assertEquals(expected, stats1);
 +  }
 +
 +  @Test
 +  public void testCombine3() {
 +    SummarizerConfiguration sc = SummarizerConfiguration.builder(EntryLengthSummarizer.class)
 +        .build();
 +    EntryLengthSummarizer entrySum = new EntryLengthSummarizer();
 +
 +    Collector collector1 = entrySum.collector(sc);
 +    collector1.accept(new Key("r1", "f1"), new Value("v1"));
 +
 +    HashMap<String,Long> stats1 = new HashMap<>();
 +    collector1.summarize(stats1::put);
 +
 +    Collector collector2 = entrySum.collector(sc);
 +    collector2.accept(new Key("row1", "family1", "q1"), new Value(""));
 +
 +    HashMap<String,Long> stats2 = new HashMap<>();
 +    collector2.summarize(stats2::put);
 +
 +    Combiner combiner = entrySum.combiner(sc);
 +    combiner.merge(stats1, stats2);
 +
 +    HashMap<String,Long> expected = new HashMap<>();
 +    expected.put("key.min", 4L);
 +    expected.put("key.max", 13L);
 +    expected.put("key.sum", 17L);
 +
 +    // Log2 Histogram for Key
 +    expected.put("key.logHist.2", 1L);
 +    expected.put("key.logHist.4", 1L);
 +
 +    expected.put("row.min", 2L);
 +    expected.put("row.max", 4L);
 +    expected.put("row.sum", 6L);
 +
 +    // Log2 Histogram for Row
 +    expected.put("row.logHist.1", 1L);
 +    expected.put("row.logHist.2", 1L);
 +
 +    expected.put("family.min", 2L);
 +    expected.put("family.max", 7L);
 +    expected.put("family.sum", 9L);
 +
 +    // Log2 Histogram for Family
 +    expected.put("family.logHist.1", 1L);
 +    expected.put("family.logHist.3", 1L);
 +
 +    expected.put("qualifier.min", 0L);
 +    expected.put("qualifier.max", 2L);
 +    expected.put("qualifier.sum", 2L);
 +
 +    // Log2 Histogram for Qualifier
 +    expected.put("qualifier.logHist.0", 1L);
 +    expected.put("qualifier.logHist.1", 1L);
 +
 +    expected.put("visibility.min", 0L);
 +    expected.put("visibility.max", 0L);
 +    expected.put("visibility.sum", 0L);
 +
 +    // Log2 Histogram for Visibility
 +    expected.put("visibility.logHist.0", 2L);
 +
 +    expected.put("value.min", 0L);
 +    expected.put("value.max", 2L);
 +    expected.put("value.sum", 2L);
 +
 +    // Log2 Histogram for Value
 +    expected.put("value.logHist.0", 1L);
 +    expected.put("value.logHist.1", 1L);
 +
 +    expected.put("total", 2L);
 +
-     Assert.assertEquals(expected, stats1);
++    assertEquals(expected, stats1);
 +  }
 +}
diff --cc core/src/test/java/org/apache/accumulo/core/conf/AccumuloConfigurationTest.java
index 8bf3335,7a0f349..491d0cd
--- a/core/src/test/java/org/apache/accumulo/core/conf/AccumuloConfigurationTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/conf/AccumuloConfigurationTest.java
@@@ -17,6 -17,6 +17,7 @@@
  package org.apache.accumulo.core.conf;
  
  import static org.junit.Assert.assertEquals;
++import static org.junit.Assert.assertFalse;
  import static org.junit.Assert.assertNotSame;
  import static org.junit.Assert.assertSame;
  import static org.junit.Assert.assertTrue;
@@@ -25,11 -24,7 +26,10 @@@ import java.util.Collection
  import java.util.HashMap;
  import java.util.Map;
  import java.util.Map.Entry;
 +import java.util.function.Predicate;
  
 +import org.apache.accumulo.core.conf.AccumuloConfiguration.ScanExecutorConfig;
 +import org.apache.accumulo.core.spi.scan.SimpleScanDispatcher;
- import org.junit.Assert;
  import org.junit.Rule;
  import org.junit.Test;
  import org.junit.rules.ExpectedException;
@@@ -292,89 -301,4 +292,85 @@@ public class AccumuloConfigurationTest 
      Map<String,String> pmL = tc.getAllPropertiesWithPrefix(Property.TABLE_ITERATOR_SCAN_PREFIX);
      assertSame(pmG, pmL);
    }
 +
 +  @Test
 +  public void testScanExecutors() {
 +    String defName = SimpleScanDispatcher.DEFAULT_SCAN_EXECUTOR_NAME;
 +
 +    TestConfiguration tc = new TestConfiguration(DefaultConfiguration.getInstance());
 +
 +    Collection<ScanExecutorConfig> executors = tc.getScanExecutors();
 +
-     Assert.assertEquals(2, executors.size());
++    assertEquals(2, executors.size());
 +
 +    ScanExecutorConfig sec = executors.stream().filter(c -> c.name.equals(defName)).findFirst()
 +        .get();
-     Assert.assertEquals(
-         Integer.parseInt(Property.TSERV_SCAN_EXECUTORS_DEFAULT_THREADS.getDefaultValue()),
++    assertEquals(Integer.parseInt(Property.TSERV_SCAN_EXECUTORS_DEFAULT_THREADS.getDefaultValue()),
 +        sec.maxThreads);
-     Assert.assertFalse(sec.priority.isPresent());
-     Assert.assertTrue(sec.prioritizerClass.get().isEmpty());
-     Assert.assertTrue(sec.prioritizerOpts.isEmpty());
++    assertFalse(sec.priority.isPresent());
++    assertTrue(sec.prioritizerClass.get().isEmpty());
++    assertTrue(sec.prioritizerOpts.isEmpty());
 +
 +    // ensure deprecated props is read if nothing else is set
 +    tc.set("tserver.readahead.concurrent.max", "6");
-     Assert.assertEquals(6, sec.getCurrentMaxThreads());
-     Assert.assertEquals(
-         Integer.parseInt(Property.TSERV_SCAN_EXECUTORS_DEFAULT_THREADS.getDefaultValue()),
++    assertEquals(6, sec.getCurrentMaxThreads());
++    assertEquals(Integer.parseInt(Property.TSERV_SCAN_EXECUTORS_DEFAULT_THREADS.getDefaultValue()),
 +        sec.maxThreads);
 +    ScanExecutorConfig sec2 = tc.getScanExecutors().stream().filter(c -> c.name.equals(defName))
 +        .findFirst().get();
-     Assert.assertEquals(6, sec2.maxThreads);
++    assertEquals(6, sec2.maxThreads);
 +
 +    // ensure new prop overrides deprecated prop
 +    tc.set(Property.TSERV_SCAN_EXECUTORS_DEFAULT_THREADS.getKey(), "9");
-     Assert.assertEquals(9, sec.getCurrentMaxThreads());
-     Assert.assertEquals(
-         Integer.parseInt(Property.TSERV_SCAN_EXECUTORS_DEFAULT_THREADS.getDefaultValue()),
++    assertEquals(9, sec.getCurrentMaxThreads());
++    assertEquals(Integer.parseInt(Property.TSERV_SCAN_EXECUTORS_DEFAULT_THREADS.getDefaultValue()),
 +        sec.maxThreads);
 +    ScanExecutorConfig sec3 = tc.getScanExecutors().stream().filter(c -> c.name.equals(defName))
 +        .findFirst().get();
-     Assert.assertEquals(9, sec3.maxThreads);
++    assertEquals(9, sec3.maxThreads);
 +
 +    ScanExecutorConfig sec4 = executors.stream().filter(c -> c.name.equals("meta")).findFirst()
 +        .get();
-     Assert.assertEquals(
-         Integer.parseInt(Property.TSERV_SCAN_EXECUTORS_META_THREADS.getDefaultValue()),
++    assertEquals(Integer.parseInt(Property.TSERV_SCAN_EXECUTORS_META_THREADS.getDefaultValue()),
 +        sec4.maxThreads);
-     Assert.assertFalse(sec4.priority.isPresent());
-     Assert.assertFalse(sec4.prioritizerClass.isPresent());
-     Assert.assertTrue(sec4.prioritizerOpts.isEmpty());
++    assertFalse(sec4.priority.isPresent());
++    assertFalse(sec4.prioritizerClass.isPresent());
++    assertTrue(sec4.prioritizerOpts.isEmpty());
 +
 +    tc.set("tserver.metadata.readahead.concurrent.max", "2");
-     Assert.assertEquals(2, sec4.getCurrentMaxThreads());
++    assertEquals(2, sec4.getCurrentMaxThreads());
 +    ScanExecutorConfig sec5 = tc.getScanExecutors().stream().filter(c -> c.name.equals("meta"))
 +        .findFirst().get();
-     Assert.assertEquals(2, sec5.maxThreads);
++    assertEquals(2, sec5.maxThreads);
 +
 +    tc.set(Property.TSERV_SCAN_EXECUTORS_META_THREADS.getKey(), "3");
-     Assert.assertEquals(3, sec4.getCurrentMaxThreads());
++    assertEquals(3, sec4.getCurrentMaxThreads());
 +    ScanExecutorConfig sec6 = tc.getScanExecutors().stream().filter(c -> c.name.equals("meta"))
 +        .findFirst().get();
-     Assert.assertEquals(3, sec6.maxThreads);
++    assertEquals(3, sec6.maxThreads);
 +
 +    String prefix = Property.TSERV_SCAN_EXECUTORS_PREFIX.getKey();
 +    tc.set(prefix + "hulksmash.threads", "66");
 +    tc.set(prefix + "hulksmash.priority", "3");
 +    tc.set(prefix + "hulksmash.prioritizer", "com.foo.ScanPrioritizer");
 +    tc.set(prefix + "hulksmash.prioritizer.opts.k1", "v1");
 +    tc.set(prefix + "hulksmash.prioritizer.opts.k2", "v3");
 +
 +    executors = tc.getScanExecutors();
-     Assert.assertEquals(3, executors.size());
++    assertEquals(3, executors.size());
 +    ScanExecutorConfig sec7 = executors.stream().filter(c -> c.name.equals("hulksmash")).findFirst()
 +        .get();
-     Assert.assertEquals(66, sec7.maxThreads);
-     Assert.assertEquals(3, sec7.priority.getAsInt());
-     Assert.assertEquals("com.foo.ScanPrioritizer", sec7.prioritizerClass.get());
-     Assert.assertEquals(ImmutableMap.of("k1", "v1", "k2", "v3"), sec7.prioritizerOpts);
++    assertEquals(66, sec7.maxThreads);
++    assertEquals(3, sec7.priority.getAsInt());
++    assertEquals("com.foo.ScanPrioritizer", sec7.prioritizerClass.get());
++    assertEquals(ImmutableMap.of("k1", "v1", "k2", "v3"), sec7.prioritizerOpts);
 +
 +    tc.set(prefix + "hulksmash.threads", "44");
-     Assert.assertEquals(66, sec7.maxThreads);
-     Assert.assertEquals(44, sec7.getCurrentMaxThreads());
++    assertEquals(66, sec7.maxThreads);
++    assertEquals(44, sec7.getCurrentMaxThreads());
 +
 +    ScanExecutorConfig sec8 = tc.getScanExecutors().stream().filter(c -> c.name.equals("hulksmash"))
 +        .findFirst().get();
-     Assert.assertEquals(44, sec8.maxThreads);
++    assertEquals(44, sec8.maxThreads);
 +  }
  }
diff --cc core/src/test/java/org/apache/accumulo/core/conf/ClientPropertyTest.java
index 290cae6,0000000..65df313
mode 100644,000000..100644
--- a/core/src/test/java/org/apache/accumulo/core/conf/ClientPropertyTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/conf/ClientPropertyTest.java
@@@ -1,55 -1,0 +1,57 @@@
 +/*
 + * 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.core.conf;
 +
++import static org.junit.Assert.assertEquals;
++import static org.junit.Assert.assertTrue;
++
 +import java.util.Properties;
 +
 +import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
 +import org.apache.accumulo.core.client.security.tokens.PasswordToken;
- import org.junit.Assert;
 +import org.junit.Test;
 +
 +public class ClientPropertyTest {
 +
 +  @Test
 +  public void testAuthentication() {
 +    Properties props = new Properties();
 +    props.setProperty(ClientProperty.AUTH_PRINCIPAL.getKey(), "user");
 +    ClientProperty.setPassword(props, "testpass1");
-     Assert.assertEquals("testpass1", ClientProperty.AUTH_TOKEN.getValue(props));
++    assertEquals("testpass1", ClientProperty.AUTH_TOKEN.getValue(props));
 +    AuthenticationToken token = ClientProperty.getAuthenticationToken(props);
-     Assert.assertTrue(token instanceof PasswordToken);
-     Assert.assertEquals("testpass1", new String(((PasswordToken) token).getPassword()));
++    assertTrue(token instanceof PasswordToken);
++    assertEquals("testpass1", new String(((PasswordToken) token).getPassword()));
 +
 +    ClientProperty.setAuthenticationToken(props, new PasswordToken("testpass2"));
-     Assert.assertEquals("AAAAHR+LCAAAAAAAAAArSS0uKUgsLjYCANxwRH4JAAAA",
++    assertEquals("AAAAHR+LCAAAAAAAAAArSS0uKUgsLjYCANxwRH4JAAAA",
 +        ClientProperty.AUTH_TOKEN.getValue(props));
 +    token = ClientProperty.getAuthenticationToken(props);
-     Assert.assertTrue(token instanceof PasswordToken);
-     Assert.assertEquals("testpass2", new String(((PasswordToken) token).getPassword()));
++    assertTrue(token instanceof PasswordToken);
++    assertEquals("testpass2", new String(((PasswordToken) token).getPassword()));
 +
 +    ClientProperty.setAuthenticationToken(props, new PasswordToken("testpass3"));
-     Assert.assertEquals("AAAAHR+LCAAAAAAAAAArSS0uKUgsLjYGAEpAQwkJAAAA",
++    assertEquals("AAAAHR+LCAAAAAAAAAArSS0uKUgsLjYGAEpAQwkJAAAA",
 +        ClientProperty.AUTH_TOKEN.getValue(props));
 +    token = ClientProperty.getAuthenticationToken(props);
-     Assert.assertTrue(token instanceof PasswordToken);
-     Assert.assertEquals("testpass3", new String(((PasswordToken) token).getPassword()));
++    assertTrue(token instanceof PasswordToken);
++    assertEquals("testpass3", new String(((PasswordToken) token).getPassword()));
 +
 +    ClientProperty.setKerberosKeytab(props, "/path/to/keytab");
-     Assert.assertEquals("/path/to/keytab", ClientProperty.AUTH_TOKEN.getValue(props));
++    assertEquals("/path/to/keytab", ClientProperty.AUTH_TOKEN.getValue(props));
 +  }
 +}
diff --cc core/src/test/java/org/apache/accumulo/core/conf/SiteConfigurationTest.java
index 3632646,86480a4..8712347
--- a/core/src/test/java/org/apache/accumulo/core/conf/SiteConfigurationTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/conf/SiteConfigurationTest.java
@@@ -16,6 -16,9 +16,10 @@@
   */
  package org.apache.accumulo.core.conf;
  
+ import static org.junit.Assert.assertEquals;
+ import static org.junit.Assert.assertNotNull;
++import static org.junit.Assert.assertNull;
+ 
  import java.io.File;
  import java.net.URL;
  import java.util.HashMap;
@@@ -70,26 -72,13 +73,26 @@@ public class SiteConfigurationTest 
      EasyMock.replay(siteCfg);
  
      Map<String,String> props = new HashMap<>();
 -    Predicate<String> all = Predicates.alwaysTrue();
 +    Predicate<String> all = x -> true;
      siteCfg.getProperties(props, all);
  
-     Assert.assertEquals("mysecret", props.get(Property.INSTANCE_SECRET.getKey()));
-     Assert.assertNull(props.get("ignored.property"));
-     Assert.assertEquals(Property.GENERAL_RPC_TIMEOUT.getDefaultValue(),
+     assertEquals("mysecret", props.get(Property.INSTANCE_SECRET.getKey()));
 -    assertEquals(null, props.get("ignored.property"));
++    assertNull(props.get("ignored.property"));
+     assertEquals(Property.GENERAL_RPC_TIMEOUT.getDefaultValue(),
          props.get(Property.GENERAL_RPC_TIMEOUT.getKey()));
    }
  
 +  @Test
 +  public void testConfigOverrides() {
 +    SiteConfiguration conf = new SiteConfiguration();
-     Assert.assertEquals("localhost:2181", conf.get(Property.INSTANCE_ZK_HOST));
++    assertEquals("localhost:2181", conf.get(Property.INSTANCE_ZK_HOST));
 +
 +    conf = new SiteConfiguration((URL) null,
 +        ImmutableMap.of(Property.INSTANCE_ZK_HOST.getKey(), "myhost:2181"));
-     Assert.assertEquals("myhost:2181", conf.get(Property.INSTANCE_ZK_HOST));
++    assertEquals("myhost:2181", conf.get(Property.INSTANCE_ZK_HOST));
 +
 +    Map<String,String> results = new HashMap<>();
 +    conf.getProperties(results, p -> p.startsWith("instance"));
-     Assert.assertEquals("myhost:2181", results.get(Property.INSTANCE_ZK_HOST.getKey()));
++    assertEquals("myhost:2181", results.get(Property.INSTANCE_ZK_HOST.getKey()));
 +  }
  }
diff --cc core/src/test/java/org/apache/accumulo/core/constraints/NoDeleteConstraintTest.java
index ba89b1a,0000000..24b5c46
mode 100644,000000..100644
--- a/core/src/test/java/org/apache/accumulo/core/constraints/NoDeleteConstraintTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/constraints/NoDeleteConstraintTest.java
@@@ -1,45 -1,0 +1,47 @@@
 +/*
 + * 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.core.constraints;
 +
++import static org.junit.Assert.assertEquals;
++import static org.junit.Assert.assertNull;
++
 +import java.util.List;
 +
 +import org.apache.accumulo.core.data.Mutation;
 +import org.apache.accumulo.core.data.Value;
- import org.junit.Assert;
 +import org.junit.Test;
 +
 +public class NoDeleteConstraintTest {
 +
 +  @Test
 +  public void testConstraint() {
 +    Mutation m1 = new Mutation("r1");
 +    m1.putDelete("f1", "q1");
 +
 +    NoDeleteConstraint ndc = new NoDeleteConstraint();
 +
 +    List<Short> results = ndc.check(null, m1);
-     Assert.assertEquals(1, results.size());
-     Assert.assertEquals(1, results.get(0).intValue());
++    assertEquals(1, results.size());
++    assertEquals(1, results.get(0).intValue());
 +
 +    Mutation m2 = new Mutation("r1");
 +    m2.put("f1", "q1", new Value("v1"));
 +
 +    results = ndc.check(null, m2);
-     Assert.assertNull(results);
++    assertNull(results);
 +  }
 +}
diff --cc core/src/test/java/org/apache/accumulo/core/data/MutationTest.java
index 807b31f,5bbd2b5..5a6916e
--- a/core/src/test/java/org/apache/accumulo/core/data/MutationTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/data/MutationTest.java
@@@ -188,220 -185,6 +187,220 @@@ public class MutationTest 
    }
  
    @Test
 +  public void testAtFamilyTypes() {
 +    final String fam = "f16bc";
 +    final String qual = "q1pm2";
 +    final String val = "v8672194923750";
 +
 +    Mutation expected = new Mutation("row5");
 +    expected.put(fam, qual, val);
 +
 +    // Test all family methods, keeping qual and val constant as Strings
 +    // fam: byte[]
 +    Mutation actual = new Mutation("row5");
 +    actual.at().family(fam.getBytes(UTF_8)).qualifier(qual).put(val);
-     Assert.assertEquals(expected, actual);
++    assertEquals(expected, actual);
 +
 +    // fam: ByteBuffer
 +    final ByteBuffer bbFam = ByteBuffer.wrap(fam.getBytes(UTF_8));
 +    final int bbFamStartPos = bbFam.position();
 +    actual = new Mutation("row5");
 +    actual.at().family(bbFam).qualifier(qual).put(val);
-     Assert.assertEquals(expected, actual);
++    assertEquals(expected, actual);
 +
 +    // make sure the ByteBuffer last byte filled in the buffer (its position) is same as before the
 +    // API call
-     Assert.assertEquals(bbFamStartPos, bbFam.position());
++    assertEquals(bbFamStartPos, bbFam.position());
 +
 +    // fam: CharSequence (String implementation)
 +    actual = new Mutation("row5");
 +    actual.at().family(fam).qualifier(qual).put(val);
-     Assert.assertEquals(expected, actual);
++    assertEquals(expected, actual);
 +
 +    // fam: Text
 +    actual = new Mutation("row5");
 +    actual.at().family(new Text(fam)).qualifier(qual).put(val);
-     Assert.assertEquals(expected, actual);
++    assertEquals(expected, actual);
 +  }
 +
 +  @Test
 +  public void testAtQualifierTypes() {
 +    final String fam = "f16bc";
 +    final String qual = "q1pm2";
 +    final String val = "v8672194923750";
 +
 +    Mutation expected = new Mutation("row5");
 +    expected.put(fam, qual, val);
 +
 +    // Test all qualifier methods, keeping fam and val constant as Strings
 +    // qual: byte[]
 +    Mutation actual = new Mutation("row5");
 +    actual.at().family(fam).qualifier(qual.getBytes(UTF_8)).put(val);
-     Assert.assertEquals(expected, actual);
++    assertEquals(expected, actual);
 +
 +    // qual: ByteBuffer
 +    final ByteBuffer bbQual = ByteBuffer.wrap(qual.getBytes(UTF_8));
 +    final int bbQualStartPos = bbQual.position();
 +    actual = new Mutation("row5");
 +    actual.at().family(fam).qualifier(bbQual).put(val);
-     Assert.assertEquals(expected, actual);
++    assertEquals(expected, actual);
 +
 +    // make sure the ByteBuffer last byte filled in the buffer (its position) is same as before the
 +    // API call
-     Assert.assertEquals(bbQualStartPos, bbQual.position());
++    assertEquals(bbQualStartPos, bbQual.position());
 +
 +    // qual: CharSequence (String implementation)
 +    actual = new Mutation("row5");
 +    actual.at().family(fam).qualifier(qual).put(val);
-     Assert.assertEquals(expected, actual);
++    assertEquals(expected, actual);
 +
 +    // qual: Text
 +    actual = new Mutation("row5");
 +    actual.at().family(fam).qualifier(new Text(qual)).put(val);
-     Assert.assertEquals(expected, actual);
++    assertEquals(expected, actual);
 +  }
 +
 +  @Test
 +  public void testAtVisiblityTypes() {
 +    final byte[] fam = "f16bc".getBytes(UTF_8);
 +    final byte[] qual = "q1pm2".getBytes(UTF_8);
 +    final ColumnVisibility vis = new ColumnVisibility("v35x2");
 +    final byte[] val = "v8672194923750".getBytes(UTF_8);
 +
 +    Mutation expected = new Mutation("row5");
 +    expected.put(fam, qual, vis, val);
 +
 +    // Test all visibility methods, keeping fam, qual, and val constant as byte arrays
 +    // vis: byte[]
 +    Mutation actual = new Mutation("row5");
 +    actual.at().family(fam).qualifier(qual).visibility(vis.getExpression()).put(val);
-     Assert.assertEquals(expected, actual);
++    assertEquals(expected, actual);
 +
 +    // vis: ByteBuffer
 +    final ByteBuffer bbVis = ByteBuffer.wrap(vis.getExpression());
 +    final int bbVisStartPos = bbVis.position();
 +    actual = new Mutation("row5");
 +    actual.at().family(fam).qualifier(qual).visibility(bbVis).put(val);
-     Assert.assertEquals(expected, actual);
++    assertEquals(expected, actual);
 +
 +    // make sure the ByteBuffer last byte filled in the buffer (its position) is same as before the
 +    // API call
-     Assert.assertEquals(bbVisStartPos, bbVis.position());
++    assertEquals(bbVisStartPos, bbVis.position());
 +
 +    // vis: CharSequence (String implementation)
 +    actual = new Mutation("row5");
 +    actual.at().family(fam).qualifier(qual).visibility(new String(vis.getExpression())).put(val);
-     Assert.assertEquals(expected, actual);
++    assertEquals(expected, actual);
 +
 +    // vis: ColumnVisibility
 +    actual = new Mutation("row5");
 +    actual.at().family(fam).qualifier(qual).visibility(vis).put(val);
-     Assert.assertEquals(expected, actual);
++    assertEquals(expected, actual);
 +
 +    // vis: Text
 +    actual = new Mutation("row5");
 +    actual.at().family(fam).qualifier(qual).visibility(new Text(vis.getExpression())).put(val);
-     Assert.assertEquals(expected, actual);
++    assertEquals(expected, actual);
 +  }
 +
 +  @Test
 +  public void testAtTimestampTypes() {
 +    final String fam = "f16bc";
 +    final String qual = "q1pm2";
 +    final long ts = 324324L;
 +    final String val = "v8672194923750";
 +
 +    Mutation expected = new Mutation("row5");
 +    expected.put(fam, qual, ts, val);
 +
 +    // Test timestamp method, keeping fam and val constant as Strings
 +    Mutation actual = new Mutation("row5");
 +    actual.at().family(fam).qualifier(qual).timestamp(ts).put(val);
-     Assert.assertEquals(expected, actual);
++    assertEquals(expected, actual);
 +  }
 +
 +  @Test
 +  public void testAtPutTypes() {
 +    final String fam = "f16bc";
 +    final String qual = "q1pm2";
 +    final String val = "v8672194923750";
 +
 +    Mutation expected = new Mutation("row5");
 +    expected.put(fam, qual, val);
 +
 +    // Test all pull methods, keeping fam and qual,constant as Strings
 +    // put: byte[]
 +    Mutation actual = new Mutation("row5");
 +    actual.at().family(fam).qualifier(qual).put(val.getBytes(UTF_8));
-     Assert.assertEquals(expected, actual);
++    assertEquals(expected, actual);
 +
 +    // put: ByteBuffer
 +    final ByteBuffer bbVal = ByteBuffer.wrap(val.getBytes(UTF_8));
 +    final int bbValStartPos = bbVal.position();
 +    actual = new Mutation("row5");
 +    actual.at().family(fam).qualifier(qual).put(bbVal);
-     Assert.assertEquals(expected, actual);
++    assertEquals(expected, actual);
 +
 +    // make sure the ByteBuffer last byte filled in the buffer (its position) is same as before the
 +    // API call
-     Assert.assertEquals(bbValStartPos, bbVal.position());
++    assertEquals(bbValStartPos, bbVal.position());
 +
 +    // put: CharSequence (String implementation)
 +    actual = new Mutation("row5");
 +    actual.at().family(fam).qualifier(qual).put(val);
-     Assert.assertEquals(expected, actual);
++    assertEquals(expected, actual);
 +
 +    // put: Text
 +    actual = new Mutation("row5");
 +    actual.at().family(fam).qualifier(qual).put(val);
-     Assert.assertEquals(expected, actual);
++    assertEquals(expected, actual);
 +
 +    // put: Value
 +    actual = new Mutation("row5");
 +    actual.at().family(fam).qualifier(qual).put(new Value(val));
-     Assert.assertEquals(expected, actual);
++    assertEquals(expected, actual);
 +  }
 +
 +  @Test(expected = IllegalStateException.class)
 +  public void testFluentPutNull() {
 +    final String fam = "f16bc";
 +    final String qual = "q1pm2";
 +    final String val = "v8672194923750";
 +
 +    Mutation expected = new Mutation("row5");
 +    expected.put(fam, qual, val);
 +
 +    Mutation actual = new Mutation("row5");
 +    actual.at().family(fam).qualifier(qual).put(val.getBytes());
-     Assert.assertEquals(expected, actual);
-     Assert.assertEquals(34, actual.numBytes());
++    assertEquals(expected, actual);
++    assertEquals(34, actual.numBytes());
 +    actual.at().family(fam).qualifier(qual).put("test2");
 +  }
 +
 +  @Test
 +  public void testFluentPutLarge() {
 +    byte[] largeVal = new byte[Mutation.VALUE_SIZE_COPY_CUTOFF + 13];
 +    Arrays.fill(largeVal, (byte) 3);
 +
 +    Mutation m = new Mutation("row123");
 +    m.at().family("fam").qualifier("qual").put(largeVal);
-     Assert.assertEquals(32800, m.numBytes());
++    assertEquals(32800, m.numBytes());
 +  }
 +
 +  @Test
 +  public void testAtDelete() {
 +    final String fam = "f16bc";
 +    final String qual = "q1pm2";
 +
 +    Mutation expected = new Mutation("row5");
 +    expected.putDelete(fam, qual);
 +
 +    Mutation actual = new Mutation("row5");
 +    actual.at().family(fam).qualifier(qual).delete();
-     Assert.assertEquals(expected, actual);
++    assertEquals(expected, actual);
 +  }
 +
 +  @Test
    public void testPuts() {
      Mutation m = new Mutation(new Text("r1"));
  
diff --cc core/src/test/java/org/apache/accumulo/core/data/RangeTest.java
index c4ebcd8,43099b8..abb1b32
--- a/core/src/test/java/org/apache/accumulo/core/data/RangeTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/data/RangeTest.java
@@@ -53,9 -57,10 +58,10 @@@ public class RangeTest 
      HashSet<Range> s1 = new HashSet<>(rl);
      HashSet<Range> s2 = new HashSet<>(expected);
  
 -    assertTrue("got : " + rl + " expected : " + expected, s1.equals(s2));
 +    assertEquals("got : " + rl + " expected : " + expected, s1, s2);
    }
  
+   @Test
    public void testMergeOverlapping1() {
      List<Range> rl = newRangeList(newRange("a", "c"), newRange("a", "b"));
      List<Range> expected = newRangeList(newRange("a", "c"));
@@@ -200,20 -224,17 +225,21 @@@
  
    }
  
+   @Test
    public void testMergeOverlapping22() {
  
 -    Range ke1 = new KeyExtent("tab1", new Text("Bank"), null).toMetadataRange();
 -    Range ke2 = new KeyExtent("tab1", new Text("Fails"), new Text("Bank")).toMetadataRange();
 -    Range ke3 = new KeyExtent("tab1", new Text("Sam"), new Text("Fails")).toMetadataRange();
 -    Range ke4 = new KeyExtent("tab1", new Text("bails"), new Text("Sam")).toMetadataRange();
 -    Range ke5 = new KeyExtent("tab1", null, new Text("bails")).toMetadataRange();
 +    Range ke1 = new KeyExtent(Table.ID.of("tab1"), new Text("Bank"), null).toMetadataRange();
 +    Range ke2 = new KeyExtent(Table.ID.of("tab1"), new Text("Fails"), new Text("Bank"))
 +        .toMetadataRange();
 +    Range ke3 = new KeyExtent(Table.ID.of("tab1"), new Text("Sam"), new Text("Fails"))
 +        .toMetadataRange();
 +    Range ke4 = new KeyExtent(Table.ID.of("tab1"), new Text("bails"), new Text("Sam"))
 +        .toMetadataRange();
 +    Range ke5 = new KeyExtent(Table.ID.of("tab1"), null, new Text("bails")).toMetadataRange();
  
      List<Range> rl = newRangeList(ke1, ke2, ke3, ke4, ke5);
 -    List<Range> expected = newRangeList(new KeyExtent("tab1", null, null).toMetadataRange());
 +    List<Range> expected = newRangeList(
 +        new KeyExtent(Table.ID.of("tab1"), null, null).toMetadataRange());
      check(Range.mergeOverlapping(rl), expected);
  
      rl = newRangeList(ke1, ke2, ke4, ke5);
@@@ -729,12 -767,13 +775,13 @@@
      assertFalse(r.contains(new Key("abc", "def", "ghi", "j&j")));
      assertFalse(r.contains(new Key("abc", "def", "ghi", "j&l")));
  
 -    r = Range.exact("abc", "def", "ghi", "j&k", 7l);
 -    assertTrue(r.contains(new Key("abc", "def", "ghi", "j&k", 7l)));
 -    assertFalse(r.contains(new Key("abc", "def", "ghi", "j&k", 6l)));
 -    assertFalse(r.contains(new Key("abc", "def", "ghi", "j&k", 8l)));
 +    r = Range.exact("abc", "def", "ghi", "j&k", 7L);
 +    assertTrue(r.contains(new Key("abc", "def", "ghi", "j&k", 7L)));
 +    assertFalse(r.contains(new Key("abc", "def", "ghi", "j&k", 6L)));
 +    assertFalse(r.contains(new Key("abc", "def", "ghi", "j&k", 8L)));
    }
  
+   @Test
    public void testPrefixRange() {
      Range r = Range.prefix("abc");
      assertTrue(r.contains(new Key("abc")));
diff --cc core/src/test/java/org/apache/accumulo/core/file/blockfile/cache/BlockCacheFactoryTest.java
index 31a41ac,0000000..cdf4628
mode 100644,000000..100644
--- a/core/src/test/java/org/apache/accumulo/core/file/blockfile/cache/BlockCacheFactoryTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/file/blockfile/cache/BlockCacheFactoryTest.java
@@@ -1,57 -1,0 +1,58 @@@
 +/*
 + * 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.core.file.blockfile.cache;
 +
++import static org.junit.Assert.assertNotNull;
++
 +import org.apache.accumulo.core.conf.ConfigurationCopy;
 +import org.apache.accumulo.core.conf.DefaultConfiguration;
 +import org.apache.accumulo.core.conf.Property;
 +import org.apache.accumulo.core.file.blockfile.cache.impl.BlockCacheConfiguration;
 +import org.apache.accumulo.core.file.blockfile.cache.impl.BlockCacheManagerFactory;
 +import org.apache.accumulo.core.file.blockfile.cache.lru.LruBlockCacheManager;
 +import org.apache.accumulo.core.file.blockfile.cache.tinylfu.TinyLfuBlockCacheManager;
 +import org.apache.accumulo.core.spi.cache.BlockCacheManager;
 +import org.apache.accumulo.core.spi.cache.CacheType;
- import org.junit.Assert;
 +import org.junit.Test;
 +
 +public class BlockCacheFactoryTest {
 +
 +  @Test
 +  public void testCreateLruBlockCacheFactory() throws Exception {
 +    DefaultConfiguration dc = DefaultConfiguration.getInstance();
 +    ConfigurationCopy cc = new ConfigurationCopy(dc);
 +    cc.set(Property.TSERV_CACHE_MANAGER_IMPL, LruBlockCacheManager.class.getName());
 +    BlockCacheManagerFactory.getInstance(cc);
 +  }
 +
 +  @Test
 +  public void testCreateTinyLfuBlockCacheFactory() throws Exception {
 +    DefaultConfiguration dc = DefaultConfiguration.getInstance();
 +    ConfigurationCopy cc = new ConfigurationCopy(dc);
 +    cc.set(Property.TSERV_CACHE_MANAGER_IMPL, TinyLfuBlockCacheManager.class.getName());
 +    BlockCacheManagerFactory.getInstance(cc);
 +  }
 +
 +  @Test
 +  public void testStartWithDefault() throws Exception {
 +    DefaultConfiguration dc = DefaultConfiguration.getInstance();
 +    BlockCacheManager manager = BlockCacheManagerFactory.getInstance(dc);
 +    manager.start(new BlockCacheConfiguration(dc));
-     Assert.assertNotNull(manager.getBlockCache(CacheType.INDEX));
++    assertNotNull(manager.getBlockCache(CacheType.INDEX));
 +  }
 +}
diff --cc core/src/test/java/org/apache/accumulo/core/file/blockfile/cache/BlockCacheManagerTest.java
index 98e8f04,0000000..f906c4b
mode 100644,000000..100644
--- a/core/src/test/java/org/apache/accumulo/core/file/blockfile/cache/BlockCacheManagerTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/file/blockfile/cache/BlockCacheManagerTest.java
@@@ -1,39 -1,0 +1,40 @@@
 +/*
 + * 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.core.file.blockfile.cache;
 +
++import static org.junit.Assert.assertEquals;
++
 +import org.apache.accumulo.core.spi.cache.BlockCacheManager;
 +import org.apache.accumulo.core.spi.cache.CacheType;
- import org.junit.Assert;
 +import org.junit.Test;
 +
 +public class BlockCacheManagerTest {
 +
 +  @Test
 +  public void testGetPropertyPrefix() throws Exception {
-     Assert.assertEquals("tserver.cache.config.lru.data.",
++    assertEquals("tserver.cache.config.lru.data.",
 +        BlockCacheManager.getFullyQualifiedPropertyPrefix("lru", CacheType.DATA));
-     Assert.assertEquals("tserver.cache.config.lru.index.",
++    assertEquals("tserver.cache.config.lru.index.",
 +        BlockCacheManager.getFullyQualifiedPropertyPrefix("lru", CacheType.INDEX));
-     Assert.assertEquals("tserver.cache.config.lru.summary.",
++    assertEquals("tserver.cache.config.lru.summary.",
 +        BlockCacheManager.getFullyQualifiedPropertyPrefix("lru", CacheType.SUMMARY));
-     Assert.assertEquals("tserver.cache.config.lru.default.",
++    assertEquals("tserver.cache.config.lru.default.",
 +        BlockCacheManager.getFullyQualifiedPropertyPrefix("lru"));
 +  }
 +
 +}
diff --cc core/src/test/java/org/apache/accumulo/core/file/blockfile/cache/TestCachedBlockQueue.java
index 0ddd0a3,d741223..1dbfd70
--- a/core/src/test/java/org/apache/accumulo/core/file/blockfile/cache/TestCachedBlockQueue.java
+++ b/core/src/test/java/org/apache/accumulo/core/file/blockfile/cache/TestCachedBlockQueue.java
@@@ -17,14 -17,15 +17,16 @@@
   */
  package org.apache.accumulo.core.file.blockfile.cache;
  
+ import static org.junit.Assert.assertEquals;
+ 
  import java.util.LinkedList;
  
 +import org.apache.accumulo.core.file.blockfile.cache.lru.CachedBlockQueue;
+ import org.junit.Test;
  
- import junit.framework.TestCase;
- 
- public class TestCachedBlockQueue extends TestCase {
+ public class TestCachedBlockQueue {
  
+   @Test
    public void testQueue() throws Exception {
  
      CachedBlock cb1 = new CachedBlock(1000, "cb1", 1);
diff --cc core/src/test/java/org/apache/accumulo/core/file/blockfile/cache/TestLruBlockCache.java
index 150c878,a64c1a2..68de0bb
--- a/core/src/test/java/org/apache/accumulo/core/file/blockfile/cache/TestLruBlockCache.java
+++ b/core/src/test/java/org/apache/accumulo/core/file/blockfile/cache/TestLruBlockCache.java
@@@ -17,26 -17,13 +17,31 @@@
   */
  package org.apache.accumulo.core.file.blockfile.cache;
  
+ import static org.junit.Assert.assertEquals;
++import static org.junit.Assert.assertFalse;
++import static org.junit.Assert.assertNotNull;
++import static org.junit.Assert.assertNull;
+ import static org.junit.Assert.assertTrue;
+ 
 +import java.security.SecureRandom;
  import java.util.Arrays;
  import java.util.Random;
  
 +import org.apache.accumulo.core.conf.ConfigurationCopy;
 +import org.apache.accumulo.core.conf.DefaultConfiguration;
 +import org.apache.accumulo.core.conf.Property;
 +import org.apache.accumulo.core.file.blockfile.cache.impl.BlockCacheConfiguration;
 +import org.apache.accumulo.core.file.blockfile.cache.impl.BlockCacheManagerFactory;
 +import org.apache.accumulo.core.file.blockfile.cache.impl.ClassSize;
 +import org.apache.accumulo.core.file.blockfile.cache.lru.CachedBlock;
 +import org.apache.accumulo.core.file.blockfile.cache.lru.HeapSize;
 +import org.apache.accumulo.core.file.blockfile.cache.lru.LruBlockCache;
 +import org.apache.accumulo.core.file.blockfile.cache.lru.LruBlockCacheConfiguration;
 +import org.apache.accumulo.core.file.blockfile.cache.lru.LruBlockCacheManager;
 +import org.apache.accumulo.core.spi.cache.BlockCacheManager;
 +import org.apache.accumulo.core.spi.cache.CacheEntry;
 +import org.apache.accumulo.core.spi.cache.CacheType;
- 
- import junit.framework.TestCase;
+ import org.junit.Test;
  
  /**
   * Tests the concurrent LruBlockCache.
@@@ -45,44 -32,9 +50,46 @@@
   * Tests will ensure it grows and shrinks in size properly, evictions run when they're supposed to
   * and do what they should, and that cached blocks are accessible when expected to be.
   */
- public class TestLruBlockCache extends TestCase {
+ public class TestLruBlockCache {
  
+   @Test
 +  public void testConfiguration() {
 +    ConfigurationCopy cc = new ConfigurationCopy();
 +    cc.set(Property.TSERV_CACHE_MANAGER_IMPL, LruBlockCacheManager.class.getName());
 +    cc.set(Property.TSERV_DEFAULT_BLOCKSIZE, Long.toString(1019));
 +    cc.set(Property.TSERV_INDEXCACHE_SIZE, Long.toString(1000023));
 +    cc.set(Property.TSERV_DATACACHE_SIZE, Long.toString(1000027));
 +    cc.set(Property.TSERV_SUMMARYCACHE_SIZE, Long.toString(1000029));
 +
 +    LruBlockCacheConfiguration.builder(CacheType.INDEX).useEvictionThread(false).minFactor(0.93f)
 +        .acceptableFactor(0.97f).singleFactor(0.20f).multiFactor(0.30f).memoryFactor(0.50f)
 +        .mapConcurrencyLevel(5).buildMap().forEach(cc::set);
 +
 +    String defaultPrefix = BlockCacheManager.CACHE_PROPERTY_BASE
 +        + LruBlockCacheConfiguration.PROPERTY_PREFIX + ".default.";
 +
 +    // this should be overridden by cache type specific setting
 +    cc.set(defaultPrefix + LruBlockCacheConfiguration.MEMORY_FACTOR_PROPERTY, "0.6");
 +
 +    // this is not set for the cache type, so should fall back to default
 +    cc.set(defaultPrefix + LruBlockCacheConfiguration.MAP_LOAD_PROPERTY, "0.53");
 +
 +    BlockCacheConfiguration bcc = new BlockCacheConfiguration(cc);
 +    LruBlockCacheConfiguration lbcc = new LruBlockCacheConfiguration(bcc, CacheType.INDEX);
 +
 +    assertFalse(lbcc.isUseEvictionThread());
-     assertEquals(0.93f, lbcc.getMinFactor());
-     assertEquals(0.97f, lbcc.getAcceptableFactor());
-     assertEquals(0.20f, lbcc.getSingleFactor());
-     assertEquals(0.30f, lbcc.getMultiFactor());
-     assertEquals(0.50f, lbcc.getMemoryFactor());
-     assertEquals(0.53f, lbcc.getMapLoadFactor());
++    assertEquals(0.93f, lbcc.getMinFactor(), 0.0000001);
++    assertEquals(0.97f, lbcc.getAcceptableFactor(), 0.0000001);
++    assertEquals(0.20f, lbcc.getSingleFactor(), 0.0000001);
++    assertEquals(0.30f, lbcc.getMultiFactor(), 0.0000001);
++    assertEquals(0.50f, lbcc.getMemoryFactor(), 0.0000001);
++    assertEquals(0.53f, lbcc.getMapLoadFactor(), 0.0000001);
 +    assertEquals(5, lbcc.getMapConcurrencyLevel());
 +    assertEquals(1019, lbcc.getBlockSize());
 +    assertEquals(1000023, lbcc.getMaxSize());
 +  }
 +
++  @Test
    public void testBackgroundEvictionThread() throws Exception {
  
      long maxSize = 100000;
@@@ -112,10 -57,9 +119,11 @@@
      }
      // A single eviction run should have occurred
      assertEquals(cache.getEvictionCount(), 1);
 +
 +    manager.stop();
    }
  
+   @Test
    public void testCacheSimple() throws Exception {
  
      long maxSize = 1000000;
@@@ -170,9 -107,9 +178,10 @@@
      // Thread t = new LruBlockCache.StatisticsThread(cache);
      // t.start();
      // t.join();
 +    manager.stop();
    }
  
+   @Test
    public void testCacheEvictionSimple() throws Exception {
  
      long maxSize = 100000;
@@@ -219,9 -145,9 +228,10 @@@
      for (int i = 2; i < blocks.length; i++) {
        assertTrue(Arrays.equals(cache.getBlock(blocks[i].blockName).getBuffer(), blocks[i].buf));
      }
 +    manager.stop();
    }
  
+   @Test
    public void testCacheEvictionTwoPriorities() throws Exception {
  
      long maxSize = 100000;
@@@ -288,9 -208,9 +298,10 @@@
        assertTrue(
            Arrays.equals(cache.getBlock(multiBlocks[i].blockName).getBuffer(), multiBlocks[i].buf));
      }
 +    manager.stop();
    }
  
+   @Test
    public void testCacheEvictionThreePriorities() throws Exception {
  
      long maxSize = 100000;
diff --cc core/src/test/java/org/apache/accumulo/core/file/rfile/BlockIndexTest.java
index a113668,c886965..5bc1b0d
--- a/core/src/test/java/org/apache/accumulo/core/file/rfile/BlockIndexTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/file/rfile/BlockIndexTest.java
@@@ -26,10 -29,13 +30,9 @@@ import org.apache.accumulo.core.data.Va
  import org.apache.accumulo.core.file.blockfile.impl.CachableBlockFile;
  import org.apache.accumulo.core.file.rfile.BlockIndex.BlockIndexEntry;
  import org.apache.accumulo.core.file.rfile.MultiLevelIndex.IndexEntry;
 +import org.apache.accumulo.core.spi.cache.CacheEntry;
- import org.junit.Assert;
  import org.junit.Test;
  
 -/**
 - *
 - */
  public class BlockIndexTest {
  
    private static class MyCacheEntry implements CacheEntry {
diff --cc core/src/test/java/org/apache/accumulo/core/file/rfile/KeyShortenerTest.java
index 854c642,bc4b42e..26774b1
--- a/core/src/test/java/org/apache/accumulo/core/file/rfile/KeyShortenerTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/file/rfile/KeyShortenerTest.java
@@@ -26,11 -28,11 +28,11 @@@ import com.google.common.primitives.Byt
  public class KeyShortenerTest {
  
    private static final byte[] E = new byte[0];
 -  private static final byte[] FF = new byte[] {(byte) 0xff};
 +  private static final byte[] FF = {(byte) 0xff};
  
    private void assertBetween(Key p, Key s, Key c) {
-     Assert.assertTrue(p.compareTo(s) < 0);
-     Assert.assertTrue(s.compareTo(c) < 0);
+     assertTrue(p.compareTo(s) < 0);
+     assertTrue(s.compareTo(c) < 0);
    }
  
    private void testKeys(Key prev, Key current, Key expected) {
diff --cc core/src/test/java/org/apache/accumulo/core/file/rfile/MultiLevelIndexTest.java
index 54e61d7,5ec779a..a1eee64
--- a/core/src/test/java/org/apache/accumulo/core/file/rfile/MultiLevelIndexTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/file/rfile/MultiLevelIndexTest.java
@@@ -16,9 -16,11 +16,12 @@@
   */
  package org.apache.accumulo.core.file.rfile;
  
+ import static org.junit.Assert.assertEquals;
+ import static org.junit.Assert.assertFalse;
+ 
  import java.io.ByteArrayOutputStream;
  import java.io.IOException;
 +import java.security.SecureRandom;
  import java.util.Random;
  
  import org.apache.accumulo.core.conf.AccumuloConfiguration;
diff --cc core/src/test/java/org/apache/accumulo/core/file/rfile/RFileTest.java
index 95f0135,eee225d..2ed8620
--- a/core/src/test/java/org/apache/accumulo/core/file/rfile/RFileTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/file/rfile/RFileTest.java
@@@ -89,9 -77,6 +89,8 @@@ import org.apache.hadoop.fs.FileSystem
  import org.apache.hadoop.fs.PositionedReadable;
  import org.apache.hadoop.fs.Seekable;
  import org.apache.hadoop.io.Text;
 +import org.junit.AfterClass;
- import org.junit.Assert;
 +import org.junit.BeforeClass;
  import org.junit.Rule;
  import org.junit.Test;
  import org.junit.rules.TemporaryFolder;
@@@ -1997,11 -1952,11 +1996,11 @@@ public class RFileTest 
        throws IOException {
  
      sample.seek(new Range(), columnFamilies, inclusive);
-     Assert.assertEquals(sampleData, toList(sample));
+     assertEquals(sampleData, toList(sample));
  
 -    Random rand = new Random();
 +    Random rand = new SecureRandom();
      long seed = rand.nextLong();
 -    rand = new Random(seed);
 +    rand.setSeed(seed);
  
      // randomly seek sample iterator and verify
      for (int i = 0; i < 33; i++) {
diff --cc core/src/test/java/org/apache/accumulo/core/file/rfile/RolllingStatsTest.java
index 95915a6,996935e..09d98a8
--- a/core/src/test/java/org/apache/accumulo/core/file/rfile/RolllingStatsTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/file/rfile/RolllingStatsTest.java
@@@ -17,9 -17,9 +17,11 @@@
  
  package org.apache.accumulo.core.file.rfile;
  
+ import static org.junit.Assert.assertTrue;
+ 
 +import java.security.SecureRandom;
  import java.util.Random;
 +import java.util.function.IntSupplier;
  
  import org.apache.commons.math3.distribution.NormalDistribution;
  import org.apache.commons.math3.distribution.ZipfDistribution;
diff --cc core/src/test/java/org/apache/accumulo/core/file/rfile/bcfile/CompressionTest.java
index cc2de0d,06080b1..33b4afa
--- a/core/src/test/java/org/apache/accumulo/core/file/rfile/bcfile/CompressionTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/file/rfile/bcfile/CompressionTest.java
@@@ -79,14 -83,14 +83,14 @@@ public class CompressionTest 
    public void testSingle() throws IOException {
  
      for (final Algorithm al : Algorithm.values()) {
 -      if (isSupported.get(al) != null && isSupported.get(al) == true) {
 +      if (isSupported.get(al) != null && isSupported.get(al)) {
  
 -        // first call to issupported should be true
 +        // first call to isSupported should be true
-         Assert.assertTrue(al + " is not supported, but should be", al.isSupported());
+         assertTrue(al + " is not supported, but should be", al.isSupported());
  
-         Assert.assertNotNull(al + " should have a non-null codec", al.getCodec());
+         assertNotNull(al + " should have a non-null codec", al.getCodec());
  
-         Assert.assertNotNull(al + " should have a non-null codec", al.getCodec());
+         assertNotNull(al + " should have a non-null codec", al.getCodec());
        }
      }
    }
@@@ -95,11 -99,11 +99,11 @@@
    public void testSingleNoSideEffect() throws IOException {
  
      for (final Algorithm al : Algorithm.values()) {
 -      if (isSupported.get(al) != null && isSupported.get(al) == true) {
 +      if (isSupported.get(al) != null && isSupported.get(al)) {
  
-         Assert.assertTrue(al + " is not supported, but should be", al.isSupported());
+         assertTrue(al + " is not supported, but should be", al.isSupported());
  
-         Assert.assertNotNull(al + " should have a non-null codec", al.getCodec());
+         assertNotNull(al + " should have a non-null codec", al.getCodec());
  
          // assert that additional calls to create will not create
          // additional codecs
@@@ -114,10 -118,10 +118,10 @@@
    public void testManyStartNotNull() throws IOException, InterruptedException, ExecutionException {
  
      for (final Algorithm al : Algorithm.values()) {
 -      if (isSupported.get(al) != null && isSupported.get(al) == true) {
 +      if (isSupported.get(al) != null && isSupported.get(al)) {
  
 -        // first call to issupported should be true
 +        // first call to isSupported should be true
-         Assert.assertTrue(al + " is not supported, but should be", al.isSupported());
+         assertTrue(al + " is not supported, but should be", al.isSupported());
  
          final CompressionCodec codec = al.getCodec();
  
@@@ -128,9 -132,14 +132,9 @@@
          ArrayList<Future<Boolean>> results = new ArrayList<>();
  
          for (int i = 0; i < 30; i++) {
 -          results.add(service.submit(new Callable<Boolean>() {
 -
 -            @Override
 -            public Boolean call() throws Exception {
 -              assertNotNull(al + " should not be null", al.getCodec());
 -              return true;
 -            }
 -
 +          results.add(service.submit(() -> {
-             Assert.assertNotNull(al + " should not be null", al.getCodec());
++            assertNotNull(al + " should not be null", al.getCodec());
 +            return true;
            }));
          }
  
@@@ -157,10 -166,10 +161,10 @@@
        throws IOException, InterruptedException, ExecutionException {
  
      for (final Algorithm al : Algorithm.values()) {
 -      if (isSupported.get(al) != null && isSupported.get(al) == true) {
 +      if (isSupported.get(al) != null && isSupported.get(al)) {
  
 -        // first call to issupported should be true
 +        // first call to isSupported should be true
-         Assert.assertTrue(al + " is not supported, but should be", al.isSupported());
+         assertTrue(al + " is not supported, but should be", al.isSupported());
  
          ExecutorService service = Executors.newFixedThreadPool(10);
  
@@@ -168,9 -177,14 +172,9 @@@
  
          for (int i = 0; i < 30; i++) {
  
 -          results.add(service.submit(new Callable<Boolean>() {
 -
 -            @Override
 -            public Boolean call() throws Exception {
 -              assertNotNull(al + " should have a non-null codec", al.getCodec());
 -              return true;
 -            }
 -
 +          results.add(service.submit(() -> {
-             Assert.assertNotNull(al + " should have a non-null codec", al.getCodec());
++            assertNotNull(al + " should have a non-null codec", al.getCodec());
 +            return true;
            }));
          }
  
@@@ -193,10 -207,10 +197,10 @@@
    public void testThereCanBeOnlyOne() throws IOException, InterruptedException, ExecutionException {
  
      for (final Algorithm al : Algorithm.values()) {
 -      if (isSupported.get(al) != null && isSupported.get(al) == true) {
 +      if (isSupported.get(al) != null && isSupported.get(al)) {
  
 -        // first call to issupported should be true
 +        // first call to isSupported should be true
-         Assert.assertTrue(al + " is not supported, but should be", al.isSupported());
+         assertTrue(al + " is not supported, but should be", al.isSupported());
  
          ExecutorService service = Executors.newFixedThreadPool(20);
  
@@@ -208,14 -222,18 +212,14 @@@
          final HashSet<Integer> testSet = new HashSet<>();
  
          for (int i = 0; i < 40; i++) {
 -          list.add(new Callable<Boolean>() {
 -
 -            @Override
 -            public Boolean call() throws Exception {
 -              CompressionCodec codec = al.getCodec();
 -              assertNotNull(al + " resulted in a non-null codec", codec);
 -              // add the identity hashcode to the set.
 -              synchronized (testSet) {
 -                testSet.add(System.identityHashCode(codec));
 -              }
 -              return true;
 +          list.add(() -> {
 +            CompressionCodec codec = al.getCodec();
-             Assert.assertNotNull(al + " resulted in a non-null codec", codec);
++            assertNotNull(al + " resulted in a non-null codec", codec);
 +            // add the identity hashcode to the set.
 +            synchronized (testSet) {
 +              testSet.add(System.identityHashCode(codec));
              }
 +            return true;
            });
          }
  
diff --cc core/src/test/java/org/apache/accumulo/core/file/streams/RateLimitedInputStreamTest.java
index de913ce,49053e7..2554ddf
--- a/core/src/test/java/org/apache/accumulo/core/file/streams/RateLimitedInputStreamTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/file/streams/RateLimitedInputStreamTest.java
@@@ -16,9 -16,10 +16,11 @@@
   */
  package org.apache.accumulo.core.file.streams;
  
+ import static org.junit.Assert.assertEquals;
+ 
  import java.io.IOException;
  import java.io.InputStream;
 +import java.security.SecureRandom;
  import java.util.Random;
  
  import org.apache.hadoop.fs.Seekable;
diff --cc core/src/test/java/org/apache/accumulo/core/file/streams/RateLimitedOutputStreamTest.java
index 9601681,25cbb43..7e66253
--- a/core/src/test/java/org/apache/accumulo/core/file/streams/RateLimitedOutputStreamTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/file/streams/RateLimitedOutputStreamTest.java
@@@ -16,12 -16,12 +16,13 @@@
   */
  package org.apache.accumulo.core.file.streams;
  
+ import static org.junit.Assert.assertEquals;
+ 
 -import java.io.FilterOutputStream;
  import java.io.IOException;
 +import java.security.SecureRandom;
  import java.util.Random;
  
 +import org.apache.hadoop.fs.FSDataOutputStream;
- import org.junit.Assert;
  import org.junit.Test;
  
  import com.google.common.io.ByteStreams;
@@@ -41,14 -41,19 +42,14 @@@ public class RateLimitedOutputStreamTes
          os.write(bytes);
          bytesWritten += bytes.length;
        }
-       Assert.assertEquals(bytesWritten, os.position());
+       assertEquals(bytesWritten, os.position());
      }
-     Assert.assertEquals(bytesWritten, rateLimiter.getPermitsAcquired());
+     assertEquals(bytesWritten, rateLimiter.getPermitsAcquired());
    }
  
 -  public static class NullOutputStream extends FilterOutputStream implements PositionedOutput {
 -    public NullOutputStream() {
 -      super(new CountingOutputStream(ByteStreams.nullOutputStream()));
 -    }
 -
 -    @Override
 -    public long position() throws IOException {
 -      return ((CountingOutputStream) out).getCount();
 +  public static class NullOutputStream extends FSDataOutputStream {
 +    public NullOutputStream() throws IOException {
 +      super(new CountingOutputStream(ByteStreams.nullOutputStream()), null);
      }
    }
  
diff --cc core/src/test/java/org/apache/accumulo/core/iterators/system/ColumnFilterTest.java
index 65a5f55,1e14362..9c3289c
--- a/core/src/test/java/org/apache/accumulo/core/iterators/system/ColumnFilterTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/iterators/system/ColumnFilterTest.java
@@@ -45,10 -49,11 +48,11 @@@ public class ColumnFilterTest 
      return new Column(cf.getBytes(), cq.getBytes(), null);
    }
  
+   @Test
    public void test1() {
      TreeMap<Key,Value> data = new TreeMap<>();
 -    data.put(newKey("r1", "cf1", "cq1"), new Value());
 -    data.put(newKey("r1", "cf2", "cq1"), new Value());
 +    data.put(newKey("r1", "cf1", "cq1"), new Value(""));
 +    data.put(newKey("r1", "cf2", "cq1"), new Value(""));
  
      HashSet<Column> columns = new HashSet<>();
      columns.add(newColumn("cf1"));
@@@ -73,17 -79,18 +78,18 @@@
  
      SortedKeyValueIterator<Key,Value> cf = ColumnQualifierFilter.wrap(new SortedMapIterator(data),
          columns);
 -    cf.seek(new Range(), Collections.<ByteSequence> emptySet(), false);
 +    cf.seek(new Range(), Collections.emptySet(), false);
  
-     Assert.assertTrue(cf.hasTop());
-     Assert.assertEquals(newKey("r1", "cf1", "cq1"), cf.getTopKey());
+     assertTrue(cf.hasTop());
+     assertEquals(newKey("r1", "cf1", "cq1"), cf.getTopKey());
      cf.next();
-     Assert.assertTrue(cf.hasTop());
-     Assert.assertEquals(newKey("r1", "cf2", "cq1"), cf.getTopKey());
+     assertTrue(cf.hasTop());
+     assertEquals(newKey("r1", "cf2", "cq1"), cf.getTopKey());
      cf.next();
-     Assert.assertFalse(cf.hasTop());
+     assertFalse(cf.hasTop());
    }
  
+   @Test
    public void test3() throws Exception {
  
      TreeMap<Key,Value> data = new TreeMap<>();
@@@ -97,11 -104,11 +103,11 @@@
  
      SortedKeyValueIterator<Key,Value> cf = ColumnQualifierFilter.wrap(new SortedMapIterator(data),
          columns);
 -    cf.seek(new Range(), Collections.<ByteSequence> emptySet(), false);
 +    cf.seek(new Range(), Collections.emptySet(), false);
  
-     Assert.assertTrue(cf.hasTop());
-     Assert.assertEquals(newKey("r1", "cf2", "cq1"), cf.getTopKey());
+     assertTrue(cf.hasTop());
+     assertEquals(newKey("r1", "cf2", "cq1"), cf.getTopKey());
      cf.next();
-     Assert.assertFalse(cf.hasTop());
+     assertFalse(cf.hasTop());
    }
  }
diff --cc core/src/test/java/org/apache/accumulo/core/iterators/system/DeletingIteratorTest.java
index 644f453,ffc5039..ae94ed7
--- a/core/src/test/java/org/apache/accumulo/core/iterators/system/DeletingIteratorTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/iterators/system/DeletingIteratorTest.java
@@@ -16,6 -16,10 +16,11 @@@
   */
  package org.apache.accumulo.core.iterators.system;
  
+ import static org.junit.Assert.assertEquals;
+ import static org.junit.Assert.assertFalse;
+ import static org.junit.Assert.assertTrue;
++import static org.junit.Assert.fail;
+ 
  import java.io.IOException;
  import java.util.ArrayList;
  import java.util.Collection;
@@@ -26,14 -30,11 +31,13 @@@ import org.apache.accumulo.core.data.By
  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.SortedKeyValueIterator;
  import org.apache.accumulo.core.iterators.SortedMapIterator;
 +import org.apache.accumulo.core.iterators.system.DeletingIterator.Behavior;
  import org.apache.hadoop.io.Text;
+ import org.junit.Test;
  
- import junit.framework.TestCase;
- 
- public class DeletingIteratorTest extends TestCase {
+ public class DeletingIteratorTest {
  
    private static final Collection<ByteSequence> EMPTY_COL_FAMS = new ArrayList<>();
  
@@@ -221,26 -221,6 +229,27 @@@
      assertFalse(it.hasTop());
    }
  
++  @Test
 +  public void testFail() throws IOException {
 +    TreeMap<Key,Value> tm = new TreeMap<>();
 +
 +    newKeyValue(tm, "r000", 3, false, "v3");
 +    newKeyValue(tm, "r000", 2, false, "v2");
 +    newKeyValue(tm, "r000", 2, true, "");
 +    newKeyValue(tm, "r000", 1, false, "v1");
 +
 +    SortedKeyValueIterator<Key,Value> it = DeletingIterator.wrap(new SortedMapIterator(tm), false,
 +        Behavior.FAIL);
 +    it.seek(new Range(), EMPTY_COL_FAMS, false);
 +    try {
 +      while (it.hasTop()) {
 +        it.getTopKey();
 +        it.next();
 +      }
 +      fail();
 +    } catch (IllegalStateException e) {}
 +  }
 +
    private Range newRange(String row, long ts, boolean inclusive) {
      return new Range(newKey(row, ts), inclusive, null, true);
    }
diff --cc core/src/test/java/org/apache/accumulo/core/iterators/system/SourceSwitchingIteratorTest.java
index 9ca655a,134a442..c596488
--- a/core/src/test/java/org/apache/accumulo/core/iterators/system/SourceSwitchingIteratorTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/iterators/system/SourceSwitchingIteratorTest.java
@@@ -35,12 -40,14 +41,11 @@@ import org.apache.accumulo.core.iterato
  import org.apache.accumulo.core.iterators.SortedMapIterator;
  import org.apache.accumulo.core.iterators.WrappingIterator;
  import org.apache.accumulo.core.iterators.YieldCallback;
 -import org.apache.accumulo.core.iterators.YieldingKeyValueIterator;
  import org.apache.accumulo.core.iterators.system.SourceSwitchingIterator.DataSource;
  import org.apache.hadoop.io.Text;
+ import org.junit.Test;
  
- import junit.framework.TestCase;
 -import com.google.common.base.Optional;
--
- public class SourceSwitchingIteratorTest extends TestCase {
+ public class SourceSwitchingIteratorTest {
  
    Key newKey(String row, String cf, String cq, long time) {
      return new Key(new Text(row), new Text(cf), new Text(cq), time);
@@@ -220,8 -234,9 +229,9 @@@
  
    }
  
+   @Test
    public void test5() throws Exception {
 -    // esnure switchNow() works w/ deepCopy()
 +    // ensure switchNow() works w/ deepCopy()
      TreeMap<Key,Value> tm1 = new TreeMap<>();
      put(tm1, "r1", "cf1", "cq1", 5, "v1");
      put(tm1, "r1", "cf1", "cq2", 5, "v2");
diff --cc core/src/test/java/org/apache/accumulo/core/iterators/user/CombinerTest.java
index b6a9b66,1e188cc..bfd320e
--- a/core/src/test/java/org/apache/accumulo/core/iterators/user/CombinerTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/iterators/user/CombinerTest.java
@@@ -895,11 -894,10 +895,10 @@@ public class CombinerTest 
  
      String logMsgs = writer.toString();
      if (expectedLog == null) {
-       Assert.assertEquals("Expected 0 length log message, but got : " + logMsgs, 0,
-           logMsgs.length());
 -      assertTrue("Expected 0 length log message, but got : " + logMsgs, logMsgs.length() == 0);
++      assertEquals("Expected 0 length log message, but got : " + logMsgs, 0, logMsgs.length());
      } else {
        logMsgs = logMsgs.replace('\n', ' ');
-       Assert.assertTrue("Did not match pattern [" + expectedLog + "] in [" + logMsgs + "]",
+       assertTrue("Did not match pattern [" + expectedLog + "] in [" + logMsgs + "]",
            logMsgs.matches(expectedLog));
      }
    }
@@@ -938,51 -936,4 +937,51 @@@
      runDeleteHandlingTest(input, expected, null, fullMajcIe,
          ".*ERROR.*SummingCombiner.*ACCUMULO-2232.*");
    }
 +
 +  /**
 +   * Tests the Lossy option will ignore errors in TypedValueCombiner. Uses SummingArrayCombiner to
 +   * generate error.
 +   */
 +  @Test
 +  public void testLossyOption() throws IOException, IllegalAccessException, InstantiationException {
 +    Encoder<List<Long>> encoder = new SummingArrayCombiner.VarLongArrayEncoder();
 +
 +    TreeMap<Key,Value> tm1 = new TreeMap<>();
 +
 +    // keys that aggregate
 +    tm1.put(newKey(1, 1, 1, 1, false), new Value("badValue"));
 +    newKeyValue(tm1, 1, 1, 1, 2, false, nal(3L, 4L, 5L), encoder);
 +    newKeyValue(tm1, 1, 1, 1, 3, false, nal(), encoder);
 +
 +    SummingArrayCombiner summingArrayCombiner = new SummingArrayCombiner();
 +    IteratorSetting iteratorSetting = new IteratorSetting(1, SummingArrayCombiner.class);
 +    SummingArrayCombiner.setEncodingType(iteratorSetting, SummingArrayCombiner.Type.VARLEN);
 +    Combiner.setColumns(iteratorSetting,
 +        Collections.singletonList(new IteratorSetting.Column("cf001")));
 +
 +    // lossy = true so ignore bad value
 +    TypedValueCombiner.setLossyness(iteratorSetting, true);
 +    assertTrue(summingArrayCombiner.validateOptions(iteratorSetting.getOptions()));
 +
 +    summingArrayCombiner.init(new SortedMapIterator(tm1), iteratorSetting.getOptions(), SCAN_IE);
 +    summingArrayCombiner.seek(new Range(), EMPTY_COL_FAMS, false);
 +
 +    assertTrue(summingArrayCombiner.hasTop());
 +    assertEquals(newKey(1, 1, 1, 3), summingArrayCombiner.getTopKey());
 +    assertBytesEqual(encoder.encode(nal(3L, 4L, 5L)), summingArrayCombiner.getTopValue().get());
 +
 +    summingArrayCombiner.next();
 +
 +    assertFalse(summingArrayCombiner.hasTop());
 +
 +    // lossy = false throw error for bad value
 +    TypedValueCombiner.setLossyness(iteratorSetting, false);
 +    assertTrue(summingArrayCombiner.validateOptions(iteratorSetting.getOptions()));
 +
 +    summingArrayCombiner.init(new SortedMapIterator(tm1), iteratorSetting.getOptions(), SCAN_IE);
 +    try {
 +      summingArrayCombiner.seek(new Range(), EMPTY_COL_FAMS, false);
-       Assert.fail("ValueFormatException should have been thrown");
++      fail("ValueFormatException should have been thrown");
 +    } catch (ValueFormatException e) {}
 +  }
  }
diff --cc core/src/test/java/org/apache/accumulo/core/iterators/user/IndexedDocIteratorTest.java
index b432976,141f63f..07eae0c
--- a/core/src/test/java/org/apache/accumulo/core/iterators/user/IndexedDocIteratorTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/iterators/user/IndexedDocIteratorTest.java
@@@ -16,8 -16,10 +16,11 @@@
   */
  package org.apache.accumulo.core.iterators.user;
  
+ import static org.junit.Assert.assertEquals;
+ import static org.junit.Assert.assertTrue;
+ 
  import java.io.IOException;
 +import java.security.SecureRandom;
  import java.util.ArrayList;
  import java.util.Collection;
  import java.util.HashSet;
diff --cc core/src/test/java/org/apache/accumulo/core/iterators/user/TransformingIteratorTest.java
index 297cd66,77a2a79..e2b3e07
--- a/core/src/test/java/org/apache/accumulo/core/iterators/user/TransformingIteratorTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/iterators/user/TransformingIteratorTest.java
@@@ -413,14 -411,14 +412,14 @@@ public class TransformingIteratorTest 
      opts.put(TransformingIterator.MAX_BUFFER_SIZE_OPT, "A,B");
      try {
        ti.validateOptions(opts);
-       Assert.fail();
 -      assertFalse(true);
++      fail();
      } catch (IllegalArgumentException e) {}
  
      opts.clear();
      opts.put(TransformingIterator.AUTH_OPT, Authorizations.HEADER + "~~~~");
      try {
        ti.validateOptions(opts);
-       Assert.fail();
 -      assertFalse(true);
++      fail();
      } catch (IllegalArgumentException e) {}
  
    }
diff --cc core/src/test/java/org/apache/accumulo/core/metadata/schema/LinkingIteratorTest.java
index a12297b,0000000..051f165
mode 100644,000000..100644
--- a/core/src/test/java/org/apache/accumulo/core/metadata/schema/LinkingIteratorTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/metadata/schema/LinkingIteratorTest.java
@@@ -1,112 -1,0 +1,112 @@@
 +/*
 + * 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.core.metadata.schema;
 +
 +import static org.apache.accumulo.core.metadata.schema.TabletMetadata.create;
++import static org.junit.Assert.assertEquals;
 +
 +import java.util.ArrayList;
 +import java.util.Arrays;
 +import java.util.Iterator;
 +import java.util.List;
 +import java.util.function.Function;
 +import java.util.stream.Stream;
 +
 +import org.apache.accumulo.core.data.Key;
 +import org.apache.accumulo.core.data.Range;
 +import org.apache.accumulo.core.data.impl.KeyExtent;
- import org.junit.Assert;
 +import org.junit.Test;
 +
 +import com.google.common.collect.Lists;
 +
 +public class LinkingIteratorTest {
 +
 +  private static class IterFactory implements Function<Range,Iterator<TabletMetadata>> {
 +    private int count;
 +    private List<TabletMetadata> initial;
 +    private List<TabletMetadata> subsequent;
 +
 +    IterFactory(List<TabletMetadata> initial, List<TabletMetadata> subsequent) {
 +      this.initial = initial;
 +      this.subsequent = subsequent;
 +      count = 0;
 +    }
 +
 +    @Override
 +    public Iterator<TabletMetadata> apply(Range range) {
 +      Stream<TabletMetadata> stream = count++ == 0 ? initial.stream() : subsequent.stream();
 +      return stream.filter(tm -> range.contains(new Key(tm.getExtent().getMetadataEntry())))
 +          .iterator();
 +    }
 +  }
 +
 +  private static void check(List<TabletMetadata> expected, IterFactory iterFactory) {
 +    List<KeyExtent> actual = new ArrayList<>();
 +    new LinkingIterator(iterFactory, new Range())
 +        .forEachRemaining(tm -> actual.add(tm.getExtent()));
-     Assert.assertEquals(Lists.transform(expected, TabletMetadata::getExtent), actual);
++    assertEquals(Lists.transform(expected, TabletMetadata::getExtent), actual);
 +  }
 +
 +  @Test
 +  public void testHole() {
 +
 +    List<TabletMetadata> tablets1 = Arrays.asList(create("4", null, "f"), create("4", "f", "m"),
 +        create("4", "r", "x"), create("4", "x", null));
 +    List<TabletMetadata> tablets2 = Arrays.asList(create("4", null, "f"), create("4", "f", "m"),
 +        create("4", "m", "r"), create("4", "r", "x"), create("4", "x", null));
 +
 +    check(tablets2, new IterFactory(tablets1, tablets2));
 +  }
 +
 +  @Test(expected = TabletDeletedException.class)
 +  public void testMerge() {
 +    // test for case when a tablet is merged away
 +    List<TabletMetadata> tablets1 = Arrays.asList(create("4", null, "f"), create("4", "f", "m"),
 +        create("4", "f", "r"), create("4", "x", null));
 +    List<TabletMetadata> tablets2 = Arrays.asList(create("4", null, "f"), create("4", "f", "r"),
 +        create("4", "r", "x"), create("4", "x", null));
 +
 +    LinkingIterator li = new LinkingIterator(new IterFactory(tablets1, tablets2), new Range());
 +
 +    while (li.hasNext()) {
 +      li.next();
 +    }
 +  }
 +
 +  @Test
 +  public void testBadTableTransition1() {
 +    // test when last tablet in table does not have null end row
 +    List<TabletMetadata> tablets1 = Arrays.asList(create("4", null, "f"), create("4", "f", "m"),
 +        create("5", null, null));
 +    List<TabletMetadata> tablets2 = Arrays.asList(create("4", null, "f"), create("4", "f", "m"),
 +        create("4", "m", null), create("5", null, null));
 +
 +    check(tablets2, new IterFactory(tablets1, tablets2));
 +  }
 +
 +  @Test
 +  public void testBadTableTransition2() {
 +    // test when first tablet in table does not have null prev end row
 +    List<TabletMetadata> tablets1 = Arrays.asList(create("4", null, "f"), create("4", "f", null),
 +        create("5", "h", null));
 +    List<TabletMetadata> tablets2 = Arrays.asList(create("4", null, "f"), create("4", "f", null),
 +        create("5", null, "h"), create("5", "h", null));
 +
 +    check(tablets2, new IterFactory(tablets1, tablets2));
 +  }
 +}
diff --cc core/src/test/java/org/apache/accumulo/core/replication/ReplicationConfigurationUtilTest.java
index 8f52fdd,5f88391..30a71e4
--- a/core/src/test/java/org/apache/accumulo/core/replication/ReplicationConfigurationUtilTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/replication/ReplicationConfigurationUtilTest.java
@@@ -59,28 -63,27 +61,27 @@@ public class ReplicationConfigurationUt
    @Test
    public void rootTableExtentEmptyConf() {
      KeyExtent extent = new KeyExtent(RootTable.ID, null, null);
-     Assert.assertFalse("The root table should never be replicated",
 -    assertFalse("The root table should never be replicated", ReplicationConfigurationUtil
 -        .isEnabled(extent, new ConfigurationCopy(new HashMap<String,String>())));
++    assertFalse("The root table should never be replicated",
 +        ReplicationConfigurationUtil.isEnabled(extent, new ConfigurationCopy(new HashMap<>())));
    }
  
    @Test
    public void metadataTableExtentEmptyConf() {
      KeyExtent extent = new KeyExtent(MetadataTable.ID, null, null);
-     Assert.assertFalse("The metadata table should never be replicated",
 -    assertFalse("The metadata table should never be replicated", ReplicationConfigurationUtil
 -        .isEnabled(extent, new ConfigurationCopy(new HashMap<String,String>())));
++    assertFalse("The metadata table should never be replicated",
 +        ReplicationConfigurationUtil.isEnabled(extent, new ConfigurationCopy(new HashMap<>())));
    }
  
    @Test
    public void regularTable() {
 -    KeyExtent extent = new KeyExtent("1", new Text("b"), new Text("a"));
 +    KeyExtent extent = new KeyExtent(Table.ID.of("1"), new Text("b"), new Text("a"));
-     Assert.assertTrue("Table should be replicated",
-         ReplicationConfigurationUtil.isEnabled(extent, conf));
+     assertTrue("Table should be replicated", ReplicationConfigurationUtil.isEnabled(extent, conf));
    }
  
    @Test
    public void regularNonEnabledTable() {
 -    KeyExtent extent = new KeyExtent("1", new Text("b"), new Text("a"));
 -    assertFalse("Table should not be replicated", ReplicationConfigurationUtil.isEnabled(extent,
 -        new ConfigurationCopy(new HashMap<String,String>())));
 +    KeyExtent extent = new KeyExtent(Table.ID.of("1"), new Text("b"), new Text("a"));
-     Assert.assertFalse("Table should not be replicated",
++    assertFalse("Table should not be replicated",
 +        ReplicationConfigurationUtil.isEnabled(extent, new ConfigurationCopy(new HashMap<>())));
    }
  }
diff --cc core/src/test/java/org/apache/accumulo/core/replication/ReplicationSchemaTest.java
index b665a5d,f7d6886..56fdf14
--- a/core/src/test/java/org/apache/accumulo/core/replication/ReplicationSchemaTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/replication/ReplicationSchemaTest.java
@@@ -16,7 -16,8 +16,9 @@@
   */
  package org.apache.accumulo.core.replication;
  
+ import static org.junit.Assert.assertEquals;
+ 
 +import org.apache.accumulo.core.client.impl.Table;
  import org.apache.accumulo.core.data.Key;
  import org.apache.accumulo.core.data.Mutation;
  import org.apache.accumulo.core.replication.ReplicationSchema.OrderSection;
@@@ -62,16 -62,16 +63,16 @@@ public class ReplicationSchemaTest 
  
    @Test
    public void extractTableId() {
 -    String tableId = "1";
 -    Key k = new Key(new Text("foo"), StatusSection.NAME, new Text(tableId));
 +    Table.ID tableId = Table.ID.of("1");
 +    Key k = new Key(new Text("foo"), StatusSection.NAME, new Text(tableId.getUtf8()));
-     Assert.assertEquals(tableId, StatusSection.getTableId(k));
+     assertEquals(tableId, StatusSection.getTableId(k));
    }
  
    @Test
    public void extractTableIdUsingText() {
 -    String tableId = "1";
 -    Key k = new Key(new Text("foo"), StatusSection.NAME, new Text(tableId));
 +    Table.ID tableId = Table.ID.of("1");
 +    Key k = new Key(new Text("foo"), StatusSection.NAME, new Text(tableId.getUtf8()));
-     Assert.assertEquals(tableId, StatusSection.getTableId(k));
+     assertEquals(tableId, StatusSection.getTableId(k));
    }
  
    @Test(expected = NullPointerException.class)
diff --cc core/src/test/java/org/apache/accumulo/core/replication/ReplicationTargetTest.java
index d1e66fe,df808f0..0290196
--- a/core/src/test/java/org/apache/accumulo/core/replication/ReplicationTargetTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/replication/ReplicationTargetTest.java
@@@ -16,24 -16,28 +16,26 @@@
   */
  package org.apache.accumulo.core.replication;
  
+ import static org.junit.Assert.assertEquals;
+ import static org.junit.Assert.assertNotEquals;
+ 
 +import org.apache.accumulo.core.client.impl.Table;
  import org.apache.hadoop.io.DataInputBuffer;
  import org.apache.hadoop.io.DataOutputBuffer;
  import org.apache.hadoop.io.Text;
- import org.junit.Assert;
  import org.junit.Test;
  
 -/**
 - *
 - */
  public class ReplicationTargetTest {
  
    @Test
    public void properEquality() {
 -    ReplicationTarget expected1 = new ReplicationTarget("foo", "bar", "1");
 +    ReplicationTarget expected1 = new ReplicationTarget("foo", "bar", Table.ID.of("1"));
  
-     Assert.assertEquals(expected1, new ReplicationTarget("foo", "bar", Table.ID.of("1")));
-     Assert.assertNotEquals(expected1, new ReplicationTarget("foo", "foo", Table.ID.of("1")));
-     Assert.assertNotEquals(expected1, new ReplicationTarget("bar", "bar", Table.ID.of("1")));
-     Assert.assertNotEquals(expected1, new ReplicationTarget(null, "bar", Table.ID.of("1")));
-     Assert.assertNotEquals(expected1, new ReplicationTarget("foo", null, Table.ID.of("1")));
 -    assertEquals(expected1, new ReplicationTarget("foo", "bar", "1"));
 -    assertNotEquals(expected1, new ReplicationTarget("foo", "foo", "1"));
 -    assertNotEquals(expected1, new ReplicationTarget("bar", "bar", "1"));
 -    assertNotEquals(expected1, new ReplicationTarget(null, "bar", "1"));
 -    assertNotEquals(expected1, new ReplicationTarget("foo", null, "1"));
++    assertEquals(expected1, new ReplicationTarget("foo", "bar", Table.ID.of("1")));
++    assertNotEquals(expected1, new ReplicationTarget("foo", "foo", Table.ID.of("1")));
++    assertNotEquals(expected1, new ReplicationTarget("bar", "bar", Table.ID.of("1")));
++    assertNotEquals(expected1, new ReplicationTarget(null, "bar", Table.ID.of("1")));
++    assertNotEquals(expected1, new ReplicationTarget("foo", null, Table.ID.of("1")));
    }
  
    @Test
diff --cc core/src/test/java/org/apache/accumulo/core/spi/scan/IdleRatioScanPrioritizerTest.java
index 38a4e0a,0000000..b1873ed
mode 100644,000000..100644
--- a/core/src/test/java/org/apache/accumulo/core/spi/scan/IdleRatioScanPrioritizerTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/spi/scan/IdleRatioScanPrioritizerTest.java
@@@ -1,61 -1,0 +1,62 @@@
 +/*
 + * 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.core.spi.scan;
 +
++import static org.junit.Assert.assertEquals;
++
 +import java.util.ArrayList;
 +import java.util.Collections;
 +import java.util.Comparator;
 +import java.util.List;
 +
 +import org.apache.accumulo.core.spi.scan.ScanInfo.Type;
- import org.junit.Assert;
 +import org.junit.Test;
 +
 +public class IdleRatioScanPrioritizerTest {
 +
 +  @Test
 +  public void testSort() {
 +    long now = System.currentTimeMillis();
 +
 +    List<TestScanInfo> scans = new ArrayList<>();
 +
 +    // Two following have never run, so oldest should go first
 +    scans.add(new TestScanInfo("a", Type.SINGLE, now - 3));
 +    scans.add(new TestScanInfo("b", Type.SINGLE, now - 8));
 +    // Two following have different idle ratio and same last run times
 +    scans.add(new TestScanInfo("c", Type.SINGLE, now - 16, 2, 10));
 +    scans.add(new TestScanInfo("d", Type.SINGLE, now - 16, 5, 10));
 +    // Two following have same idle ratio and different last run times
 +    scans.add(new TestScanInfo("e", Type.SINGLE, now - 12, 5, 9));
 +    scans.add(new TestScanInfo("f", Type.SINGLE, now - 12, 3, 7));
 +
 +    Collections.shuffle(scans);
 +
 +    Comparator<ScanInfo> comparator = new IdleRatioScanPrioritizer()
 +        .createComparator(Collections::emptyMap);
 +
 +    Collections.sort(scans, comparator);
 +
-     Assert.assertEquals("b", scans.get(0).testId);
-     Assert.assertEquals("a", scans.get(1).testId);
-     Assert.assertEquals("f", scans.get(2).testId);
-     Assert.assertEquals("e", scans.get(3).testId);
-     Assert.assertEquals("d", scans.get(4).testId);
-     Assert.assertEquals("c", scans.get(5).testId);
++    assertEquals("b", scans.get(0).testId);
++    assertEquals("a", scans.get(1).testId);
++    assertEquals("f", scans.get(2).testId);
++    assertEquals("e", scans.get(3).testId);
++    assertEquals("d", scans.get(4).testId);
++    assertEquals("c", scans.get(5).testId);
 +  }
 +}
diff --cc core/src/test/java/org/apache/accumulo/core/spi/scan/SimpleScanDispatcherTest.java
index 0a8c773,0000000..5f53cea
mode 100644,000000..100644
--- a/core/src/test/java/org/apache/accumulo/core/spi/scan/SimpleScanDispatcherTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/spi/scan/SimpleScanDispatcherTest.java
@@@ -1,128 -1,0 +1,130 @@@
 +/*
 + * 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.core.spi.scan;
 +
++import static org.junit.Assert.assertEquals;
++import static org.junit.Assert.assertTrue;
++
 +import java.util.Collections;
 +import java.util.HashMap;
 +import java.util.Map;
 +
 +import org.apache.accumulo.core.conf.Property;
 +import org.apache.accumulo.core.spi.scan.ScanDispatcher.DispatchParmaters;
 +import org.apache.accumulo.core.spi.scan.ScanInfo.Type;
- import org.junit.Assert;
 +import org.junit.Test;
 +
 +import com.google.common.collect.ImmutableMap;
 +
 +public class SimpleScanDispatcherTest {
 +  @Test
 +  public void testProps() {
-     Assert.assertTrue(Property.TSERV_SCAN_EXECUTORS_DEFAULT_THREADS.getKey()
++    assertTrue(Property.TSERV_SCAN_EXECUTORS_DEFAULT_THREADS.getKey()
 +        .endsWith(SimpleScanDispatcher.DEFAULT_SCAN_EXECUTOR_NAME + ".threads"));
-     Assert.assertTrue(Property.TSERV_SCAN_EXECUTORS_DEFAULT_PRIORITIZER.getKey()
++    assertTrue(Property.TSERV_SCAN_EXECUTORS_DEFAULT_PRIORITIZER.getKey()
 +        .endsWith(SimpleScanDispatcher.DEFAULT_SCAN_EXECUTOR_NAME + ".prioritizer"));
 +  }
 +
 +  private static class DispatchParametersImps implements DispatchParmaters {
 +
 +    private ScanInfo si;
 +    private Map<String,ScanExecutor> se;
 +
 +    DispatchParametersImps(ScanInfo si, Map<String,ScanExecutor> se) {
 +      this.si = si;
 +      this.se = se;
 +    }
 +
 +    @Override
 +    public ScanInfo getScanInfo() {
 +      return si;
 +    }
 +
 +    @Override
 +    public Map<String,ScanExecutor> getScanExecutors() {
 +      return se;
 +    }
 +
 +  }
 +
 +  private void runTest(Map<String,String> opts, Map<String,String> hints, String expectedSingle,
 +      String expectedMulti) {
 +    TestScanInfo msi = new TestScanInfo("a", Type.MULTI, 4);
 +    msi.executionHints = hints;
 +    TestScanInfo ssi = new TestScanInfo("a", Type.SINGLE, 4);
 +    ssi.executionHints = hints;
 +
 +    SimpleScanDispatcher ssd1 = new SimpleScanDispatcher();
 +
 +    ssd1.init(() -> opts);
 +
 +    Map<String,ScanExecutor> executors = new HashMap<>();
 +    executors.put("E1", null);
 +    executors.put("E2", null);
 +    executors.put("E3", null);
 +
-     Assert.assertEquals(expectedMulti, ssd1.dispatch(new DispatchParametersImps(msi, executors)));
-     Assert.assertEquals(expectedSingle, ssd1.dispatch(new DispatchParametersImps(ssi, executors)));
++    assertEquals(expectedMulti, ssd1.dispatch(new DispatchParametersImps(msi, executors)));
++    assertEquals(expectedSingle, ssd1.dispatch(new DispatchParametersImps(ssi, executors)));
 +  }
 +
 +  private void runTest(Map<String,String> opts, String expectedSingle, String expectedMulti) {
 +    runTest(opts, Collections.emptyMap(), expectedSingle, expectedMulti);
 +  }
 +
 +  @Test
 +  public void testBasic() {
 +    String dname = SimpleScanDispatcher.DEFAULT_SCAN_EXECUTOR_NAME;
 +
 +    runTest(Collections.emptyMap(), dname, dname);
 +    runTest(ImmutableMap.of("executor", "E1"), "E1", "E1");
 +    runTest(ImmutableMap.of("single_executor", "E2"), "E2", dname);
 +    runTest(ImmutableMap.of("multi_executor", "E3"), dname, "E3");
 +    runTest(ImmutableMap.of("executor", "E1", "single_executor", "E2"), "E2", "E1");
 +    runTest(ImmutableMap.of("executor", "E1", "multi_executor", "E3"), "E1", "E3");
 +    runTest(ImmutableMap.of("single_executor", "E2", "multi_executor", "E3"), "E2", "E3");
 +    runTest(ImmutableMap.of("executor", "E1", "single_executor", "E2", "multi_executor", "E3"),
 +        "E2", "E3");
 +  }
 +
 +  @Test
 +  public void testHints() {
 +    runTest(ImmutableMap.of("executor", "E1", "heed_hints", "true"), ImmutableMap.of(), "E1", "E1");
 +    runTest(ImmutableMap.of("executor", "E1", "heed_hints", "true"),
 +        ImmutableMap.of("executor", "E2"), "E2", "E2");
 +    runTest(ImmutableMap.of("executor", "E1", "heed_hints", "true"),
 +        ImmutableMap.of("executor", "E5"), "E1", "E1");
 +    runTest(ImmutableMap.of("executor", "E1", "heed_hints", "true", "ignored_hint_action", "fail"),
 +        ImmutableMap.of("executor", "E5"), "E1", "E1");
 +    runTest(ImmutableMap.of("executor", "E1", "heed_hints", "true", "bad_hint_action", "fail",
 +        "ignored_hint_action", "fail"), ImmutableMap.of("executor", "E2"), "E2", "E2");
 +    runTest(ImmutableMap.of("executor", "E1", "heed_hints", "false"),
 +        ImmutableMap.of("executor", "E2"), "E1", "E1");
 +    runTest(ImmutableMap.of("executor", "E1"), ImmutableMap.of("executor", "E2"), "E1", "E1");
 +  }
 +
 +  @Test(expected = IllegalArgumentException.class)
 +  public void testBadHint() {
 +    runTest(ImmutableMap.of("executor", "E1", "heed_hints", "true", "bad_hint_action", "fail"),
 +        ImmutableMap.of("executor", "E5"), "E2", "E2");
 +  }
 +
 +  @Test(expected = IllegalArgumentException.class)
 +  public void testIgnoredHint() {
 +    runTest(ImmutableMap.of("executor", "E1", "heed_hints", "false", "ignored_hint_action", "fail"),
 +        ImmutableMap.of("executor", "E2"), "E1", "E1");
 +  }
 +}
diff --cc core/src/test/java/org/apache/accumulo/core/summary/SummaryCollectionTest.java
index ae1dab5,0000000..3324f55
mode 100644,000000..100644
--- a/core/src/test/java/org/apache/accumulo/core/summary/SummaryCollectionTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/summary/SummaryCollectionTest.java
@@@ -1,72 -1,0 +1,73 @@@
 +/*
 + * 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.core.summary;
 +
++import static org.junit.Assert.assertEquals;
++
 +import java.util.Arrays;
 +import java.util.Collections;
 +import java.util.HashMap;
 +import java.util.List;
 +
 +import org.apache.accumulo.core.client.summary.SummarizerConfiguration;
 +import org.apache.accumulo.core.client.summary.Summary;
 +import org.apache.accumulo.core.client.summary.Summary.FileStatistics;
 +import org.apache.accumulo.core.client.summary.summarizers.FamilySummarizer;
 +import org.apache.accumulo.core.summary.SummaryCollection.FileSummary;
- import org.junit.Assert;
 +import org.junit.Test;
 +
 +public class SummaryCollectionTest {
 +  @Test
 +  public void testDeleted() {
 +    SummarizerConfiguration conf = SummarizerConfiguration.builder(FamilySummarizer.class).build();
 +
 +    HashMap<String,Long> stats = new HashMap<>();
 +    stats.put("c:foo", 9L);
 +    FileSummary fs1 = new FileSummary(conf, stats, false);
 +    SummaryCollection sc1 = new SummaryCollection(Collections.singleton(fs1));
 +
 +    stats = new HashMap<>();
 +    stats.put("c:foo", 5L);
 +    stats.put("c:bar", 3L);
 +    FileSummary fs2 = new FileSummary(conf, stats, true);
 +    SummaryCollection sc2 = new SummaryCollection(Collections.singleton(fs2));
 +
 +    SummaryCollection sc3 = new SummaryCollection(Collections.emptyList());
 +
 +    SummaryCollection sc4 = new SummaryCollection(Collections.emptyList(), true);
 +
 +    SummarizerFactory factory = new SummarizerFactory();
 +    SummaryCollection mergeSc = new SummaryCollection();
 +    for (SummaryCollection sc : Arrays.asList(sc1, sc2, sc3, sc4, sc4)) {
 +      mergeSc.merge(sc, factory);
 +    }
 +
 +    for (SummaryCollection sc : Arrays.asList(mergeSc, new SummaryCollection(mergeSc.toThrift()))) {
 +      List<Summary> summaries = sc.getSummaries();
-       Assert.assertEquals(1, summaries.size());
++      assertEquals(1, summaries.size());
 +      Summary summary = summaries.get(0);
 +      FileStatistics filestats = summary.getFileStatistics();
-       Assert.assertEquals(5, filestats.getTotal());
-       Assert.assertEquals(1, filestats.getExtra());
-       Assert.assertEquals(0, filestats.getLarge());
-       Assert.assertEquals(1, filestats.getMissing());
-       Assert.assertEquals(2, filestats.getDeleted());
-       Assert.assertEquals(4, filestats.getInaccurate());
++      assertEquals(5, filestats.getTotal());
++      assertEquals(1, filestats.getExtra());
++      assertEquals(0, filestats.getLarge());
++      assertEquals(1, filestats.getMissing());
++      assertEquals(2, filestats.getDeleted());
++      assertEquals(4, filestats.getInaccurate());
 +    }
 +  }
 +}
diff --cc core/src/test/java/org/apache/accumulo/core/util/CompletableFutureUtilTest.java
index f8826a2,0000000..2eaf7c5
mode 100644,000000..100644
--- a/core/src/test/java/org/apache/accumulo/core/util/CompletableFutureUtilTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/util/CompletableFutureUtilTest.java
@@@ -1,55 -1,0 +1,56 @@@
 +/*
 + * 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.core.util;
 +
++import static org.junit.Assert.assertEquals;
++
 +import java.util.ArrayList;
 +import java.util.Collections;
 +import java.util.List;
 +import java.util.concurrent.CompletableFuture;
 +import java.util.concurrent.ExecutorService;
 +import java.util.concurrent.Executors;
 +
- import org.junit.Assert;
 +import org.junit.Test;
 +
 +public class CompletableFutureUtilTest {
 +  @Test
 +  public void testMerge() throws Exception {
 +    ExecutorService es = Executors.newFixedThreadPool(3);
 +    try {
 +      for (int n : new int[] {1, 2, 3, 997, 1000}) {
 +        List<CompletableFuture<Integer>> futures = new ArrayList<>();
 +        for (int i = 1; i <= n; i++) {
 +          final int num = i;
 +          futures.add(CompletableFuture.supplyAsync(() -> num, es));
 +        }
 +
 +        CompletableFuture<Integer> mergedFutures = CompletableFutureUtil.merge(futures,
 +            Integer::sum, () -> 0);
-         Assert.assertEquals(n * (n + 1) / 2, mergedFutures.get().intValue());
++        assertEquals(n * (n + 1) / 2, mergedFutures.get().intValue());
 +      }
 +
 +      // test zero
 +      CompletableFuture<Integer> mergedFutures = CompletableFutureUtil
 +          .merge(Collections.emptyList(), Integer::sum, () -> 0);
-       Assert.assertEquals(0, mergedFutures.get().intValue());
++      assertEquals(0, mergedFutures.get().intValue());
 +    } finally {
 +      es.shutdown();
 +    }
 +  }
 +}
diff --cc core/src/test/java/org/apache/accumulo/core/util/TextUtilTest.java
index e562150,d0c1548..32200f1
--- a/core/src/test/java/org/apache/accumulo/core/util/TextUtilTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/util/TextUtilTest.java
@@@ -16,17 -16,18 +16,18 @@@
   */
  package org.apache.accumulo.core.util;
  
- import org.apache.hadoop.io.Text;
++import static org.junit.Assert.assertEquals;
+ import static org.junit.Assert.assertTrue;
  
- import junit.framework.TestCase;
+ import org.apache.hadoop.io.Text;
+ import org.junit.Test;
  
  /**
   * Test the TextUtil class.
 - *
   */
- public class TextUtilTest extends TestCase {
-   /**
-    * co
-    */
+ public class TextUtilTest {
+ 
+   @Test
    public void testGetBytes() {
      String longMessage = "This is some text";
      Text longMessageText = new Text(longMessage);
diff --cc core/src/test/java/org/apache/accumulo/fate/AgeOffStoreTest.java
index 6ad8098,0000000..5b97598
mode 100644,000000..100644
--- a/core/src/test/java/org/apache/accumulo/fate/AgeOffStoreTest.java
+++ b/core/src/test/java/org/apache/accumulo/fate/AgeOffStoreTest.java
@@@ -1,163 -1,0 +1,163 @@@
 +/*
 + * 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.fate;
 +
++import static org.junit.Assert.assertEquals;
++
 +import java.util.Arrays;
 +import java.util.HashSet;
 +
 +import org.apache.accumulo.fate.AgeOffStore.TimeSource;
 +import org.apache.accumulo.fate.ReadOnlyTStore.TStatus;
- import org.junit.Assert;
 +import org.junit.Test;
 +
 +public class AgeOffStoreTest {
 +
 +  private static class TestTimeSource implements TimeSource {
 +    long time = 0;
 +
 +    @Override
 +    public long currentTimeMillis() {
 +      return time;
 +    }
 +
 +  }
 +
 +  @Test
 +  public void testBasic() {
 +
 +    TestTimeSource tts = new TestTimeSource();
 +    SimpleStore<String> sstore = new SimpleStore<>();
 +    AgeOffStore<String> aoStore = new AgeOffStore<>(sstore, 10, tts);
 +
 +    aoStore.ageOff();
 +
 +    Long txid1 = aoStore.create();
 +    aoStore.reserve(txid1);
 +    aoStore.setStatus(txid1, TStatus.IN_PROGRESS);
 +    aoStore.unreserve(txid1, 0);
 +
 +    aoStore.ageOff();
 +
 +    Long txid2 = aoStore.create();
 +    aoStore.reserve(txid2);
 +    aoStore.setStatus(txid2, TStatus.IN_PROGRESS);
 +    aoStore.setStatus(txid2, TStatus.FAILED);
 +    aoStore.unreserve(txid2, 0);
 +
 +    tts.time = 6;
 +
 +    Long txid3 = aoStore.create();
 +    aoStore.reserve(txid3);
 +    aoStore.setStatus(txid3, TStatus.IN_PROGRESS);
 +    aoStore.setStatus(txid3, TStatus.SUCCESSFUL);
 +    aoStore.unreserve(txid3, 0);
 +
 +    Long txid4 = aoStore.create();
 +
 +    aoStore.ageOff();
 +
-     Assert.assertEquals(new HashSet<>(Arrays.asList(txid1, txid2, txid3, txid4)),
++    assertEquals(new HashSet<>(Arrays.asList(txid1, txid2, txid3, txid4)),
 +        new HashSet<>(aoStore.list()));
-     Assert.assertEquals(4, new HashSet<>(aoStore.list()).size());
++    assertEquals(4, new HashSet<>(aoStore.list()).size());
 +
 +    tts.time = 15;
 +
 +    aoStore.ageOff();
 +
-     Assert.assertEquals(new HashSet<>(Arrays.asList(txid1, txid3, txid4)),
-         new HashSet<>(aoStore.list()));
-     Assert.assertEquals(3, new HashSet<>(aoStore.list()).size());
++    assertEquals(new HashSet<>(Arrays.asList(txid1, txid3, txid4)), new HashSet<>(aoStore.list()));
++    assertEquals(3, new HashSet<>(aoStore.list()).size());
 +
 +    tts.time = 30;
 +
 +    aoStore.ageOff();
 +
-     Assert.assertEquals(new HashSet<>(Arrays.asList(txid1)), new HashSet<>(aoStore.list()));
-     Assert.assertEquals(1, new HashSet<>(aoStore.list()).size());
++    assertEquals(new HashSet<>(Arrays.asList(txid1)), new HashSet<>(aoStore.list()));
++    assertEquals(1, new HashSet<>(aoStore.list()).size());
 +  }
 +
 +  @Test
 +  public void testNonEmpty() {
 +    // test age off when source store starts off non empty
 +
 +    TestTimeSource tts = new TestTimeSource();
 +    SimpleStore<String> sstore = new SimpleStore<>();
 +    Long txid1 = sstore.create();
 +    sstore.reserve(txid1);
 +    sstore.setStatus(txid1, TStatus.IN_PROGRESS);
 +    sstore.unreserve(txid1, 0);
 +
 +    Long txid2 = sstore.create();
 +    sstore.reserve(txid2);
 +    sstore.setStatus(txid2, TStatus.IN_PROGRESS);
 +    sstore.setStatus(txid2, TStatus.FAILED);
 +    sstore.unreserve(txid2, 0);
 +
 +    Long txid3 = sstore.create();
 +    sstore.reserve(txid3);
 +    sstore.setStatus(txid3, TStatus.IN_PROGRESS);
 +    sstore.setStatus(txid3, TStatus.SUCCESSFUL);
 +    sstore.unreserve(txid3, 0);
 +
 +    Long txid4 = sstore.create();
 +
 +    AgeOffStore<String> aoStore = new AgeOffStore<>(sstore, 10, tts);
 +
-     Assert.assertEquals(new HashSet<>(Arrays.asList(txid1, txid2, txid3, txid4)),
++    assertEquals(new HashSet<>(Arrays.asList(txid1, txid2, txid3, txid4)),
 +        new HashSet<>(aoStore.list()));
-     Assert.assertEquals(4, new HashSet<>(aoStore.list()).size());
++    assertEquals(4, new HashSet<>(aoStore.list()).size());
 +
 +    aoStore.ageOff();
 +
-     Assert.assertEquals(new HashSet<>(Arrays.asList(txid1, txid2, txid3, txid4)),
++    assertEquals(new HashSet<>(Arrays.asList(txid1, txid2, txid3, txid4)),
 +        new HashSet<>(aoStore.list()));
-     Assert.assertEquals(4, new HashSet<>(aoStore.list()).size());
++    assertEquals(4, new HashSet<>(aoStore.list()).size());
 +
 +    tts.time = 15;
 +
 +    aoStore.ageOff();
 +
-     Assert.assertEquals(new HashSet<>(Arrays.asList(txid1)), new HashSet<>(aoStore.list()));
-     Assert.assertEquals(1, new HashSet<>(aoStore.list()).size());
++    assertEquals(new HashSet<>(Arrays.asList(txid1)), new HashSet<>(aoStore.list()));
++    assertEquals(1, new HashSet<>(aoStore.list()).size());
 +
 +    aoStore.reserve(txid1);
 +    aoStore.setStatus(txid1, TStatus.FAILED_IN_PROGRESS);
 +    aoStore.unreserve(txid1, 0);
 +
 +    tts.time = 30;
 +
 +    aoStore.ageOff();
 +
-     Assert.assertEquals(new HashSet<>(Arrays.asList(txid1)), new HashSet<>(aoStore.list()));
-     Assert.assertEquals(1, new HashSet<>(aoStore.list()).size());
++    assertEquals(new HashSet<>(Arrays.asList(txid1)), new HashSet<>(aoStore.list()));
++    assertEquals(1, new HashSet<>(aoStore.list()).size());
 +
 +    aoStore.reserve(txid1);
 +    aoStore.setStatus(txid1, TStatus.FAILED);
 +    aoStore.unreserve(txid1, 0);
 +
 +    aoStore.ageOff();
 +
-     Assert.assertEquals(new HashSet<>(Arrays.asList(txid1)), new HashSet<>(aoStore.list()));
-     Assert.assertEquals(1, new HashSet<>(aoStore.list()).size());
++    assertEquals(new HashSet<>(Arrays.asList(txid1)), new HashSet<>(aoStore.list()));
++    assertEquals(1, new HashSet<>(aoStore.list()).size());
 +
 +    tts.time = 42;
 +
 +    aoStore.ageOff();
 +
-     Assert.assertEquals(0, new HashSet<>(aoStore.list()).size());
++    assertEquals(0, new HashSet<>(aoStore.list()).size());
 +  }
 +}
diff --cc core/src/test/java/org/apache/accumulo/fate/ReadOnlyStoreTest.java
index 532fa41,0000000..fb31532
mode 100644,000000..100644
--- a/core/src/test/java/org/apache/accumulo/fate/ReadOnlyStoreTest.java
+++ b/core/src/test/java/org/apache/accumulo/fate/ReadOnlyStoreTest.java
@@@ -1,73 -1,0 +1,75 @@@
 +/*
 + * 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.fate;
 +
++import static org.junit.Assert.assertEquals;
++import static org.junit.Assert.assertFalse;
++
 +import java.util.Collections;
 +import java.util.EnumSet;
 +
 +import org.apache.accumulo.fate.ReadOnlyTStore.TStatus;
 +import org.easymock.EasyMock;
- import org.junit.Assert;
 +import org.junit.Test;
 +
 +/**
 + * Make sure read only decorate passes read methods.
 + */
 +public class ReadOnlyStoreTest {
 +
 +  @Test
 +  public void everythingPassesThrough() throws Exception {
 +    @SuppressWarnings("unchecked")
 +    Repo<String> repo = EasyMock.createMock(Repo.class);
 +    EasyMock.expect(repo.getDescription()).andReturn("description");
 +    EasyMock.expect(repo.isReady(0xdeadbeefL, null)).andReturn(0x0L);
 +
 +    @SuppressWarnings("unchecked")
 +    TStore<String> mock = EasyMock.createNiceMock(TStore.class);
 +    EasyMock.expect(mock.reserve()).andReturn(0xdeadbeefL);
 +    mock.reserve(0xdeadbeefL);
 +    EasyMock.expect(mock.top(0xdeadbeefL)).andReturn(repo);
 +    EasyMock.expect(mock.getStatus(0xdeadbeefL)).andReturn(TStatus.UNKNOWN);
 +    mock.unreserve(0xdeadbeefL, 30);
 +
 +    EasyMock.expect(mock.waitForStatusChange(0xdeadbeefL, EnumSet.allOf(TStatus.class)))
 +        .andReturn(TStatus.UNKNOWN);
 +    EasyMock.expect(mock.getProperty(0xdeadbeefL, "com.example.anyproperty")).andReturn("property");
 +    EasyMock.expect(mock.list()).andReturn(Collections.emptyList());
 +
 +    EasyMock.replay(repo);
 +    EasyMock.replay(mock);
 +
 +    ReadOnlyTStore<String> store = new ReadOnlyStore<>(mock);
-     Assert.assertEquals(0xdeadbeefL, store.reserve());
++    assertEquals(0xdeadbeefL, store.reserve());
 +    store.reserve(0xdeadbeefL);
 +    ReadOnlyRepo<String> top = store.top(0xdeadbeefL);
-     Assert.assertFalse(top instanceof Repo);
-     Assert.assertEquals("description", top.getDescription());
-     Assert.assertEquals(0x0L, top.isReady(0xdeadbeefL, null));
-     Assert.assertEquals(TStatus.UNKNOWN, store.getStatus(0xdeadbeefL));
++    assertFalse(top instanceof Repo);
++    assertEquals("description", top.getDescription());
++    assertEquals(0x0L, top.isReady(0xdeadbeefL, null));
++    assertEquals(TStatus.UNKNOWN, store.getStatus(0xdeadbeefL));
 +    store.unreserve(0xdeadbeefL, 30);
 +
-     Assert.assertEquals(TStatus.UNKNOWN,
++    assertEquals(TStatus.UNKNOWN,
 +        store.waitForStatusChange(0xdeadbeefL, EnumSet.allOf(TStatus.class)));
-     Assert.assertEquals("property", store.getProperty(0xdeadbeefL, "com.example.anyproperty"));
-     Assert.assertEquals(Collections.<Long> emptyList(), store.list());
++    assertEquals("property", store.getProperty(0xdeadbeefL, "com.example.anyproperty"));
++    assertEquals(Collections.<Long> emptyList(), store.list());
 +
 +    EasyMock.verify(repo);
 +    EasyMock.verify(mock);
 +  }
 +}
diff --cc core/src/test/java/org/apache/accumulo/fate/util/AddressUtilTest.java
index f611662,0000000..ae73693
mode 100644,000000..100644
--- a/core/src/test/java/org/apache/accumulo/fate/util/AddressUtilTest.java
+++ b/core/src/test/java/org/apache/accumulo/fate/util/AddressUtilTest.java
@@@ -1,100 -1,0 +1,104 @@@
 +/*
 + * 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.fate.util;
 +
++import static org.junit.Assert.assertEquals;
++import static org.junit.Assert.fail;
++
 +import java.security.Security;
 +
++import org.junit.Test;
 +import org.slf4j.Logger;
 +import org.slf4j.LoggerFactory;
 +
- import junit.framework.TestCase;
- 
 +/**
 + * Test the AddressUtil class.
 + */
- public class AddressUtilTest extends TestCase {
++public class AddressUtilTest {
 +
 +  private static final Logger log = LoggerFactory.getLogger(AddressUtilTest.class);
 +
++  @Test
 +  public void testGetNegativeTtl() {
 +    log.info("Checking that we can get the ttl on dns failures.");
 +    int expectedTtl = 20;
 +    boolean expectException = false;
 +    /* TODO ACCUMULO-2242 replace all of this with Powermock on the Security class */
 +    try {
 +      Security.setProperty("networkaddress.cache.negative.ttl", Integer.toString(expectedTtl));
 +    } catch (SecurityException exception) {
 +      log.warn(
 +          "We can't set the DNS cache period, so we're only testing fetching the system value.");
 +      expectedTtl = 10;
 +    }
 +    try {
 +      expectedTtl = Integer.parseInt(Security.getProperty("networkaddress.cache.negative.ttl"));
 +    } catch (SecurityException exception) {
 +      log.debug("Security manager won't let us fetch the property, testing default path.");
 +      expectedTtl = 10;
 +    } catch (NumberFormatException exception) {
 +      log.debug("property isn't a number, testing default path.");
 +      expectedTtl = 10;
 +    }
 +    if (-1 == expectedTtl) {
 +      log.debug("property is set to 'forever', testing exception path");
 +      expectException = true;
 +    }
 +    if (0 > expectedTtl) {
 +      log.debug("property is a negative value other than 'forever', testing default path.");
 +      expectedTtl = 10;
 +    }
 +    try {
 +      if (expectException) {
 +        log.info("AddressUtil is (hopefully) going to spit out an error about DNS lookups. "
 +            + "you can ignore it.");
 +      }
 +      int result = AddressUtil.getAddressCacheNegativeTtl(null);
 +      if (expectException) {
 +        fail("The JVM Security settings cache DNS failures forever. "
 +            + "In this case we expect an exception but didn't get one.");
 +      }
 +      assertEquals("Didn't get the ttl we expected", expectedTtl, result);
 +    } catch (IllegalArgumentException exception) {
 +      if (!expectException) {
 +        log.error("Got an exception when we weren't expecting.", exception);
 +        fail("We only expect to throw an IllegalArgumentException when the JVM "
 +            + "caches DNS failures forever.");
 +      }
 +    }
 +  }
 +
++  @Test
 +  public void testGetNegativeTtlThrowsOnForever() {
 +    log.info("When DNS is cached forever, we should throw.");
 +    /* TODO ACCUMULO-2242 replace all of this with Powermock on the Security class */
 +    try {
 +      Security.setProperty("networkaddress.cache.negative.ttl", "-1");
 +    } catch (SecurityException exception) {
 +      log.error("We can't set the DNS cache period, so this test is effectively ignored.");
 +      return;
 +    }
 +    try {
 +      log.info("AddressUtil is (hopefully) going to spit out an error about DNS lookups. "
 +          + "you can ignore it.");
 +      AddressUtil.getAddressCacheNegativeTtl(null);
 +      fail("The JVM Security settings cache DNS failures forever, this should cause an exception.");
 +    } catch (IllegalArgumentException exception) {
-       assertTrue(true);
++      // expected
 +    }
 +  }
 +}
diff --cc core/src/test/java/org/apache/accumulo/fate/zookeeper/TransactionWatcherTest.java
index e3f1970,0000000..44599dd
mode 100644,000000..100644
--- a/core/src/test/java/org/apache/accumulo/fate/zookeeper/TransactionWatcherTest.java
+++ b/core/src/test/java/org/apache/accumulo/fate/zookeeper/TransactionWatcherTest.java
@@@ -1,142 -1,0 +1,145 @@@
 +/*
 + * 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.fate.zookeeper;
 +
++import static org.junit.Assert.assertFalse;
++import static org.junit.Assert.assertTrue;
++import static org.junit.Assert.fail;
++
 +import java.util.ArrayList;
 +import java.util.HashMap;
 +import java.util.List;
 +import java.util.Map;
 +
- import org.junit.Assert;
 +import org.junit.Test;
 +
 +public class TransactionWatcherTest {
 +
 +  static class SimpleArbitrator implements TransactionWatcher.Arbitrator {
 +    Map<String,List<Long>> started = new HashMap<>();
 +    Map<String,List<Long>> cleanedUp = new HashMap<>();
 +
 +    public synchronized void start(String txType, Long txid) throws Exception {
 +      List<Long> txids = started.get(txType);
 +      if (txids == null)
 +        txids = new ArrayList<>();
 +      if (txids.contains(txid))
 +        throw new Exception("transaction already started");
 +      txids.add(txid);
 +      started.put(txType, txids);
 +
 +      txids = cleanedUp.get(txType);
 +      if (txids == null)
 +        txids = new ArrayList<>();
 +      if (txids.contains(txid))
 +        throw new IllegalStateException("transaction was started but not cleaned up");
 +      txids.add(txid);
 +      cleanedUp.put(txType, txids);
 +    }
 +
 +    public synchronized void stop(String txType, Long txid) throws Exception {
 +      List<Long> txids = started.get(txType);
 +      if (txids != null && txids.contains(txid)) {
 +        txids.remove(txids.indexOf(txid));
 +        return;
 +      }
 +      throw new Exception("transaction does not exist");
 +    }
 +
 +    public synchronized void cleanup(String txType, Long txid) throws Exception {
 +      List<Long> txids = cleanedUp.get(txType);
 +      if (txids != null && txids.contains(txid)) {
 +        txids.remove(txids.indexOf(txid));
 +        return;
 +      }
 +      throw new Exception("transaction does not exist");
 +    }
 +
 +    @Override
 +    synchronized public boolean transactionAlive(String txType, long tid) throws Exception {
 +      List<Long> txids = started.get(txType);
 +      if (txids == null)
 +        return false;
 +      return txids.contains(tid);
 +    }
 +
 +    @Override
 +    public boolean transactionComplete(String txType, long tid) throws Exception {
 +      List<Long> txids = cleanedUp.get(txType);
 +      if (txids == null)
 +        return true;
 +      return !txids.contains(tid);
 +    }
 +
 +  }
 +
 +  @Test
 +  public void testTransactionWatcher() throws Exception {
 +    final String txType = "someName";
 +    final long txid = 7;
 +    final SimpleArbitrator sa = new SimpleArbitrator();
 +    final TransactionWatcher txw = new TransactionWatcher(sa);
 +    sa.start(txType, txid);
 +    try {
 +      sa.start(txType, txid);
-       Assert.fail("simple arbitrator did not throw an exception");
++      fail("simple arbitrator did not throw an exception");
 +    } catch (Exception ex) {
 +      // expected
 +    }
 +    txw.isActive(txid);
-     Assert.assertFalse(txw.isActive(txid));
++    assertFalse(txw.isActive(txid));
 +    txw.run(txType, txid, () -> {
-       Assert.assertTrue(txw.isActive(txid));
++      assertTrue(txw.isActive(txid));
 +      return null;
 +    });
-     Assert.assertFalse(txw.isActive(txid));
-     Assert.assertFalse(sa.transactionComplete(txType, txid));
++    assertFalse(txw.isActive(txid));
++    assertFalse(sa.transactionComplete(txType, txid));
 +    sa.stop(txType, txid);
-     Assert.assertFalse(sa.transactionAlive(txType, txid));
-     Assert.assertFalse(sa.transactionComplete(txType, txid));
++    assertFalse(sa.transactionAlive(txType, txid));
++    assertFalse(sa.transactionComplete(txType, txid));
 +    sa.cleanup(txType, txid);
-     Assert.assertTrue(sa.transactionComplete(txType, txid));
++    assertTrue(sa.transactionComplete(txType, txid));
 +    try {
 +      txw.run(txType, txid, () -> {
-         Assert.fail("Should not be able to start a new work on a discontinued transaction");
++        fail("Should not be able to start a new work on a discontinued transaction");
 +        return null;
 +      });
-       Assert.fail("work against stopped transaction should fail");
++      fail("work against stopped transaction should fail");
 +    } catch (Exception ex) {
 +
 +    }
 +    final long txid2 = 9;
 +    sa.start(txType, txid2);
 +    txw.run(txType, txid2, () -> {
-       Assert.assertTrue(txw.isActive(txid2));
++      assertTrue(txw.isActive(txid2));
 +      sa.stop(txType, txid2);
 +      try {
 +        txw.run(txType, txid2, () -> {
-           Assert.fail("Should not be able to start a new work on a discontinued transaction");
++          fail("Should not be able to start a new work on a discontinued transaction");
 +          return null;
 +        });
-         Assert.fail("work against a stopped transaction should fail");
++        fail("work against a stopped transaction should fail");
 +      } catch (Exception ex) {
 +        // expected
 +      }
-       Assert.assertTrue(txw.isActive(txid2));
++      assertTrue(txw.isActive(txid2));
 +      return null;
 +    });
 +
 +  }
 +
 +}
diff --cc core/src/test/java/org/apache/accumulo/fate/zookeeper/ZooReaderWriterTest.java
index dfe514e,0000000..4d318f6
mode 100644,000000..100644
--- a/core/src/test/java/org/apache/accumulo/fate/zookeeper/ZooReaderWriterTest.java
+++ b/core/src/test/java/org/apache/accumulo/fate/zookeeper/ZooReaderWriterTest.java
@@@ -1,187 -1,0 +1,188 @@@
 +/*
 + * 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.fate.zookeeper;
 +
++import static org.junit.Assert.assertArrayEquals;
++
 +import java.lang.reflect.Method;
 +import java.util.Collections;
 +import java.util.List;
 +
 +import org.apache.accumulo.fate.util.Retry;
 +import org.apache.accumulo.fate.util.Retry.RetryFactory;
 +import org.apache.accumulo.fate.zookeeper.IZooReaderWriter.Mutator;
 +import org.apache.zookeeper.CreateMode;
 +import org.apache.zookeeper.KeeperException;
 +import org.apache.zookeeper.KeeperException.BadVersionException;
 +import org.apache.zookeeper.KeeperException.Code;
 +import org.apache.zookeeper.KeeperException.ConnectionLossException;
 +import org.apache.zookeeper.KeeperException.NoNodeException;
 +import org.apache.zookeeper.KeeperException.NodeExistsException;
 +import org.apache.zookeeper.KeeperException.SessionExpiredException;
 +import org.apache.zookeeper.ZooKeeper;
 +import org.apache.zookeeper.data.ACL;
 +import org.apache.zookeeper.data.Stat;
 +import org.easymock.EasyMock;
- import org.junit.Assert;
 +import org.junit.Before;
 +import org.junit.Test;
 +
 +public class ZooReaderWriterTest {
 +
 +  private ZooReaderWriter zrw;
 +  private ZooKeeper zk;
 +  private RetryFactory retryFactory;
 +  private Retry retry;
 +
 +  @Before
 +  public void setup() {
 +    zk = EasyMock.createMock(ZooKeeper.class);
 +    zrw = EasyMock.createMockBuilder(ZooReaderWriter.class)
 +        .addMockedMethods("getRetryFactory", "getZooKeeper").createMock();
 +    retryFactory = EasyMock.createMock(RetryFactory.class);
 +    retry = EasyMock.createMock(Retry.class);
 +
 +    EasyMock.expect(zrw.getZooKeeper()).andReturn(zk).anyTimes();
 +    EasyMock.expect(zrw.getRetryFactory()).andReturn(retryFactory).anyTimes();
 +    EasyMock.expect(retryFactory.createRetry()).andReturn(retry).anyTimes();
 +  }
 +
 +  @Test(expected = NoNodeException.class)
 +  public void testDeleteFailOnInitialNoNode() throws Exception {
 +    final String path = "/foo";
 +    final int version = -1;
 +
 +    zk.delete(path, version);
 +    EasyMock.expectLastCall().andThrow(KeeperException.create(Code.NONODE));
 +    EasyMock.expect(retry.hasRetried()).andReturn(false);
 +
 +    EasyMock.replay(zk, zrw, retryFactory, retry);
 +
 +    zrw.delete(path, version);
 +  }
 +
 +  @Test
 +  public void testDeleteFailOnRetry() throws Exception {
 +    final String path = "/foo";
 +    final int version = -1;
 +
 +    zk.delete(path, version);
 +    EasyMock.expectLastCall().andThrow(KeeperException.create(Code.CONNECTIONLOSS));
 +    EasyMock.expect(retry.canRetry()).andReturn(true);
 +    retry.useRetry();
 +    EasyMock.expectLastCall().once();
 +    retry.waitForNextAttempt();
 +    EasyMock.expectLastCall().once();
 +    zk.delete(path, version);
 +    EasyMock.expectLastCall().andThrow(KeeperException.create(Code.NONODE));
 +    EasyMock.expect(retry.hasRetried()).andReturn(true);
 +
 +    EasyMock.replay(zk, zrw, retryFactory, retry);
 +
 +    zrw.delete(path, version);
 +
 +    EasyMock.verify(zk, zrw, retryFactory, retry);
 +  }
 +
 +  @Test(expected = SessionExpiredException.class)
 +  public void testMutateNodeCreationFails() throws Exception {
 +    final String path = "/foo";
 +    final byte[] value = {0};
 +    final List<ACL> acls = Collections.emptyList();
 +    Mutator mutator = currentValue -> new byte[] {1};
 +
 +    zk.create(path, value, acls, CreateMode.PERSISTENT);
 +    EasyMock.expectLastCall().andThrow(new SessionExpiredException()).once();
 +    EasyMock.expect(retry.canRetry()).andReturn(false);
 +    EasyMock.expect(retry.retriesCompleted()).andReturn(1L).once();
 +
 +    EasyMock.replay(zk, zrw, retryFactory, retry);
 +
 +    zrw.mutate(path, value, acls, mutator);
 +  }
 +
 +  @Test
 +  public void testMutateWithBadVersion() throws Exception {
 +    final String path = "/foo";
 +    final byte[] value = {0};
 +    final List<ACL> acls = Collections.emptyList();
 +    final byte[] mutatedBytes = {1};
 +    Mutator mutator = currentValue -> mutatedBytes;
 +
 +    Method getDataMethod = ZooReaderWriter.class.getMethod("getData", String.class, boolean.class,
 +        Stat.class);
 +    zrw = EasyMock.createMockBuilder(ZooReaderWriter.class)
 +        .addMockedMethods("getRetryFactory", "getZooKeeper").addMockedMethod(getDataMethod)
 +        .createMock();
 +    EasyMock.expect(zrw.getRetryFactory()).andReturn(retryFactory).anyTimes();
 +    EasyMock.expect(zrw.getZooKeeper()).andReturn(zk).anyTimes();
 +
 +    Stat stat = new Stat();
 +
 +    zk.create(path, value, acls, CreateMode.PERSISTENT);
 +    EasyMock.expectLastCall().andThrow(new NodeExistsException()).once();
 +    EasyMock.expect(zrw.getData(path, false, stat)).andReturn(new byte[] {3}).times(2);
 +    // BadVersionException should retry
 +    EasyMock.expect(zk.setData(path, mutatedBytes, 0)).andThrow(new BadVersionException());
 +    // Let 2nd setData succeed
 +    EasyMock.expect(zk.setData(path, mutatedBytes, 0)).andReturn(null);
 +
 +    EasyMock.replay(zk, zrw, retryFactory, retry);
 +
-     Assert.assertArrayEquals(new byte[] {1}, zrw.mutate(path, value, acls, mutator));
++    assertArrayEquals(new byte[] {1}, zrw.mutate(path, value, acls, mutator));
 +
 +    EasyMock.verify(zk, zrw, retryFactory, retry);
 +  }
 +
 +  @Test
 +  public void testMutateWithRetryOnSetData() throws Exception {
 +    final String path = "/foo";
 +    final byte[] value = {0};
 +    final List<ACL> acls = Collections.emptyList();
 +    final byte[] mutatedBytes = {1};
 +    Mutator mutator = currentValue -> mutatedBytes;
 +
 +    Method getDataMethod = ZooReaderWriter.class.getMethod("getData", String.class, boolean.class,
 +        Stat.class);
 +    zrw = EasyMock.createMockBuilder(ZooReaderWriter.class)
 +        .addMockedMethods("getRetryFactory", "getZooKeeper").addMockedMethod(getDataMethod)
 +        .createMock();
 +    EasyMock.expect(zrw.getRetryFactory()).andReturn(retryFactory).anyTimes();
 +    EasyMock.expect(zrw.getZooKeeper()).andReturn(zk).anyTimes();
 +
 +    Stat stat = new Stat();
 +
 +    zk.create(path, value, acls, CreateMode.PERSISTENT);
 +    EasyMock.expectLastCall().andThrow(new NodeExistsException()).once();
 +    EasyMock.expect(zrw.getData(path, false, stat)).andReturn(new byte[] {3}).times(2);
 +    // BadVersionException should retry
 +    EasyMock.expect(zk.setData(path, mutatedBytes, 0)).andThrow(new ConnectionLossException());
 +
 +    EasyMock.expect(retry.canRetry()).andReturn(true);
 +    retry.useRetry();
 +    EasyMock.expectLastCall();
 +    retry.waitForNextAttempt();
 +    EasyMock.expectLastCall();
 +    // Let 2nd setData succeed
 +    EasyMock.expect(zk.setData(path, mutatedBytes, 0)).andReturn(null);
 +
 +    EasyMock.replay(zk, zrw, retryFactory, retry);
 +
-     Assert.assertArrayEquals(new byte[] {1}, zrw.mutate(path, value, acls, mutator));
++    assertArrayEquals(new byte[] {1}, zrw.mutate(path, value, acls, mutator));
 +
 +    EasyMock.verify(zk, zrw, retryFactory, retry);
 +  }
 +}
diff --cc minicluster/src/test/java/org/apache/accumulo/minicluster/MiniAccumuloClusterTest.java
index 5b5f828,04a8cbf..366294a
--- a/minicluster/src/test/java/org/apache/accumulo/minicluster/MiniAccumuloClusterTest.java
+++ b/minicluster/src/test/java/org/apache/accumulo/minicluster/MiniAccumuloClusterTest.java
@@@ -17,7 -17,9 +17,10 @@@
  package org.apache.accumulo.minicluster;
  
  import static org.junit.Assert.assertEquals;
+ import static org.junit.Assert.assertFalse;
+ import static org.junit.Assert.assertNotNull;
  import static org.junit.Assert.assertTrue;
++import static org.junit.Assert.fail;
  
  import java.io.File;
  import java.util.Collections;
@@@ -43,11 -45,10 +46,10 @@@ import org.apache.accumulo.core.securit
  import org.apache.accumulo.core.security.ColumnVisibility;
  import org.apache.accumulo.core.security.TablePermission;
  import org.apache.accumulo.core.util.Pair;
 +import org.apache.commons.configuration.PropertiesConfiguration;
  import org.apache.commons.io.FileUtils;
 -import org.apache.hadoop.conf.Configuration;
  import org.apache.hadoop.hdfs.DFSConfigKeys;
  import org.junit.AfterClass;
- import org.junit.Assert;
  import org.junit.BeforeClass;
  import org.junit.Rule;
  import org.junit.Test;
@@@ -129,13 -130,13 +131,13 @@@ public class MiniAccumuloClusterTest 
      Scanner scanner = uconn.createScanner("table1", new Authorizations("A"));
      for (Entry<Key,Value> entry : scanner) {
        if (entry.getKey().getColumnQualifierData().toString().equals("COUNT")) {
-         Assert.assertEquals("2", entry.getValue().toString());
+         assertEquals("2", entry.getValue().toString());
        } else if (entry.getKey().getColumnQualifierData().toString().equals("SIZE")) {
-         Assert.assertEquals("8", entry.getValue().toString());
+         assertEquals("8", entry.getValue().toString());
        } else if (entry.getKey().getColumnQualifierData().toString().equals("CRC")) {
-         Assert.assertEquals("123", entry.getValue().toString());
+         assertEquals("123", entry.getValue().toString());
        } else {
-         Assert.fail();
 -        assertTrue(false);
++        fail();
        }
        count++;
      }
@@@ -235,9 -236,9 +237,9 @@@
      for (Property randomPortProp : new Property[] {Property.TSERV_CLIENTPORT, Property.MONITOR_PORT,
          Property.MONITOR_LOG4J_PORT, Property.MASTER_CLIENTPORT, Property.TRACE_PORT,
          Property.GC_PORT}) {
 -      String value = conf.get(randomPortProp.getKey());
 +      String value = conf.getString(randomPortProp.getKey());
-       Assert.assertNotNull("Found no value for " + randomPortProp, value);
-       Assert.assertEquals("0", value);
+       assertNotNull("Found no value for " + randomPortProp, value);
+       assertEquals("0", value);
      }
    }
  
diff --cc minicluster/src/test/java/org/apache/accumulo/minicluster/impl/MiniAccumuloClusterImplTest.java
index ae3a7d3,27ba642..e179ebb
--- a/minicluster/src/test/java/org/apache/accumulo/minicluster/impl/MiniAccumuloClusterImplTest.java
+++ b/minicluster/src/test/java/org/apache/accumulo/minicluster/impl/MiniAccumuloClusterImplTest.java
@@@ -114,18 -111,18 +115,18 @@@ public class MiniAccumuloClusterImplTes
      }
      List<MasterState> validStates = Arrays.asList(MasterState.values());
      List<MasterGoalState> validGoals = Arrays.asList(MasterGoalState.values());
-     Assert.assertTrue("master state should be valid.", validStates.contains(stats.state));
-     Assert.assertTrue("master goal state should be in " + validGoals + ". is " + stats.goalState,
+     assertTrue("master state should be valid.", validStates.contains(stats.state));
+     assertTrue("master goal state should be in " + validGoals + ". is " + stats.goalState,
          validGoals.contains(stats.goalState));
-     Assert.assertNotNull("should have a table map.", stats.tableMap);
-     Assert.assertTrue("root table should exist in " + stats.tableMap.keySet(),
+     assertNotNull("should have a table map.", stats.tableMap);
+     assertTrue("root table should exist in " + stats.tableMap.keySet(),
 -        stats.tableMap.keySet().contains(RootTable.ID));
 +        stats.tableMap.keySet().contains(RootTable.ID.canonicalID()));
-     Assert.assertTrue("meta table should exist in " + stats.tableMap.keySet(),
+     assertTrue("meta table should exist in " + stats.tableMap.keySet(),
 -        stats.tableMap.keySet().contains(MetadataTable.ID));
 +        stats.tableMap.keySet().contains(MetadataTable.ID.canonicalID()));
-     Assert.assertTrue("our test table should exist in " + stats.tableMap.keySet(),
+     assertTrue("our test table should exist in " + stats.tableMap.keySet(),
          stats.tableMap.keySet().contains(testTableID));
-     Assert.assertNotNull("there should be tservers.", stats.tServerInfo);
-     Assert.assertEquals(NUM_TSERVERS, stats.tServerInfo.size());
+     assertNotNull("there should be tservers.", stats.tServerInfo);
+     assertEquals(NUM_TSERVERS, stats.tServerInfo.size());
    }
  
    @AfterClass
diff --cc server/base/src/test/java/org/apache/accumulo/server/ServerConstantsTest.java
index ecbde92,d4ea2cd..5b40a1c
--- a/server/base/src/test/java/org/apache/accumulo/server/ServerConstantsTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/ServerConstantsTest.java
@@@ -68,18 -68,18 +70,18 @@@ public class ServerConstantsTest 
    }
  
    private void verifyAllPass(ArrayList<String> paths) {
-     Assert.assertEquals(paths, Arrays.asList(
 -    assertEquals(paths, Arrays
 -        .asList(ServerConstants.checkBaseUris(paths.toArray(new String[paths.size()]), true)));
 -    assertEquals(paths, Arrays
 -        .asList(ServerConstants.checkBaseUris(paths.toArray(new String[paths.size()]), false)));
++    assertEquals(paths, Arrays.asList(
 +        ServerConstants.checkBaseUris(conf, paths.toArray(new String[paths.size()]), true)));
-     Assert.assertEquals(paths, Arrays.asList(
++    assertEquals(paths, Arrays.asList(
 +        ServerConstants.checkBaseUris(conf, paths.toArray(new String[paths.size()]), false)));
    }
  
    private void verifySomePass(ArrayList<String> paths, int numExpected) {
-     Assert.assertEquals(paths.subList(0, 2), Arrays.asList(
 -    assertEquals(paths.subList(0, 2), Arrays
 -        .asList(ServerConstants.checkBaseUris(paths.toArray(new String[paths.size()]), true)));
++    assertEquals(paths.subList(0, 2), Arrays.asList(
 +        ServerConstants.checkBaseUris(conf, paths.toArray(new String[paths.size()]), true)));
      try {
 -      ServerConstants.checkBaseUris(paths.toArray(new String[paths.size()]), false);
 +      ServerConstants.checkBaseUris(conf, paths.toArray(new String[paths.size()]), false);
-       Assert.fail();
+       fail();
      } catch (Exception e) {
        // ignored
      }
@@@ -87,15 -87,15 +89,15 @@@
  
    private void verifyError(ArrayList<String> paths) {
      try {
 -      ServerConstants.checkBaseUris(paths.toArray(new String[paths.size()]), true);
 +      ServerConstants.checkBaseUris(conf, paths.toArray(new String[paths.size()]), true);
-       Assert.fail();
+       fail();
      } catch (Exception e) {
        // ignored
      }
  
      try {
 -      ServerConstants.checkBaseUris(paths.toArray(new String[paths.size()]), false);
 +      ServerConstants.checkBaseUris(conf, paths.toArray(new String[paths.size()]), false);
-       Assert.fail();
+       fail();
      } catch (Exception e) {
        // ignored
      }
diff --cc server/base/src/test/java/org/apache/accumulo/server/ServerContextTest.java
index ffa7591,0000000..a0cdf1e
mode 100644,000000..100644
--- a/server/base/src/test/java/org/apache/accumulo/server/ServerContextTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/ServerContextTest.java
@@@ -1,118 -1,0 +1,119 @@@
 +/*
 + * 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.server;
 +
++import static org.junit.Assert.assertEquals;
++
 +import java.io.ByteArrayInputStream;
 +import java.io.ByteArrayOutputStream;
 +import java.io.DataInputStream;
 +import java.io.DataOutputStream;
 +import java.security.PrivilegedExceptionAction;
 +import java.util.Properties;
 +
 +import org.apache.accumulo.core.client.impl.ClientConfConverter;
 +import org.apache.accumulo.core.client.impl.Credentials;
 +import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 +import org.apache.accumulo.core.conf.AccumuloConfiguration;
 +import org.apache.accumulo.core.conf.ClientProperty;
 +import org.apache.accumulo.core.conf.Property;
 +import org.apache.accumulo.core.conf.SiteConfiguration;
 +import org.apache.accumulo.server.conf.ServerConfigurationFactory;
 +import org.apache.accumulo.server.rpc.SaslServerConnectionParams;
 +import org.apache.accumulo.server.rpc.ThriftServerType;
 +import org.apache.accumulo.server.security.SystemCredentials.SystemToken;
 +import org.apache.hadoop.conf.Configuration;
 +import org.apache.hadoop.fs.CommonConfigurationKeys;
 +import org.apache.hadoop.security.UserGroupInformation;
 +import org.easymock.EasyMock;
- import org.junit.Assert;
 +import org.junit.Before;
 +import org.junit.Test;
 +
 +public class ServerContextTest {
 +
 +  private UserGroupInformation testUser;
 +  private String username;
 +
 +  @Before
 +  public void setup() {
 +    System.setProperty("java.security.krb5.realm", "accumulo");
 +    System.setProperty("java.security.krb5.kdc", "fake");
 +    Configuration conf = new Configuration(false);
 +    conf.set(CommonConfigurationKeys.HADOOP_SECURITY_AUTHENTICATION, "kerberos");
 +    UserGroupInformation.setConfiguration(conf);
 +    testUser = UserGroupInformation.createUserForTesting("test_user", new String[0]);
 +    username = testUser.getUserName();
 +  }
 +
 +  @Test
 +  public void testSasl() throws Exception {
 +
 +    testUser.doAs((PrivilegedExceptionAction<Void>) () -> {
 +
 +      Properties clientProps = new Properties();
 +      clientProps.setProperty(ClientProperty.SASL_ENABLED.getKey(), "true");
 +      clientProps.setProperty(ClientProperty.SASL_KERBEROS_SERVER_PRIMARY.getKey(), "accumulo");
 +      final AccumuloConfiguration conf = ClientConfConverter.toAccumuloConf(clientProps);
 +      SiteConfiguration siteConfig = EasyMock.createMock(SiteConfiguration.class);
 +
 +      EasyMock.expect(siteConfig.getBoolean(Property.INSTANCE_RPC_SASL_ENABLED)).andReturn(true);
 +
 +      // Deal with SystemToken being private
 +      PasswordToken pw = new PasswordToken("fake");
 +      ByteArrayOutputStream baos = new ByteArrayOutputStream();
 +      pw.write(new DataOutputStream(baos));
 +      SystemToken token = new SystemToken();
 +      token.readFields(new DataInputStream(new ByteArrayInputStream(baos.toByteArray())));
 +
 +      ServerConfigurationFactory factory = EasyMock.createMock(ServerConfigurationFactory.class);
 +      EasyMock.expect(factory.getSystemConfiguration()).andReturn(conf).anyTimes();
 +      EasyMock.expect(factory.getSiteConfiguration()).andReturn(siteConfig).anyTimes();
 +
 +      ServerContext context = EasyMock.createMockBuilder(ServerContext.class)
 +          .addMockedMethod("enforceKerberosLogin").addMockedMethod("getConfiguration")
 +          .addMockedMethod("getServerConfFactory").addMockedMethod("getCredentials").createMock();
 +      context.enforceKerberosLogin();
 +      EasyMock.expectLastCall().anyTimes();
 +      EasyMock.expect(context.getConfiguration()).andReturn(conf).anyTimes();
 +      EasyMock.expect(context.getServerConfFactory()).andReturn(factory).anyTimes();
 +      EasyMock.expect(context.getCredentials())
 +          .andReturn(new Credentials("accumulo/hostname@FAKE.COM", token)).once();
 +
 +      // Just make the SiteConfiguration delegate to our ClientConfiguration (by way of the
 +      // AccumuloConfiguration)
 +      // Presently, we only need get(Property) and iterator().
 +      EasyMock.expect(siteConfig.get(EasyMock.anyObject(Property.class))).andAnswer(() -> {
 +        Object[] args = EasyMock.getCurrentArguments();
 +        return conf.get((Property) args[0]);
 +      }).anyTimes();
 +
 +      EasyMock.expect(siteConfig.iterator()).andAnswer(conf::iterator).anyTimes();
 +
 +      EasyMock.replay(factory, context, siteConfig);
 +
-       Assert.assertEquals(ThriftServerType.SASL, context.getThriftServerType());
++      assertEquals(ThriftServerType.SASL, context.getThriftServerType());
 +      SaslServerConnectionParams saslParams = context.getSaslParams();
-       Assert.assertEquals(new SaslServerConnectionParams(conf, token), saslParams);
-       Assert.assertEquals(username, saslParams.getPrincipal());
++      assertEquals(new SaslServerConnectionParams(conf, token), saslParams);
++      assertEquals(username, saslParams.getPrincipal());
 +
 +      EasyMock.verify(factory, context, siteConfig);
 +
 +      return null;
 +    });
 +  }
 +
 +}
diff --cc server/base/src/test/java/org/apache/accumulo/server/ServerOptsTest.java
index b1818a4,2c6889b..2ab0da0
--- a/server/base/src/test/java/org/apache/accumulo/server/ServerOptsTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/ServerOptsTest.java
@@@ -18,10 -18,6 +18,9 @@@ package org.apache.accumulo.server
  
  import static org.junit.Assert.assertEquals;
  
 +import org.apache.accumulo.core.conf.AccumuloConfiguration;
 +import org.apache.accumulo.core.conf.DefaultConfiguration;
 +import org.apache.accumulo.core.conf.Property;
- import org.junit.Assert;
  import org.junit.Before;
  import org.junit.Test;
  
@@@ -44,13 -40,4 +43,13 @@@ public class ServerOptsTest 
      opts.parseArgs(ServerOptsTest.class.getName(), new String[] {});
      assertEquals("0.0.0.0", opts.getAddress());
    }
 +
 +  @Test
 +  public void testOverrideConfig() {
 +    AccumuloConfiguration defaults = DefaultConfiguration.getInstance();
-     Assert.assertEquals("localhost:2181", defaults.get(Property.INSTANCE_ZK_HOST));
++    assertEquals("localhost:2181", defaults.get(Property.INSTANCE_ZK_HOST));
 +    opts.parseArgs(ServerOptsTest.class.getName(),
 +        new String[] {"-o", "instance.zookeeper.host=test:123"});
-     Assert.assertEquals("test:123", opts.getSiteConfiguration().get(Property.INSTANCE_ZK_HOST));
++    assertEquals("test:123", opts.getSiteConfiguration().get(Property.INSTANCE_ZK_HOST));
 +  }
  }
diff --cc server/base/src/test/java/org/apache/accumulo/server/client/BulkImporterTest.java
index 37cf168,b4618e4..c0fe523
--- a/server/base/src/test/java/org/apache/accumulo/server/client/BulkImporterTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/client/BulkImporterTest.java
@@@ -16,6 -16,8 +16,9 @@@
   */
  package org.apache.accumulo.server.client;
  
+ import static org.junit.Assert.assertEquals;
++import static org.junit.Assert.assertNull;
+ 
  import java.util.Collection;
  import java.util.Collections;
  import java.util.List;
@@@ -175,19 -176,19 +177,19 @@@ public class BulkImporterTest 
      // a correct startRow so that findOverlappingTablets works as intended.
  
      // 1;2;1
 -    KeyExtent extent = new KeyExtent("1", new Text("2"), new Text("1"));
 +    KeyExtent extent = new KeyExtent(Table.ID.of("1"), new Text("2"), new Text("1"));
-     Assert.assertEquals(new Text("1\0"), BulkImporter.getStartRowForExtent(extent));
+     assertEquals(new Text("1\0"), BulkImporter.getStartRowForExtent(extent));
  
      // 1;2<
 -    extent = new KeyExtent("1", new Text("2"), null);
 -    assertEquals(null, BulkImporter.getStartRowForExtent(extent));
 +    extent = new KeyExtent(Table.ID.of("1"), new Text("2"), null);
-     Assert.assertNull(BulkImporter.getStartRowForExtent(extent));
++    assertNull(BulkImporter.getStartRowForExtent(extent));
  
      // 1<<
 -    extent = new KeyExtent("1", null, null);
 -    assertEquals(null, BulkImporter.getStartRowForExtent(extent));
 +    extent = new KeyExtent(Table.ID.of("1"), null, null);
-     Assert.assertNull(BulkImporter.getStartRowForExtent(extent));
++    assertNull(BulkImporter.getStartRowForExtent(extent));
  
      // 1;8;7777777
 -    extent = new KeyExtent("1", new Text("8"), new Text("7777777"));
 +    extent = new KeyExtent(Table.ID.of("1"), new Text("8"), new Text("7777777"));
-     Assert.assertEquals(new Text("7777777\0"), BulkImporter.getStartRowForExtent(extent));
+     assertEquals(new Text("7777777\0"), BulkImporter.getStartRowForExtent(extent));
    }
  }
diff --cc server/base/src/test/java/org/apache/accumulo/server/fs/FileRefTest.java
index 66f26ab,8a49ea9..98cf535
--- a/server/base/src/test/java/org/apache/accumulo/server/fs/FileRefTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/fs/FileRefTest.java
@@@ -19,9 -25,11 +25,8 @@@ import static org.junit.Assert.fail
  import java.util.HashMap;
  
  import org.apache.hadoop.fs.Path;
- import org.junit.Assert;
  import org.junit.Test;
  
 -/**
 - *
 - */
  public class FileRefTest {
  
    private void testBadTableSuffix(String badPath) {
@@@ -92,25 -94,25 +91,25 @@@
  
    @Test
    public void testCompareTo() {
-     Assert.assertEquals(0, new FileRef("hdfs://1.2.3.4/accumulo/tables/2a/t-0003/C0004.rf")
 -    assertTrue(new FileRef("hdfs://1.2.3.4/accumulo/tables/2a/t-0003/C0004.rf")
 -        .compareTo(new FileRef("hdfs://1.2.3.4/accumulo/tables/2a/t-0003/C0004.rf")) == 0);
 -    assertTrue(new FileRef("hdfs://1.2.3.4/accumulo/tables/2a/t-0003/C0004.rf")
 -        .compareTo(new FileRef("hdfs://nn1/accumulo/tables/2a/t-0003/C0004.rf")) == 0);
 -    assertTrue(new FileRef("hdfs://1.2.3.4/accumulo/tables/2a/t-0003/C0004.rf")
 -        .compareTo(new FileRef("hdfs://nn1/accumulo/tables//2a/t-0003//C0004.rf")) == 0);
++    assertEquals(0, new FileRef("hdfs://1.2.3.4/accumulo/tables/2a/t-0003/C0004.rf")
 +        .compareTo(new FileRef("hdfs://1.2.3.4/accumulo/tables/2a/t-0003/C0004.rf")));
-     Assert.assertEquals(0, new FileRef("hdfs://1.2.3.4/accumulo/tables/2a/t-0003/C0004.rf")
++    assertEquals(0, new FileRef("hdfs://1.2.3.4/accumulo/tables/2a/t-0003/C0004.rf")
 +        .compareTo(new FileRef("hdfs://nn1/accumulo/tables/2a/t-0003/C0004.rf")));
-     Assert.assertEquals(0, new FileRef("hdfs://1.2.3.4/accumulo/tables/2a/t-0003/C0004.rf")
++    assertEquals(0, new FileRef("hdfs://1.2.3.4/accumulo/tables/2a/t-0003/C0004.rf")
 +        .compareTo(new FileRef("hdfs://nn1/accumulo/tables//2a/t-0003//C0004.rf")));
  
-     Assert.assertTrue(new FileRef("hdfs://1.2.3.4/accumulo/tables/2a/t-0003/C0004.rf")
+     assertTrue(new FileRef("hdfs://1.2.3.4/accumulo/tables/2a/t-0003/C0004.rf")
          .compareTo(new FileRef("hdfs://1.2.3.4/accumulo/tables/2a/t-0003/C0005.rf")) < 0);
-     Assert.assertTrue(new FileRef("hdfs://1.2.3.4/accumulo/tables/2a/t-0003/C0004.rf")
+     assertTrue(new FileRef("hdfs://1.2.3.4/accumulo/tables/2a/t-0003/C0004.rf")
          .compareTo(new FileRef("hdfs://nn1/accumulo/tables/2a/t-0003/C0005.rf")) < 0);
-     Assert.assertTrue(new FileRef("hdfs://1.2.3.4/accumulo/tables/2a/t-0003/C0004.rf")
+     assertTrue(new FileRef("hdfs://1.2.3.4/accumulo/tables/2a/t-0003/C0004.rf")
          .compareTo(new FileRef("hdfs://nn1/accumulo/tables//2a/t-0003//C0005.rf")) < 0);
  
-     Assert.assertTrue(new FileRef("hdfs://1.2.3.4/accumulo/tables/2a/t-0003/C0006.rf")
+     assertTrue(new FileRef("hdfs://1.2.3.4/accumulo/tables/2a/t-0003/C0006.rf")
          .compareTo(new FileRef("hdfs://1.2.3.4/accumulo/tables/2a/t-0003/C0005.rf")) > 0);
-     Assert.assertTrue(new FileRef("hdfs://1.2.3.4/accumulo/tables/2a/t-0003/C0006.rf")
+     assertTrue(new FileRef("hdfs://1.2.3.4/accumulo/tables/2a/t-0003/C0006.rf")
          .compareTo(new FileRef("hdfs://nn1/accumulo/tables/2a/t-0003/C0005.rf")) > 0);
-     Assert.assertTrue(new FileRef("hdfs://1.2.3.4/accumulo/tables/2a/t-0003/C0006.rf")
+     assertTrue(new FileRef("hdfs://1.2.3.4/accumulo/tables/2a/t-0003/C0006.rf")
          .compareTo(new FileRef("hdfs://nn1/accumulo/tables//2a/t-0003//C0005.rf")) > 0);
  
    }
diff --cc server/base/src/test/java/org/apache/accumulo/server/fs/FileTypeTest.java
index d9affc0,74af975..b6b671b
--- a/server/base/src/test/java/org/apache/accumulo/server/fs/FileTypeTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/fs/FileTypeTest.java
@@@ -16,11 -16,16 +16,13 @@@
   */
  package org.apache.accumulo.server.fs;
  
+ import static org.junit.Assert.assertEquals;
+ import static org.junit.Assert.assertNull;
+ 
  import org.apache.accumulo.server.fs.VolumeManager.FileType;
  import org.apache.hadoop.fs.Path;
- import org.junit.Assert;
  import org.junit.Test;
  
 -/**
 - *
 - */
  public class FileTypeTest {
    @Test
    public void testVolumeExtraction() {
diff --cc server/base/src/test/java/org/apache/accumulo/server/fs/ViewFSUtilsTest.java
index 3ae98c0,296a7f1..e8cff43
--- a/server/base/src/test/java/org/apache/accumulo/server/fs/ViewFSUtilsTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/fs/ViewFSUtilsTest.java
@@@ -22,9 -24,11 +24,8 @@@ import java.util.Collections
  
  import org.apache.hadoop.conf.Configuration;
  import org.apache.hadoop.fs.Path;
- import org.junit.Assert;
  import org.junit.Test;
  
 -/**
 - *
 - */
  public class ViewFSUtilsTest {
  
    private String[] shuffle(String... inputs) {
diff --cc server/base/src/test/java/org/apache/accumulo/server/fs/VolumeManagerImplTest.java
index e6484c0,18c0b26..556d583
--- a/server/base/src/test/java/org/apache/accumulo/server/fs/VolumeManagerImplTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/fs/VolumeManagerImplTest.java
@@@ -25,12 -27,14 +28,11 @@@ import org.apache.accumulo.core.conf.Pr
  import org.apache.accumulo.server.fs.VolumeManager.FileType;
  import org.apache.commons.lang.StringUtils;
  import org.apache.hadoop.fs.Path;
- import org.junit.Assert;
  import org.junit.Before;
 +import org.junit.Rule;
  import org.junit.Test;
 +import org.junit.rules.ExpectedException;
  
 -import com.google.common.base.Optional;
 -
 -/**
 - *
 - */
  public class VolumeManagerImplTest {
  
    protected VolumeManager fs;
@@@ -133,11 -116,8 +135,10 @@@
      conf.set(INSTANCE_DFS_URI, volumes.get(0));
      conf.set(Property.INSTANCE_VOLUMES, StringUtils.join(volumes, ","));
      conf.set(Property.GENERAL_VOLUME_CHOOSER, WrongVolumeChooser.class.getName());
 +    thrown.expect(RuntimeException.class);
      VolumeManager vm = VolumeManagerImpl.get(conf);
 -    String choice = vm.choose(Optional.of("sometable"), volumes.toArray(new String[0]));
 +    VolumeChooserEnvironment chooserEnv = new VolumeChooserEnvironment(Table.ID.of("sometable"));
 +    String choice = vm.choose(chooserEnv, volumes.toArray(new String[0]));
-     Assert.assertTrue("shouldn't see invalid options from misbehaving chooser.",
-         volumes.contains(choice));
+     assertTrue("shouldn't see invalid options from misbehaving chooser.", volumes.contains(choice));
    }
  }
diff --cc server/base/src/test/java/org/apache/accumulo/server/iterators/MetadataBulkLoadFilterTest.java
index 473a320,bf871ce..695409e
--- a/server/base/src/test/java/org/apache/accumulo/server/iterators/MetadataBulkLoadFilterTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/iterators/MetadataBulkLoadFilterTest.java
@@@ -31,12 -35,12 +33,11 @@@ import org.apache.accumulo.core.metadat
  import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.DataFileColumnFamily;
  import org.apache.accumulo.core.util.ColumnFQ;
  import org.apache.accumulo.fate.zookeeper.TransactionWatcher.Arbitrator;
 +import org.apache.accumulo.server.ServerContext;
  import org.apache.hadoop.io.Text;
 +import org.easymock.EasyMock;
- import org.junit.Assert;
  import org.junit.Test;
  
 -/**
 - *
 - */
  public class MetadataBulkLoadFilterTest {
    static class TestArbitrator implements Arbitrator {
      @Override
diff --cc server/base/src/test/java/org/apache/accumulo/server/master/balancer/GroupBalancerTest.java
index e07e796,0a2a4e2..e41c6ab
--- a/server/base/src/test/java/org/apache/accumulo/server/master/balancer/GroupBalancerTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/master/balancer/GroupBalancerTest.java
@@@ -17,7 -17,9 +17,10 @@@
  
  package org.apache.accumulo.server.master.balancer;
  
+ import static org.junit.Assert.assertEquals;
+ import static org.junit.Assert.assertTrue;
+ 
 +import java.security.SecureRandom;
  import java.util.ArrayList;
  import java.util.HashMap;
  import java.util.HashSet;
@@@ -38,9 -38,9 +41,8 @@@ import org.apache.accumulo.core.util.Pa
  import org.apache.accumulo.server.master.state.TServerInstance;
  import org.apache.accumulo.server.master.state.TabletMigration;
  import org.apache.hadoop.io.Text;
- import org.junit.Assert;
  import org.junit.Test;
  
 -import com.google.common.base.Function;
  import com.google.common.collect.Iterables;
  
  public class GroupBalancerTest {
diff --cc server/base/src/test/java/org/apache/accumulo/server/master/balancer/HostRegexTableLoadBalancerReconfigurationTest.java
index 20d5c34,aec9167..9e8d2e2
--- a/server/base/src/test/java/org/apache/accumulo/server/master/balancer/HostRegexTableLoadBalancerReconfigurationTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/master/balancer/HostRegexTableLoadBalancerReconfigurationTest.java
@@@ -16,8 -16,9 +16,11 @@@
   */
  package org.apache.accumulo.server.master.balancer;
  
 +import static org.easymock.EasyMock.expect;
 +import static org.easymock.EasyMock.replay;
+ import static org.junit.Assert.assertEquals;
+ import static org.junit.Assert.assertTrue;
+ import static org.junit.Assert.fail;
  
  import java.util.ArrayList;
  import java.util.Collections;
diff --cc server/base/src/test/java/org/apache/accumulo/server/master/balancer/HostRegexTableLoadBalancerTest.java
index 641db22,2760aec..55285b0
--- a/server/base/src/test/java/org/apache/accumulo/server/master/balancer/HostRegexTableLoadBalancerTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/master/balancer/HostRegexTableLoadBalancerTest.java
@@@ -16,8 -16,10 +16,12 @@@
   */
  package org.apache.accumulo.server.master.balancer;
  
 +import static org.easymock.EasyMock.expect;
 +import static org.easymock.EasyMock.replay;
+ import static org.junit.Assert.assertEquals;
+ import static org.junit.Assert.assertFalse;
+ import static org.junit.Assert.assertTrue;
+ import static org.junit.Assert.fail;
  
  import java.util.ArrayList;
  import java.util.Collections;
@@@ -49,50 -45,37 +53,46 @@@ import org.apache.accumulo.server.conf.
  import org.apache.accumulo.server.master.state.TServerInstance;
  import org.apache.accumulo.server.master.state.TabletMigration;
  import org.apache.thrift.TException;
- import org.junit.Assert;
  import org.junit.Test;
  
 -import com.google.common.base.Predicate;
 -
  public class HostRegexTableLoadBalancerTest extends BaseHostRegexTableLoadBalancerTest {
  
 +  public void init() {
 +    ServerContext context1 = createMockContext();
 +    replay(context1);
 +    final TestServerConfigurationFactory factory = new TestServerConfigurationFactory(context1);
 +    initFactory(factory);
 +  }
 +
 +  private void initFactory(ServerConfigurationFactory factory) {
 +    ServerContext context = createMockContext();
 +    expect(context.getServerConfFactory()).andReturn(factory).anyTimes();
 +    replay(context);
 +    init(context);
 +  }
 +
    @Test
    public void testInit() {
 -    init(factory);
 +    init();
-     Assert.assertEquals("OOB check interval value is incorrect", 7000, this.getOobCheckMillis());
-     Assert.assertEquals("Max migrations is incorrect", 4, this.getMaxMigrations());
-     Assert.assertEquals("Max outstanding migrations is incorrect", 10,
-         this.getMaxOutstandingMigrations());
-     Assert.assertFalse(isIpBasedRegex());
+     assertEquals("OOB check interval value is incorrect", 7000, this.getOobCheckMillis());
 -    @SuppressWarnings("deprecation")
 -    long poolRecheckMillis = this.getPoolRecheckMillis();
 -    assertEquals("Pool check interval value is incorrect", 0, poolRecheckMillis);
+     assertEquals("Max migrations is incorrect", 4, this.getMaxMigrations());
+     assertEquals("Max outstanding migrations is incorrect", 10, this.getMaxOutstandingMigrations());
+     assertFalse(isIpBasedRegex());
      Map<String,Pattern> patterns = this.getPoolNameToRegexPattern();
-     Assert.assertEquals(2, patterns.size());
-     Assert.assertTrue(patterns.containsKey(FOO.getTableName()));
-     Assert.assertEquals(Pattern.compile("r01.*").pattern(),
-         patterns.get(FOO.getTableName()).pattern());
-     Assert.assertTrue(patterns.containsKey(BAR.getTableName()));
-     Assert.assertEquals(Pattern.compile("r02.*").pattern(),
-         patterns.get(BAR.getTableName()).pattern());
+     assertEquals(2, patterns.size());
+     assertTrue(patterns.containsKey(FOO.getTableName()));
+     assertEquals(Pattern.compile("r01.*").pattern(), patterns.get(FOO.getTableName()).pattern());
+     assertTrue(patterns.containsKey(BAR.getTableName()));
+     assertEquals(Pattern.compile("r02.*").pattern(), patterns.get(BAR.getTableName()).pattern());
 -    Map<String,String> tids = this.getTableIdToTableName();
 +    Map<Table.ID,String> tids = this.getTableIdToTableName();
-     Assert.assertEquals(3, tids.size());
-     Assert.assertTrue(tids.containsKey(FOO.getId()));
-     Assert.assertEquals(FOO.getTableName(), tids.get(FOO.getId()));
-     Assert.assertTrue(tids.containsKey(BAR.getId()));
-     Assert.assertEquals(BAR.getTableName(), tids.get(BAR.getId()));
-     Assert.assertTrue(tids.containsKey(BAZ.getId()));
-     Assert.assertEquals(BAZ.getTableName(), tids.get(BAZ.getId()));
-     Assert.assertFalse(this.isIpBasedRegex());
+     assertEquals(3, tids.size());
+     assertTrue(tids.containsKey(FOO.getId()));
+     assertEquals(FOO.getTableName(), tids.get(FOO.getId()));
+     assertTrue(tids.containsKey(BAR.getId()));
+     assertEquals(BAR.getTableName(), tids.get(BAR.getId()));
+     assertTrue(tids.containsKey(BAZ.getId()));
+     assertEquals(BAZ.getTableName(), tids.get(BAZ.getId()));
 -    assertEquals(false, this.isIpBasedRegex());
++    assertFalse(this.isIpBasedRegex());
    }
  
    @Test
@@@ -158,34 -141,34 +158,34 @@@
  
    @Test
    public void testSplitCurrentByRegexUsingHostname() {
 -    init(factory);
 +    init();
      Map<String,SortedMap<TServerInstance,TabletServerStatus>> groups = this
          .splitCurrentByRegex(createCurrent(15));
-     Assert.assertEquals(3, groups.size());
-     Assert.assertTrue(groups.containsKey(FOO.getTableName()));
+     assertEquals(3, groups.size());
+     assertTrue(groups.containsKey(FOO.getTableName()));
      SortedMap<TServerInstance,TabletServerStatus> fooHosts = groups.get(FOO.getTableName());
-     Assert.assertEquals(5, fooHosts.size());
-     Assert.assertTrue(fooHosts.containsKey(new TServerInstance("192.168.0.1:9997", 1)));
-     Assert.assertTrue(fooHosts.containsKey(new TServerInstance("192.168.0.2:9997", 1)));
-     Assert.assertTrue(fooHosts.containsKey(new TServerInstance("192.168.0.3:9997", 1)));
-     Assert.assertTrue(fooHosts.containsKey(new TServerInstance("192.168.0.4:9997", 1)));
-     Assert.assertTrue(fooHosts.containsKey(new TServerInstance("192.168.0.5:9997", 1)));
-     Assert.assertTrue(groups.containsKey(BAR.getTableName()));
+     assertEquals(5, fooHosts.size());
+     assertTrue(fooHosts.containsKey(new TServerInstance("192.168.0.1:9997", 1)));
+     assertTrue(fooHosts.containsKey(new TServerInstance("192.168.0.2:9997", 1)));
+     assertTrue(fooHosts.containsKey(new TServerInstance("192.168.0.3:9997", 1)));
+     assertTrue(fooHosts.containsKey(new TServerInstance("192.168.0.4:9997", 1)));
+     assertTrue(fooHosts.containsKey(new TServerInstance("192.168.0.5:9997", 1)));
+     assertTrue(groups.containsKey(BAR.getTableName()));
      SortedMap<TServerInstance,TabletServerStatus> barHosts = groups.get(BAR.getTableName());
-     Assert.assertEquals(5, barHosts.size());
-     Assert.assertTrue(barHosts.containsKey(new TServerInstance("192.168.0.6:9997", 1)));
-     Assert.assertTrue(barHosts.containsKey(new TServerInstance("192.168.0.7:9997", 1)));
-     Assert.assertTrue(barHosts.containsKey(new TServerInstance("192.168.0.8:9997", 1)));
-     Assert.assertTrue(barHosts.containsKey(new TServerInstance("192.168.0.9:9997", 1)));
-     Assert.assertTrue(barHosts.containsKey(new TServerInstance("192.168.0.10:9997", 1)));
-     Assert.assertTrue(groups.containsKey(DEFAULT_POOL));
+     assertEquals(5, barHosts.size());
+     assertTrue(barHosts.containsKey(new TServerInstance("192.168.0.6:9997", 1)));
+     assertTrue(barHosts.containsKey(new TServerInstance("192.168.0.7:9997", 1)));
+     assertTrue(barHosts.containsKey(new TServerInstance("192.168.0.8:9997", 1)));
+     assertTrue(barHosts.containsKey(new TServerInstance("192.168.0.9:9997", 1)));
+     assertTrue(barHosts.containsKey(new TServerInstance("192.168.0.10:9997", 1)));
+     assertTrue(groups.containsKey(DEFAULT_POOL));
      SortedMap<TServerInstance,TabletServerStatus> defHosts = groups.get(DEFAULT_POOL);
-     Assert.assertEquals(5, defHosts.size());
-     Assert.assertTrue(defHosts.containsKey(new TServerInstance("192.168.0.11:9997", 1)));
-     Assert.assertTrue(defHosts.containsKey(new TServerInstance("192.168.0.12:9997", 1)));
-     Assert.assertTrue(defHosts.containsKey(new TServerInstance("192.168.0.13:9997", 1)));
-     Assert.assertTrue(defHosts.containsKey(new TServerInstance("192.168.0.14:9997", 1)));
-     Assert.assertTrue(defHosts.containsKey(new TServerInstance("192.168.0.15:9997", 1)));
+     assertEquals(5, defHosts.size());
+     assertTrue(defHosts.containsKey(new TServerInstance("192.168.0.11:9997", 1)));
+     assertTrue(defHosts.containsKey(new TServerInstance("192.168.0.12:9997", 1)));
+     assertTrue(defHosts.containsKey(new TServerInstance("192.168.0.13:9997", 1)));
+     assertTrue(defHosts.containsKey(new TServerInstance("192.168.0.14:9997", 1)));
+     assertTrue(defHosts.containsKey(new TServerInstance("192.168.0.15:9997", 1)));
    }
  
    @Test
diff --cc server/base/src/test/java/org/apache/accumulo/server/master/balancer/TableLoadBalancerTest.java
index 347b5fd,891991a..cd69236
--- a/server/base/src/test/java/org/apache/accumulo/server/master/balancer/TableLoadBalancerTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/master/balancer/TableLoadBalancerTest.java
@@@ -16,7 -16,7 +16,8 @@@
   */
  package org.apache.accumulo.server.master.balancer;
  
 +import static org.easymock.EasyMock.replay;
+ import static org.junit.Assert.assertEquals;
  
  import java.util.ArrayList;
  import java.util.Collections;
@@@ -184,9 -171,9 +184,9 @@@ public class TableLoadBalancerTest 
      Set<KeyExtent> migrations = Collections.emptySet();
      List<TabletMigration> migrationsOut = new ArrayList<>();
      TableLoadBalancer tls = new TableLoadBalancer();
 -    tls.init(confFactory);
 +    tls.init(context2);
      tls.balance(state, migrations, migrationsOut);
-     Assert.assertEquals(0, migrationsOut.size());
+     assertEquals(0, migrationsOut.size());
  
      state.put(mkts("10.0.0.2", "0x02030405"), status());
      tls = new TableLoadBalancer();
@@@ -200,12 -187,12 +200,12 @@@
      for (TabletMigration migration : migrationsOut) {
        if (migration.oldServer.equals(svr))
          count++;
 -      String key = migration.tablet.getTableId();
 +      Table.ID key = migration.tablet.getTableId();
        movedByTable.put(key, movedByTable.get(key) + 1);
      }
-     Assert.assertEquals(15, count);
+     assertEquals(15, count);
      for (Integer moved : movedByTable.values()) {
-       Assert.assertEquals(5, moved.intValue());
+       assertEquals(5, moved.intValue());
      }
    }
  
diff --cc server/base/src/test/java/org/apache/accumulo/server/replication/StatusCombinerTest.java
index f4a915d,bbfdcad..c3b9767
--- a/server/base/src/test/java/org/apache/accumulo/server/replication/StatusCombinerTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/replication/StatusCombinerTest.java
@@@ -16,6 -16,9 +16,11 @@@
   */
  package org.apache.accumulo.server.replication;
  
+ import static org.junit.Assert.assertEquals;
++import static org.junit.Assert.assertFalse;
++import static org.junit.Assert.assertSame;
+ import static org.junit.Assert.assertTrue;
+ 
  import java.io.IOException;
  import java.util.ArrayList;
  import java.util.Arrays;
@@@ -63,8 -65,8 +67,8 @@@ public class StatusCombinerTest 
      Status status = StatusUtil.ingestedUntil(10);
      // When combining only one message, we should get back the same instance
      Status ret = combiner.typedReduce(key, Collections.singleton(status).iterator());
-     Assert.assertEquals(status, ret);
-     Assert.assertSame(status, ret);
+     assertEquals(status, ret);
 -    assertTrue(status == ret);
++    assertSame(status, ret);
    }
  
    @Test
@@@ -72,10 -74,10 +76,10 @@@
      Status orig = StatusUtil.fileCreated(100);
      Status status = StatusUtil.replicatedAndIngested(10, 20);
      Status ret = combiner.typedReduce(key, Arrays.asList(orig, status).iterator());
-     Assert.assertEquals(10L, ret.getBegin());
-     Assert.assertEquals(20L, ret.getEnd());
-     Assert.assertEquals(100L, ret.getCreatedTime());
-     Assert.assertFalse(ret.getClosed());
 -    assertEquals(10l, ret.getBegin());
 -    assertEquals(20l, ret.getEnd());
 -    assertEquals(100l, ret.getCreatedTime());
 -    assertEquals(false, ret.getClosed());
++    assertEquals(10L, ret.getBegin());
++    assertEquals(20L, ret.getEnd());
++    assertEquals(100L, ret.getCreatedTime());
++    assertFalse(ret.getClosed());
    }
  
    @Test
@@@ -83,10 -85,10 +87,10 @@@
      Status orig = StatusUtil.fileCreated(100);
      Status status = StatusUtil.replicatedAndIngested(builder, 10, 20);
      Status ret = combiner.typedReduce(key, Arrays.asList(orig, status).iterator());
-     Assert.assertEquals(10L, ret.getBegin());
-     Assert.assertEquals(20L, ret.getEnd());
-     Assert.assertEquals(100L, ret.getCreatedTime());
-     Assert.assertFalse(ret.getClosed());
 -    assertEquals(10l, ret.getBegin());
 -    assertEquals(20l, ret.getEnd());
 -    assertEquals(100l, ret.getCreatedTime());
 -    assertEquals(false, ret.getClosed());
++    assertEquals(10L, ret.getBegin());
++    assertEquals(20L, ret.getEnd());
++    assertEquals(100L, ret.getCreatedTime());
++    assertFalse(ret.getClosed());
    }
  
    @Test
diff --cc server/base/src/test/java/org/apache/accumulo/server/replication/StatusUtilTest.java
index 5e24051,05f8cbb..14eeae7
--- a/server/base/src/test/java/org/apache/accumulo/server/replication/StatusUtilTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/replication/StatusUtilTest.java
@@@ -24,7 -26,7 +26,7 @@@ public class StatusUtilTest 
  
    @Test
    public void newFileIsNotCompletelyReplicated() {
-     Assert.assertFalse(StatusUtil.isSafeForRemoval(StatusUtil.fileCreated(0L)));
 -    assertFalse(StatusUtil.isSafeForRemoval(StatusUtil.fileCreated(0l)));
++    assertFalse(StatusUtil.isSafeForRemoval(StatusUtil.fileCreated(0L)));
    }
  
    @Test
diff --cc server/base/src/test/java/org/apache/accumulo/server/replication/proto/StatusTest.java
index 306f718,11b7d3b..0af2ac2
--- a/server/base/src/test/java/org/apache/accumulo/server/replication/proto/StatusTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/replication/proto/StatusTest.java
@@@ -16,18 -16,24 +16,21 @@@
   */
  package org.apache.accumulo.server.replication.proto;
  
 -import static org.junit.Assert.assertFalse;
++import static org.junit.Assert.assertNotEquals;
+ 
  import org.apache.accumulo.server.replication.proto.Replication.Status;
- import org.junit.Assert;
  import org.junit.Test;
  
 -/**
 - *
 - */
  public class StatusTest {
  
    @Test
    public void equality() {
-     Status replicated = Status.newBuilder().setBegin(Long.MAX_VALUE).setEnd(0).setInfiniteEnd(true).setClosed(false).build();
-     Status unreplicated = Status.newBuilder().setBegin(0).setEnd(0).setInfiniteEnd(true).setClosed(false).build();
+     Status replicated = Status.newBuilder().setBegin(Long.MAX_VALUE).setEnd(0).setInfiniteEnd(true)
+         .setClosed(false).build();
+     Status unreplicated = Status.newBuilder().setBegin(0).setEnd(0).setInfiniteEnd(true)
+         .setClosed(false).build();
  
-     Assert.assertNotEquals(replicated, unreplicated);
 -    assertFalse(replicated.equals(unreplicated));
++    assertNotEquals(replicated, unreplicated);
    }
  
  }
diff --cc server/base/src/test/java/org/apache/accumulo/server/security/handler/ZKAuthenticatorTest.java
index c0a6b5f,afda519..42c4b41
--- a/server/base/src/test/java/org/apache/accumulo/server/security/handler/ZKAuthenticatorTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/security/handler/ZKAuthenticatorTest.java
@@@ -16,6 -16,8 +16,10 @@@
   */
  package org.apache.accumulo.server.security.handler;
  
++import static org.junit.Assert.assertEquals;
+ import static org.junit.Assert.assertTrue;
++import static org.junit.Assert.fail;
+ 
  import java.util.Set;
  import java.util.TreeSet;
  
@@@ -27,19 -30,19 +32,19 @@@ import org.junit.Test
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
  
- import junit.framework.TestCase;
- 
- public class ZKAuthenticatorTest extends TestCase {
+ public class ZKAuthenticatorTest {
    private static final Logger log = LoggerFactory.getLogger(ZKAuthenticatorTest.class);
  
+   @Test
    public void testPermissionIdConversions() {
      for (SystemPermission s : SystemPermission.values())
 -      assertTrue(s.equals(SystemPermission.getPermissionById(s.getId())));
 +      assertEquals(s, SystemPermission.getPermissionById(s.getId()));
  
      for (TablePermission s : TablePermission.values())
 -      assertTrue(s.equals(TablePermission.getPermissionById(s.getId())));
 +      assertEquals(s, TablePermission.getPermissionById(s.getId()));
    }
  
+   @Test
    public void testAuthorizationConversion() {
      ByteArraySet auths = new ByteArraySet();
      for (int i = 0; i < 300; i += 3)
diff --cc server/base/src/test/java/org/apache/accumulo/server/util/FileUtilTest.java
index 68434ce,53313c8..fd1d312
--- a/server/base/src/test/java/org/apache/accumulo/server/util/FileUtilTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/util/FileUtilTest.java
@@@ -71,12 -74,13 +72,12 @@@ public class FileUtilTest 
      c.add(r2);
  
      Collection<String> cs = FileUtil.toPathStrings(c);
-     Assert.assertEquals(2, cs.size());
+     assertEquals(2, cs.size());
      Iterator<String> iter = cs.iterator();
-     Assert.assertEquals("/foo", iter.next());
-     Assert.assertEquals("/bar", iter.next());
+     assertEquals("/foo", iter.next());
+     assertEquals("/bar", iter.next());
    }
  
 -  @SuppressWarnings("deprecation")
    @Test
    public void testCleanupIndexOpWithDfsDir() throws IOException {
      // And a "unique" tmp directory for each volume
@@@ -89,9 -93,9 +90,9 @@@
  
      VolumeManager fs = VolumeManagerImpl.getLocal(accumuloDir.getAbsolutePath());
  
 -    FileUtil.cleanupIndexOp(tmpPath1, fs, new ArrayList<FileSKVIterator>());
 +    FileUtil.cleanupIndexOp(tmpPath1, fs, new ArrayList<>());
  
-     Assert.assertFalse("Expected " + tmp1 + " to be cleaned up but it wasn't", tmp1.exists());
+     assertFalse("Expected " + tmp1 + " to be cleaned up but it wasn't", tmp1.exists());
    }
  
    @Test
@@@ -115,13 -119,13 +116,13 @@@
  
      VolumeManager fs = VolumeManagerImpl.getLocal(accumuloDir.getAbsolutePath());
  
 -    FileUtil.cleanupIndexOp(tmpPath1, fs, new ArrayList<FileSKVIterator>());
 +    FileUtil.cleanupIndexOp(tmpPath1, fs, new ArrayList<>());
  
-     Assert.assertFalse("Expected " + tmp1 + " to be cleaned up but it wasn't", tmp1.exists());
+     assertFalse("Expected " + tmp1 + " to be cleaned up but it wasn't", tmp1.exists());
  
 -    FileUtil.cleanupIndexOp(tmpPath2, fs, new ArrayList<FileSKVIterator>());
 +    FileUtil.cleanupIndexOp(tmpPath2, fs, new ArrayList<>());
  
-     Assert.assertFalse("Expected " + tmp2 + " to be cleaned up but it wasn't", tmp2.exists());
+     assertFalse("Expected " + tmp2 + " to be cleaned up but it wasn't", tmp2.exists());
    }
  
    @Test
@@@ -148,13 -152,13 +149,13 @@@
  
      VolumeManager fs = VolumeManagerImpl.getLocal(accumuloDir.getAbsolutePath());
  
 -    FileUtil.cleanupIndexOp(tmpPath1, fs, new ArrayList<FileSKVIterator>());
 +    FileUtil.cleanupIndexOp(tmpPath1, fs, new ArrayList<>());
  
-     Assert.assertFalse("Expected " + tmp1 + " to be cleaned up but it wasn't", tmp1.exists());
+     assertFalse("Expected " + tmp1 + " to be cleaned up but it wasn't", tmp1.exists());
  
 -    FileUtil.cleanupIndexOp(tmpPath2, fs, new ArrayList<FileSKVIterator>());
 +    FileUtil.cleanupIndexOp(tmpPath2, fs, new ArrayList<>());
  
-     Assert.assertFalse("Expected " + tmp2 + " to be cleaned up but it wasn't", tmp2.exists());
+     assertFalse("Expected " + tmp2 + " to be cleaned up but it wasn't", tmp2.exists());
    }
  
    @Test
@@@ -175,13 -179,13 +176,13 @@@
  
      VolumeManager fs = VolumeManagerImpl.getLocal(accumuloDir.getAbsolutePath());
  
 -    FileUtil.cleanupIndexOp(tmpPath1, fs, new ArrayList<FileSKVIterator>());
 +    FileUtil.cleanupIndexOp(tmpPath1, fs, new ArrayList<>());
  
-     Assert.assertFalse("Expected " + tmp1 + " to be cleaned up but it wasn't", tmp1.exists());
+     assertFalse("Expected " + tmp1 + " to be cleaned up but it wasn't", tmp1.exists());
  
 -    FileUtil.cleanupIndexOp(tmpPath2, fs, new ArrayList<FileSKVIterator>());
 +    FileUtil.cleanupIndexOp(tmpPath2, fs, new ArrayList<>());
  
-     Assert.assertFalse("Expected " + tmp2 + " to be cleaned up but it wasn't", tmp2.exists());
+     assertFalse("Expected " + tmp2 + " to be cleaned up but it wasn't", tmp2.exists());
    }
  
    @Test
@@@ -205,12 -209,12 +206,12 @@@
  
      VolumeManager fs = VolumeManagerImpl.getLocal(accumuloDir.getAbsolutePath());
  
 -    FileUtil.cleanupIndexOp(tmpPath1, fs, new ArrayList<FileSKVIterator>());
 +    FileUtil.cleanupIndexOp(tmpPath1, fs, new ArrayList<>());
  
-     Assert.assertFalse("Expected " + tmp1 + " to be cleaned up but it wasn't", tmp1.exists());
+     assertFalse("Expected " + tmp1 + " to be cleaned up but it wasn't", tmp1.exists());
  
 -    FileUtil.cleanupIndexOp(tmpPath2, fs, new ArrayList<FileSKVIterator>());
 +    FileUtil.cleanupIndexOp(tmpPath2, fs, new ArrayList<>());
  
-     Assert.assertFalse("Expected " + tmp2 + " to be cleaned up but it wasn't", tmp2.exists());
+     assertFalse("Expected " + tmp2 + " to be cleaned up but it wasn't", tmp2.exists());
    }
  }
diff --cc server/base/src/test/java/org/apache/accumulo/server/util/ReplicationTableUtilTest.java
index 7deea7e,3a71e66..5624a2e
--- a/server/base/src/test/java/org/apache/accumulo/server/util/ReplicationTableUtilTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/util/ReplicationTableUtilTest.java
@@@ -55,7 -57,7 +57,6 @@@ import org.apache.accumulo.server.repli
  import org.apache.hadoop.fs.Path;
  import org.apache.hadoop.io.Text;
  import org.easymock.EasyMock;
- import org.junit.Assert;
 -import org.easymock.IAnswer;
  import org.junit.Test;
  
  public class ReplicationTableUtilTest {
@@@ -120,16 -125,15 +121,15 @@@
      Mutation m = ReplicationTableUtil.createUpdateMutation(filePath, ProtobufUtil.toValue(stat),
          extent);
  
-     Assert.assertEquals(new Text(MetadataSchema.ReplicationSection.getRowPrefix() + row),
+     assertEquals(new Text(MetadataSchema.ReplicationSection.getRowPrefix() + row),
          new Text(m.getRow()));
-     Assert.assertEquals(1, m.getUpdates().size());
+     assertEquals(1, m.getUpdates().size());
      ColumnUpdate col = m.getUpdates().get(0);
  
-     Assert.assertEquals(MetadataSchema.ReplicationSection.COLF, new Text(col.getColumnFamily()));
-     Assert.assertEquals(extent.getTableId().canonicalID(),
-         new Text(col.getColumnQualifier()).toString());
-     Assert.assertEquals(0, col.getColumnVisibility().length);
-     Assert.assertArrayEquals(stat.toByteArray(), col.getValue());
+     assertEquals(MetadataSchema.ReplicationSection.COLF, new Text(col.getColumnFamily()));
 -    assertEquals(extent.getTableId(), new Text(col.getColumnQualifier()).toString());
++    assertEquals(extent.getTableId().canonicalID(), new Text(col.getColumnQualifier()).toString());
+     assertEquals(0, col.getColumnVisibility().length);
+     assertArrayEquals(stat.toByteArray(), col.getValue());
    }
  
    @Test
diff --cc server/gc/src/test/java/org/apache/accumulo/gc/GarbageCollectionTest.java
index 6bedd68,56b4307..b6a0fab
--- a/server/gc/src/test/java/org/apache/accumulo/gc/GarbageCollectionTest.java
+++ b/server/gc/src/test/java/org/apache/accumulo/gc/GarbageCollectionTest.java
@@@ -31,12 -33,19 +34,11 @@@ import java.util.stream.Stream
  
  import org.apache.accumulo.core.client.AccumuloException;
  import org.apache.accumulo.core.client.AccumuloSecurityException;
 -import org.apache.accumulo.core.data.Key;
 -import org.apache.accumulo.core.data.Value;
 -import org.apache.accumulo.core.data.impl.KeyExtent;
 -import org.apache.accumulo.core.metadata.schema.DataFileValue;
 -import org.apache.accumulo.core.metadata.schema.MetadataSchema;
 +import org.apache.accumulo.core.client.impl.Table;
  import org.apache.accumulo.server.replication.StatusUtil;
  import org.apache.accumulo.server.replication.proto.Replication.Status;
- import org.junit.Assert;
 -import org.apache.hadoop.io.Text;
  import org.junit.Test;
  
 -/**
 - *
 - */
  public class GarbageCollectionTest {
    static class TestGCE implements GarbageCollectionEnvironment {
      TreeSet<String> candidates = new TreeSet<>();
@@@ -525,12 -557,12 +527,12 @@@
  
      gca.collect(gce);
  
 -    HashSet<String> tids = new HashSet<>();
 -    tids.add("5");
 -    tids.add("6");
 +    HashSet<Table.ID> tids = new HashSet<>();
 +    tids.add(Table.ID.of("5"));
 +    tids.add(Table.ID.of("6"));
  
-     Assert.assertEquals(tids.size(), gce.tablesDirsToDelete.size());
-     Assert.assertTrue(tids.containsAll(gce.tablesDirsToDelete));
+     assertEquals(tids.size(), gce.tablesDirsToDelete.size());
+     assertTrue(tids.containsAll(gce.tablesDirsToDelete));
  
    }
  
diff --cc server/master/src/test/java/org/apache/accumulo/master/replication/DistributedWorkQueueWorkAssignerHelperTest.java
index d418054,1b7ebc1..521bf8f
--- a/server/master/src/test/java/org/apache/accumulo/master/replication/DistributedWorkQueueWorkAssignerHelperTest.java
+++ b/server/master/src/test/java/org/apache/accumulo/master/replication/DistributedWorkQueueWorkAssignerHelperTest.java
@@@ -24,9 -25,11 +26,8 @@@ import org.apache.accumulo.core.replica
  import org.apache.accumulo.server.replication.DistributedWorkQueueWorkAssignerHelper;
  import org.apache.hadoop.fs.Path;
  import org.apache.zookeeper.common.PathUtils;
- import org.junit.Assert;
  import org.junit.Test;
  
 -/**
 - *
 - */
  public class DistributedWorkQueueWorkAssignerHelperTest {
  
    @Test
diff --cc server/master/src/test/java/org/apache/accumulo/master/replication/MasterReplicationCoordinatorTest.java
index 2dab269,c2d6e13..48d2eb8
--- a/server/master/src/test/java/org/apache/accumulo/master/replication/MasterReplicationCoordinatorTest.java
+++ b/server/master/src/test/java/org/apache/accumulo/master/replication/MasterReplicationCoordinatorTest.java
@@@ -24,16 -25,15 +26,15 @@@ import org.apache.accumulo.core.conf.De
  import org.apache.accumulo.core.util.HostAndPort;
  import org.apache.accumulo.fate.zookeeper.ZooReader;
  import org.apache.accumulo.master.Master;
 +import org.apache.accumulo.server.ServerContext;
  import org.apache.accumulo.server.master.state.TServerInstance;
  import org.easymock.EasyMock;
- import org.junit.Assert;
  import org.junit.Test;
  
 -/**
 - *
 - */
  public class MasterReplicationCoordinatorTest {
  
 +  static AccumuloConfiguration config = DefaultConfiguration.getInstance();
 +
    @Test
    public void randomServer() {
      Master master = EasyMock.createMock(Master.class);
diff --cc server/master/src/test/java/org/apache/accumulo/master/replication/SequentialWorkAssignerTest.java
index 2b580ed,0e48187..30bbfdb
--- a/server/master/src/test/java/org/apache/accumulo/master/replication/SequentialWorkAssignerTest.java
+++ b/server/master/src/test/java/org/apache/accumulo/master/replication/SequentialWorkAssignerTest.java
@@@ -89,12 -88,10 +89,12 @@@ public class SequentialWorkAssignerTes
  
      assigner.cleanupFinishedWork();
  
 -    verify(workQueue, zooCache, conn, inst);
 +    verify(workQueue, zooCache, conn);
  
-     Assert.assertEquals(1, cluster1Work.size());
-     Assert.assertEquals(
+     assertEquals(1, cluster1Work.size());
 -    assertEquals(DistributedWorkQueueWorkAssignerHelper.getQueueKey("file2",
 -        new ReplicationTarget("cluster1", "2", "2")), cluster1Work.get("2"));
++    assertEquals(
 +        DistributedWorkQueueWorkAssignerHelper.getQueueKey("file2",
 +            new ReplicationTarget("cluster1", "2", Table.ID.of("2"))),
 +        cluster1Work.get(Table.ID.of("2")));
    }
  }
diff --cc server/master/src/test/java/org/apache/accumulo/master/replication/UnorderedWorkAssignerTest.java
index 95337be,22a781a..6d9c765
--- a/server/master/src/test/java/org/apache/accumulo/master/replication/UnorderedWorkAssignerTest.java
+++ b/server/master/src/test/java/org/apache/accumulo/master/replication/UnorderedWorkAssignerTest.java
@@@ -122,8 -124,8 +122,8 @@@ public class UnorderedWorkAssignerTest 
  
      assigner.cleanupFinishedWork();
  
 -    verify(cache, inst, conn);
 +    verify(cache, conn);
-     Assert.assertTrue("Queued work was not emptied", queuedWork.isEmpty());
+     assertTrue("Queued work was not emptied", queuedWork.isEmpty());
    }
  
  }
diff --cc server/master/src/test/java/org/apache/accumulo/master/state/RootTabletStateStoreTest.java
index a473e2b,99441ce..54793c4
--- a/server/master/src/test/java/org/apache/accumulo/master/state/RootTabletStateStoreTest.java
+++ b/server/master/src/test/java/org/apache/accumulo/master/state/RootTabletStateStoreTest.java
@@@ -191,10 -189,10 +190,10 @@@ public class RootTabletStateStoreTest 
      }
      assertEquals(count, 1);
  
 -    KeyExtent notRoot = new KeyExtent("0", null, null);
 +    KeyExtent notRoot = new KeyExtent(Table.ID.of("0"), null, null);
      try {
        tstore.setLocations(Collections.singletonList(new Assignment(notRoot, server)));
-       Assert.fail("should not get here");
+       fail("should not get here");
      } catch (IllegalArgumentException ex) {}
  
      try {
diff --cc server/master/src/test/java/org/apache/accumulo/master/tableOps/ImportTableTest.java
index 2285e6c,5e0a32b..5f9f619
--- a/server/master/src/test/java/org/apache/accumulo/master/tableOps/ImportTableTest.java
+++ b/server/master/src/test/java/org/apache/accumulo/master/tableOps/ImportTableTest.java
@@@ -16,14 -16,18 +16,15 @@@
   */
  package org.apache.accumulo.master.tableOps;
  
+ import static org.junit.Assert.assertEquals;
+ 
 +import org.apache.accumulo.core.client.impl.Table;
  import org.apache.accumulo.master.Master;
 +import org.apache.accumulo.server.fs.VolumeChooserEnvironment;
  import org.apache.accumulo.server.fs.VolumeManager;
  import org.easymock.EasyMock;
- import org.junit.Assert;
  import org.junit.Test;
  
 -import com.google.common.base.Optional;
 -
 -/**
 - *
 - */
  public class ImportTableTest {
  
    @Test
diff --cc server/master/src/test/java/org/apache/accumulo/master/tableOps/bulkVer2/PrepBulkImportTest.java
index a5adbd9,0000000..d044171
mode 100644,000000..100644
--- a/server/master/src/test/java/org/apache/accumulo/master/tableOps/bulkVer2/PrepBulkImportTest.java
+++ b/server/master/src/test/java/org/apache/accumulo/master/tableOps/bulkVer2/PrepBulkImportTest.java
@@@ -1,181 -1,0 +1,183 @@@
 +/*
 + * 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.master.tableOps.bulkVer2;
 +
++import static org.junit.Assert.assertTrue;
++import static org.junit.Assert.fail;
++
 +import java.util.ArrayList;
 +import java.util.Arrays;
 +import java.util.Collection;
 +import java.util.Collections;
 +import java.util.HashSet;
 +import java.util.List;
 +import java.util.Set;
 +import java.util.stream.Collectors;
 +
 +import org.apache.accumulo.core.client.impl.AcceptableThriftTableOperationException;
 +import org.apache.accumulo.core.client.impl.Table;
 +import org.apache.accumulo.core.data.impl.KeyExtent;
 +import org.apache.accumulo.master.tableOps.bulkVer2.PrepBulkImport.TabletIterFactory;
 +import org.apache.hadoop.io.Text;
- import org.junit.Assert;
 +import org.junit.Test;
 +
 +import com.google.common.collect.ImmutableSet;
 +import com.google.common.collect.Iterables;
 +import com.google.common.collect.Sets;
 +
 +public class PrepBulkImportTest {
 +
 +  KeyExtent nke(String prev, String end) {
 +    Text per = prev == null ? null : new Text(prev);
 +    Text er = end == null ? null : new Text(end);
 +
 +    return new KeyExtent(Table.ID.of("1"), er, per);
 +  }
 +
 +  List<KeyExtent> createExtents(Iterable<String> rowsIter) {
 +    List<KeyExtent> extents = new ArrayList<>();
 +
 +    List<String> rows = new ArrayList<>();
 +    rowsIter.forEach(rows::add);
 +
 +    Collections.sort(rows);
 +    for (int i = 0; i < rows.size(); i++) {
 +      extents.add(nke(i == 0 ? null : rows.get(i - 1), rows.get(i)));
 +
 +    }
 +
 +    extents.add(nke(rows.size() == 0 ? null : rows.get(rows.size() - 1), null));
 +
 +    return extents;
 +  }
 +
 +  Iterable<List<KeyExtent>> powerSet(KeyExtent... extents) {
 +    Set<Set<KeyExtent>> powerSet = Sets.powerSet(ImmutableSet.copyOf(extents));
 +
 +    return Iterables.transform(powerSet, set -> {
 +      List<KeyExtent> list = new ArrayList<>(set);
 +
 +      Collections.sort(list);
 +
 +      return list;
 +    });
 +  }
 +
 +  public void runTest(List<KeyExtent> loadRanges, List<KeyExtent> tabletRanges) throws Exception {
 +    TabletIterFactory tabletIterFactory = startRow -> {
 +      int start = -1;
 +
 +      if (startRow == null) {
 +        start = 0;
 +      } else {
 +        for (int i = 0; i < tabletRanges.size(); i++) {
 +          if (tabletRanges.get(i).contains(startRow)) {
 +            start = i;
 +            break;
 +          }
 +        }
 +      }
 +
 +      return tabletRanges.subList(start, tabletRanges.size()).iterator();
 +    };
 +
 +    PrepBulkImport.checkForMerge("1", loadRanges.iterator(), tabletIterFactory);
 +  }
 +
 +  static String toRangeStrings(Collection<KeyExtent> extents) {
 +    return extents.stream().map(ke -> "(" + ke.getPrevEndRow() + "," + ke.getEndRow() + "]")
 +        .collect(Collectors.joining(","));
 +  }
 +
 +  public void runExceptionTest(List<KeyExtent> loadRanges, List<KeyExtent> tabletRanges) {
 +    try {
 +      runTest(loadRanges, tabletRanges);
-       Assert.fail("expected " + toRangeStrings(loadRanges) + " to fail against "
++      fail("expected " + toRangeStrings(loadRanges) + " to fail against "
 +          + toRangeStrings(tabletRanges));
 +    } catch (Exception e) {
-       Assert.assertTrue(e instanceof AcceptableThriftTableOperationException);
++      assertTrue(e instanceof AcceptableThriftTableOperationException);
 +    }
 +  }
 +
 +  @Test
 +  public void testSingleTablet() throws Exception {
 +    runTest(Arrays.asList(nke(null, null)), Arrays.asList(nke(null, null)));
 +
 +    for (List<KeyExtent> loadRanges : powerSet(nke(null, "b"), nke("b", "k"), nke("k", "r"),
 +        nke("r", null))) {
 +      if (loadRanges.isEmpty()) {
 +        continue;
 +      }
 +      runExceptionTest(loadRanges, Arrays.asList(nke(null, null)));
 +    }
 +  }
 +
 +  @Test
 +  public void testNominal() throws Exception {
 +
 +    for (List<KeyExtent> loadRanges : powerSet(nke(null, "b"), nke("b", "m"), nke("m", "r"),
 +        nke("r", "v"), nke("v", null))) {
 +
 +      if (loadRanges.isEmpty()) {
 +        loadRanges = Arrays.asList(nke(null, null));
 +      }
 +
 +      List<String> requiredRows = Arrays.asList("b", "m", "r", "v");
 +      for (Set<String> otherRows : Sets.powerSet(ImmutableSet.of("a", "c", "q", "t", "x"))) {
 +        runTest(loadRanges, createExtents(Iterables.concat(requiredRows, otherRows)));
 +      }
 +    }
 +  }
 +
 +  @Test
 +  public void testException() {
 +    for (List<KeyExtent> loadRanges : powerSet(nke(null, "b"), nke("b", "m"), nke("m", "r"),
 +        nke("r", "v"), nke("v", null))) {
 +
 +      if (loadRanges.isEmpty()) {
 +        continue;
 +      }
 +
 +      Set<String> rows = new HashSet<>();
 +      for (KeyExtent ke : loadRanges) {
 +        if (ke.getPrevEndRow() != null) {
 +          rows.add(ke.getPrevEndRow().toString());
 +        }
 +        if (ke.getEndRow() != null) {
 +          rows.add(ke.getEndRow().toString());
 +        }
 +      }
 +
 +      for (String row : rows) {
 +        Set<String> rows2 = new HashSet<>(rows);
 +        rows2.remove(row);
 +        // test will all but one of the rows in the load mapping
 +        for (Set<String> otherRows : Sets.powerSet(ImmutableSet.of("a", "c", "q", "t", "x"))) {
 +          runExceptionTest(loadRanges, createExtents(Iterables.concat(rows2, otherRows)));
 +        }
 +      }
 +
 +      if (rows.size() > 1) {
 +        // test with none of the rows in the load mapping
 +        for (Set<String> otherRows : Sets.powerSet(ImmutableSet.of("a", "c", "q", "t", "x"))) {
 +          runExceptionTest(loadRanges, createExtents(otherRows));
 +        }
 +      }
 +    }
 +
 +  }
 +}
diff --cc server/monitor/src/test/java/org/apache/accumulo/monitor/ShowTraceLinkTypeTest.java
index 2b52853,e3190a5..8a83652
--- a/server/monitor/src/test/java/org/apache/accumulo/monitor/ShowTraceLinkTypeTest.java
+++ b/server/monitor/src/test/java/org/apache/accumulo/monitor/ShowTraceLinkTypeTest.java
@@@ -19,8 -21,8 +21,7 @@@ import static org.junit.Assert.assertEq
  import java.util.ArrayList;
  import java.util.Collections;
  
 -import org.apache.accumulo.tracer.thrift.Annotation;
  import org.apache.accumulo.tracer.thrift.RemoteSpan;
- import org.junit.Assert;
  import org.junit.Test;
  
  public class ShowTraceLinkTypeTest {
diff --cc server/monitor/src/test/java/org/apache/accumulo/monitor/it/WebViewsIT.java
index 52fd431,0000000..e3d7c55
mode 100644,000000..100644
--- a/server/monitor/src/test/java/org/apache/accumulo/monitor/it/WebViewsIT.java
+++ b/server/monitor/src/test/java/org/apache/accumulo/monitor/it/WebViewsIT.java
@@@ -1,164 -1,0 +1,165 @@@
 +/*
 + * 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.monitor.it;
 +
 +import static org.easymock.EasyMock.expect;
 +import static org.easymock.EasyMock.verify;
++import static org.junit.Assert.assertEquals;
++import static org.junit.Assert.assertTrue;
 +
 +import java.io.IOException;
 +import java.io.OutputStream;
 +import java.lang.annotation.Annotation;
 +import java.lang.reflect.Type;
 +import java.util.HashMap;
 +
 +import javax.ws.rs.WebApplicationException;
 +import javax.ws.rs.core.Application;
 +import javax.ws.rs.core.MediaType;
 +import javax.ws.rs.core.MultivaluedMap;
 +import javax.ws.rs.core.Response;
 +import javax.ws.rs.ext.MessageBodyWriter;
 +
 +import org.apache.accumulo.core.client.impl.Table;
 +import org.apache.accumulo.core.client.impl.Tables;
 +import org.apache.accumulo.core.conf.DefaultConfiguration;
 +import org.apache.accumulo.monitor.Monitor;
 +import org.apache.accumulo.monitor.view.WebViews;
 +import org.apache.accumulo.server.ServerContext;
 +import org.apache.accumulo.test.categories.MonitorTests;
 +import org.easymock.EasyMock;
 +import org.glassfish.jersey.client.ClientConfig;
 +import org.glassfish.jersey.server.ResourceConfig;
 +import org.glassfish.jersey.test.JerseyTest;
 +import org.glassfish.jersey.test.TestProperties;
- import org.junit.Assert;
 +import org.junit.Test;
 +import org.junit.experimental.categories.Category;
 +import org.junit.runner.RunWith;
 +import org.powermock.api.easymock.PowerMock;
 +import org.powermock.core.classloader.annotations.PrepareForTest;
 +import org.powermock.modules.junit4.PowerMockRunner;
 +
 +/**
 + * Basic tests for parameter validation constraints
 + */
 +@Category(MonitorTests.class)
 +@RunWith(PowerMockRunner.class)
 +@PrepareForTest({Monitor.class, Tables.class})
 +public class WebViewsIT extends JerseyTest {
 +
 +  @Override
 +  public Application configure() {
 +    enable(TestProperties.LOG_TRAFFIC);
 +    enable(TestProperties.DUMP_ENTITY);
 +    ResourceConfig config = new ResourceConfig(WebViews.class);
 +    config.register(WebViewsIT.HashMapWriter.class);
 +    return config;
 +  }
 +
 +  @Override
 +  protected void configureClient(ClientConfig config) {
 +    super.configureClient(config);
 +    config.register(WebViewsIT.HashMapWriter.class);
 +  }
 +
 +  /**
 +   * Expect to fail the constraint validation on the REST endpoint. The constraint is the
 +   * pre-defined word character class Pattern so passing a table name with punctuation will cause a
 +   * 400 response code.
 +   */
 +  @Test
 +  public void testGetTablesConstraintViolations() {
 +    Response output = target("tables/f+o*o").request().get();
-     Assert.assertEquals("should return status 400", 400, output.getStatus());
++    assertEquals("should return status 400", 400, output.getStatus());
 +  }
 +
 +  /**
 +   * Test path tables/{tableID} which passes constraints. On passing constraints underlying logic
 +   * will be executed so we need to mock a certain amount of it. Note: If you get test failures here
 +   * due to 500 server response, it's likely an underlying class or method call was added/modified
 +   * and needs mocking. Note: To get the proper response code back, you need to make sure jersey has
 +   * a registered MessageBodyWriter capable of serializing/writing the object returned from your
 +   * endpoint. We're using a simple stubbed out inner class HashMapWriter for this.
 +   *
 +   * @throws Exception
 +   *           not expected
 +   */
 +  @Test
 +  public void testGetTablesConstraintPassing() throws Exception {
 +    ServerContext contextMock = EasyMock.createMock(ServerContext.class);
 +    expect(contextMock.getConfiguration()).andReturn(DefaultConfiguration.getInstance()).anyTimes();
 +    expect(contextMock.getInstanceID()).andReturn("foo").atLeastOnce();
 +
 +    PowerMock.mockStatic(Monitor.class);
 +    expect(Monitor.getContext()).andReturn(contextMock).anyTimes();
 +
 +    PowerMock.mockStatic(Tables.class);
 +    expect(Tables.getTableName(contextMock, Table.ID.of("foo"))).andReturn("bar");
 +    PowerMock.replayAll();
 +    org.easymock.EasyMock.replay(contextMock);
 +
 +    // Using the mocks we can verify that the getModel method gets called via debugger
 +    // however it's difficult to continue to mock through the jersey MVC code for the properly built
 +    // response.
 +    // Our silly HashMapWriter registered in the configure method gets wired in and used here.
 +    Response output = target("tables/foo").request().get();
-     Assert.assertEquals("should return status 200", 200, output.getStatus());
++    assertEquals("should return status 200", 200, output.getStatus());
 +    String responseBody = output.readEntity(String.class);
-     Assert.assertTrue(responseBody.contains("tableID=foo") && responseBody.contains("table=bar"));
++    assertTrue(responseBody.contains("tableID=foo") && responseBody.contains("table=bar"));
 +    verify(contextMock);
 +  }
 +
 +  /**
 +   * Test minutes parameter constraints. When outside range we should get a 400 response.
 +   */
 +  @Test
 +  public void testGetTracesSummaryValidationConstraint() {
 +    // Test upper bounds of constraint
 +    Response output = target("trace/summary").queryParam("minutes", 5000000).request().get();
-     Assert.assertEquals("should return status 400", 400, output.getStatus());
++    assertEquals("should return status 400", 400, output.getStatus());
 +
 +    // Test lower bounds of constraint
 +    output = target("trace/summary").queryParam("minutes", -27).request().get();
-     Assert.assertEquals("should return status 400", 400, output.getStatus());
++    assertEquals("should return status 400", 400, output.getStatus());
 +  }
 +
 +  /**
 +   * Silly stub to handle MessageBodyWriter for Hashmap. Registered in configure method and
 +   * auto-wired by Jersey.
 +   */
 +  public static class HashMapWriter implements MessageBodyWriter<HashMap<?,?>> {
 +    @Override
 +    public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations,
 +        MediaType mediaType) {
 +      return true;
 +    }
 +
 +    @Override
 +    public long getSize(HashMap<?,?> hashMap, Class<?> type, Type genericType,
 +        Annotation[] annotations, MediaType mediaType) {
 +      return 0;
 +    }
 +
 +    @Override
 +    public void writeTo(HashMap<?,?> hashMap, Class<?> type, Type genericType,
 +        Annotation[] annotations, MediaType mediaType, MultivaluedMap<String,Object> httpHeaders,
 +        OutputStream entityStream) throws IOException, WebApplicationException {
 +      String s = hashMap.toString();
 +      entityStream.write(s.getBytes());
 +    }
 +  }
 +}
diff --cc server/monitor/src/test/java/org/apache/accumulo/monitor/util/AccumuloMonitorAppenderTest.java
index f915675,0000000..66baa68
mode 100644,000000..100644
--- a/server/monitor/src/test/java/org/apache/accumulo/monitor/util/AccumuloMonitorAppenderTest.java
+++ b/server/monitor/src/test/java/org/apache/accumulo/monitor/util/AccumuloMonitorAppenderTest.java
@@@ -1,202 -1,0 +1,206 @@@
 +/*
 + * 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.monitor.util;
 +
 +import static java.nio.charset.StandardCharsets.UTF_8;
++import static org.junit.Assert.assertEquals;
++import static org.junit.Assert.assertFalse;
++import static org.junit.Assert.assertNull;
++import static org.junit.Assert.assertSame;
++import static org.junit.Assert.assertTrue;
 +import static org.junit.Assert.fail;
 +
 +import java.util.Enumeration;
 +import java.util.NoSuchElementException;
 +import java.util.concurrent.ExecutionException;
 +import java.util.concurrent.RejectedExecutionException;
 +import java.util.concurrent.ScheduledExecutorService;
 +import java.util.concurrent.ScheduledFuture;
 +import java.util.concurrent.TimeUnit;
 +import java.util.concurrent.atomic.AtomicLong;
 +import java.util.function.Function;
 +import java.util.function.Supplier;
 +
 +import org.apache.accumulo.monitor.util.AccumuloMonitorAppender.MonitorLocation;
 +import org.apache.accumulo.monitor.util.AccumuloMonitorAppender.MonitorTracker;
 +import org.apache.log4j.AppenderSkeleton;
 +import org.apache.log4j.spi.LoggingEvent;
- import org.junit.Assert;
 +import org.junit.Rule;
 +import org.junit.Test;
 +import org.junit.rules.ExpectedException;
 +import org.junit.rules.Timeout;
 +
 +public class AccumuloMonitorAppenderTest {
 +
 +  @Rule
 +  public Timeout timeout = new Timeout(10, TimeUnit.SECONDS);
 +
 +  @Rule
 +  public ExpectedException exception = ExpectedException.none();
 +
 +  @Test
 +  public void testActivateOptions() {
 +    try (AccumuloMonitorAppender appender = new AccumuloMonitorAppender()) {
 +      appender.executorService.shutdown();
 +      // simulate tracker having already been scheduled
 +      appender.trackerScheduled.compareAndSet(false, true);
 +      appender.activateOptions();
 +      // activateOptions should not trigger a RejectedExecutionException, because we tricked it into
 +      // thinking it was already called, and therefore it did not
 +      // schedule the tracker after shutting down
 +    }
 +
 +    exception.expect(RejectedExecutionException.class);
 +    try (AccumuloMonitorAppender appender = new AccumuloMonitorAppender()) {
 +      appender.executorService.shutdown();
 +      appender.activateOptions();
 +      fail("Calling activateOptions should have triggered a RejectedExecutionException");
 +      // this ensures that the activateOptions correctly attempts to schedule a worker
 +    }
 +  }
 +
 +  @Test
 +  public void testExecutorService() throws InterruptedException, ExecutionException {
 +    ScheduledExecutorService executorService = null;
 +    AtomicLong counter = new AtomicLong(2);
 +    try (AccumuloMonitorAppender appender = new AccumuloMonitorAppender()) {
 +      executorService = appender.executorService;
 +
 +      // make sure executor service is started and running
-       Assert.assertFalse(executorService.isShutdown());
-       Assert.assertFalse(executorService.isTerminated());
++      assertFalse(executorService.isShutdown());
++      assertFalse(executorService.isTerminated());
 +
 +      // make sure executor service executes tasks
 +      ScheduledFuture<Long> future = executorService.schedule(() -> counter.getAndIncrement(), 1,
 +          TimeUnit.MILLISECONDS);
-       Assert.assertEquals(Long.valueOf(2), future.get());
-       Assert.assertEquals(3, counter.get());
++      assertEquals(Long.valueOf(2), future.get());
++      assertEquals(3, counter.get());
 +
 +      // schedule a task that won't finish
 +      executorService.schedule(() -> counter.getAndIncrement(), 1, TimeUnit.DAYS);
 +
 +      // make sure executor service is still running
-       Assert.assertFalse(executorService.isShutdown());
-       Assert.assertFalse(executorService.isTerminated());
++      assertFalse(executorService.isShutdown());
++      assertFalse(executorService.isTerminated());
 +    }
 +    // verify that closing the appender shuts down the executor service threads
-     Assert.assertTrue(executorService.isShutdown());
++    assertTrue(executorService.isShutdown());
 +    executorService.awaitTermination(5, TimeUnit.SECONDS);
-     Assert.assertTrue(executorService.isTerminated());
++    assertTrue(executorService.isTerminated());
 +
 +    // verify executor service did not wait for scheduled task to run
-     Assert.assertEquals(3, counter.get());
++    assertEquals(3, counter.get());
 +  }
 +
 +  @Test
 +  public void testMonitorTracker() throws InterruptedException {
 +    AtomicLong currentLoc = new AtomicLong(0);
 +    Supplier<MonitorLocation> locSupplier = () -> {
 +      long loc = currentLoc.get();
 +      // for simplicity, create the location name from a number (0 represents no location)
 +      byte[] location = loc == 0 ? null : ("loc" + loc).getBytes(UTF_8);
 +      return new MonitorLocation(loc, location);
 +    };
 +    Function<MonitorLocation,AppenderSkeleton> appenderFactory = newLocation -> {
 +
 +      return new AppenderSkeleton() {
 +
 +        {
 +          this.name = "Appender for " + newLocation.getLocation();
 +        }
 +
 +        @Override
 +        public boolean requiresLayout() {
 +          return false;
 +        }
 +
 +        @Override
 +        public void close() {}
 +
 +        @Override
 +        protected void append(LoggingEvent event) {}
 +
 +      };
 +
 +    };
 +
 +    try (AccumuloMonitorAppender parent = new AccumuloMonitorAppender()) {
 +      parent.setFrequency(1); // make it check frequently (every 1 millisecond)
 +      parent.setTracker(new MonitorTracker(parent, locSupplier, appenderFactory));
 +      parent.activateOptions();
 +
 +      // initially there are no appenders
-       Assert.assertNull(parent.getAllAppenders());
++      assertNull(parent.getAllAppenders());
 +      updateLocAndVerify(currentLoc, parent, 0);
 +      updateLocAndVerify(currentLoc, parent, 10);
 +
 +      // verify it's the same after a few times
 +      // this verifies the logic in the tracker's run method which compares current location with
 +      // last to see if a change occurred
 +      AppenderSkeleton lastAppender = (AppenderSkeleton) parent.getAllAppenders().nextElement();
 +      for (int x = 0; x < 10; x++) {
 +        Thread.sleep(10);
 +        AppenderSkeleton currentAppender = (AppenderSkeleton) parent.getAllAppenders()
 +            .nextElement();
-         Assert.assertSame(lastAppender, currentAppender);
++        assertSame(lastAppender, currentAppender);
 +      }
 +
 +      updateLocAndVerify(currentLoc, parent, 3);
 +      updateLocAndVerify(currentLoc, parent, 0);
 +      updateLocAndVerify(currentLoc, parent, 0);
 +      updateLocAndVerify(currentLoc, parent, 12);
 +      updateLocAndVerify(currentLoc, parent, 0);
 +      updateLocAndVerify(currentLoc, parent, 335);
 +
 +      updateLocAndVerify(currentLoc, parent, 0);
 +      // verify we removed all the appenders
-       Assert.assertFalse(parent.getAllAppenders().hasMoreElements());
++      assertFalse(parent.getAllAppenders().hasMoreElements());
 +    }
 +  }
 +
 +  private static void updateLocAndVerify(AtomicLong currentLoc, AccumuloMonitorAppender parent,
 +      int newLoc) throws InterruptedException {
 +    // set the new location
 +    currentLoc.set(newLoc);
 +    // wait for the appender to notice the change
 +    while (!verifyAppender(parent, newLoc == 0 ? null : ("loc" + newLoc))) {
 +      Thread.sleep(10);
 +    }
 +  }
 +
 +  private static boolean verifyAppender(AccumuloMonitorAppender parent, String newLocName) {
 +    Enumeration<?> childAppenders = parent.getAllAppenders();
 +    if (newLocName == null) {
 +      return childAppenders == null || !childAppenders.hasMoreElements();
 +    }
 +    if (childAppenders == null || !childAppenders.hasMoreElements()) {
 +      return false;
 +    }
 +    AppenderSkeleton child = null;
 +    try {
 +      child = (AppenderSkeleton) childAppenders.nextElement();
 +    } catch (NoSuchElementException e) {
 +      // Enumeration not thread safe; appender for old loc was removed after we did hasMoreElements
 +      return false;
 +    }
 +    if (childAppenders.hasMoreElements()) {
-       Assert.fail("Appender should never have more than one child");
++      fail("Appender should never have more than one child");
 +    }
 +    return ("Appender for " + newLocName).equals(child.getName());
 +  }
 +
 +}
diff --cc server/monitor/src/test/java/org/apache/accumulo/monitor/util/ParameterValidatorTest.java
index 891de3e,0000000..e7edc50
mode 100644,000000..100644
--- a/server/monitor/src/test/java/org/apache/accumulo/monitor/util/ParameterValidatorTest.java
+++ b/server/monitor/src/test/java/org/apache/accumulo/monitor/util/ParameterValidatorTest.java
@@@ -1,64 -1,0 +1,65 @@@
 +/*
 + * 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.monitor.util;
 +
++import static org.junit.Assert.assertFalse;
++import static org.junit.Assert.assertTrue;
++
 +import java.util.regex.Pattern;
 +
- import org.junit.Assert;
 +import org.junit.Test;
 +
 +/**
 + * Basic tests for ParameterValidator
 + */
 +public class ParameterValidatorTest {
 +
 +  @Test
 +  public void testAlphaNumRegex() {
 +    Pattern p = Pattern.compile(ParameterValidator.ALPHA_NUM_REGEX);
-     Assert.assertTrue(p.matcher("asdlkfj234kj324").matches());
-     Assert.assertFalse(p.matcher("234-324").matches());
-     Assert.assertFalse(p.matcher("").matches());
++    assertTrue(p.matcher("asdlkfj234kj324").matches());
++    assertFalse(p.matcher("234-324").matches());
++    assertFalse(p.matcher("").matches());
 +
 +    p = Pattern.compile(ParameterValidator.ALPHA_NUM_REGEX_BLANK_OK);
-     Assert.assertTrue(p.matcher("asdlkfj234kj324").matches());
-     Assert.assertTrue(p.matcher("").matches());
-     Assert.assertFalse(p.matcher("234-324").matches());
++    assertTrue(p.matcher("asdlkfj234kj324").matches());
++    assertTrue(p.matcher("").matches());
++    assertFalse(p.matcher("234-324").matches());
 +  }
 +
 +  @Test
 +  public void testServerRegex() throws Exception {
 +    Pattern p = Pattern.compile(ParameterValidator.HOSTNAME_PORT_REGEX);
-     Assert.assertTrue("Did not match hostname with dots",
-         p.matcher("ab3cd.12d34.3xyz.net:12").matches());
-     Assert.assertTrue("Did not match hostname with dash",
++    assertTrue("Did not match hostname with dots", p.matcher("ab3cd.12d34.3xyz.net:12").matches());
++    assertTrue("Did not match hostname with dash",
 +        p.matcher("abcd.123.server-foo.com:56789").matches());
-     Assert.assertTrue("Did not match hostname and port",
++    assertTrue("Did not match hostname and port",
 +        p.matcher("abcd.123.server-foo.com:1234").matches());
-     Assert.assertTrue("Did not match all numeric and port", p.matcher("127.0.0.1:9999").matches());
-     Assert.assertTrue("Did not match all numeric and port", p.matcher("ServerName:9999").matches());
++    assertTrue("Did not match all numeric and port", p.matcher("127.0.0.1:9999").matches());
++    assertTrue("Did not match all numeric and port", p.matcher("ServerName:9999").matches());
 +
-     Assert.assertFalse("Port number required", p.matcher("127.0.0.1").matches());
-     Assert.assertFalse(p.matcher("abcd.1234.*.xyz").matches());
-     Assert.assertFalse(p.matcher("abcd.1234.;xyz").matches());
-     Assert.assertFalse(p.matcher("abcd.12{3}4.xyz").matches());
-     Assert.assertFalse(p.matcher("abcd.12[3]4.xyz").matches());
-     Assert.assertFalse(p.matcher("abcd=4.xyz").matches());
-     Assert.assertFalse(p.matcher("abcd=\"4.xyz\"").matches());
-     Assert.assertFalse(p.matcher("abcd\"4.xyz\"").matches());
++    assertFalse("Port number required", p.matcher("127.0.0.1").matches());
++    assertFalse(p.matcher("abcd.1234.*.xyz").matches());
++    assertFalse(p.matcher("abcd.1234.;xyz").matches());
++    assertFalse(p.matcher("abcd.12{3}4.xyz").matches());
++    assertFalse(p.matcher("abcd.12[3]4.xyz").matches());
++    assertFalse(p.matcher("abcd=4.xyz").matches());
++    assertFalse(p.matcher("abcd=\"4.xyz\"").matches());
++    assertFalse(p.matcher("abcd\"4.xyz\"").matches());
 +  }
 +
 +}
diff --cc server/tserver/src/test/java/org/apache/accumulo/tserver/CheckTabletMetadataTest.java
index 6eefb0d,ece30ee..d250b06
--- a/server/tserver/src/test/java/org/apache/accumulo/tserver/CheckTabletMetadataTest.java
+++ b/server/tserver/src/test/java/org/apache/accumulo/tserver/CheckTabletMetadataTest.java
@@@ -17,9 -17,11 +17,12 @@@
  
  package org.apache.accumulo.tserver;
  
+ import static org.junit.Assert.assertNotNull;
+ import static org.junit.Assert.assertNull;
+ 
  import java.util.TreeMap;
  
 +import org.apache.accumulo.core.client.impl.Table;
  import org.apache.accumulo.core.data.Key;
  import org.apache.accumulo.core.data.Value;
  import org.apache.accumulo.core.data.impl.KeyExtent;
diff --cc server/tserver/src/test/java/org/apache/accumulo/tserver/InMemoryMapTest.java
index 2ab007a,a5ad8d1..1a80f51
--- a/server/tserver/src/test/java/org/apache/accumulo/tserver/InMemoryMapTest.java
+++ b/server/tserver/src/test/java/org/apache/accumulo/tserver/InMemoryMapTest.java
@@@ -64,8 -63,6 +64,7 @@@ import org.apache.accumulo.tserver.InMe
  import org.apache.hadoop.io.Text;
  import org.apache.log4j.Level;
  import org.apache.log4j.Logger;
 +import org.easymock.EasyMock;
- import org.junit.Assert;
  import org.junit.BeforeClass;
  import org.junit.Ignore;
  import org.junit.Rule;
diff --cc server/tserver/src/test/java/org/apache/accumulo/tserver/WalRemovalOrderTest.java
index 176de63,a8fc2aa..435de4f
--- a/server/tserver/src/test/java/org/apache/accumulo/tserver/WalRemovalOrderTest.java
+++ b/server/tserver/src/test/java/org/apache/accumulo/tserver/WalRemovalOrderTest.java
@@@ -16,8 -16,9 +16,10 @@@
   */
  package org.apache.accumulo.tserver;
  
+ import static org.junit.Assert.assertEquals;
+ 
  import java.io.IOException;
 +import java.io.UncheckedIOException;
  import java.util.Collections;
  import java.util.LinkedHashSet;
  import java.util.List;
diff --cc server/tserver/src/test/java/org/apache/accumulo/tserver/compaction/SizeLimitCompactionStrategyTest.java
index ad4bdf5,f0fd944..8b2bd27
--- a/server/tserver/src/test/java/org/apache/accumulo/tserver/compaction/SizeLimitCompactionStrategyTest.java
+++ b/server/tserver/src/test/java/org/apache/accumulo/tserver/compaction/SizeLimitCompactionStrategyTest.java
@@@ -16,7 -16,9 +16,10 @@@
   */
  package org.apache.accumulo.tserver.compaction;
  
 +import static org.apache.accumulo.tserver.compaction.DefaultCompactionStrategyTest.getServerContext;
+ import static org.junit.Assert.assertEquals;
+ import static org.junit.Assert.assertFalse;
+ import static org.junit.Assert.assertTrue;
  
  import java.io.IOException;
  import java.util.HashMap;
diff --cc server/tserver/src/test/java/org/apache/accumulo/tserver/compaction/TwoTierCompactionStrategyTest.java
index 98c72d6,0000000..d780bd2
mode 100644,000000..100644
--- a/server/tserver/src/test/java/org/apache/accumulo/tserver/compaction/TwoTierCompactionStrategyTest.java
+++ b/server/tserver/src/test/java/org/apache/accumulo/tserver/compaction/TwoTierCompactionStrategyTest.java
@@@ -1,139 -1,0 +1,142 @@@
 +/*
 + * 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.tserver.compaction;
 +
 +import static org.apache.accumulo.tserver.compaction.DefaultCompactionStrategyTest.getServerContext;
++import static org.junit.Assert.assertEquals;
++import static org.junit.Assert.assertNull;
++import static org.junit.Assert.assertTrue;
++import static org.junit.Assert.fail;
 +
 +import java.io.IOException;
 +import java.util.HashMap;
 +import java.util.HashSet;
 +import java.util.List;
 +import java.util.Map;
 +
 +import org.apache.accumulo.core.client.impl.Table;
 +import org.apache.accumulo.core.conf.AccumuloConfiguration;
 +import org.apache.accumulo.core.conf.ConfigurationTypeHelper;
 +import org.apache.accumulo.core.conf.DefaultConfiguration;
 +import org.apache.accumulo.core.data.impl.KeyExtent;
 +import org.apache.accumulo.core.metadata.schema.DataFileValue;
 +import org.apache.accumulo.server.fs.FileRef;
 +import org.apache.accumulo.tserver.InMemoryMapTest;
- import org.junit.Assert;
 +import org.junit.Before;
 +import org.junit.Test;
 +
 +/**
 + * Tests org.apache.accumulo.tserver.compaction.TwoTierCompactionStrategy
 + */
 +public class TwoTierCompactionStrategyTest {
 +  private String largeCompressionType = "gz";
 +  private TwoTierCompactionStrategy ttcs = null;
 +  private MajorCompactionRequest mcr = null;
 +  private AccumuloConfiguration conf = null;
 +  private HashMap<String,String> opts = new HashMap<>();
 +
 +  private Map<FileRef,DataFileValue> createFileMap(String... sa) {
 +
 +    HashMap<FileRef,DataFileValue> ret = new HashMap<>();
 +    for (int i = 0; i < sa.length; i += 2) {
 +      ret.put(new FileRef("hdfs://nn1/accumulo/tables/5/t-0001/" + sa[i]),
 +          new DataFileValue(ConfigurationTypeHelper.getFixedMemoryAsBytes(sa[i + 1]), 1));
 +    }
 +
 +    return ret;
 +  }
 +
 +  @Before
 +  public void setup() {
 +    opts.put(TwoTierCompactionStrategy.LARGE_FILE_COMPRESSION_TYPE, largeCompressionType);
 +    opts.put(TwoTierCompactionStrategy.LARGE_FILE_COMPRESSION_THRESHOLD, "500M");
 +    ttcs = new TwoTierCompactionStrategy();
 +  }
 +
 +  @Test
 +  public void testDefaultCompaction() throws IOException {
 +    ttcs.init(opts);
 +    conf = DefaultConfiguration.getInstance();
 +    KeyExtent ke = new KeyExtent(Table.ID.of("0"), null, null);
 +    mcr = new MajorCompactionRequest(ke, MajorCompactionReason.NORMAL, conf,
 +        InMemoryMapTest.getServerContext());
 +    Map<FileRef,DataFileValue> fileMap = createFileMap("f1", "10M", "f2", "10M", "f3", "10M", "f4",
 +        "10M", "f5", "100M", "f6", "100M", "f7", "100M", "f8", "100M");
 +    mcr.setFiles(fileMap);
 +
-     Assert.assertTrue(ttcs.shouldCompact(mcr));
-     Assert.assertEquals(8, mcr.getFiles().size());
++    assertTrue(ttcs.shouldCompact(mcr));
++    assertEquals(8, mcr.getFiles().size());
 +
 +    List<FileRef> filesToCompact = ttcs.getCompactionPlan(mcr).inputFiles;
-     Assert.assertEquals(fileMap.keySet(), new HashSet<>(filesToCompact));
-     Assert.assertEquals(8, filesToCompact.size());
-     Assert.assertNull(ttcs.getCompactionPlan(mcr).writeParameters.getCompressType());
++    assertEquals(fileMap.keySet(), new HashSet<>(filesToCompact));
++    assertEquals(8, filesToCompact.size());
++    assertNull(ttcs.getCompactionPlan(mcr).writeParameters.getCompressType());
 +  }
 +
 +  @Test
 +  public void testLargeCompaction() throws IOException {
 +    ttcs.init(opts);
 +    conf = DefaultConfiguration.getInstance();
 +    KeyExtent ke = new KeyExtent(Table.ID.of("0"), null, null);
 +    mcr = new MajorCompactionRequest(ke, MajorCompactionReason.NORMAL, conf, getServerContext());
 +    Map<FileRef,DataFileValue> fileMap = createFileMap("f1", "2G", "f2", "2G", "f3", "2G", "f4",
 +        "2G");
 +    mcr.setFiles(fileMap);
 +
-     Assert.assertTrue(ttcs.shouldCompact(mcr));
-     Assert.assertEquals(4, mcr.getFiles().size());
++    assertTrue(ttcs.shouldCompact(mcr));
++    assertEquals(4, mcr.getFiles().size());
 +
 +    List<FileRef> filesToCompact = ttcs.getCompactionPlan(mcr).inputFiles;
-     Assert.assertEquals(fileMap.keySet(), new HashSet<>(filesToCompact));
-     Assert.assertEquals(4, filesToCompact.size());
-     Assert.assertEquals(largeCompressionType,
++    assertEquals(fileMap.keySet(), new HashSet<>(filesToCompact));
++    assertEquals(4, filesToCompact.size());
++    assertEquals(largeCompressionType,
 +        ttcs.getCompactionPlan(mcr).writeParameters.getCompressType());
 +  }
 +
 +  @Test
 +  public void testMissingConfigProperties() {
 +    try {
 +      opts.clear();
 +      ttcs.init(opts);
-       Assert.fail("IllegalArgumentException should have been thrown.");
++      fail("IllegalArgumentException should have been thrown.");
 +    } catch (IllegalArgumentException iae) {} catch (Throwable t) {
-       Assert.fail("IllegalArgumentException should have been thrown.");
++      fail("IllegalArgumentException should have been thrown.");
 +    }
 +  }
 +
 +  @Test
 +  public void testFileSubsetCompaction() throws IOException {
 +    ttcs.init(opts);
 +    conf = DefaultConfiguration.getInstance();
 +    KeyExtent ke = new KeyExtent(Table.ID.of("0"), null, null);
 +    mcr = new MajorCompactionRequest(ke, MajorCompactionReason.NORMAL, conf, getServerContext());
 +    Map<FileRef,DataFileValue> fileMap = createFileMap("f1", "1G", "f2", "10M", "f3", "10M", "f4",
 +        "10M", "f5", "10M", "f6", "10M", "f7", "10M");
 +    Map<FileRef,DataFileValue> filesToCompactMap = createFileMap("f2", "10M", "f3", "10M", "f4",
 +        "10M", "f5", "10M", "f6", "10M", "f7", "10M");
 +    mcr.setFiles(fileMap);
 +
-     Assert.assertTrue(ttcs.shouldCompact(mcr));
-     Assert.assertEquals(7, mcr.getFiles().size());
++    assertTrue(ttcs.shouldCompact(mcr));
++    assertEquals(7, mcr.getFiles().size());
 +
 +    List<FileRef> filesToCompact = ttcs.getCompactionPlan(mcr).inputFiles;
-     Assert.assertEquals(filesToCompactMap.keySet(), new HashSet<>(filesToCompact));
-     Assert.assertEquals(6, filesToCompact.size());
-     Assert.assertNull(ttcs.getCompactionPlan(mcr).writeParameters.getCompressType());
++    assertEquals(filesToCompactMap.keySet(), new HashSet<>(filesToCompact));
++    assertEquals(6, filesToCompact.size());
++    assertNull(ttcs.getCompactionPlan(mcr).writeParameters.getCompressType());
 +  }
 +
 +}
diff --cc server/tserver/src/test/java/org/apache/accumulo/tserver/compaction/strategies/ConfigurableCompactionStrategyTest.java
index feaca76,7a3fdef..79a69f1
--- a/server/tserver/src/test/java/org/apache/accumulo/tserver/compaction/strategies/ConfigurableCompactionStrategyTest.java
+++ b/server/tserver/src/test/java/org/apache/accumulo/tserver/compaction/strategies/ConfigurableCompactionStrategyTest.java
@@@ -17,7 -17,7 +17,9 @@@
  
  package org.apache.accumulo.tserver.compaction.strategies;
  
 +import static org.apache.accumulo.tserver.compaction.DefaultCompactionStrategyTest.getServerContext;
+ import static org.junit.Assert.assertEquals;
++import static org.junit.Assert.assertNull;
  
  import java.util.HashMap;
  import java.util.Map;
@@@ -57,11 -54,11 +58,11 @@@ public class ConfigurableCompactionStra
  
      CompactionPlan plan = ccs.getCompactionPlan(mcr);
  
-     Assert.assertEquals(0, plan.writeParameters.getBlockSize());
-     Assert.assertEquals(0, plan.writeParameters.getHdfsBlockSize());
-     Assert.assertEquals(0, plan.writeParameters.getIndexBlockSize());
-     Assert.assertEquals(0, plan.writeParameters.getReplication());
-     Assert.assertNull(plan.writeParameters.getCompressType());
+     assertEquals(0, plan.writeParameters.getBlockSize());
+     assertEquals(0, plan.writeParameters.getHdfsBlockSize());
+     assertEquals(0, plan.writeParameters.getIndexBlockSize());
+     assertEquals(0, plan.writeParameters.getReplication());
 -    assertEquals(null, plan.writeParameters.getCompressType());
++    assertNull(plan.writeParameters.getCompressType());
  
      // test setting all output options
      ccs = new ConfigurableCompactionStrategy();
@@@ -76,14 -73,14 +77,14 @@@
  
      plan = ccs.getCompactionPlan(mcr);
  
-     Assert.assertEquals(ConfigurationTypeHelper.getFixedMemoryAsBytes("64K"),
 -    assertEquals(AccumuloConfiguration.getMemoryInBytes("64K"),
++    assertEquals(ConfigurationTypeHelper.getFixedMemoryAsBytes("64K"),
          plan.writeParameters.getBlockSize());
-     Assert.assertEquals(ConfigurationTypeHelper.getFixedMemoryAsBytes("256M"),
 -    assertEquals(AccumuloConfiguration.getMemoryInBytes("256M"),
++    assertEquals(ConfigurationTypeHelper.getFixedMemoryAsBytes("256M"),
          plan.writeParameters.getHdfsBlockSize());
-     Assert.assertEquals(ConfigurationTypeHelper.getFixedMemoryAsBytes("32K"),
 -    assertEquals(AccumuloConfiguration.getMemoryInBytes("32K"),
++    assertEquals(ConfigurationTypeHelper.getFixedMemoryAsBytes("32K"),
          plan.writeParameters.getIndexBlockSize());
-     Assert.assertEquals(5, plan.writeParameters.getReplication());
-     Assert.assertEquals("snappy", plan.writeParameters.getCompressType());
+     assertEquals(5, plan.writeParameters.getReplication());
+     assertEquals("snappy", plan.writeParameters.getCompressType());
  
    }
  }
diff --cc server/tserver/src/test/java/org/apache/accumulo/tserver/log/LogEventsTest.java
index addb5dd,13649f3..8457c9a
--- a/server/tserver/src/test/java/org/apache/accumulo/tserver/log/LogEventsTest.java
+++ b/server/tserver/src/test/java/org/apache/accumulo/tserver/log/LogEventsTest.java
@@@ -25,11 -26,12 +26,11 @@@ public class LogEventsTest 
    public void testOrdinals() {
      // Ordinals are used for persistence, so its important they are stable.
  
 -    LogEvents[] expectedOrder = new LogEvents[] {LogEvents.OPEN, LogEvents.DEFINE_TABLET,
 -        LogEvents.MUTATION, LogEvents.MANY_MUTATIONS, LogEvents.COMPACTION_START,
 -        LogEvents.COMPACTION_FINISH};
 +    LogEvents[] expectedOrder = {LogEvents.OPEN, LogEvents.DEFINE_TABLET, LogEvents.MUTATION,
 +        LogEvents.MANY_MUTATIONS, LogEvents.COMPACTION_START, LogEvents.COMPACTION_FINISH};
  
      for (int i = 0; i < expectedOrder.length; i++) {
-       Assert.assertEquals(i, expectedOrder[i].ordinal());
+       assertEquals(i, expectedOrder[i].ordinal());
      }
    }
  }
diff --cc server/tserver/src/test/java/org/apache/accumulo/tserver/log/LogFileKeyTest.java
index 3c08f62,95f7a5d..a73aace
--- a/server/tserver/src/test/java/org/apache/accumulo/tserver/log/LogFileKeyTest.java
+++ b/server/tserver/src/test/java/org/apache/accumulo/tserver/log/LogFileKeyTest.java
@@@ -16,6 -16,9 +16,8 @@@
   */
  package org.apache.accumulo.tserver.log;
  
+ import static org.junit.Assert.assertEquals;
 -import static org.junit.Assert.assertTrue;
+ 
  import java.util.ArrayList;
  import java.util.Collections;
  import java.util.List;
@@@ -43,11 -45,11 +44,11 @@@ public class LogFileKeyTest 
      LogFileKey mut = nk(LogEvents.MUTATION, 1, 3);
      LogFileKey mmut = nk(LogEvents.MANY_MUTATIONS, 1, 3);
  
-     Assert.assertEquals(0, start.compareTo(finish));
-     Assert.assertEquals(0, finish.compareTo(start));
 -    assertTrue(start.compareTo(finish) == 0);
 -    assertTrue(finish.compareTo(start) == 0);
++    assertEquals(0, start.compareTo(finish));
++    assertEquals(0, finish.compareTo(start));
  
-     Assert.assertEquals(0, mut.compareTo(mmut));
-     Assert.assertEquals(0, mmut.compareTo(mut));
 -    assertTrue(mut.compareTo(mmut) == 0);
 -    assertTrue(mmut.compareTo(mut) == 0);
++    assertEquals(0, mut.compareTo(mmut));
++    assertEquals(0, mmut.compareTo(mut));
    }
  
    @Test
diff --cc server/tserver/src/test/java/org/apache/accumulo/tserver/log/SortedLogRecoveryTest.java
index 2bb0e47,93219ea..db077c9
--- a/server/tserver/src/test/java/org/apache/accumulo/tserver/log/SortedLogRecoveryTest.java
+++ b/server/tserver/src/test/java/org/apache/accumulo/tserver/log/SortedLogRecoveryTest.java
@@@ -750,15 -742,15 +752,15 @@@ public class SortedLogRecoveryTest 
      logs.put("entries1", entries1);
  
      List<Mutation> mutations1 = recover(logs, e1);
-     Assert.assertEquals(1, mutations1.size());
-     Assert.assertEquals(m2, mutations1.get(0));
+     assertEquals(1, mutations1.size());
+     assertEquals(m2, mutations1.get(0));
  
      List<Mutation> mutations2 = recover(logs, e2);
-     Assert.assertEquals(2, mutations2.size());
-     Assert.assertEquals(m3, mutations2.get(0));
-     Assert.assertEquals(m4, mutations2.get(1));
+     assertEquals(2, mutations2.size());
+     assertEquals(m3, mutations2.get(0));
+     assertEquals(m4, mutations2.get(1));
  
 -    KeyValue entries2[] = new KeyValue[] {createKeyValue(OPEN, 0, -1, "1"),
 +    KeyValue entries2[] = {createKeyValue(OPEN, 0, -1, "1"),
          createKeyValue(DEFINE_TABLET, 9, 11, e2), createKeyValue(COMPACTION_FINISH, 8, 11, null)};
      Arrays.sort(entries2);
      logs.put("entries2", entries2);
diff --cc server/tserver/src/test/java/org/apache/accumulo/tserver/replication/AccumuloReplicaSystemTest.java
index 19bb2a0,e62a983..57cb162
--- a/server/tserver/src/test/java/org/apache/accumulo/tserver/replication/AccumuloReplicaSystemTest.java
+++ b/server/tserver/src/test/java/org/apache/accumulo/tserver/replication/AccumuloReplicaSystemTest.java
@@@ -158,14 -160,15 +159,14 @@@ public class AccumuloReplicaSystemTest 
      Status status = Status.newBuilder().setBegin(0).setEnd(0).setInfiniteEnd(true).setClosed(false)
          .build();
      DataInputStream dis = new DataInputStream(new ByteArrayInputStream(baos.toByteArray()));
 -    WalReplication repl = ars.getWalEdits(new ReplicationTarget("peer", "1", "1"), dis,
 -        new Path("/accumulo/wals/tserver+port/wal"), status, Long.MAX_VALUE,
 -        new HashSet<Integer>());
 +    WalReplication repl = ars.getWalEdits(new ReplicationTarget("peer", "1", Table.ID.of("1")), dis,
 +        new Path("/accumulo/wals/tserver+port/wal"), status, Long.MAX_VALUE, new HashSet<>());
  
      // We stopped because we got to the end of the file
-     Assert.assertEquals(9, repl.entriesConsumed);
-     Assert.assertEquals(2, repl.walEdits.getEditsSize());
-     Assert.assertEquals(2, repl.sizeInRecords);
-     Assert.assertNotEquals(0, repl.sizeInBytes);
+     assertEquals(9, repl.entriesConsumed);
+     assertEquals(2, repl.walEdits.getEditsSize());
+     assertEquals(2, repl.sizeInRecords);
+     assertNotEquals(0, repl.sizeInBytes);
    }
  
    @Test
@@@ -269,14 -272,15 +270,14 @@@
      Status status = Status.newBuilder().setBegin(0).setEnd(0).setInfiniteEnd(true).setClosed(true)
          .build();
      DataInputStream dis = new DataInputStream(new ByteArrayInputStream(baos.toByteArray()));
 -    WalReplication repl = ars.getWalEdits(new ReplicationTarget("peer", "1", "1"), dis,
 -        new Path("/accumulo/wals/tserver+port/wal"), status, Long.MAX_VALUE,
 -        new HashSet<Integer>());
 +    WalReplication repl = ars.getWalEdits(new ReplicationTarget("peer", "1", Table.ID.of("1")), dis,
 +        new Path("/accumulo/wals/tserver+port/wal"), status, Long.MAX_VALUE, new HashSet<>());
  
      // We stopped because we got to the end of the file
-     Assert.assertEquals(Long.MAX_VALUE, repl.entriesConsumed);
-     Assert.assertEquals(2, repl.walEdits.getEditsSize());
-     Assert.assertEquals(2, repl.sizeInRecords);
-     Assert.assertNotEquals(0, repl.sizeInBytes);
+     assertEquals(Long.MAX_VALUE, repl.entriesConsumed);
+     assertEquals(2, repl.walEdits.getEditsSize());
+     assertEquals(2, repl.sizeInRecords);
+     assertNotEquals(0, repl.sizeInBytes);
    }
  
    @Test
@@@ -339,14 -342,15 +340,14 @@@
      Status status = Status.newBuilder().setBegin(100).setEnd(0).setInfiniteEnd(true).setClosed(true)
          .build();
      DataInputStream dis = new DataInputStream(new ByteArrayInputStream(new byte[0]));
 -    WalReplication repl = ars.getWalEdits(new ReplicationTarget("peer", "1", "1"), dis,
 -        new Path("/accumulo/wals/tserver+port/wal"), status, Long.MAX_VALUE,
 -        new HashSet<Integer>());
 +    WalReplication repl = ars.getWalEdits(new ReplicationTarget("peer", "1", Table.ID.of("1")), dis,
 +        new Path("/accumulo/wals/tserver+port/wal"), status, Long.MAX_VALUE, new HashSet<>());
  
      // We stopped because we got to the end of the file
-     Assert.assertEquals(Long.MAX_VALUE, repl.entriesConsumed);
-     Assert.assertEquals(0, repl.walEdits.getEditsSize());
-     Assert.assertEquals(0, repl.sizeInRecords);
-     Assert.assertEquals(0, repl.sizeInBytes);
+     assertEquals(Long.MAX_VALUE, repl.entriesConsumed);
+     assertEquals(0, repl.walEdits.getEditsSize());
+     assertEquals(0, repl.sizeInRecords);
+     assertEquals(0, repl.sizeInBytes);
    }
  
    @Test
@@@ -364,14 -368,15 +365,14 @@@
      Status status = Status.newBuilder().setBegin(100).setEnd(0).setInfiniteEnd(true)
          .setClosed(false).build();
      DataInputStream dis = new DataInputStream(new ByteArrayInputStream(new byte[0]));
 -    WalReplication repl = ars.getWalEdits(new ReplicationTarget("peer", "1", "1"), dis,
 -        new Path("/accumulo/wals/tserver+port/wal"), status, Long.MAX_VALUE,
 -        new HashSet<Integer>());
 +    WalReplication repl = ars.getWalEdits(new ReplicationTarget("peer", "1", Table.ID.of("1")), dis,
 +        new Path("/accumulo/wals/tserver+port/wal"), status, Long.MAX_VALUE, new HashSet<>());
  
      // We stopped because we got to the end of the file
-     Assert.assertEquals(0, repl.entriesConsumed);
-     Assert.assertEquals(0, repl.walEdits.getEditsSize());
-     Assert.assertEquals(0, repl.sizeInRecords);
-     Assert.assertEquals(0, repl.sizeInBytes);
+     assertEquals(0, repl.entriesConsumed);
+     assertEquals(0, repl.walEdits.getEditsSize());
+     assertEquals(0, repl.sizeInRecords);
+     assertEquals(0, repl.sizeInBytes);
    }
  
    @Test
@@@ -430,26 -435,26 +431,26 @@@
      HashSet<Integer> tids = new HashSet<>();
  
      // Only consume the first mutation, not the second
 -    WalReplication repl = ars.getWalEdits(new ReplicationTarget("peer", "1", "1"), dis,
 -        new Path("/accumulo/wals/tserver+port/wal"), status, 1l, tids);
 +    WalReplication repl = ars.getWalEdits(new ReplicationTarget("peer", "1", Table.ID.of("1")), dis,
 +        new Path("/accumulo/wals/tserver+port/wal"), status, 1L, tids);
  
      // We stopped because we got to the end of the file
-     Assert.assertEquals(2, repl.entriesConsumed);
-     Assert.assertEquals(1, repl.walEdits.getEditsSize());
-     Assert.assertEquals(1, repl.sizeInRecords);
-     Assert.assertNotEquals(0, repl.sizeInBytes);
+     assertEquals(2, repl.entriesConsumed);
+     assertEquals(1, repl.walEdits.getEditsSize());
+     assertEquals(1, repl.sizeInRecords);
+     assertNotEquals(0, repl.sizeInBytes);
  
      status = Status.newBuilder(status).setBegin(2).build();
  
      // Consume the rest of the mutations
 -    repl = ars.getWalEdits(new ReplicationTarget("peer", "1", "1"), dis,
 -        new Path("/accumulo/wals/tserver+port/wal"), status, 1l, tids);
 +    repl = ars.getWalEdits(new ReplicationTarget("peer", "1", Table.ID.of("1")), dis,
 +        new Path("/accumulo/wals/tserver+port/wal"), status, 1L, tids);
  
      // We stopped because we got to the end of the file
-     Assert.assertEquals(1, repl.entriesConsumed);
-     Assert.assertEquals(1, repl.walEdits.getEditsSize());
-     Assert.assertEquals(1, repl.sizeInRecords);
-     Assert.assertNotEquals(0, repl.sizeInBytes);
+     assertEquals(1, repl.entriesConsumed);
+     assertEquals(1, repl.walEdits.getEditsSize());
+     assertEquals(1, repl.sizeInRecords);
+     assertNotEquals(0, repl.sizeInBytes);
    }
  
    @Test
@@@ -479,7 -484,7 +480,7 @@@
  
      verify(replClient, ars);
  
-     Assert.assertEquals(new ReplicationStats(0L, 0L, 0L), stats);
 -    assertEquals(new ReplicationStats(0l, 0l, 0l), stats);
++    assertEquals(new ReplicationStats(0L, 0L, 0L), stats);
    }
  
    @Test
@@@ -509,7 -514,7 +510,7 @@@
  
      verify(replClient, ars);
  
-     Assert.assertEquals(new ReplicationStats(0L, 0L, 5L), stats);
 -    assertEquals(new ReplicationStats(0l, 0l, 5l), stats);
++    assertEquals(new ReplicationStats(0L, 0L, 5L), stats);
    }
  
    @Test
diff --cc server/tserver/src/test/java/org/apache/accumulo/tserver/tablet/TabletTest.java
index 1ca3247,7d994e9..610d333
--- a/server/tserver/src/test/java/org/apache/accumulo/tserver/tablet/TabletTest.java
+++ b/server/tserver/src/test/java/org/apache/accumulo/tserver/tablet/TabletTest.java
@@@ -16,7 -16,10 +16,9 @@@
   */
  package org.apache.accumulo.tserver.tablet;
  
+ import static org.junit.Assert.assertEquals;
+ 
  import java.util.Collections;
 -import java.util.Map.Entry;
  
  import org.apache.accumulo.core.conf.AccumuloConfiguration;
  import org.apache.accumulo.core.conf.ConfigurationObserver;
diff --cc shell/src/test/java/org/apache/accumulo/shell/commands/DeleteTableCommandTest.java
index db28e37,511a9fa..b944915
--- a/shell/src/test/java/org/apache/accumulo/shell/commands/DeleteTableCommandTest.java
+++ b/shell/src/test/java/org/apache/accumulo/shell/commands/DeleteTableCommandTest.java
@@@ -22,9 -24,11 +24,8 @@@ import java.util.Set
  
  import org.apache.accumulo.core.metadata.MetadataTable;
  import org.apache.accumulo.core.metadata.RootTable;
- import org.junit.Assert;
  import org.junit.Test;
  
 -/**
 - *
 - */
  public class DeleteTableCommandTest {
  
    @Test
diff --cc start/src/test/java/org/apache/accumulo/start/classloader/vfs/AccumuloClasspathTest.java
index f058e2d,0000000..8bf1c6c
mode 100644,000000..100644
--- a/start/src/test/java/org/apache/accumulo/start/classloader/vfs/AccumuloClasspathTest.java
+++ b/start/src/test/java/org/apache/accumulo/start/classloader/vfs/AccumuloClasspathTest.java
@@@ -1,48 -1,0 +1,49 @@@
 +/*
 + * 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.start.classloader.vfs;
 +
 +import static org.apache.accumulo.start.classloader.vfs.AccumuloVFSClassLoader.getClassPath;
++import static org.junit.Assert.assertFalse;
++import static org.junit.Assert.assertTrue;
 +
- import org.junit.Assert;
 +import org.junit.Test;
 +
 +public class AccumuloClasspathTest {
 +
 +  private static void assertPattern(String output, String pattern, boolean shouldMatch) {
 +    if (shouldMatch) {
-       Assert.assertTrue("Pattern " + pattern + " did not match output: " + output,
++      assertTrue("Pattern " + pattern + " did not match output: " + output,
 +          output.matches(pattern));
 +    } else {
-       Assert.assertFalse("Pattern " + pattern + " should not match output: " + output,
++      assertFalse("Pattern " + pattern + " should not match output: " + output,
 +          output.matches(pattern));
 +    }
 +  }
 +
 +  @Test
 +  public void basic() {
 +    assertPattern(getClassPath(true), "(?s).*\\s+.*\\n$", true);
-     Assert.assertTrue(getClassPath(true).contains("Java System Classloader"));
-     Assert.assertTrue(getClassPath(true).contains("Level"));
++    assertTrue(getClassPath(true).contains("Java System Classloader"));
++    assertTrue(getClassPath(true).contains("Level"));
 +
-     Assert.assertTrue(getClassPath(true).length() > getClassPath(false).length());
++    assertTrue(getClassPath(true).length() > getClassPath(false).length());
 +
 +    assertPattern(getClassPath(false), "(?s).*\\s+.*\\n$", false);
-     Assert.assertFalse(getClassPath(false).contains("Java System Classloader"));
-     Assert.assertFalse(getClassPath(false).contains("Level"));
++    assertFalse(getClassPath(false).contains("Java System Classloader"));
++    assertFalse(getClassPath(false).contains("Level"));
 +  }
 +}
diff --cc start/src/test/java/org/apache/accumulo/start/classloader/vfs/AccumuloReloadingVFSClassLoaderTest.java
index 7a69b3b,5126190..4f4a6a9
--- a/start/src/test/java/org/apache/accumulo/start/classloader/vfs/AccumuloReloadingVFSClassLoaderTest.java
+++ b/start/src/test/java/org/apache/accumulo/start/classloader/vfs/AccumuloReloadingVFSClassLoaderTest.java
@@@ -16,6 -16,9 +16,10 @@@
   */
  package org.apache.accumulo.start.classloader.vfs;
  
+ import static org.junit.Assert.assertArrayEquals;
+ import static org.junit.Assert.assertEquals;
+ import static org.junit.Assert.assertFalse;
++import static org.junit.Assert.assertNotEquals;
  import static org.junit.Assert.assertTrue;
  
  import java.io.File;
@@@ -88,17 -95,19 +91,17 @@@ public class AccumuloReloadingVFSClassL
      FileObject[] dirContents = testDir.getChildren();
  
      AccumuloReloadingVFSClassLoader arvcl = new AccumuloReloadingVFSClassLoader(folderPath, vfs,
 -        new ReloadingClassLoader() {
 -          @Override
 -          public ClassLoader getClassLoader() {
 -            return ClassLoader.getSystemClassLoader();
 -          }
 -        }, 1000, true);
 +        ClassLoader::getSystemClassLoader, 1000, true);
  
      FileObject[] files = ((VFSClassLoader) arvcl.getClassLoader()).getFileObjects();
-     Assert.assertArrayEquals(createFileSystems(dirContents), files);
+     assertArrayEquals(createFileSystems(dirContents), files);
  
 +    // set retry settings sufficiently low that not everything is reloaded in the first round
 +    arvcl.setMaxRetries(1);
 +
      Class<?> clazz1 = arvcl.getClassLoader().loadClass("test.HelloWorld");
      Object o1 = clazz1.newInstance();
-     Assert.assertEquals("Hello World!", o1.toString());
+     assertEquals("Hello World!", o1.toString());
  
      // Check that the class is the same before the update
      Class<?> clazz1_5 = arvcl.getClassLoader().loadClass("test.HelloWorld");
@@@ -119,57 -128,11 +122,57 @@@
  
      Class<?> clazz2 = arvcl.getClassLoader().loadClass("test.HelloWorld");
      Object o2 = clazz2.newInstance();
-     Assert.assertEquals("Hello World!", o2.toString());
+     assertEquals("Hello World!", o2.toString());
  
      // This is false because they are loaded by a different classloader
-     Assert.assertNotEquals(clazz1, clazz2);
-     Assert.assertNotEquals(o1, o2);
 -    assertFalse(clazz1.equals(clazz2));
++    assertNotEquals(clazz1, clazz2);
++    assertNotEquals(o1, o2);
 +
 +    arvcl.close();
 +  }
 +
 +  @Test
 +  public void testReloadingWithLongerTimeout() throws Exception {
 +    FileObject testDir = vfs.resolveFile(folder1.getRoot().toURI().toString());
 +    FileObject[] dirContents = testDir.getChildren();
 +
 +    AccumuloReloadingVFSClassLoader arvcl = new AccumuloReloadingVFSClassLoader(folderPath, vfs,
 +        ClassLoader::getSystemClassLoader, 1000, true);
 +
 +    FileObject[] files = ((VFSClassLoader) arvcl.getClassLoader()).getFileObjects();
-     Assert.assertArrayEquals(createFileSystems(dirContents), files);
++    assertArrayEquals(createFileSystems(dirContents), files);
 +
 +    // set retry settings sufficiently high such that reloading happens in the first rounds
 +    arvcl.setMaxRetries(3);
 +
 +    Class<?> clazz1 = arvcl.getClassLoader().loadClass("test.HelloWorld");
 +    Object o1 = clazz1.newInstance();
-     Assert.assertEquals("Hello World!", o1.toString());
++    assertEquals("Hello World!", o1.toString());
 +
 +    // Check that the class is the same before the update
 +    Class<?> clazz1_5 = arvcl.getClassLoader().loadClass("test.HelloWorld");
-     Assert.assertEquals(clazz1, clazz1_5);
++    assertEquals(clazz1, clazz1_5);
 +
 +    assertTrue(new File(folder1.getRoot(), "HelloWorld.jar").delete());
 +
 +    // VFS-487 significantly wait to avoid failure
 +    Thread.sleep(7000);
 +
 +    // Update the class
 +    FileUtils.copyURLToFile(this.getClass().getResource("/HelloWorld.jar"),
 +        folder1.newFile("HelloWorld2.jar"));
 +
 +    // Wait for the monitor to notice
 +    // VFS-487 significantly wait to avoid failure
 +    Thread.sleep(7000);
 +
 +    Class<?> clazz2 = arvcl.getClassLoader().loadClass("test.HelloWorld");
 +    Object o2 = clazz2.newInstance();
-     Assert.assertEquals("Hello World!", o2.toString());
++    assertEquals("Hello World!", o2.toString());
 +
 +    // This is true because they are loaded by the same classloader due to the new retry
-     Assert.assertTrue(clazz1.equals(clazz2));
-     Assert.assertFalse(o1.equals(o2));
++    assertTrue(clazz1.equals(clazz2));
+     assertFalse(o1.equals(o2));
  
      arvcl.close();
    }
@@@ -187,10 -150,16 +190,10 @@@
      FileObject[] dirContents = testDir.getChildren();
  
      AccumuloReloadingVFSClassLoader arvcl = new AccumuloReloadingVFSClassLoader(folderPath, vfs,
 -        new ReloadingClassLoader() {
 -
 -          @Override
 -          public ClassLoader getClassLoader() {
 -            return ClassLoader.getSystemClassLoader();
 -          }
 -        }, 1000, true);
 +        ClassLoader::getSystemClassLoader, 1000, true);
  
      FileObject[] files = ((VFSClassLoader) arvcl.getClassLoader()).getFileObjects();
-     Assert.assertArrayEquals(createFileSystems(dirContents), files);
+     assertArrayEquals(createFileSystems(dirContents), files);
  
      Class<?> clazz1 = arvcl.getClassLoader().loadClass("test.HelloWorld");
      Object o1 = clazz1.newInstance();
@@@ -212,11 -181,11 +215,11 @@@
  
      Class<?> clazz2 = arvcl.getClassLoader().loadClass("test.HelloWorld");
      Object o2 = clazz2.newInstance();
-     Assert.assertEquals("Hello World!", o2.toString());
+     assertEquals("Hello World!", o2.toString());
  
      // This is false because they are loaded by a different classloader
-     Assert.assertNotEquals(clazz1, clazz2);
-     Assert.assertNotEquals(o1, o2);
 -    assertFalse(clazz1.equals(clazz2));
 -    assertFalse(o1.equals(o2));
++    assertNotEquals(clazz1, clazz2);
++    assertNotEquals(o1, o2);
  
      arvcl.close();
    }
@@@ -229,10 -198,15 +232,10 @@@
      FileObject[] dirContents = testDir.getChildren();
  
      AccumuloReloadingVFSClassLoader arvcl = new AccumuloReloadingVFSClassLoader(folderPath, vfs,
 -        new ReloadingClassLoader() {
 -          @Override
 -          public ClassLoader getClassLoader() {
 -            return ClassLoader.getSystemClassLoader();
 -          }
 -        }, 1000, true);
 +        ClassLoader::getSystemClassLoader, 1000, true);
  
      FileObject[] files = ((VFSClassLoader) arvcl.getClassLoader()).getFileObjects();
-     Assert.assertArrayEquals(createFileSystems(dirContents), files);
+     assertArrayEquals(createFileSystems(dirContents), files);
  
      ClassLoader loader1 = arvcl.getClassLoader();
      Class<?> clazz1 = loader1.loadClass("test.HelloWorld");
@@@ -260,11 -234,11 +263,11 @@@
  
      Class<?> clazz2 = arvcl.getClassLoader().loadClass("test.HelloWorld");
      Object o2 = clazz2.newInstance();
-     Assert.assertEquals("Hallo Welt", o2.toString());
+     assertEquals("Hallo Welt", o2.toString());
  
      // This is false because they are loaded by a different classloader
-     Assert.assertNotEquals(clazz1, clazz2);
-     Assert.assertNotEquals(o1, o2);
 -    assertFalse(clazz1.equals(clazz2));
 -    assertFalse(o1.equals(o2));
++    assertNotEquals(clazz1, clazz2);
++    assertNotEquals(o1, o2);
  
      Class<?> clazz3 = loader1.loadClass("test.HelloWorld");
      Object o3 = clazz3.newInstance();
diff --cc start/src/test/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoaderTest.java
index 6712414,30941d8..c97a71a
--- a/start/src/test/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoaderTest.java
+++ b/start/src/test/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoaderTest.java
@@@ -68,17 -70,27 +70,17 @@@ public class AccumuloVFSClassLoaderTes
      Whitebox.setInternalState(AccumuloVFSClassLoader.class, "loader",
          (AccumuloReloadingVFSClassLoader) null);
  
 -    File conf = folder1.newFile("accumulo-site.xml");
 +    File conf = folder1.newFile("accumulo.properties");
      FileWriter out = new FileWriter(conf);
 -    out.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
 -    out.append("<configuration>\n");
 -    out.append("<property>\n");
 -    out.append("<name>general.classpaths</name>\n");
 -    out.append("<value></value>\n");
 -    out.append("</property>\n");
 -    out.append("<property>\n");
 -    out.append("<name>general.vfs.classpaths</name>\n");
 -    out.append("<value></value>\n");
 -    out.append("</property>\n");
 -    out.append("</configuration>\n");
 +    out.append("general.classpaths=\n");
 +    out.append("general.vfs.classpaths=\n");
      out.close();
  
 -    Whitebox.setInternalState(AccumuloClassLoader.class, "SITE_CONF",
 -        conf.toURI().toURL().toString());
 +    Whitebox.setInternalState(AccumuloClassLoader.class, "accumuloConfigUrl", conf.toURI().toURL());
      Whitebox.setInternalState(AccumuloVFSClassLoader.class, "lock", new Object());
      ClassLoader acl = AccumuloVFSClassLoader.getClassLoader();
-     Assert.assertTrue((acl instanceof VFSClassLoader));
-     Assert.assertTrue((acl.getParent() instanceof URLClassLoader));
+     assertTrue((acl instanceof VFSClassLoader));
+     assertTrue((acl.getParent() instanceof URLClassLoader));
    }
  
    /*
@@@ -94,25 -106,34 +96,25 @@@
      FileUtils.copyURLToFile(this.getClass().getResource("/HelloWorld.jar"),
          folder1.newFile("HelloWorld.jar"));
  
 -    File conf = folder1.newFile("accumulo-site.xml");
 +    File conf = folder1.newFile("accumulo.properties");
      FileWriter out = new FileWriter(conf);
 -    out.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
 -    out.append("<configuration>\n");
 -    out.append("<property>\n");
 -    out.append("<name>general.classpaths</name>\n");
 -    out.append("<value></value>\n");
 -    out.append("</property>\n");
 -    out.append("<property>\n");
 -    out.append("<name>general.vfs.classpaths</name>\n");
 -    out.append("<value>" + new File(folder1.getRoot(), "HelloWorld.jar").toURI() + "</value>\n");
 -    out.append("</property>\n");
 -    out.append("</configuration>\n");
 +    out.append("general.classpaths=\n");
 +    out.append(
 +        "general.vfs.classpaths=" + new File(folder1.getRoot(), "HelloWorld.jar").toURI() + "\n");
      out.close();
  
 -    Whitebox.setInternalState(AccumuloClassLoader.class, "SITE_CONF",
 -        conf.toURI().toURL().toString());
 +    Whitebox.setInternalState(AccumuloClassLoader.class, "accumuloConfigUrl", conf.toURI().toURL());
      Whitebox.setInternalState(AccumuloVFSClassLoader.class, "lock", new Object());
      ClassLoader acl = AccumuloVFSClassLoader.getClassLoader();
-     Assert.assertTrue((acl instanceof VFSClassLoader));
-     Assert.assertTrue((acl.getParent() instanceof VFSClassLoader));
+     assertTrue((acl instanceof VFSClassLoader));
+     assertTrue((acl.getParent() instanceof VFSClassLoader));
      VFSClassLoader arvcl = (VFSClassLoader) acl.getParent();
-     Assert.assertEquals(1, arvcl.getFileObjects().length);
+     assertEquals(1, arvcl.getFileObjects().length);
      // We can't be sure what the authority/host will be due to FQDN mappings, so just check the path
-     Assert.assertTrue(arvcl.getFileObjects()[0].getURL().toString().contains("HelloWorld.jar"));
+     assertTrue(arvcl.getFileObjects()[0].getURL().toString().contains("HelloWorld.jar"));
      Class<?> clazz1 = arvcl.loadClass("test.HelloWorld");
      Object o1 = clazz1.newInstance();
-     Assert.assertEquals("Hello World!", o1.toString());
+     assertEquals("Hello World!", o1.toString());
      Whitebox.setInternalState(AccumuloVFSClassLoader.class, "loader",
          (AccumuloReloadingVFSClassLoader) null);
    }
@@@ -144,9 -175,9 +146,9 @@@
        javaIoTmpDir = javaIoTmpDir.substring(0, javaIoTmpDir.length() - File.separator.length());
      }
  
-     Assert.assertEquals(javaIoTmpDir, tempDirParent);
-     Assert.assertTrue(tempDirName.startsWith("accumulo-vfs-cache-"));
-     Assert.assertTrue(tempDirName.endsWith(System.getProperty("user.name", "nouser")));
 -    assertTrue(javaIoTmpDir.equals(tempDirParent));
++    assertEquals(javaIoTmpDir, tempDirParent);
+     assertTrue(tempDirName.startsWith("accumulo-vfs-cache-"));
+     assertTrue(tempDirName.endsWith(System.getProperty("user.name", "nouser")));
  
      Whitebox.setInternalState(AccumuloVFSClassLoader.class, "loader",
          (AccumuloReloadingVFSClassLoader) null);
@@@ -173,9 -214,9 +175,9 @@@
      File tempDir = Whitebox.getInternalState(replicator, "tempDir");
      String tempDirParent = tempDir.getParent();
      String tempDirName = tempDir.getName();
-     Assert.assertEquals(cacheDir, tempDirParent);
-     Assert.assertTrue(tempDirName.startsWith("accumulo-vfs-cache-"));
-     Assert.assertTrue(tempDirName.endsWith(System.getProperty("user.name", "nouser")));
 -    assertTrue(cacheDir.equals(tempDirParent));
++    assertEquals(cacheDir, tempDirParent);
+     assertTrue(tempDirName.startsWith("accumulo-vfs-cache-"));
+     assertTrue(tempDirName.endsWith(System.getProperty("user.name", "nouser")));
  
      Whitebox.setInternalState(AccumuloVFSClassLoader.class, "loader",
          (AccumuloReloadingVFSClassLoader) null);
diff --cc start/src/test/java/org/apache/accumulo/start/classloader/vfs/ContextManagerTest.java
index 4f85443,e7b53dd..2321c48
--- a/start/src/test/java/org/apache/accumulo/start/classloader/vfs/ContextManagerTest.java
+++ b/start/src/test/java/org/apache/accumulo/start/classloader/vfs/ContextManagerTest.java
@@@ -16,6 -16,11 +16,12 @@@
   */
  package org.apache.accumulo.start.classloader.vfs;
  
+ import static org.junit.Assert.assertArrayEquals;
+ import static org.junit.Assert.assertEquals;
 -import static org.junit.Assert.assertFalse;
 -import static org.junit.Assert.assertTrue;
++import static org.junit.Assert.assertNotEquals;
++import static org.junit.Assert.assertNotSame;
++import static org.junit.Assert.assertSame;
+ 
  import java.io.File;
  import java.util.HashSet;
  
@@@ -111,11 -124,11 +116,11 @@@ public class ContextManagerTest 
  
      Class<?> myContextClass = cl2.loadClass("test.HelloWorld");
      Object o2 = myContextClass.newInstance();
-     Assert.assertEquals("Hello World!", o2.toString());
+     assertEquals("Hello World!", o2.toString());
  
-     Assert.assertNotEquals(defaultContextClass, myContextClass);
 -    assertFalse(defaultContextClass.equals(myContextClass));
++    assertNotEquals(defaultContextClass, myContextClass);
  
 -    cm.removeUnusedContexts(new HashSet<String>());
 +    cm.removeUnusedContexts(new HashSet<>());
    }
  
    @Test
@@@ -124,19 -137,27 +129,19 @@@
  
      Class<?> pclass = parent.loadClass("test.HelloWorld");
  
 -    ContextManager cm = new ContextManager(vfs, new ReloadingClassLoader() {
 -      @Override
 -      public ClassLoader getClassLoader() {
 -        return parent;
 -      }
 -    });
 +    ContextManager cm = new ContextManager(vfs, () -> parent);
  
 -    cm.setContextConfig(new ContextsConfig() {
 -      @Override
 -      public ContextConfig getContextConfig(String context) {
 -        if (context.equals("CX1")) {
 -          return new ContextConfig(uri2.toString(), true);
 -        } else if (context.equals("CX2")) {
 -          return new ContextConfig(uri2.toString(), false);
 -        }
 -        return null;
 +    cm.setContextConfig(context -> {
 +      if (context.equals("CX1")) {
 +        return new ContextConfig(uri2.toString(), true);
 +      } else if (context.equals("CX2")) {
 +        return new ContextConfig(uri2.toString(), false);
        }
 +      return null;
      });
  
-     Assert.assertSame(cm.getClassLoader("CX1").loadClass("test.HelloWorld"), pclass);
-     Assert.assertNotSame(cm.getClassLoader("CX2").loadClass("test.HelloWorld"), pclass);
 -    assertTrue(cm.getClassLoader("CX1").loadClass("test.HelloWorld") == pclass);
 -    assertFalse(cm.getClassLoader("CX2").loadClass("test.HelloWorld") == pclass);
++    assertSame(cm.getClassLoader("CX1").loadClass("test.HelloWorld"), pclass);
++    assertNotSame(cm.getClassLoader("CX2").loadClass("test.HelloWorld"), pclass);
    }
  
    @After
diff --cc test/src/main/java/org/apache/accumulo/test/ArbitraryTablePropertiesIT.java
index 089da23,8ad922d..7db65de
--- a/test/src/main/java/org/apache/accumulo/test/ArbitraryTablePropertiesIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/ArbitraryTablePropertiesIT.java
@@@ -127,10 -130,10 +130,10 @@@ public class ArbitraryTablePropertiesI
      String description1 = "Description";
  
      // Make sure the property name is valid
-     Assert.assertTrue(Property.isValidPropertyKey(propertyName));
+     assertTrue(Property.isValidPropertyKey(propertyName));
  
      // Getting a fresh token will ensure we're logged in as this user (if necessary)
 -    Connector testConn = c.getInstance().getConnector(testUser, user.getToken());
 +    Connector testConn = c.changeUser(testUser, user.getToken());
      // Set the property to the desired value
      testConn.tableOperations().setProperty(tableName, propertyName, description1);
  
@@@ -191,10 -194,10 +194,10 @@@
      String description1 = "Description";
  
      // Make sure the property name is valid
-     Assert.assertTrue(Property.isValidPropertyKey(propertyName));
+     assertTrue(Property.isValidPropertyKey(propertyName));
  
      // Getting a fresh token will ensure we're logged in as this user (if necessary)
 -    Connector testConn = c.getInstance().getConnector(testUser, user.getToken());
 +    Connector testConn = c.changeUser(testUser, user.getToken());
  
      // Try to set the property to the desired value.
      // If able to set it, the test fails, since permission was never granted
diff --cc test/src/main/java/org/apache/accumulo/test/BadDeleteMarkersCreatedIT.java
index 615172d,0120ca3..8f0b040
--- a/test/src/main/java/org/apache/accumulo/test/BadDeleteMarkersCreatedIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/BadDeleteMarkersCreatedIT.java
@@@ -164,17 -166,17 +166,17 @@@ public class BadDeleteMarkersCreatedIT 
      sleepUninterruptibly(timeoutFactor * 15, TimeUnit.SECONDS);
      log.info("Verifying that delete markers were deleted");
      // look for delete markers
 -    Scanner scanner = c.createScanner(MetadataTable.NAME, Authorizations.EMPTY);
 -    scanner.setRange(MetadataSchema.DeletesSection.getRange());
 -    for (Entry<Key,Value> entry : scanner) {
 -      String row = entry.getKey().getRow().toString();
 -      if (!row.contains("/" + tableId + "/")) {
 -        log.info("Ignoring delete entry for a table other than the one we deleted");
 -        continue;
 +    try (Scanner scanner = c.createScanner(MetadataTable.NAME, Authorizations.EMPTY)) {
 +      scanner.setRange(MetadataSchema.DeletesSection.getRange());
 +      for (Entry<Key,Value> entry : scanner) {
 +        String row = entry.getKey().getRow().toString();
 +        if (!row.contains("/" + tableId + "/")) {
 +          log.info("Ignoring delete entry for a table other than the one we deleted");
 +          continue;
 +        }
-         Assert.fail("Delete entry should have been deleted by the garbage collector: "
++        fail("Delete entry should have been deleted by the garbage collector: "
 +            + entry.getKey().getRow());
        }
 -      fail("Delete entry should have been deleted by the garbage collector: "
 -          + entry.getKey().getRow().toString());
      }
    }
 -
  }
diff --cc test/src/main/java/org/apache/accumulo/test/BatchWriterInTabletServerIT.java
index 6242a94,e66204f..55f1570
--- a/test/src/main/java/org/apache/accumulo/test/BatchWriterInTabletServerIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/BatchWriterInTabletServerIT.java
@@@ -108,22 -110,21 +110,21 @@@ public class BatchWriterInTabletServerI
      c.tableOperations().attachIterator(t2, summer);
  
      Map.Entry<Key,Value> actual;
 -    // Scan t1 with an iterator that writes to table t2
 -    Scanner scanner = c.createScanner(t1, Authorizations.EMPTY);
 -    scanner.addScanIterator(itset);
 -    actual = Iterators.getOnlyElement(scanner.iterator());
 -    assertTrue(actual.getKey().equals(k, PartialKey.ROW_COLFAM_COLQUAL));
 -    assertEquals(BatchWriterIterator.SUCCESS_VALUE, actual.getValue());
 -    scanner.close();
 +    try (Scanner scanner = c.createScanner(t1, Authorizations.EMPTY)) {
 +      // Scan t1 with an iterator that writes to table t2
 +      scanner.addScanIterator(itset);
 +      actual = Iterators.getOnlyElement(scanner.iterator());
-       Assert.assertTrue(actual.getKey().equals(k, PartialKey.ROW_COLFAM_COLQUAL));
-       Assert.assertEquals(BatchWriterIterator.SUCCESS_VALUE, actual.getValue());
++      assertTrue(actual.getKey().equals(k, PartialKey.ROW_COLFAM_COLQUAL));
++      assertEquals(BatchWriterIterator.SUCCESS_VALUE, actual.getValue());
 +    }
  
 -    // ensure entries correctly wrote to table t2
 -    scanner = c.createScanner(t2, Authorizations.EMPTY);
 -    actual = Iterators.getOnlyElement(scanner.iterator());
 -    log.debug("t2 entry is " + actual.getKey().toStringNoTime() + " -> " + actual.getValue());
 -    assertTrue(actual.getKey().equals(k, PartialKey.ROW_COLFAM_COLQUAL));
 -    assertEquals(numEntriesToWritePerEntry, Integer.parseInt(actual.getValue().toString()));
 -    scanner.close();
 +    try (Scanner scanner = c.createScanner(t2, Authorizations.EMPTY)) {
 +      // ensure entries correctly wrote to table t2
 +      actual = Iterators.getOnlyElement(scanner.iterator());
 +      log.debug("t2 entry is " + actual.getKey().toStringNoTime() + " -> " + actual.getValue());
-       Assert.assertTrue(actual.getKey().equals(k, PartialKey.ROW_COLFAM_COLQUAL));
-       Assert.assertEquals(numEntriesToWritePerEntry,
-           Integer.parseInt(actual.getValue().toString()));
++      assertTrue(actual.getKey().equals(k, PartialKey.ROW_COLFAM_COLQUAL));
++      assertEquals(numEntriesToWritePerEntry, Integer.parseInt(actual.getValue().toString()));
 +    }
  
      c.tableOperations().delete(t1);
      c.tableOperations().delete(t2);
diff --cc test/src/main/java/org/apache/accumulo/test/CompactionRateLimitingIT.java
index efbf232,2fe4ce4..9fa9547
--- a/test/src/main/java/org/apache/accumulo/test/CompactionRateLimitingIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/CompactionRateLimitingIT.java
@@@ -16,7 -16,8 +16,9 @@@
   */
  package org.apache.accumulo.test;
  
+ import static org.junit.Assert.assertTrue;
+ 
 +import java.security.SecureRandom;
  import java.util.Random;
  
  import org.apache.accumulo.core.client.BatchWriter;
diff --cc test/src/main/java/org/apache/accumulo/test/ConditionalWriterIT.java
index b2b82f6,ea94ca0..e61dc31
--- a/test/src/main/java/org/apache/accumulo/test/ConditionalWriterIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/ConditionalWriterIT.java
@@@ -19,10 -19,12 +19,13 @@@ package org.apache.accumulo.test
  
  import static java.nio.charset.StandardCharsets.UTF_8;
  import static org.apache.accumulo.fate.util.UtilWaitThread.sleepUninterruptibly;
+ import static org.junit.Assert.assertEquals;
+ import static org.junit.Assert.assertFalse;
  import static org.junit.Assert.assertTrue;
+ import static org.junit.Assert.fail;
  
  import java.io.IOException;
 +import java.security.SecureRandom;
  import java.util.ArrayList;
  import java.util.Arrays;
  import java.util.Collections;
@@@ -195,9 -198,10 +197,9 @@@ public class ConditionalWriterIT extend
            new Condition("tx", "seq").setValue("1"), new Condition("name", "last").setValue("Doe"));
        cm5.put("name", "last", "deo");
        cm5.put("tx", "seq", "3");
-       Assert.assertEquals(Status.REJECTED, cw.write(cm5).getStatus());
+       assertEquals(Status.REJECTED, cw.write(cm5).getStatus());
  
        // ensure rejected mutations did not write
 -      Scanner scanner = conn.createScanner(tableName, Authorizations.EMPTY);
        scanner.fetchColumn(new Text("name"), new Text("last"));
        scanner.setRange(new Range("99006"));
        Entry<Key,Value> entry = Iterables.getOnlyElement(scanner);
@@@ -270,8 -275,9 +272,8 @@@
        cm0.put("name", "last", cva, "doe");
        cm0.put("name", "first", cva, "john");
        cm0.put("tx", "seq", cva, "1");
-       Assert.assertEquals(Status.ACCEPTED, cw.write(cm0).getStatus());
+       assertEquals(Status.ACCEPTED, cw.write(cm0).getStatus());
  
 -      Scanner scanner = conn.createScanner(tableName, auths);
        scanner.setRange(new Range("99006"));
        // TODO verify all columns
        scanner.fetchColumn(new Text("tx"), new Text("seq"));
@@@ -522,71 -527,69 +523,71 @@@
      IteratorSetting iterConfig3 = new IteratorSetting(5, VersioningIterator.class);
      VersioningIterator.setMaxVersions(iterConfig3, 1);
  
 -    Scanner scanner = conn.createScanner(tableName, new Authorizations());
 -    scanner.addScanIterator(iterConfig);
 -    scanner.setRange(new Range("ACCUMULO-1000"));
 -    scanner.fetchColumn(new Text("count"), new Text("comments"));
 -
 -    Entry<Key,Value> entry = Iterables.getOnlyElement(scanner);
 -    assertEquals("3", entry.getValue().toString());
 -
 -    try (ConditionalWriter cw = conn.createConditionalWriter(tableName,
 -        new ConditionalWriterConfig())) {
 +    try (Scanner scanner = conn.createScanner(tableName, new Authorizations())) {
 +      scanner.addScanIterator(iterConfig);
 +      scanner.setRange(new Range("ACCUMULO-1000"));
 +      scanner.fetchColumn(new Text("count"), new Text("comments"));
  
 -      ConditionalMutation cm0 = new ConditionalMutation("ACCUMULO-1000",
 -          new Condition("count", "comments").setValue("3"));
 -      cm0.put("count", "comments", "1");
 -      assertEquals(Status.REJECTED, cw.write(cm0).getStatus());
 -      entry = Iterables.getOnlyElement(scanner);
 +      Entry<Key,Value> entry = Iterables.getOnlyElement(scanner);
-       Assert.assertEquals("3", entry.getValue().toString());
+       assertEquals("3", entry.getValue().toString());
  
 -      ConditionalMutation cm1 = new ConditionalMutation("ACCUMULO-1000",
 -          new Condition("count", "comments").setIterators(iterConfig).setValue("3"));
 -      cm1.put("count", "comments", "1");
 -      assertEquals(Status.ACCEPTED, cw.write(cm1).getStatus());
 -      entry = Iterables.getOnlyElement(scanner);
 -      assertEquals("4", entry.getValue().toString());
 -
 -      ConditionalMutation cm2 = new ConditionalMutation("ACCUMULO-1000",
 -          new Condition("count", "comments").setValue("4"));
 -      cm2.put("count", "comments", "1");
 -      assertEquals(Status.REJECTED, cw.write(cm1).getStatus());
 -      entry = Iterables.getOnlyElement(scanner);
 -      assertEquals("4", entry.getValue().toString());
 -
 -      // run test with multiple iterators passed in same batch and condition with two iterators
 -
 -      ConditionalMutation cm3 = new ConditionalMutation("ACCUMULO-1000",
 -          new Condition("count", "comments").setIterators(iterConfig).setValue("4"));
 -      cm3.put("count", "comments", "1");
 -
 -      ConditionalMutation cm4 = new ConditionalMutation("ACCUMULO-1001",
 -          new Condition("count2", "comments").setIterators(iterConfig2).setValue("2"));
 -      cm4.put("count2", "comments", "1");
 -
 -      ConditionalMutation cm5 = new ConditionalMutation("ACCUMULO-1002",
 -          new Condition("count2", "comments").setIterators(iterConfig2, iterConfig3).setValue("2"));
 -      cm5.put("count2", "comments", "1");
 +      try (ConditionalWriter cw = conn.createConditionalWriter(tableName,
 +          new ConditionalWriterConfig())) {
 +
 +        ConditionalMutation cm0 = new ConditionalMutation("ACCUMULO-1000",
 +            new Condition("count", "comments").setValue("3"));
 +        cm0.put("count", "comments", "1");
-         Assert.assertEquals(Status.REJECTED, cw.write(cm0).getStatus());
++        assertEquals(Status.REJECTED, cw.write(cm0).getStatus());
 +        entry = Iterables.getOnlyElement(scanner);
-         Assert.assertEquals("3", entry.getValue().toString());
++        assertEquals("3", entry.getValue().toString());
 +
 +        ConditionalMutation cm1 = new ConditionalMutation("ACCUMULO-1000",
 +            new Condition("count", "comments").setIterators(iterConfig).setValue("3"));
 +        cm1.put("count", "comments", "1");
-         Assert.assertEquals(Status.ACCEPTED, cw.write(cm1).getStatus());
++        assertEquals(Status.ACCEPTED, cw.write(cm1).getStatus());
 +        entry = Iterables.getOnlyElement(scanner);
-         Assert.assertEquals("4", entry.getValue().toString());
++        assertEquals("4", entry.getValue().toString());
 +
 +        ConditionalMutation cm2 = new ConditionalMutation("ACCUMULO-1000",
 +            new Condition("count", "comments").setValue("4"));
 +        cm2.put("count", "comments", "1");
-         Assert.assertEquals(Status.REJECTED, cw.write(cm1).getStatus());
++        assertEquals(Status.REJECTED, cw.write(cm1).getStatus());
 +        entry = Iterables.getOnlyElement(scanner);
-         Assert.assertEquals("4", entry.getValue().toString());
++        assertEquals("4", entry.getValue().toString());
 +
 +        // run test with multiple iterators passed in same batch and condition with two iterators
 +
 +        ConditionalMutation cm3 = new ConditionalMutation("ACCUMULO-1000",
 +            new Condition("count", "comments").setIterators(iterConfig).setValue("4"));
 +        cm3.put("count", "comments", "1");
 +
 +        ConditionalMutation cm4 = new ConditionalMutation("ACCUMULO-1001",
 +            new Condition("count2", "comments").setIterators(iterConfig2).setValue("2"));
 +        cm4.put("count2", "comments", "1");
 +
 +        ConditionalMutation cm5 = new ConditionalMutation("ACCUMULO-1002",
 +            new Condition("count2", "comments").setIterators(iterConfig2, iterConfig3)
 +                .setValue("2"));
 +        cm5.put("count2", "comments", "1");
 +
 +        Iterator<Result> results = cw.write(Arrays.asList(cm3, cm4, cm5).iterator());
 +        Map<String,Status> actual = new HashMap<>();
 +
 +        while (results.hasNext()) {
 +          Result result = results.next();
 +          String k = new String(result.getMutation().getRow());
-           Assert.assertFalse("Did not expect to see multiple resultus for the row: " + k,
++          assertFalse("Did not expect to see multiple resultus for the row: " + k,
 +              actual.containsKey(k));
 +          actual.put(k, result.getStatus());
 +        }
  
 -      Iterator<Result> results = cw.write(Arrays.asList(cm3, cm4, cm5).iterator());
 -      Map<String,Status> actual = new HashMap<>();
 +        Map<String,Status> expected = new HashMap<>();
 +        expected.put("ACCUMULO-1000", Status.ACCEPTED);
 +        expected.put("ACCUMULO-1001", Status.ACCEPTED);
 +        expected.put("ACCUMULO-1002", Status.REJECTED);
  
-         Assert.assertEquals(expected, actual);
 -      while (results.hasNext()) {
 -        Result result = results.next();
 -        String k = new String(result.getMutation().getRow());
 -        assertFalse("Did not expect to see multiple resultus for the row: " + k,
 -            actual.containsKey(k));
 -        actual.put(k, result.getStatus());
++        assertEquals(expected, actual);
        }
 -
 -      Map<String,Status> expected = new HashMap<>();
 -      expected.put("ACCUMULO-1000", Status.ACCEPTED);
 -      expected.put("ACCUMULO-1001", Status.ACCEPTED);
 -      expected.put("ACCUMULO-1002", Status.REJECTED);
 -
 -      assertEquals(expected, actual);
      }
    }
  
@@@ -672,8 -673,9 +673,8 @@@
        ConditionalMutation cm6 = new ConditionalMutation("ACCUMULO-1000",
            new Condition("count", "comments").setValue("8"));
        cm6.put("count", "comments", "7");
-       Assert.assertEquals(Status.ACCEPTED, cw.write(cm6).getStatus());
+       assertEquals(Status.ACCEPTED, cw.write(cm6).getStatus());
  
 -      Scanner scanner = conn.createScanner(tableName, new Authorizations());
        scanner.setRange(new Range("ACCUMULO-1000"));
        scanner.fetchColumn(new Text("count"), new Text("comments"));
  
@@@ -723,7 -725,8 +724,7 @@@
        expected.put("ACCUMULO-1000", Status.ACCEPTED);
        expected.put("ACCUMULO-1001", Status.ACCEPTED);
        expected.put("ACCUMULO-1002", Status.REJECTED);
-       Assert.assertEquals(expected, actual);
 -
+       assertEquals(expected, actual);
      }
    }
  
@@@ -775,8 -776,9 +776,8 @@@
          count++;
        }
  
-       Assert.assertEquals(3, count);
+       assertEquals(3, count);
  
 -      Scanner scanner = conn.createScanner(tableName, new Authorizations("A"));
        scanner.fetchColumn(new Text("tx"), new Text("seq"));
  
        for (String row : new String[] {"99006", "59056", "19059"}) {
@@@ -995,11 -995,13 +996,11 @@@
          rows.add(row);
        }
  
-       Assert.assertEquals(4, rows.size());
+       assertEquals(4, rows.size());
  
 -      Scanner scanner = conn.createScanner(tableName, new Authorizations("A"));
        scanner.fetchColumn(new Text("tx"), new Text("seq"));
 -
        Entry<Key,Value> entry = Iterables.getOnlyElement(scanner);
-       Assert.assertEquals("1", entry.getValue().toString());
+       assertEquals("1", entry.getValue().toString());
      }
    }
  
@@@ -1365,8 -1368,10 +1366,8 @@@
        cm2.put("tx", "seq", "2");
        cm2.put("data", "x", "b");
  
-       Assert.assertEquals(cw.write(cm2).getStatus(), Status.UNKNOWN);
+       assertEquals(cw.write(cm2).getStatus(), Status.UNKNOWN);
  
 -      Scanner scanner = conn.createScanner(table, Authorizations.EMPTY);
 -
        for (Entry<Key,Value> entry : scanner) {
          String cf = entry.getKey().getColumnFamilyData().toString();
          String cq = entry.getKey().getColumnQualifierData().toString();
diff --cc test/src/main/java/org/apache/accumulo/test/ExistingMacIT.java
index d741b95,571c209..cb957f6
--- a/test/src/main/java/org/apache/accumulo/test/ExistingMacIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/ExistingMacIT.java
@@@ -142,14 -136,15 +143,14 @@@ public class ExistingMacIT extends Conf
  
      conn = accumulo2.getConnector("root", new PasswordToken(ROOT_PASSWORD));
  
 -    Scanner scanner = conn.createScanner("table1", Authorizations.EMPTY);
 -
 -    int sum = 0;
 -    for (Entry<Key,Value> entry : scanner) {
 -      sum += Integer.parseInt(entry.getValue().toString());
 +    try (Scanner scanner = conn.createScanner("table1", Authorizations.EMPTY)) {
 +      int sum = 0;
 +      for (Entry<Key,Value> entry : scanner) {
 +        sum += Integer.parseInt(entry.getValue().toString());
 +      }
-       Assert.assertEquals(6569, sum);
++      assertEquals(6569, sum);
      }
  
 -    assertEquals(6569, sum);
 -
      accumulo2.stop();
    }
  
diff --cc test/src/main/java/org/apache/accumulo/test/ImportExportIT.java
index b28a27a,a8c0a1b..ec491d5
--- a/test/src/main/java/org/apache/accumulo/test/ImportExportIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/ImportExportIT.java
@@@ -140,33 -144,30 +143,33 @@@ public class ImportExportIT extends Acc
  
      // Get all `file` colfams from the metadata table for the new table
      log.info("Imported into table with ID: {}", tableId);
 -    Scanner s = conn.createScanner(MetadataTable.NAME, Authorizations.EMPTY);
 -    s.setRange(MetadataSchema.TabletsSection.getRange(tableId));
 -    s.fetchColumnFamily(MetadataSchema.TabletsSection.DataFileColumnFamily.NAME);
 -    MetadataSchema.TabletsSection.ServerColumnFamily.DIRECTORY_COLUMN.fetch(s);
 -
 -    // Should find a single entry
 -    for (Entry<Key,Value> fileEntry : s) {
 -      Key k = fileEntry.getKey();
 -      String value = fileEntry.getValue().toString();
 -      if (k.getColumnFamily().equals(MetadataSchema.TabletsSection.DataFileColumnFamily.NAME)) {
 -        // The file should be an absolute URI (file:///...), not a relative path
 -        // (/b-000.../I000001.rf)
 -        String fileUri = k.getColumnQualifier().toString();
 -        assertFalse("Imported files should have absolute URIs, not relative: " + fileUri,
 -            looksLikeRelativePath(fileUri));
 -      } else if (k.getColumnFamily()
 -          .equals(MetadataSchema.TabletsSection.ServerColumnFamily.NAME)) {
 -        assertFalse("Server directory should have absolute URI, not relative: " + value,
 -            looksLikeRelativePath(value));
 -      } else {
 -        fail("Got expected pair: " + k + "=" + fileEntry.getValue());
 +
 +    try (Scanner s = conn.createScanner(MetadataTable.NAME, Authorizations.EMPTY)) {
 +      s.setRange(MetadataSchema.TabletsSection
 +          .getRange(org.apache.accumulo.core.client.impl.Table.ID.of(tableId)));
 +      s.fetchColumnFamily(MetadataSchema.TabletsSection.DataFileColumnFamily.NAME);
 +      MetadataSchema.TabletsSection.ServerColumnFamily.DIRECTORY_COLUMN.fetch(s);
 +
 +      // Should find a single entry
 +      for (Entry<Key,Value> fileEntry : s) {
 +        Key k = fileEntry.getKey();
 +        String value = fileEntry.getValue().toString();
 +        if (k.getColumnFamily().equals(MetadataSchema.TabletsSection.DataFileColumnFamily.NAME)) {
 +          // The file should be an absolute URI (file:///...), not a relative path
 +          // (/b-000.../I000001.rf)
 +          String fileUri = k.getColumnQualifier().toString();
-           Assert.assertFalse("Imported files should have absolute URIs, not relative: " + fileUri,
++          assertFalse("Imported files should have absolute URIs, not relative: " + fileUri,
 +              looksLikeRelativePath(fileUri));
 +        } else if (k.getColumnFamily()
 +            .equals(MetadataSchema.TabletsSection.ServerColumnFamily.NAME)) {
-           Assert.assertFalse("Server directory should have absolute URI, not relative: " + value,
++          assertFalse("Server directory should have absolute URI, not relative: " + value,
 +              looksLikeRelativePath(value));
 +        } else {
-           Assert.fail("Got expected pair: " + k + "=" + fileEntry.getValue());
++          fail("Got expected pair: " + k + "=" + fileEntry.getValue());
 +        }
        }
 -    }
  
 +    }
      // Online the original table before we verify equivalence
      conn.tableOperations().online(srcTable, true);
  
diff --cc test/src/main/java/org/apache/accumulo/test/InterruptibleScannersIT.java
index 7432ad0,931b27c..af5708f
--- a/test/src/main/java/org/apache/accumulo/test/InterruptibleScannersIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/InterruptibleScannersIT.java
@@@ -52,54 -53,53 +53,54 @@@ public class InterruptibleScannersIT ex
      final String tableName = getUniqueNames(1)[0];
      final Connector conn = getConnector();
      conn.tableOperations().create(tableName);
 +
      // make the world's slowest scanner
 -    final Scanner scanner = conn.createScanner(tableName, Authorizations.EMPTY);
 -    final IteratorSetting cfg = new IteratorSetting(100, SlowIterator.class);
 -    // Wait long enough to be sure we can catch it, but not indefinitely.
 -    SlowIterator.setSeekSleepTime(cfg, 60 * 1000);
 -    scanner.addScanIterator(cfg);
 -    // create a thread to interrupt the slow scan
 -    final Thread scanThread = Thread.currentThread();
 -    Thread thread = new Thread() {
 -      @Override
 -      public void run() {
 -        try {
 -          // ensure the scan is running: not perfect, the metadata tables could be scanned, too.
 -          String tserver = conn.instanceOperations().getTabletServers().iterator().next();
 -          do {
 -            ArrayList<ActiveScan> scans = new ArrayList<>(
 -                conn.instanceOperations().getActiveScans(tserver));
 -            Iterator<ActiveScan> iter = scans.iterator();
 -            while (iter.hasNext()) {
 -              ActiveScan scan = iter.next();
 -              // Remove scans not against our table and not owned by us
 -              if (!getAdminPrincipal().equals(scan.getUser())
 -                  || !tableName.equals(scan.getTable())) {
 -                iter.remove();
 +    try (Scanner scanner = conn.createScanner(tableName, Authorizations.EMPTY)) {
 +      final IteratorSetting cfg = new IteratorSetting(100, SlowIterator.class);
 +      // Wait long enough to be sure we can catch it, but not indefinitely.
 +      SlowIterator.setSeekSleepTime(cfg, 60 * 1000);
 +      scanner.addScanIterator(cfg);
 +      // create a thread to interrupt the slow scan
 +      final Thread scanThread = Thread.currentThread();
 +      Thread thread = new Thread() {
 +        @Override
 +        public void run() {
 +          try {
 +            // ensure the scan is running: not perfect, the metadata tables could be scanned, too.
 +            String tserver = conn.instanceOperations().getTabletServers().iterator().next();
 +            do {
 +              ArrayList<ActiveScan> scans = new ArrayList<>(
 +                  conn.instanceOperations().getActiveScans(tserver));
 +              Iterator<ActiveScan> iter = scans.iterator();
 +              while (iter.hasNext()) {
 +                ActiveScan scan = iter.next();
 +                // Remove scans not against our table and not owned by us
 +                if (!getAdminPrincipal().equals(scan.getUser())
 +                    || !tableName.equals(scan.getTable())) {
 +                  iter.remove();
 +                }
                }
 -            }
  
 -            if (!scans.isEmpty()) {
 -              // We found our scan
 -              break;
 -            }
 -          } while (true);
 -        } catch (Exception e) {
 -          e.printStackTrace();
 +              if (!scans.isEmpty()) {
 +                // We found our scan
 +                break;
 +              }
 +            } while (true);
 +          } catch (Exception e) {
 +            e.printStackTrace();
 +          }
 +          // BAM!
 +          scanThread.interrupt();
          }
 -        // BAM!
 -        scanThread.interrupt();
 +      };
 +      thread.start();
 +      try {
 +        // Use the scanner, expect problems
 +        Iterators.size(scanner.iterator());
-         Assert.fail("Scan should not succeed");
++        fail("Scan should not succeed");
 +      } catch (Exception ex) {} finally {
 +        thread.join();
        }
 -    };
 -    thread.start();
 -    try {
 -      // Use the scanner, expect problems
 -      Iterators.size(scanner.iterator());
 -      fail("Scan should not succeed");
 -    } catch (Exception ex) {} finally {
 -      thread.join();
      }
    }
 -
  }
diff --cc test/src/main/java/org/apache/accumulo/test/IsolationAndDeepCopyIT.java
index 81abb28,5f595d4..39c1ea9
--- a/test/src/main/java/org/apache/accumulo/test/IsolationAndDeepCopyIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/IsolationAndDeepCopyIT.java
@@@ -64,16 -67,15 +67,16 @@@ public class IsolationAndDeepCopyIT ext
      IntersectingIterator.setColumnFamilies(iterCfg,
          new Text[] {new Text("the"), new Text("hamster")});
  
 -    Scanner scanner = conn.createScanner(table, Authorizations.EMPTY);
 -    scanner.enableIsolation();
 -    scanner.addScanIterator(iterCfg);
 -
 -    for (int i = 0; i < 100; i++) {
 -      Iterator<Entry<Key,Value>> iter = scanner.iterator();
 -      assertTrue(iter.hasNext());
 -      assertEquals("000A", iter.next().getKey().getColumnQualifierData().toString());
 -      assertFalse(iter.hasNext());
 +    try (Scanner scanner = conn.createScanner(table, Authorizations.EMPTY)) {
 +      scanner.enableIsolation();
 +      scanner.addScanIterator(iterCfg);
 +
 +      for (int i = 0; i < 100; i++) {
 +        Iterator<Entry<Key,Value>> iter = scanner.iterator();
-         Assert.assertTrue(iter.hasNext());
-         Assert.assertEquals("000A", iter.next().getKey().getColumnQualifierData().toString());
-         Assert.assertFalse(iter.hasNext());
++        assertTrue(iter.hasNext());
++        assertEquals("000A", iter.next().getKey().getColumnQualifierData().toString());
++        assertFalse(iter.hasNext());
 +      }
      }
    }
  
diff --cc test/src/main/java/org/apache/accumulo/test/LargeSplitRowIT.java
index b9c9a68,9b03ba4..86b27ea
--- a/test/src/main/java/org/apache/accumulo/test/LargeSplitRowIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/LargeSplitRowIT.java
@@@ -94,19 -96,18 +96,19 @@@ public class LargeSplitRowIT extends Co
      // Make sure that the information that was written to the table before we tried to add the split
      // point is still correct
      int counter = 0;
 -    final Scanner scanner = conn.createScanner(tableName, Authorizations.EMPTY);
 -    for (Entry<Key,Value> entry : scanner) {
 -      counter++;
 -      Key k = entry.getKey();
 -      assertEquals("Row", k.getRow().toString());
 -      assertEquals("cf", k.getColumnFamily().toString());
 -      assertEquals("cq", k.getColumnQualifier().toString());
 -      assertEquals("value", entry.getValue().toString());
 +    try (Scanner scanner = conn.createScanner(tableName, Authorizations.EMPTY)) {
 +      for (Entry<Key,Value> entry : scanner) {
 +        counter++;
 +        Key k = entry.getKey();
-         Assert.assertEquals("Row", k.getRow().toString());
-         Assert.assertEquals("cf", k.getColumnFamily().toString());
-         Assert.assertEquals("cq", k.getColumnQualifier().toString());
-         Assert.assertEquals("value", entry.getValue().toString());
++        assertEquals("Row", k.getRow().toString());
++        assertEquals("cf", k.getColumnFamily().toString());
++        assertEquals("cq", k.getColumnQualifier().toString());
++        assertEquals("value", entry.getValue().toString());
  
 +      }
      }
      // Make sure there is only one line in the table
-     Assert.assertEquals(1, counter);
+     assertEquals(1, counter);
    }
  
    // Test tablet server split with 250 entries with all the same prefix
@@@ -150,22 -151,21 +152,22 @@@
  
      // Make sure all the data that was put in the table is still correct
      int count = 0;
 -    final Scanner scanner = conn.createScanner(tableName, Authorizations.EMPTY);
 -    for (Entry<Key,Value> entry : scanner) {
 -      Key k = entry.getKey();
 -      data[data.length - 1] = (byte) count;
 -      String expected = new String(data, UTF_8);
 -      assertEquals(expected, k.getRow().toString());
 -      assertEquals("cf", k.getColumnFamily().toString());
 -      assertEquals("cq", k.getColumnQualifier().toString());
 -      assertEquals("value", entry.getValue().toString());
 -      count++;
 +    try (Scanner scanner = conn.createScanner(tableName, Authorizations.EMPTY)) {
 +      for (Entry<Key,Value> entry : scanner) {
 +        Key k = entry.getKey();
 +        data[data.length - 1] = (byte) count;
 +        String expected = new String(data, UTF_8);
-         Assert.assertEquals(expected, k.getRow().toString());
-         Assert.assertEquals("cf", k.getColumnFamily().toString());
-         Assert.assertEquals("cq", k.getColumnQualifier().toString());
-         Assert.assertEquals("value", entry.getValue().toString());
++        assertEquals(expected, k.getRow().toString());
++        assertEquals("cf", k.getColumnFamily().toString());
++        assertEquals("cq", k.getColumnQualifier().toString());
++        assertEquals("value", entry.getValue().toString());
 +        count++;
 +      }
      }
-     Assert.assertEquals(250, count);
+     assertEquals(250, count);
  
      // Make sure no splits occurred in the table
-     Assert.assertEquals(0, conn.tableOperations().listSplits(tableName).size());
+     assertEquals(0, conn.tableOperations().listSplits(tableName).size());
    }
  
    // 10 0's; 10 2's; 10 4's... 10 30's etc
@@@ -274,31 -274,31 +276,31 @@@
      // Make sure all the data that was put in the table is still correct
      int count = 0;
      int extra = 10;
 -    final Scanner scanner = conn.createScanner(tableName, Authorizations.EMPTY);
 -    for (Entry<Key,Value> entry : scanner) {
 -      if (extra == 10) {
 -        extra = 0;
 -        for (int i = 0; i < data.length - 1; i++) {
 -          data[i] = (byte) count;
 -        }
 -        count += spacing;
 +    try (Scanner scanner = conn.createScanner(tableName, Authorizations.EMPTY)) {
 +      for (Entry<Key,Value> entry : scanner) {
 +        if (extra == 10) {
 +          extra = 0;
 +          for (int i = 0; i < data.length - 1; i++) {
 +            data[i] = (byte) count;
 +          }
 +          count += spacing;
  
 +        }
 +        Key k = entry.getKey();
 +        data[data.length - 1] = (byte) extra;
 +        String expected = new String(data, UTF_8);
-         Assert.assertEquals(expected, k.getRow().toString());
-         Assert.assertEquals("cf", k.getColumnFamily().toString());
-         Assert.assertEquals("cq", k.getColumnQualifier().toString());
-         Assert.assertEquals("value", entry.getValue().toString());
++        assertEquals(expected, k.getRow().toString());
++        assertEquals("cf", k.getColumnFamily().toString());
++        assertEquals("cq", k.getColumnQualifier().toString());
++        assertEquals("value", entry.getValue().toString());
 +        extra++;
        }
 -      Key k = entry.getKey();
 -      data[data.length - 1] = (byte) extra;
 -      String expected = new String(data, UTF_8);
 -      assertEquals(expected, k.getRow().toString());
 -      assertEquals("cf", k.getColumnFamily().toString());
 -      assertEquals("cq", k.getColumnQualifier().toString());
 -      assertEquals("value", entry.getValue().toString());
 -      extra++;
      }
-     Assert.assertEquals(10, extra);
-     Assert.assertEquals(max, count);
+     assertEquals(10, extra);
+     assertEquals(max, count);
  
 -    // Make sure no splits occured in the table
 +    // Make sure no splits occurred in the table
-     Assert.assertEquals(0, conn.tableOperations().listSplits(tableName).size());
+     assertEquals(0, conn.tableOperations().listSplits(tableName).size());
 -
    }
  
  }
diff --cc test/src/main/java/org/apache/accumulo/test/LocatorIT.java
index 0214e3a,46a166b..38e000c
--- a/test/src/main/java/org/apache/accumulo/test/LocatorIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/LocatorIT.java
@@@ -66,9 -69,9 +70,9 @@@ public class LocatorIT extends Accumulo
  
        TabletId tid = entry.getKey();
        String location = locations.getTabletLocation(tid);
-       Assert.assertNotNull("Location for " + tid + " was null", location);
-       Assert.assertTrue("Unknown location " + location, tservers.contains(location));
-       Assert.assertEquals("Expected <host>:<port> " + location, 2, location.split(":").length);
+       assertNotNull("Location for " + tid + " was null", location);
+       assertTrue("Unknown location " + location, tservers.contains(location));
 -      assertTrue("Expected <host>:<port> " + location, location.split(":").length == 2);
++      assertEquals("Expected <host>:<port> " + location, 2, location.split(":").length);
  
      }
  
diff --cc test/src/main/java/org/apache/accumulo/test/MissingWalHeaderCompletesRecoveryIT.java
index 9503436,83dda63..265d5c0
--- a/test/src/main/java/org/apache/accumulo/test/MissingWalHeaderCompletesRecoveryIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/MissingWalHeaderCompletesRecoveryIT.java
@@@ -129,8 -133,8 +131,8 @@@ public class MissingWalHeaderCompletesR
      String tableName = getUniqueNames(1)[0];
      conn.tableOperations().create(tableName);
  
 -    String tableId = conn.tableOperations().tableIdMap().get(tableName);
 +    Table.ID tableId = Table.ID.of(conn.tableOperations().tableIdMap().get(tableName));
-     Assert.assertNotNull("Table ID was null", tableId);
+     assertNotNull("Table ID was null", tableId);
  
      LogEntry logEntry = new LogEntry(new KeyExtent(tableId, null, null), 0, "127.0.0.1:12345",
          emptyWalog.toURI().toString());
@@@ -155,9 -159,8 +157,9 @@@
  
      // Reading the table implies that recovery completed successfully (the empty file was ignored)
      // otherwise the tablet will never come online and we won't be able to read it.
 -    Scanner s = conn.createScanner(tableName, Authorizations.EMPTY);
 -    assertEquals(0, Iterables.size(s));
 +    try (Scanner s = conn.createScanner(tableName, Authorizations.EMPTY)) {
-       Assert.assertEquals(0, Iterables.size(s));
++      assertEquals(0, Iterables.size(s));
 +    }
    }
  
    @Test
@@@ -177,19 -180,19 +179,19 @@@
  
      // Write half of the header
      FSDataOutputStream wal = fs.create(new Path(partialHeaderWalog.toURI()));
 -    wal.write(DfsLogger.LOG_FILE_HEADER_V3.getBytes(UTF_8), 0,
 -        DfsLogger.LOG_FILE_HEADER_V3.length() / 2);
 +    wal.write(DfsLogger.LOG_FILE_HEADER_V4.getBytes(UTF_8), 0,
 +        DfsLogger.LOG_FILE_HEADER_V4.length() / 2);
      wal.close();
  
-     Assert.assertTrue("root user did not have write permission to metadata table",
+     assertTrue("root user did not have write permission to metadata table",
          conn.securityOperations().hasTablePermission("root", MetadataTable.NAME,
              TablePermission.WRITE));
  
      String tableName = getUniqueNames(1)[0];
      conn.tableOperations().create(tableName);
  
 -    String tableId = conn.tableOperations().tableIdMap().get(tableName);
 +    Table.ID tableId = Table.ID.of(conn.tableOperations().tableIdMap().get(tableName));
-     Assert.assertNotNull("Table ID was null", tableId);
+     assertNotNull("Table ID was null", tableId);
  
      LogEntry logEntry = new LogEntry(null, 0, "127.0.0.1:12345",
          partialHeaderWalog.toURI().toString());
@@@ -214,9 -217,8 +216,9 @@@
  
      // Reading the table implies that recovery completed successfully (the empty file was ignored)
      // otherwise the tablet will never come online and we won't be able to read it.
 -    Scanner s = conn.createScanner(tableName, Authorizations.EMPTY);
 -    assertEquals(0, Iterables.size(s));
 +    try (Scanner s = conn.createScanner(tableName, Authorizations.EMPTY)) {
-       Assert.assertEquals(0, Iterables.size(s));
++      assertEquals(0, Iterables.size(s));
 +    }
    }
  
  }
diff --cc test/src/main/java/org/apache/accumulo/test/MultiTableBatchWriterIT.java
index d80e72d,ad999c9..830c92f
--- a/test/src/main/java/org/apache/accumulo/test/MultiTableBatchWriterIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/MultiTableBatchWriterIT.java
@@@ -103,26 -108,25 +106,26 @@@ public class MultiTableBatchWriterIT ex
        table2Expectations.put(Maps.immutableEntry("foo", "col1"), "val1");
        table2Expectations.put(Maps.immutableEntry("bar", "col1"), "val1");
  
 -      Scanner s = connector.createScanner(table1, new Authorizations());
 -      s.setRange(new Range());
        Map<Entry<String,String>,String> actual = new HashMap<>();
 -      for (Entry<Key,Value> entry : s) {
 -        actual.put(Maps.immutableEntry(entry.getKey().getRow().toString(),
 -            entry.getKey().getColumnFamily().toString()), entry.getValue().toString());
 -      }
 -
 -      assertEquals("Differing results for " + table1, table1Expectations, actual);
  
 -      s = connector.createScanner(table2, new Authorizations());
 -      s.setRange(new Range());
 -      actual = new HashMap<>();
 -      for (Entry<Key,Value> entry : s) {
 -        actual.put(Maps.immutableEntry(entry.getKey().getRow().toString(),
 -            entry.getKey().getColumnFamily().toString()), entry.getValue().toString());
 +      try (Scanner s = connector.createScanner(table1, new Authorizations())) {
 +        s.setRange(new Range());
 +        for (Entry<Key,Value> entry : s) {
 +          actual.put(Maps.immutableEntry(entry.getKey().getRow().toString(),
 +              entry.getKey().getColumnFamily().toString()), entry.getValue().toString());
 +        }
-         Assert.assertEquals("Differing results for " + table1, table1Expectations, actual);
++        assertEquals("Differing results for " + table1, table1Expectations, actual);
        }
  
 -      assertEquals("Differing results for " + table2, table2Expectations, actual);
 +      try (Scanner s = connector.createScanner(table2, new Authorizations())) {
 +        s.setRange(new Range());
 +        actual = new HashMap<>();
 +        for (Entry<Key,Value> entry : s) {
 +          actual.put(Maps.immutableEntry(entry.getKey().getRow().toString(),
 +              entry.getKey().getColumnFamily().toString()), entry.getValue().toString());
 +        }
-         Assert.assertEquals("Differing results for " + table2, table2Expectations, actual);
++        assertEquals("Differing results for " + table2, table2Expectations, actual);
 +      }
  
      } finally {
        if (null != mtbw) {
@@@ -171,15 -175,15 +174,15 @@@
        expectations.put(Maps.immutableEntry("bar", "col2"), "val2");
  
        for (String table : Arrays.asList(newTable1, newTable2)) {
 -        Scanner s = connector.createScanner(table, new Authorizations());
 -        s.setRange(new Range());
 -        Map<Entry<String,String>,String> actual = new HashMap<>();
 -        for (Entry<Key,Value> entry : s) {
 -          actual.put(Maps.immutableEntry(entry.getKey().getRow().toString(),
 -              entry.getKey().getColumnFamily().toString()), entry.getValue().toString());
 +        try (Scanner s = connector.createScanner(table, new Authorizations())) {
 +          s.setRange(new Range());
 +          Map<Entry<String,String>,String> actual = new HashMap<>();
 +          for (Entry<Key,Value> entry : s) {
 +            actual.put(Maps.immutableEntry(entry.getKey().getRow().toString(),
 +                entry.getKey().getColumnFamily().toString()), entry.getValue().toString());
 +          }
-           Assert.assertEquals("Differing results for " + table, expectations, actual);
++          assertEquals("Differing results for " + table, expectations, actual);
          }
 -
 -        assertEquals("Differing results for " + table, expectations, actual);
        }
      } finally {
        if (null != mtbw) {
@@@ -248,15 -252,15 +251,15 @@@
        expectations.put(Maps.immutableEntry("bar", "col2"), "val2");
  
        for (String table : Arrays.asList(newTable1, newTable2)) {
 -        Scanner s = connector.createScanner(table, new Authorizations());
 -        s.setRange(new Range());
 -        Map<Entry<String,String>,String> actual = new HashMap<>();
 -        for (Entry<Key,Value> entry : s) {
 -          actual.put(Maps.immutableEntry(entry.getKey().getRow().toString(),
 -              entry.getKey().getColumnFamily().toString()), entry.getValue().toString());
 +        try (Scanner s = connector.createScanner(table, new Authorizations())) {
 +          s.setRange(new Range());
 +          Map<Entry<String,String>,String> actual = new HashMap<>();
 +          for (Entry<Key,Value> entry : s) {
 +            actual.put(Maps.immutableEntry(entry.getKey().getRow().toString(),
 +                entry.getKey().getColumnFamily().toString()), entry.getValue().toString());
 +          }
-           Assert.assertEquals("Differing results for " + table, expectations, actual);
++          assertEquals("Differing results for " + table, expectations, actual);
          }
 -
 -        assertEquals("Differing results for " + table, expectations, actual);
        }
      } finally {
        if (null != mtbw) {
diff --cc test/src/main/java/org/apache/accumulo/test/NewTableConfigurationIT.java
index 1e4b4ef,0000000..0be77ad
mode 100644,000000..100644
--- a/test/src/main/java/org/apache/accumulo/test/NewTableConfigurationIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/NewTableConfigurationIT.java
@@@ -1,823 -1,0 +1,823 @@@
 +/*
 + * 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;
 +
 +import static org.junit.Assert.assertEquals;
 +import static org.junit.Assert.assertFalse;
++import static org.junit.Assert.assertTrue;
++import static org.junit.Assert.fail;
 +
 +import java.util.Collections;
 +import java.util.EnumSet;
 +import java.util.HashMap;
 +import java.util.Map;
 +import java.util.Map.Entry;
 +import java.util.Set;
 +import java.util.TreeMap;
 +
 +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.IteratorSetting;
 +import org.apache.accumulo.core.client.Scanner;
 +import org.apache.accumulo.core.client.TableExistsException;
 +import org.apache.accumulo.core.client.TableNotFoundException;
 +import org.apache.accumulo.core.client.admin.NewTableConfiguration;
 +import org.apache.accumulo.core.client.admin.TimeType;
 +import org.apache.accumulo.core.conf.Property;
 +import org.apache.accumulo.core.data.Key;
 +import org.apache.accumulo.core.data.Value;
 +import org.apache.accumulo.core.iterators.IteratorUtil.IteratorScope;
 +import org.apache.accumulo.core.metadata.MetadataTable;
 +import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.ServerColumnFamily;
 +import org.apache.accumulo.core.security.Authorizations;
 +import org.apache.accumulo.harness.SharedMiniClusterBase;
 +import org.apache.hadoop.io.Text;
 +import org.junit.AfterClass;
- import org.junit.Assert;
 +import org.junit.BeforeClass;
 +import org.junit.Test;
 +import org.slf4j.Logger;
 +import org.slf4j.LoggerFactory;
 +
 +import com.google.common.collect.ImmutableSet;
 +import com.google.common.collect.Iterators;
 +
 +public class NewTableConfigurationIT extends SharedMiniClusterBase {
 +  private static final Logger log = LoggerFactory.getLogger(NewTableConfigurationIT.class);
 +
 +  @Override
 +  protected int defaultTimeoutSeconds() {
 +    return 30;
 +  }
 +
 +  @BeforeClass
 +  public static void setup() throws Exception {
 +    SharedMiniClusterBase.startMiniCluster();
 +  }
 +
 +  @AfterClass
 +  public static void teardown() throws Exception {
 +    SharedMiniClusterBase.stopMiniCluster();
 +  }
 +
 +  /**
 +   * Test that setting properties more than once overwrites the previous property settings.
 +   */
 +  @Test
 +  public void testSetPropertiesOverwriteOlderProperties() throws AccumuloSecurityException,
 +      AccumuloException, TableExistsException, TableNotFoundException {
 +    Connector conn = getConnector();
 +    String tableName = getUniqueNames(2)[0];
 +    NewTableConfiguration ntc = new NewTableConfiguration();
 +    Map<String,String> initialProps = new HashMap<>();
 +    initialProps.put(Property.TABLE_ARBITRARY_PROP_PREFIX.getKey() + "prop1", "val1");
 +    initialProps.put(Property.TABLE_ARBITRARY_PROP_PREFIX.getKey() + "prop2", "val2");
 +    ntc.setProperties(initialProps);
 +    // Create a new set of properties and set them with setProperties
 +    Map<String,String> updatedProps = new HashMap<>();
 +    updatedProps.put(Property.TABLE_ARBITRARY_PROP_PREFIX.getKey() + "newerprop1", "newerval1");
 +    updatedProps.put(Property.TABLE_ARBITRARY_PROP_PREFIX.getKey() + "newerprop2", "newerval2");
 +    ntc.setProperties(updatedProps);
 +    conn.tableOperations().create(tableName, ntc);
 +    // verify
 +    Map<String,String> props = ntc.getProperties();
 +    assertEquals(props.get(Property.TABLE_ARBITRARY_PROP_PREFIX.getKey() + "newerprop1"),
 +        "newerval1");
 +    assertEquals(props.get(Property.TABLE_ARBITRARY_PROP_PREFIX.getKey() + "newerprop2"),
 +        "newerval2");
 +    assertFalse(props.keySet().contains(Property.TABLE_ARBITRARY_PROP_PREFIX.getKey() + "prop1"));
 +    assertFalse(props.keySet().contains(Property.TABLE_ARBITRARY_PROP_PREFIX.getKey() + "prop2"));
 +  }
 +
 +  /**
 +   * Verify that you cannot have overlapping locality groups.
 +   *
 +   * Attempt to set a locality group with overlapping groups. This test should throw an
 +   * IllegalArgumentException indicating that groups overlap.
 +   */
 +  @Test(expected = IllegalArgumentException.class)
 +  public void testOverlappingGroupsFail()
 +      throws AccumuloSecurityException, AccumuloException, TableExistsException {
 +    NewTableConfiguration ntc = new NewTableConfiguration();
 +    Map<String,Set<Text>> lgroups = new HashMap<>();
 +    lgroups.put("lg1", ImmutableSet.of(new Text("colFamA"), new Text("colFamB")));
 +    lgroups.put("lg2", ImmutableSet.of(new Text("colFamC"), new Text("colFamB")));
 +    ntc.setLocalityGroups(lgroups);
 +  }
 +
 +  /**
 +   * Test simplest case of setting locality groups at table creation.
 +   */
 +  @Test
 +  public void testSimpleLocalityGroupCreation() throws AccumuloSecurityException, AccumuloException,
 +      TableExistsException, TableNotFoundException {
 +    Connector conn = getConnector();
 +    String tableName = getUniqueNames(2)[0];
 +    NewTableConfiguration ntc = new NewTableConfiguration();
 +    // set locality groups map
 +    Map<String,Set<Text>> lgroups = new HashMap<>();
 +    lgroups.put("lg1", ImmutableSet.of(new Text("dog"), new Text("cat")));
 +    lgroups.put("lg2", ImmutableSet.of(new Text("lion"), new Text("tiger")));
 +    // set groups via NewTableConfiguration
 +    ntc.setLocalityGroups(lgroups);
 +    conn.tableOperations().create(tableName, ntc);
 +    // verify
 +    Map<String,Set<Text>> createdLocalityGroups = conn.tableOperations()
 +        .getLocalityGroups(tableName);
 +    assertEquals(2, createdLocalityGroups.size());
 +    assertEquals(createdLocalityGroups.get("lg1"),
 +        ImmutableSet.of(new Text("dog"), new Text("cat")));
 +    assertEquals(createdLocalityGroups.get("lg2"),
 +        ImmutableSet.of(new Text("lion"), new Text("tiger")));
 +  }
 +
 +  /**
 +   * Verify that setting locality groups more than once overwrite initial locality settings.
 +   */
 +  @Test
 +  public void testMulitpleCallsToSetLocalityGroups() throws AccumuloSecurityException,
 +      AccumuloException, TableExistsException, TableNotFoundException {
 +    Connector conn = getConnector();
 +    String tableName = getUniqueNames(2)[0];
 +    NewTableConfiguration ntc = new NewTableConfiguration();
 +    // set first locality groups map
 +    Map<String,Set<Text>> initalGroup = new HashMap<>();
 +    initalGroup.put("lg1", ImmutableSet.of(new Text("dog"), new Text("cat")));
 +    ntc.setLocalityGroups(initalGroup);
 +    // set a second locality groups map and set in method call
 +    Map<String,Set<Text>> secondGroup = new HashMap<>();
 +    secondGroup.put("lg1", ImmutableSet.of(new Text("blue"), new Text("red")));
 +    ntc.setLocalityGroups(secondGroup);
 +    conn.tableOperations().create(tableName, ntc);
 +    // verify
 +    Map<String,Set<Text>> createdLocalityGroups = conn.tableOperations()
 +        .getLocalityGroups(tableName);
... 7967 lines suppressed ...