Merge pull request #87 from Kidcredible300/CompactionConfigurerTest

Compaction Configurer Test
diff --git a/.asf.yaml b/.asf.yaml
index 9f60089..7770a42 100644
--- a/.asf.yaml
+++ b/.asf.yaml
@@ -7,7 +7,7 @@
 # "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
+#   https://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
diff --git a/.github/workflows/maven.yaml b/.github/workflows/maven.yaml
index 80125ec..c19f4fa 100644
--- a/.github/workflows/maven.yaml
+++ b/.github/workflows/maven.yaml
@@ -7,7 +7,7 @@
 # "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
+#   https://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
diff --git a/.gitignore b/.gitignore
index 9f52895..21671fd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,17 +1,21 @@
-# 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
+# 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
 #
-# 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.
+#   https://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.
+#
 
 # Maven ignores
 /target/
diff --git a/DOCKER.md b/DOCKER.md
index 544a4dd..6bfcd22 100644
--- a/DOCKER.md
+++ b/DOCKER.md
@@ -1,18 +1,22 @@
 <!--
-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
+    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
 
-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.
+      https://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.
+
 -->
 
 # accumulo-proxy-docker
@@ -131,4 +135,4 @@
 
 Some resources for additional help:
 * [Main Accumulo Website](https://accumulo.apache.org/)
-* [Contact Us page](https://accumulo.apache.org/contact-us/)
\ No newline at end of file
+* [Contact Us page](https://accumulo.apache.org/contact-us/)
diff --git a/Dockerfile b/Dockerfile
index cc8b6c8..55d7c5e 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,17 +1,21 @@
-# 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
+# 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
 #
-# 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.
+#   https://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.
+#
 
 FROM openjdk:11
 
diff --git a/NOTICE b/NOTICE
index bc83921..0b14cc0 100644
--- a/NOTICE
+++ b/NOTICE
@@ -1,5 +1,5 @@
 Apache Accumulo Proxy
-Copyright 2013-2023 The Apache Software Foundation
+Copyright 2013-2025 The Apache Software Foundation
 
 This product includes software developed at
 The Apache Software Foundation (https://www.apache.org/).
diff --git a/README.md b/README.md
index 9556748..7b21e8f 100644
--- a/README.md
+++ b/README.md
@@ -1,18 +1,22 @@
 <!--
-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
+    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
 
-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.
+      https://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
 -->
 
 [Apache Accumulo][accumulo] Proxy
diff --git a/contrib/Eclipse-Accumulo-Template.xml b/contrib/Eclipse-Accumulo-Template.xml
deleted file mode 100644
index bfdac6c..0000000
--- a/contrib/Eclipse-Accumulo-Template.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!--
-  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.
--->
-<templates>
-<template autoinsert="true" context="gettercomment_context" deleted="false" description="Comment for getter method" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name="gettercomment">/**
- * @return the ${bare_field_name}
- */</template><template autoinsert="true" context="settercomment_context" deleted="false" description="Comment for setter method" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.settercomment" name="settercomment">/**
- * @param ${param} the ${bare_field_name} to set
- */</template><template autoinsert="true" context="constructorcomment_context" deleted="false" description="Comment for created constructors" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name="constructorcomment">/**
- * ${tags}
- */</template><template autoinsert="false" context="filecomment_context" deleted="false" description="Comment for created Java files" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.filecomment" name="filecomment">/*&#13;
- * Licensed to the Apache Software Foundation (ASF) under one or more&#13;
- * contributor license agreements.  See the NOTICE file distributed with&#13;
- * this work for additional information regarding copyright ownership.&#13;
- * The ASF licenses this file to You under the Apache License, Version 2.0&#13;
- * (the "License"); you may not use this file except in compliance with&#13;
- * the License.  You may obtain a copy of the License at&#13;
- *&#13;
- *     http://www.apache.org/licenses/LICENSE-2.0&#13;
- *&#13;
- * Unless required by applicable law or agreed to in writing, software&#13;
- * distributed under the License is distributed on an "AS IS" BASIS,&#13;
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&#13;
- * See the License for the specific language governing permissions and&#13;
- * limitations under the License.&#13;
- */</template><template autoinsert="false" context="typecomment_context" deleted="false" description="Comment for created types" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.typecomment" name="typecomment">/**
- * ${tags}
- */</template><template autoinsert="false" context="fieldcomment_context" deleted="false" description="Comment for fields" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name="fieldcomment"/><template autoinsert="true" context="methodcomment_context" deleted="false" description="Comment for non-overriding methods" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name="methodcomment">/**
- * ${tags}
- */</template><template autoinsert="false" context="overridecomment_context" deleted="false" description="Comment for overriding methods" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name="overridecomment"/><template autoinsert="true" context="delegatecomment_context" deleted="false" description="Comment for delegate methods" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name="delegatecomment">/**
- * ${tags}
- * ${see_to_target}
- */</template><template autoinsert="true" context="newtype_context" deleted="false" description="Newly created files" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.newtype" name="newtype">${filecomment}
-${package_declaration}
-
-${typecomment}
-${type_declaration}</template><template autoinsert="true" context="classbody_context" deleted="false" description="Code in new class type bodies" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.classbody" name="classbody">
-</template><template autoinsert="true" context="interfacebody_context" deleted="false" description="Code in new interface type bodies" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name="interfacebody">
-</template><template autoinsert="true" context="enumbody_context" deleted="false" description="Code in new enum type bodies" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.enumbody" name="enumbody">
-</template><template autoinsert="true" context="annotationbody_context" deleted="false" description="Code in new annotation type bodies" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name="annotationbody">
-</template><template autoinsert="true" context="catchblock_context" deleted="false" description="Code in new catch blocks" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.catchblock" name="catchblock">// ${todo} Auto-generated catch block
-${exception_var}.printStackTrace();</template><template autoinsert="true" context="methodbody_context" deleted="false" description="Code in created method stubs" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.methodbody" name="methodbody">// ${todo} Auto-generated method stub
-${body_statement}</template><template autoinsert="true" context="constructorbody_context" deleted="false" description="Code in created constructor stubs" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name="constructorbody">${body_statement}
-// ${todo} Auto-generated constructor stub</template><template autoinsert="true" context="getterbody_context" deleted="false" description="Code in created getters" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.getterbody" name="getterbody">return ${field};</template><template autoinsert="true" context="setterbody_context" deleted="false" description="Code in created setters" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.setterbody" name="setterbody">${field} = ${param};
-</template>
-</templates>
diff --git a/contrib/create-release-candidate.sh b/contrib/create-release-candidate.sh
index 1386ccc..22e1d8a 100755
--- a/contrib/create-release-candidate.sh
+++ b/contrib/create-release-candidate.sh
@@ -1,19 +1,22 @@
 #! /usr/bin/env bash
-
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
 #
-#     http://www.apache.org/licenses/LICENSE-2.0
+# 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
 #
-# 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.
+#   https://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.
+#
 
 cd "$(dirname "$0")/.." || exit 1
 scriptname=$(basename "$0")
diff --git a/docs/java_client.md b/docs/java_client.md
index 74506b7..773da33 100644
--- a/docs/java_client.md
+++ b/docs/java_client.md
@@ -1,18 +1,22 @@
 <!--
-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
+    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
 
-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.
+      https://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.
+
 -->
 
 # Java client
diff --git a/pom.xml b/pom.xml
index ab74d73..c9746ec 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,19 +1,23 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
 
-      http://www.apache.org/licenses/LICENSE-2.0
+    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
 
-  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.
+      https://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.
+
 -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
@@ -85,16 +89,16 @@
     <url>https://github.com/apache/accumulo-proxy/actions</url>
   </ciManagement>
   <properties>
-    <accumulo.version>2.1.3</accumulo.version>
+    <accumulo.version>2.1.4</accumulo.version>
     <eclipseFormatterStyle>contrib/Eclipse-Accumulo-Codestyle.xml</eclipseFormatterStyle>
     <!-- extra release args for testing -->
     <extraReleaseArguments />
     <hadoop.version>3.3.6</hadoop.version>
-    <it.failIfNoSpecifiedTests>false</it.failIfNoSpecifiedTests>
     <maven.compiler.release>11</maven.compiler.release>
     <maven.compiler.source>11</maven.compiler.source>
     <maven.compiler.target>11</maven.compiler.target>
-    <slf4j.version>2.0.12</slf4j.version>
+    <maven.test.redirectTestOutputToFile>true</maven.test.redirectTestOutputToFile>
+    <slf4j.version>2.0.17</slf4j.version>
     <sourceReleaseAssemblyDescriptor>source-release-tar</sourceReleaseAssemblyDescriptor>
     <spotbugs.excludeFilterFile>src/main/spotbugs/exclude-filter.xml</spotbugs.excludeFilterFile>
     <thrift.version>0.17.0</thrift.version>
@@ -104,14 +108,14 @@
       <dependency>
         <groupId>io.micrometer</groupId>
         <artifactId>micrometer-bom</artifactId>
-        <version>1.12.2</version>
+        <version>1.14.5</version>
         <type>pom</type>
         <scope>import</scope>
       </dependency>
       <dependency>
         <groupId>org.apache.logging.log4j</groupId>
         <artifactId>log4j-bom</artifactId>
-        <version>2.23.1</version>
+        <version>2.24.3</version>
         <type>pom</type>
         <scope>import</scope>
       </dependency>
@@ -127,7 +131,7 @@
     <dependency>
       <groupId>com.github.spotbugs</groupId>
       <artifactId>spotbugs-annotations</artifactId>
-      <version>4.8.3</version>
+      <version>4.9.3</version>
       <optional>true</optional>
     </dependency>
     <dependency>
@@ -139,12 +143,7 @@
     <dependency>
       <groupId>com.google.guava</groupId>
       <artifactId>guava</artifactId>
-      <version>32.0.0-jre</version>
-    </dependency>
-    <dependency>
-      <groupId>commons-lang</groupId>
-      <artifactId>commons-lang</artifactId>
-      <version>2.6</version>
+      <version>33.4.6-jre</version>
     </dependency>
     <dependency>
       <groupId>io.micrometer</groupId>
@@ -218,13 +217,13 @@
     <dependency>
       <groupId>org.easymock</groupId>
       <artifactId>easymock</artifactId>
-      <version>5.1.0</version>
+      <version>5.5.0</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.junit.jupiter</groupId>
       <artifactId>junit-jupiter-api</artifactId>
-      <version>5.10.1</version>
+      <version>5.12.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
@@ -240,21 +239,31 @@
         <plugin>
           <groupId>com.mycila</groupId>
           <artifactId>license-maven-plugin</artifactId>
-          <version>4.3</version>
+          <version>5.0.0</version>
           <configuration>
-            <header>${session.executionRootDirectory}/contrib/license-header.txt</header>
-            <excludes combine.children="append">
-              <exclude>**/DEPENDENCIES</exclude>
-              <exclude>**/LICENSE</exclude>
-              <exclude>**/NOTICE</exclude>
-              <exclude>**/target/**</exclude>
-              <exclude>contrib/javadoc11.patch</exclude>
-            </excludes>
+            <licenseSets>
+              <licenseSet>
+                <header>${session.executionRootDirectory}/contrib/license-header.txt</header>
+                <excludes combine.children="append">
+                  <exclude>**/DEPENDENCIES</exclude>
+                  <exclude>**/LICENSE</exclude>
+                  <exclude>**/NOTICE</exclude>
+                  <exclude>**/target/**</exclude>
+                  <exclude>contrib/javadoc11.patch</exclude>
+                </excludes>
+              </licenseSet>
+            </licenseSets>
             <mapping combine.children="append">
               <!-- general mappings; module-specific mappings appear in their respective pom -->
               <Makefile>SCRIPT_STYLE</Makefile>
+              <Dockerfile>SCRIPT_STYLE</Dockerfile>
+              <Gemfile>SCRIPT_STYLE</Gemfile>
+              <gemspec>SCRIPT_STYLE</gemspec>
+              <AccumuloProxy-remote>SCRIPT_STYLE</AccumuloProxy-remote>
+              <accumulo-proxy>SCRIPT_STYLE</accumulo-proxy>
               <c>SLASHSTAR_STYLE</c>
               <cc>SLASHSTAR_STYLE</cc>
+              <cpp>SLASHSTAR_STYLE</cpp>
               <css>SLASHSTAR_STYLE</css>
               <h>SLASHSTAR_STYLE</h>
               <java>SLASHSTAR_STYLE</java>
@@ -457,7 +466,6 @@
           <configuration>
             <excludes>
               <exclude>src/main/resources/META-INF/services/*</exclude>
-              <exclude>src/main/python/AccumuloProxy.egg-info/*</exclude>
             </excludes>
           </configuration>
         </plugin>
@@ -477,6 +485,19 @@
     </pluginManagement>
     <plugins>
       <plugin>
+        <groupId>com.mycila</groupId>
+        <artifactId>license-maven-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>format-licenses</id>
+            <goals>
+              <goal>format</goal>
+            </goals>
+            <phase>process-sources</phase>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-dependency-plugin</artifactId>
         <executions>
@@ -712,6 +733,7 @@
             <goals>
               <goal>check</goal>
             </goals>
+            <phase>process-resources</phase>
           </execution>
         </executions>
       </plugin>
diff --git a/src/main/assemble/bin/accumulo-proxy b/src/main/assemble/bin/accumulo-proxy
index cec23e9..6d5ea22 100755
--- a/src/main/assemble/bin/accumulo-proxy
+++ b/src/main/assemble/bin/accumulo-proxy
@@ -1,19 +1,22 @@
 #! /usr/bin/env bash
-
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
 #
-#     http://www.apache.org/licenses/LICENSE-2.0
+# 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
 #
-# 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.
+#   https://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.
+#
 
 BIN_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
 
diff --git a/src/main/assemble/binary-release.xml b/src/main/assemble/binary-release.xml
index bc9862f..fb6f593 100644
--- a/src/main/assemble/binary-release.xml
+++ b/src/main/assemble/binary-release.xml
@@ -1,22 +1,26 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
 
-      http://www.apache.org/licenses/LICENSE-2.0
+    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
 
-  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.
+      https://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.
+
 -->
 <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
+  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 https://maven.apache.org/xsd/assembly-1.1.2.xsd">
   <id>bin</id>
   <formats>
     <format>tar.gz</format>
diff --git a/src/main/assemble/component.xml b/src/main/assemble/component.xml
index 4dca57d..e670c87 100644
--- a/src/main/assemble/component.xml
+++ b/src/main/assemble/component.xml
@@ -1,22 +1,26 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
 
-      http://www.apache.org/licenses/LICENSE-2.0
+    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
 
-  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.
+      https://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.
+
 -->
 <component xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/component/1.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/component/1.1.2 http://maven.apache.org/xsd/component-1.1.2.xsd">
+  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/component/1.1.2 https://maven.apache.org/xsd/component-1.1.2.xsd">
   <dependencySets>
     <dependencySet>
       <outputDirectory>lib</outputDirectory>
@@ -30,10 +34,8 @@
         version listing for packaged artifacts -->
         <include>${groupId}:${artifactId}</include>
         <include>com.google.guava:guava</include>
-        <include>commons-lang:commons-lang</include>
         <include>org.apache.thrift:libthrift</include>
         <include>org.slf4j:slf4j-api</include>
-        <include>org.slf4j:slf4j-log4j12</include>
       </includes>
     </dependencySet>
   </dependencySets>
diff --git a/src/main/assemble/conf/proxy-env.sh b/src/main/assemble/conf/proxy-env.sh
index 2afa3b9..ece898c 100644
--- a/src/main/assemble/conf/proxy-env.sh
+++ b/src/main/assemble/conf/proxy-env.sh
@@ -1,19 +1,22 @@
 #! /usr/bin/env bash
-
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
 #
-#     http://www.apache.org/licenses/LICENSE-2.0
+# 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
 #
-# 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.
+#   https://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.
+#
 
 CONF_DIR=$(readlink -f ./conf)
 LIB_DIR=./lib
diff --git a/src/main/assemble/conf/proxy.properties b/src/main/assemble/conf/proxy.properties
index 5255b56..f8db3d6 100644
--- a/src/main/assemble/conf/proxy.properties
+++ b/src/main/assemble/conf/proxy.properties
@@ -1,17 +1,21 @@
-# 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
+# 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
 #
-# 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.
+#   https://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.
+#
 
 ###############################
 ## Accumulo Proxy configuration
diff --git a/src/main/java/org/apache/accumulo/proxy/Proxy.java b/src/main/java/org/apache/accumulo/proxy/Proxy.java
index b4020d4..a50da1f 100644
--- a/src/main/java/org/apache/accumulo/proxy/Proxy.java
+++ b/src/main/java/org/apache/accumulo/proxy/Proxy.java
@@ -1,18 +1,20 @@
 /*
- * 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
+ * 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
+ *   https://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.
+ * 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.proxy;
 
@@ -23,7 +25,6 @@
 import java.io.UncheckedIOException;
 import java.nio.file.Files;
 import java.util.Collection;
-import java.util.List;
 import java.util.Properties;
 
 import org.apache.accumulo.core.cli.Help;
@@ -46,7 +47,6 @@
 import org.apache.accumulo.server.rpc.TimedProcessor;
 import org.apache.accumulo.server.rpc.UGIAssumingProcessor;
 import org.apache.accumulo.start.spi.KeywordExecutable;
-import org.apache.commons.lang.StringUtils;
 import org.apache.hadoop.security.UserGroupInformation;
 import org.apache.thrift.TProcessor;
 import org.apache.thrift.protocol.TCompactProtocol;
@@ -59,7 +59,6 @@
 import com.google.auto.service.AutoService;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-import io.micrometer.core.instrument.MeterRegistry;
 import io.micrometer.core.instrument.Tag;
 
 @AutoService(KeywordExecutable.class)
@@ -231,7 +230,8 @@
         }
         final KerberosToken kerberosToken = (KerberosToken) authToken;
         final String kerberosKeytab = kerberosToken.getKeytab().getAbsolutePath();
-        if (StringUtils.isBlank(kerberosPrincipal) || StringUtils.isBlank(kerberosKeytab)) {
+
+        if (kerberosPrincipal.isBlank() || kerberosKeytab.isBlank()) {
           throw new IllegalStateException(
               String.format("Kerberos principal '%s' and keytab '%s' must be provided",
                   kerberosPrincipal, kerberosKeytab));
@@ -265,8 +265,8 @@
         serverSocketTimeout, address);
   }
 
-  // TODO: This MetricsInfo is a stub Metrics Info to allow the timed processor to build. If Metrics
-  // are wanted or needed in a later version of the proxy, this can be updated.
+  // This MetricsInfo is a stub MetricsInfo to allow the timed processor to build.
+  // Issue #85 in the GitHub regards updating this with a proper implementation.
   static private class ProxyMetricsInfo implements MetricsInfo {
 
     @Override
@@ -275,44 +275,19 @@
     }
 
     @Override
-    public void addServiceTags(String applicationName, HostAndPort hostAndPort) {
-      throw new UnsupportedOperationException("Unimplemented method 'addServiceTags'");
-    }
-
-    @Override
-    public void addCommonTags(List<Tag> updates) {
-      throw new UnsupportedOperationException("Unimplemented method 'addCommonTags'");
-    }
-
-    @Override
-    public Collection<Tag> getCommonTags() {
-      throw new UnsupportedOperationException("Unimplemented method 'getCommonTags'");
-    }
-
-    @Override
-    public void addRegistry(MeterRegistry registry) {
-      throw new UnsupportedOperationException("Unimplemented method 'addRegistry'");
-    }
-
-    @Override
     public void addMetricsProducers(MetricsProducer... producer) {
       return;
     }
 
     @Override
-    public void init() {
-      throw new UnsupportedOperationException("Unimplemented method 'init'");
-    }
-
-    @Override
-    public MeterRegistry getRegistry() {
-      throw new UnsupportedOperationException("Unimplemented method 'getRegistry'");
-    }
-
-    @Override
     public void close() {
       throw new UnsupportedOperationException("Unimplemented method 'close'");
     }
 
+    @Override
+    public void init(Collection<Tag> commonTags) {
+      throw new UnsupportedOperationException("Unimplemented method 'init'");
+    }
+
   }
 }
diff --git a/src/main/java/org/apache/accumulo/proxy/ProxyServer.java b/src/main/java/org/apache/accumulo/proxy/ProxyServer.java
index 49c7809..a70dfb3 100644
--- a/src/main/java/org/apache/accumulo/proxy/ProxyServer.java
+++ b/src/main/java/org/apache/accumulo/proxy/ProxyServer.java
@@ -1,18 +1,20 @@
 /*
- * 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
+ * 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
+ *   https://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.
+ * 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.proxy;
 
diff --git a/src/main/java/org/apache/accumulo/proxy/TServerUtils.java b/src/main/java/org/apache/accumulo/proxy/TServerUtils.java
index 6c4af19..fe24f5d 100644
--- a/src/main/java/org/apache/accumulo/proxy/TServerUtils.java
+++ b/src/main/java/org/apache/accumulo/proxy/TServerUtils.java
@@ -505,11 +505,11 @@
 
     final TServer finalServer = serverAddress.server;
 
-    Threads.createThread(threadName, () -> {
+    Threads.createNonCriticalThread(threadName, () -> {
       try {
         finalServer.serve();
       } catch (Error e) {
-        Halt.halt("Unexpected error in TThreadPoolServer " + e + ", halting.", 1);
+        Halt.halt(1, "Unexpected error in TThreadPoolServer " + e + ", halting.");
       }
     }).start();
 
diff --git a/src/main/java/org/apache/accumulo/proxy/Util.java b/src/main/java/org/apache/accumulo/proxy/Util.java
index 3472c26..368e53a 100644
--- a/src/main/java/org/apache/accumulo/proxy/Util.java
+++ b/src/main/java/org/apache/accumulo/proxy/Util.java
@@ -1,18 +1,20 @@
 /*
- * 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
+ * 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
+ *   https://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.
+ * 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.proxy;
 
diff --git a/src/main/python/accumulo/AccumuloProxy-remote b/src/main/python/accumulo/AccumuloProxy-remote
index ff2d83b..65d1243 100644
--- a/src/main/python/accumulo/AccumuloProxy-remote
+++ b/src/main/python/accumulo/AccumuloProxy-remote
@@ -1,3 +1,5 @@
+#!/usr/bin/env python
+#
 # 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
@@ -14,7 +16,8 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-#!/usr/bin/env python
+#
+
 #
 # Autogenerated by Thrift Compiler (0.17.0)
 #
diff --git a/src/main/python/accumulo/AccumuloProxy.py b/src/main/python/accumulo/AccumuloProxy.py
index d1f70ae..efd395d 100644
--- a/src/main/python/accumulo/AccumuloProxy.py
+++ b/src/main/python/accumulo/AccumuloProxy.py
@@ -1,3 +1,4 @@
+#
 # 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
@@ -15,6 +16,8 @@
 # specific language governing permissions and limitations
 # under the License.
 #
+
+#
 # Autogenerated by Thrift Compiler (0.17.0)
 #
 # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
diff --git a/src/main/python/accumulo/__init__.py b/src/main/python/accumulo/__init__.py
index 336ecfe..2bbd61f 100644
--- a/src/main/python/accumulo/__init__.py
+++ b/src/main/python/accumulo/__init__.py
@@ -1,3 +1,4 @@
+#
 # 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
@@ -14,4 +15,6 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
+#
+
 __all__ = ['ttypes', 'constants', 'AccumuloProxy']
diff --git a/src/main/python/accumulo/constants.py b/src/main/python/accumulo/constants.py
index 6ce1367..126818d 100644
--- a/src/main/python/accumulo/constants.py
+++ b/src/main/python/accumulo/constants.py
@@ -1,3 +1,4 @@
+#
 # 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
@@ -15,6 +16,8 @@
 # specific language governing permissions and limitations
 # under the License.
 #
+
+#
 # Autogenerated by Thrift Compiler (0.17.0)
 #
 # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
diff --git a/src/main/python/accumulo/ttypes.py b/src/main/python/accumulo/ttypes.py
index df49b4e..d14ce57 100644
--- a/src/main/python/accumulo/ttypes.py
+++ b/src/main/python/accumulo/ttypes.py
@@ -1,3 +1,4 @@
+#
 # 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
@@ -15,6 +16,8 @@
 # specific language governing permissions and limitations
 # under the License.
 #
+
+#
 # Autogenerated by Thrift Compiler (0.17.0)
 #
 # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
diff --git a/src/main/python/basic_client.py b/src/main/python/basic_client.py
index 7dd299c..e2e09a6 100644
--- a/src/main/python/basic_client.py
+++ b/src/main/python/basic_client.py
@@ -1,19 +1,22 @@
-# 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.
-
 #! /usr/bin/env python
+#
+# 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
+#
+#   https://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.
+#
 
 import sys
 
diff --git a/src/main/python/namespace_client.py b/src/main/python/namespace_client.py
index 1e7e230..0fff96a 100644
--- a/src/main/python/namespace_client.py
+++ b/src/main/python/namespace_client.py
@@ -1,19 +1,22 @@
-# 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.
-
 #! /usr/bin/env python
+#
+# 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
+#
+#   https://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.
+#
 
 from thrift.protocol import TCompactProtocol
 from thrift.transport import TSocket, TTransport
diff --git a/src/main/python/setup.py b/src/main/python/setup.py
index a348d99..b6dba9c 100644
--- a/src/main/python/setup.py
+++ b/src/main/python/setup.py
@@ -1,17 +1,21 @@
-# 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
+# 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
 #
-# 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.
+#   https://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.
+#
 
 from distutils.core import setup
 
diff --git a/src/main/ruby/Gemfile b/src/main/ruby/Gemfile
index be4f868..3f988c9 100644
--- a/src/main/ruby/Gemfile
+++ b/src/main/ruby/Gemfile
@@ -1,17 +1,22 @@
-# 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
+# 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
 #
-# 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.
+#   https://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.
+#
+
 ruby '>2.5'
 source "https://rubygems.org"
 gem 'thrift', '0.17.0'
diff --git a/src/main/ruby/accumulo/accumulo.gemspec b/src/main/ruby/accumulo/accumulo.gemspec
index c0f4ff9..d8f1802 100644
--- a/src/main/ruby/accumulo/accumulo.gemspec
+++ b/src/main/ruby/accumulo/accumulo.gemspec
@@ -1,17 +1,21 @@
-# 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
+# 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
 #
-# 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.
+#   https://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.
+#
 
 Gem::Specification.new do |s|
   s.name        = 'accumulo'
diff --git a/src/main/ruby/accumulo/lib/accumulo_proxy.rb b/src/main/ruby/accumulo/lib/accumulo_proxy.rb
index 896dc72..b205549 100644
--- a/src/main/ruby/accumulo/lib/accumulo_proxy.rb
+++ b/src/main/ruby/accumulo/lib/accumulo_proxy.rb
@@ -1,3 +1,4 @@
+#
 # 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
@@ -15,6 +16,8 @@
 # specific language governing permissions and limitations
 # under the License.
 #
+
+#
 # Autogenerated by Thrift Compiler (0.17.0)
 #
 # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
diff --git a/src/main/ruby/accumulo/lib/proxy_constants.rb b/src/main/ruby/accumulo/lib/proxy_constants.rb
index 135d17f..6e34cb7 100644
--- a/src/main/ruby/accumulo/lib/proxy_constants.rb
+++ b/src/main/ruby/accumulo/lib/proxy_constants.rb
@@ -1,3 +1,4 @@
+#
 # 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
@@ -15,6 +16,8 @@
 # specific language governing permissions and limitations
 # under the License.
 #
+
+#
 # Autogenerated by Thrift Compiler (0.17.0)
 #
 # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
diff --git a/src/main/ruby/accumulo/lib/proxy_types.rb b/src/main/ruby/accumulo/lib/proxy_types.rb
index 018b457..f636777 100644
--- a/src/main/ruby/accumulo/lib/proxy_types.rb
+++ b/src/main/ruby/accumulo/lib/proxy_types.rb
@@ -1,3 +1,4 @@
+#
 # 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
@@ -15,6 +16,8 @@
 # specific language governing permissions and limitations
 # under the License.
 #
+
+#
 # Autogenerated by Thrift Compiler (0.17.0)
 #
 # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
diff --git a/src/main/ruby/client.rb b/src/main/ruby/client.rb
index 6b4c4a1..5f6f2ea 100755
--- a/src/main/ruby/client.rb
+++ b/src/main/ruby/client.rb
@@ -1,19 +1,22 @@
-# 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.
-
 #!/usr/bin/env ruby
+#
+# 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
+#
+#   https://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.
+#
 
 require 'rubygems'
 require 'thrift'
diff --git a/src/main/scripts/generate-thrift.sh b/src/main/scripts/generate-thrift.sh
index 125c17c..759826a 100755
--- a/src/main/scripts/generate-thrift.sh
+++ b/src/main/scripts/generate-thrift.sh
@@ -81,66 +81,6 @@
 find $BUILD_DIR/gen-java -name '*.java' -exec grep -Zl '^public class ' {} + | xargs -0 sed -i -e 's/^[}]$/  private static void unusedMethod() {}\
 }/'
 
-for lang in "${LANGUAGES_TO_GENERATE[@]}"; do
-  case $lang in
-    cpp)
-      PREFIX="/*
-"
-      LINE_NOTATION=" *"
-      SUFFIX="
- */"
-      FILE_SUFFIX=(.h .cpp)
-      ;;
-    java)
-      PREFIX="/*
-"
-      LINE_NOTATION=" *"
-      SUFFIX="
- */"
-      FILE_SUFFIX=(.java)
-      ;;
-    rb)
-      PREFIX=""
-      LINE_NOTATION="#"
-      SUFFIX=""
-      FILE_SUFFIX=(.rb)
-      ;;
-    py)
-      PREFIX=""
-      LINE_NOTATION="#"
-      SUFFIX=""
-      FILE_SUFFIX=(.py -remote)
-      ;;
-    *)
-      continue
-      ;;
-  esac
-
-  for file in "${FILE_SUFFIX[@]}"; do
-    mapfile -t ALL_FILES_TO_LICENSE < <(find "$BUILD_DIR/gen-$lang" -name "*$file")
-    for f in "${ALL_FILES_TO_LICENSE[@]}"; do
-      cat - "$f" >"${f}-with-license" <<EOF
-${PREFIX}${LINE_NOTATION} Licensed to the Apache Software Foundation (ASF) under one
-${LINE_NOTATION} or more contributor license agreements.  See the NOTICE file
-${LINE_NOTATION} distributed with this work for additional information
-${LINE_NOTATION} regarding copyright ownership.  The ASF licenses this file
-${LINE_NOTATION} to you under the Apache License, Version 2.0 (the
-${LINE_NOTATION} "License"); you may not use this file except in compliance
-${LINE_NOTATION} with the License.  You may obtain a copy of the License at
-${LINE_NOTATION}
-${LINE_NOTATION}   https://www.apache.org/licenses/LICENSE-2.0
-${LINE_NOTATION}
-${LINE_NOTATION} Unless required by applicable law or agreed to in writing,
-${LINE_NOTATION} software distributed under the License is distributed on an
-${LINE_NOTATION} "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-${LINE_NOTATION} KIND, either express or implied.  See the License for the
-${LINE_NOTATION} specific language governing permissions and limitations
-${LINE_NOTATION} under the License.${SUFFIX}
-EOF
-    done
-  done
-done
-
 # For every generated java file, compare it with the version-controlled one, and copy the ones that have changed into place
 for d in "${PACKAGES_TO_GENERATE[@]}"; do
   for lang in "${LANGUAGES_TO_GENERATE[@]}"; do
@@ -173,18 +113,18 @@
     for file in "${FILE_SUFFIX[@]}"; do
       mapfile -t ALL_EXISTING_FILES < <(find "$DDIR" -name "*$file")
       for f in "${ALL_EXISTING_FILES[@]}"; do
-        if [[ ! -f "$SDIR/$(basename "$f")-with-license" ]]; then
+        if [[ ! -f "$SDIR/$(basename "$f")" ]]; then
           set -x
           rm -f "$f"
           { set +x; } 2>/dev/null
         fi
       done
-      mapfile -t ALL_LICENSE_FILES_TO_COPY < <(find "$SDIR" -name "*$file")
-      for f in "${ALL_LICENSE_FILES_TO_COPY[@]}"; do
+      mapfile -t ALL_FILES_TO_COPY < <(find "$SDIR" -name "*$file")
+      for f in "${ALL_FILES_TO_COPY[@]}"; do
         DEST="$DDIR/$(basename "$f")"
-        if ! cmp -s "${f}-with-license" "${DEST}"; then
+        if ! cmp -s "${f}" "${DEST}"; then
           set -x
-          cp -f "${f}-with-license" "${DEST}" || fail unable to copy files to java workspace
+          cp -f "${f}" "${DEST}" || fail unable to copy files to java workspace
           { set +x; } 2>/dev/null
         fi
       done
diff --git a/src/main/spotbugs/exclude-filter.xml b/src/main/spotbugs/exclude-filter.xml
index 3f53670..94369c9 100644
--- a/src/main/spotbugs/exclude-filter.xml
+++ b/src/main/spotbugs/exclude-filter.xml
@@ -1,18 +1,22 @@
 <!--
-  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
+    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
 
-  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.
+      https://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.
+
 -->
 <FindBugsFilter>
   <!--
diff --git a/src/main/thrift/proxy.thrift b/src/main/thrift/proxy.thrift
index dd9c1a0..3bf552b 100644
--- a/src/main/thrift/proxy.thrift
+++ b/src/main/thrift/proxy.thrift
@@ -1,19 +1,21 @@
 /*
-* 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.
-*/
+ * 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
+ *
+ *   https://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.
+ */
 
 /*
  * Compatibility.
diff --git a/src/test/java/org/apache/accumulo/proxy/ProxyServerTest.java b/src/test/java/org/apache/accumulo/proxy/ProxyServerTest.java
index 08a65e1..f8978f1 100644
--- a/src/test/java/org/apache/accumulo/proxy/ProxyServerTest.java
+++ b/src/test/java/org/apache/accumulo/proxy/ProxyServerTest.java
@@ -1,18 +1,20 @@
 /*
- * 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
+ * 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
+ *   https://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.
+ * 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.proxy;
 
diff --git a/src/test/java/org/apache/accumulo/proxy/its/ProxyDurabilityIT.java b/src/test/java/org/apache/accumulo/proxy/its/ProxyDurabilityIT.java
index 83fca91..759136d 100644
--- a/src/test/java/org/apache/accumulo/proxy/its/ProxyDurabilityIT.java
+++ b/src/test/java/org/apache/accumulo/proxy/its/ProxyDurabilityIT.java
@@ -1,18 +1,20 @@
 /*
- * 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
+ * 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
+ *   https://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.
+ * 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.proxy.its;
 
diff --git a/src/test/java/org/apache/accumulo/proxy/its/SimpleProxyBase.java b/src/test/java/org/apache/accumulo/proxy/its/SimpleProxyBase.java
index 7289586..2fa4933 100644
--- a/src/test/java/org/apache/accumulo/proxy/its/SimpleProxyBase.java
+++ b/src/test/java/org/apache/accumulo/proxy/its/SimpleProxyBase.java
@@ -1,18 +1,20 @@
 /*
- * 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
+ * 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
+ *   https://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.
+ * 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.proxy.its;
 
@@ -291,417 +293,112 @@
   /*
    * Set a lower timeout for tests that should fail fast
    */
-
   @Test
-  @Timeout(5)
-  public void addConstraintBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.addConstraint(badSecret, tableName, NumericValueConstraint.class.getName()));
-  }
+  @Timeout(10)
+  public void badSecretTests() throws Exception {
 
-  @Test
-  @Timeout(5)
-  public void addSplitsBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.addSplits(badSecret, tableName, Collections.singleton(s2bb("1"))));
-  }
-
-  @Test
-  @Timeout(5)
-  public void clearLocatorCacheBadSharedSecret() {
-    assertThrows(TApplicationException.class, () -> client.clearLocatorCache(badSecret, tableName));
-  }
-
-  @Test
-  @Timeout(5)
-  public void compactTableBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.compactTable(badSecret, tableName, null, null, null, true, false, null, null));
-  }
-
-  @Test
-  @Timeout(5)
-  public void cancelCompactionBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.cancelCompaction(badSecret, tableName));
-  }
-
-  @Test
-  @Timeout(5)
-  public void createTableBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.createTable(badSecret, tableName, false, TimeType.MILLIS));
-  }
-
-  @Test
-  @Timeout(5)
-  public void deleteTableBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class, () -> client.deleteTable(badSecret, tableName));
-  }
-
-  @Test
-  @Timeout(5)
-  public void deleteRowsBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.deleteRows(badSecret, tableName, null, null));
-  }
-
-  @Test
-  @Timeout(5)
-  public void tableExistsBadSharedSecret() {
-    assertThrows(TApplicationException.class, () -> client.tableExists(badSecret, tableName));
-  }
-
-  @Test
-  @Timeout(5)
-  public void flushTableBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.flushTable(badSecret, tableName, null, null, false));
-  }
-
-  @Test
-  @Timeout(5)
-  public void getLocalityGroupsBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.getLocalityGroups(badSecret, tableName));
-  }
-
-  @Test
-  @Timeout(5)
-  public void getMaxRowBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class, () -> client.getMaxRow(badSecret, tableName,
-        Collections.emptySet(), null, false, null, false));
-  }
-
-  @Test
-  @Timeout(5)
-  public void getTablePropertiesBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.getTableProperties(badSecret, tableName));
-  }
-
-  @Test
-  @Timeout(5)
-  public void listSplitsBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.listSplits(badSecret, tableName, 10000));
-  }
-
-  @Test
-  @Timeout(5)
-  public void listTablesBadSharedSecret() {
-    assertThrows(TApplicationException.class, () -> client.listTables(badSecret));
-  }
-
-  @Test
-  @Timeout(5)
-  public void listConstraintsBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.listConstraints(badSecret, tableName));
-  }
-
-  @Test
-  @Timeout(5)
-  public void mergeTabletsBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.mergeTablets(badSecret, tableName, null, null));
-  }
-
-  @Test
-  @Timeout(5)
-  public void offlineTableBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.offlineTable(badSecret, tableName, false));
-  }
-
-  @Test
-  @Timeout(5)
-  public void onlineTableBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.onlineTable(badSecret, tableName, false));
-  }
-
-  @Test
-  @Timeout(5)
-  public void removeConstraintBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.removeConstraint(badSecret, tableName, 0));
-  }
-
-  @Test
-  @Timeout(5)
-  public void removeTablePropertyBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.removeTableProperty(badSecret, tableName, Property.TABLE_FILE_MAX.getKey()));
-  }
-
-  @Test
-  @Timeout(5)
-  public void renameTableBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.renameTable(badSecret, tableName, "someTableName"));
-  }
-
-  @Test
-  @Timeout(5)
-  public void setLocalityGroupsBadSharedSecret() {
     Map<String,Set<String>> groups = new HashMap<>();
     groups.put("group1", Collections.singleton("cf1"));
     groups.put("group2", Collections.singleton("cf2"));
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.setLocalityGroups(badSecret, tableName, groups));
-  }
 
-  @Test
-  @Timeout(5)
-  public void setTablePropertyBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.setTableProperty(badSecret, tableName, Property.TABLE_FILE_MAX.getKey(), "0"));
-  }
-
-  @Test
-  @Timeout(5)
-  public void tableIdMapBadSharedSecret() {
-    assertThrows(TException.class, () -> client.tableIdMap(badSecret));
-  }
-
-  @Test
-  @Timeout(5)
-  public void getSiteConfigurationBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class, () -> client.getSiteConfiguration(badSecret));
-  }
-
-  @Test
-  @Timeout(5)
-  public void getSystemConfigurationBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class, () -> client.getSystemConfiguration(badSecret));
-  }
-
-  @Test
-  @Timeout(5)
-  public void getTabletServersBadSharedSecret() {
-    assertThrows(TException.class, () -> client.getTabletServers(badSecret));
-  }
-
-  @Test
-  @Timeout(5)
-  public void getActiveScansBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class, () -> client.getActiveScans(badSecret, "fake"));
-  }
-
-  @Test
-  @Timeout(5)
-  public void getActiveCompactionsBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.getActiveCompactions(badSecret, "fake"));
-  }
-
-  @Test
-  @Timeout(5)
-  public void removePropertyBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.removeProperty(badSecret, "table.split.threshold"));
-  }
-
-  @Test
-  @Timeout(5)
-  public void setPropertyBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.setProperty(badSecret, "table.split.threshold", "500M"));
-  }
-
-  @Test
-  @Timeout(5)
-  public void testClassLoadBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class, () -> client.testClassLoad(badSecret,
-        DevNull.class.getName(), SortedKeyValueIterator.class.getName()));
-  }
-
-  @Test
-  @Timeout(5)
-  public void authenticateUserBadSharedSecret() {
     Map<String,String> pw = s2pp(SharedMiniClusterBase.getRootPassword());
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.authenticateUser(badSecret, "root", pw));
-  }
-
-  @Test
-  @Timeout(5)
-  public void changeUserAuthorizationsBadSharedSecret() {
     HashSet<ByteBuffer> auths = new HashSet<>(List.of(s2bb("A"), s2bb("B")));
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.changeUserAuthorizations(badSecret, "stooge", auths));
-  }
 
-  @Test
-  @Timeout(5)
-  public void changePasswordBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.changeLocalUserPassword(badSecret, "stooge", s2bb("")));
-  }
+    IteratorSetting setting = new IteratorSetting(100, "DebugTheThings",
+        DebugIterator.class.getName(), Collections.emptyMap());
 
-  @Test
-  @Timeout(5)
-  public void createUserBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.createLocalUser(badSecret, "stooge", s2bb("password")));
-  }
+  // @formatter:off
+  Stream<Executable> securityExceptionCases = Stream.of(
+          () -> client.addConstraint(badSecret, tableName, NumericValueConstraint.class.getName()),
+          () -> client.addSplits(badSecret, tableName, Collections.singleton(s2bb("1"))),
+          () -> client.compactTable(badSecret, tableName, null, null, null, true, false, null, null),
+          () -> client.cancelCompaction(badSecret, tableName),
+          () -> client.createTable(badSecret, tableName, false, TimeType.MILLIS),
+          () -> client.deleteTable(badSecret, tableName),
+          () -> client.deleteRows(badSecret, tableName, null, null),
+          () -> client.flushTable(badSecret, tableName, null, null, false),
+          () -> client.getLocalityGroups(badSecret, tableName),
+          () -> client.getMaxRow(badSecret, tableName, Collections.emptySet(), null, false, null, false),
+          () -> client.getTableProperties(badSecret, tableName),
+          () -> client.listSplits(badSecret, tableName, 10000),
+          () -> client.listConstraints(badSecret, tableName),
+          () -> client.mergeTablets(badSecret, tableName, null, null),
+          () -> client.offlineTable(badSecret, tableName, false),
+          () -> client.onlineTable(badSecret, tableName, false),
+          () -> client.removeConstraint(badSecret, tableName, 0),
+          () -> client.removeTableProperty(badSecret, tableName, Property.TABLE_FILE_MAX.getKey()),
+          () -> client.renameTable(badSecret, tableName, "someTableName"),
+          () -> client.setLocalityGroups(badSecret, tableName, groups),
+          () -> client.setTableProperty(badSecret, tableName, Property.TABLE_FILE_MAX.getKey(), "0"),
+          () -> client.getSiteConfiguration(badSecret),
+          () -> client.getSystemConfiguration(badSecret),
+          () -> client.getActiveScans(badSecret, "fake"),
+          () -> client.getActiveCompactions(badSecret, "fake"),
+          () -> client.removeProperty(badSecret, "table.split.threshold"),
+          () -> client.setProperty(badSecret, "table.split.threshold", "500M"),
+          () -> client.testClassLoad(badSecret, DevNull.class.getName(), SortedKeyValueIterator.class.getName()),
+          () -> client.authenticateUser(badSecret, "root", pw),
+          () -> client.changeUserAuthorizations(badSecret, "stooge", auths),
+          () -> client.changeLocalUserPassword(badSecret, "stooge", s2bb("")),
+          () -> client.createLocalUser(badSecret, "stooge", s2bb("password")),
+          () -> client.dropLocalUser(badSecret, "stooge"),
+          () -> client.getUserAuthorizations(badSecret, "stooge"),
+          () -> client.grantSystemPermission(badSecret, "stooge", SystemPermission.CREATE_TABLE),
+          () -> client.grantTablePermission(badSecret, "root", tableName, TablePermission.WRITE),
+          () -> client.hasSystemPermission(badSecret, "stooge", SystemPermission.CREATE_TABLE),
+          () -> client.hasTablePermission(badSecret, "root", tableName, TablePermission.WRITE),
+          () -> client.listLocalUsers(badSecret),
+          () -> client.revokeSystemPermission(badSecret, "stooge", SystemPermission.CREATE_TABLE),
+          () -> client.revokeTablePermission(badSecret, "root", tableName, TablePermission.ALTER_TABLE),
+          () -> client.createScanner(badSecret, tableName, new ScanOptions()),
+          () -> client.createBatchScanner(badSecret, tableName, new BatchScanOptions()),
+          () -> client.updateAndFlush(badSecret, tableName, new HashMap<>()),
+          () -> client.createWriter(badSecret, tableName, new WriterOptions()),
+          () -> client.attachIterator(badSecret, "slow", setting, EnumSet.allOf(IteratorScope.class)),
+          () -> client.checkIteratorConflicts(badSecret, tableName, setting, EnumSet.allOf(IteratorScope.class)),
+          () -> client.cloneTable(badSecret, tableName, tableName + "_clone", false, null, null),
+          () -> client.exportTable(badSecret, tableName, "/tmp"),
+          () -> client.importTable(badSecret, "testify", "/tmp"),
+          () -> client.getIteratorSetting(badSecret, tableName, "foo", IteratorScope.SCAN),
+          () -> client.listIterators(badSecret, tableName),
+          () -> client.removeIterator(badSecret, tableName, "name", EnumSet.allOf(IteratorScope.class)),
+          () -> client.pingTabletServer(badSecret, "fake"),
+          () -> client.testTableClassLoad(badSecret, tableName, VersioningIterator.class.getName(), SortedKeyValueIterator.class.getName()),
+          () -> client.createConditionalWriter(badSecret, tableName, new ConditionalWriterOptions()),
+          () -> client.grantNamespacePermission(badSecret, "stooge", namespaceName, NamespacePermission.ALTER_NAMESPACE),
+          () -> client.hasNamespacePermission(badSecret, "stooge", namespaceName, NamespacePermission.ALTER_NAMESPACE),
+          () -> client.revokeNamespacePermission(badSecret, "stooge", namespaceName, NamespacePermission.ALTER_NAMESPACE),
+          () -> client.listNamespaces(badSecret),
+          () -> client.namespaceExists(badSecret, namespaceName),
+          () -> client.createNamespace(badSecret, "abcdef"),
+          () -> client.deleteNamespace(badSecret, namespaceName),
+          () -> client.renameNamespace(badSecret, namespaceName, "abcdef"),
+          () -> client.setNamespaceProperty(badSecret, namespaceName, "table.compaction.major.ratio", "4"),
+          () -> client.removeNamespaceProperty(badSecret, namespaceName, "table.compaction.major.ratio"),
+          () -> client.getNamespaceProperties(badSecret, namespaceName),
+          () -> client.namespaceIdMap(badSecret),
+          () -> client.attachNamespaceIterator(badSecret, namespaceName, setting, EnumSet.allOf(IteratorScope.class)),
+          () -> client.removeNamespaceIterator(badSecret, namespaceName, "DebugTheThings", EnumSet.allOf(IteratorScope.class)),
+          () -> client.getNamespaceIteratorSetting(badSecret, namespaceName, "DebugTheThings", IteratorScope.SCAN),
+          () -> client.listNamespaceIterators(badSecret, namespaceName),
+          () -> client.checkNamespaceIteratorConflicts(badSecret, namespaceName, setting, EnumSet.allOf(IteratorScope.class)),
+          () -> client.addNamespaceConstraint(badSecret, namespaceName, MaxMutationSize.class.getName()),
+          () -> client.removeNamespaceConstraint(badSecret, namespaceName, 1),
+          () -> client.listNamespaceConstraints(badSecret, namespaceName),
+          () -> client.testNamespaceClassLoad(badSecret, namespaceName, DebugIterator.class.getName(), SortedKeyValueIterator.class.getName())
+  );
+  // @formatter:on
 
-  @Test
-  @Timeout(5)
-  public void dropUserBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class, () -> client.dropLocalUser(badSecret, "stooge"));
-  }
+    securityExceptionCases.forEach(e -> assertThrows(AccumuloSecurityException.class, e,
+        "Client action " + e.toString() + " proceeded with invalid Auth"));
 
-  @Test
-  @Timeout(5)
-  public void getUserAuthorizationsBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.getUserAuthorizations(badSecret, "stooge"));
-  }
+    assertThrows(TApplicationException.class, () -> client.clearLocatorCache(badSecret, tableName));
+    assertThrows(TApplicationException.class, () -> client.tableExists(badSecret, tableName));
+    assertThrows(TApplicationException.class, () -> client.listTables(badSecret));
 
-  @Test
-  @Timeout(5)
-  public void grantSystemPermissionBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.grantSystemPermission(badSecret, "stooge", SystemPermission.CREATE_TABLE));
-  }
+    assertThrows(TException.class, () -> client.tableIdMap(badSecret));
+    assertThrows(TException.class, () -> client.getTabletServers(badSecret));
 
-  @Test
-  @Timeout(5)
-  public void grantTablePermissionBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.grantTablePermission(badSecret, "root", tableName, TablePermission.WRITE));
-  }
-
-  @Test
-  @Timeout(5)
-  public void hasSystemPermissionBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.hasSystemPermission(badSecret, "stooge", SystemPermission.CREATE_TABLE));
-  }
-
-  @Test
-  @Timeout(5)
-  public void hasTablePermissionBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.hasTablePermission(badSecret, "root", tableName, TablePermission.WRITE));
-  }
-
-  @Test
-  @Timeout(5)
-  public void listLocalUsersBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class, () -> client.listLocalUsers(badSecret));
-  }
-
-  @Test
-  @Timeout(5)
-  public void revokeSystemPermissionBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.revokeSystemPermission(badSecret, "stooge", SystemPermission.CREATE_TABLE));
-  }
-
-  @Test
-  @Timeout(5)
-  public void revokeTablePermissionBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class, () -> client.revokeTablePermission(badSecret,
-        "root", tableName, TablePermission.ALTER_TABLE));
-  }
-
-  @Test
-  @Timeout(5)
-  public void createScannerBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.createScanner(badSecret, tableName, new ScanOptions()));
-  }
-
-  @Test
-  @Timeout(5)
-  public void createBatchScannerBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.createBatchScanner(badSecret, tableName, new BatchScanOptions()));
-  }
-
-  @Test
-  @Timeout(5)
-  public void updateAndFlushBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.updateAndFlush(badSecret, tableName, new HashMap<>()));
-  }
-
-  @Test
-  @Timeout(5)
-  public void createWriterBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.createWriter(badSecret, tableName, new WriterOptions()));
-  }
-
-  @Test
-  @Timeout(5)
-  public void attachIteratorBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class, () -> client.attachIterator(badSecret, "slow",
-        setting, EnumSet.allOf(IteratorScope.class)));
-  }
-
-  @Test
-  @Timeout(5)
-  public void checkIteratorBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class, () -> client.checkIteratorConflicts(badSecret,
-        tableName, setting, EnumSet.allOf(IteratorScope.class)));
-  }
-
-  @Test
-  @Timeout(5)
-  public void cloneTableBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.cloneTable(badSecret, tableName, tableName + "_clone", false, null, null));
-  }
-
-  @Test
-  @Timeout(5)
-  public void exportTableBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.exportTable(badSecret, tableName, "/tmp"));
-  }
-
-  @Test
-  @Timeout(5)
-  public void importTableBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.importTable(badSecret, "testify", "/tmp"));
-  }
-
-  @Test
-  @Timeout(5)
-  public void getIteratorSettingBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.getIteratorSetting(badSecret, tableName, "foo", IteratorScope.SCAN));
-  }
-
-  @Test
-  @Timeout(5)
-  public void listIteratorsBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class, () -> client.listIterators(badSecret, tableName));
-  }
-
-  @Test
-  @Timeout(5)
-  public void removeIteratorBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class, () -> client.removeIterator(badSecret, tableName,
-        "name", EnumSet.allOf(IteratorScope.class)));
-  }
-
-  @Test
-  @Timeout(5)
-  public void splitRangeByTabletsBadSharedSecret() throws Exception {
-    Range range = client.getRowRange(ByteBuffer.wrap("row".getBytes(UTF_8)));
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.splitRangeByTablets(badSecret, tableName, range, 10));
-  }
-
-  @Test
-  @Timeout(5)
-  public void importDirectoryBadSharedSecret() throws Exception {
     MiniAccumuloClusterImpl cluster = SharedMiniClusterBase.getCluster();
     Path base = cluster.getTemporaryPath();
     Path importDir = new Path(base, "importDir");
@@ -710,177 +407,9 @@
     assertTrue(cluster.getFileSystem().mkdirs(failuresDir));
     assertThrows(AccumuloSecurityException.class, () -> client.importDirectory(badSecret, tableName,
         importDir.toString(), failuresDir.toString(), true));
-  }
-
-  @Test
-  @Timeout(5)
-  public void pingTabletServerBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class, () -> client.pingTabletServer(badSecret, "fake"));
-  }
-
-  @Test
-  @Timeout(5)
-  public void testTableClassLoadBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class, () -> client.testTableClassLoad(badSecret,
-        tableName, VersioningIterator.class.getName(), SortedKeyValueIterator.class.getName()));
-  }
-
-  @Test
-  @Timeout(5)
-  public void createConditionalWriterBadSharedSecret() {
+    Range range = client.getRowRange(ByteBuffer.wrap("row".getBytes(UTF_8)));
     assertThrows(AccumuloSecurityException.class,
-        () -> client.createConditionalWriter(badSecret, tableName, new ConditionalWriterOptions()));
-  }
-
-  @Test
-  @Timeout(5)
-  public void grantNamespacePermissionBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class, () -> client.grantNamespacePermission(badSecret,
-        "stooge", namespaceName, NamespacePermission.ALTER_NAMESPACE));
-  }
-
-  @Test
-  @Timeout(5)
-  public void hasNamespacePermissionBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class, () -> client.hasNamespacePermission(badSecret,
-        "stooge", namespaceName, NamespacePermission.ALTER_NAMESPACE));
-  }
-
-  @Test
-  @Timeout(5)
-  public void revokeNamespacePermissionBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class, () -> client.revokeNamespacePermission(badSecret,
-        "stooge", namespaceName, NamespacePermission.ALTER_NAMESPACE));
-  }
-
-  @Test
-  @Timeout(5)
-  public void listNamespacesBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class, () -> client.listNamespaces(badSecret));
-  }
-
-  @Test
-  @Timeout(5)
-  public void namespaceExistsBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.namespaceExists(badSecret, namespaceName));
-  }
-
-  @Test
-  @Timeout(5)
-  public void createNamespaceBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.createNamespace(badSecret, "abcdef"));
-  }
-
-  @Test
-  @Timeout(5)
-  public void deleteNamespaceBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.deleteNamespace(badSecret, namespaceName));
-  }
-
-  @Test
-  @Timeout(5)
-  public void renameNamespaceBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.renameNamespace(badSecret, namespaceName, "abcdef"));
-  }
-
-  @Test
-  @Timeout(5)
-  public void setNamespacePropertyBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class, () -> client.setNamespaceProperty(badSecret,
-        namespaceName, "table.compaction.major.ratio", "4"));
-  }
-
-  @Test
-  @Timeout(5)
-  public void removeNamespacePropertyBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class, () -> client.removeNamespaceProperty(badSecret,
-        namespaceName, "table.compaction.major.ratio"));
-  }
-
-  @Test
-  @Timeout(5)
-  public void getNamespacePropertiesBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.getNamespaceProperties(badSecret, namespaceName));
-  }
-
-  @Test
-  @Timeout(5)
-  public void namespaceIdMapBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class, () -> client.namespaceIdMap(badSecret));
-  }
-
-  @Test
-  @Timeout(5)
-  public void attachNamespaceIteratorBadSharedSecret() {
-    IteratorSetting setting = new IteratorSetting(100, "DebugTheThings",
-        DebugIterator.class.getName(), Collections.emptyMap());
-    assertThrows(AccumuloSecurityException.class, () -> client.attachNamespaceIterator(badSecret,
-        namespaceName, setting, EnumSet.allOf(IteratorScope.class)));
-  }
-
-  @Test
-  @Timeout(5)
-  public void removeNamespaceIteratorBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class, () -> client.removeNamespaceIterator(badSecret,
-        namespaceName, "DebugTheThings", EnumSet.allOf(IteratorScope.class)));
-  }
-
-  @Test
-  @Timeout(5)
-  public void getNamespaceIteratorSettingBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.getNamespaceIteratorSetting(badSecret, namespaceName, "DebugTheThings",
-            IteratorScope.SCAN));
-  }
-
-  @Test
-  @Timeout(5)
-  public void listNamespaceIteratorsBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.listNamespaceIterators(badSecret, namespaceName));
-  }
-
-  @Test
-  @Timeout(5)
-  public void checkNamespaceIteratorConflictsBadSharedSecret() {
-    IteratorSetting setting = new IteratorSetting(100, "DebugTheThings",
-        DebugIterator.class.getName(), Collections.emptyMap());
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.checkNamespaceIteratorConflicts(badSecret, namespaceName, setting,
-            EnumSet.allOf(IteratorScope.class)));
-  }
-
-  @Test
-  @Timeout(5)
-  public void addNamespaceConstraintBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class, () -> client.addNamespaceConstraint(badSecret,
-        namespaceName, MaxMutationSize.class.getName()));
-  }
-
-  @Test
-  @Timeout(5)
-  public void removeNamespaceConstraintBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.removeNamespaceConstraint(badSecret, namespaceName, 1));
-  }
-
-  @Test
-  @Timeout(5)
-  public void listNamespaceConstraintsBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class,
-        () -> client.listNamespaceConstraints(badSecret, namespaceName));
-  }
-
-  @Test
-  @Timeout(5)
-  public void testNamespaceClassLoadBadSharedSecret() {
-    assertThrows(AccumuloSecurityException.class, () -> client.testNamespaceClassLoad(badSecret,
-        namespaceName, DebugIterator.class.getName(), SortedKeyValueIterator.class.getName()));
+        () -> client.splitRangeByTablets(badSecret, tableName, range, 10));
   }
 
   @Test
@@ -981,39 +510,25 @@
     client.createTable(sharedSecret, table1, false, TimeType.MILLIS);
     client.createTable(sharedSecret, table2, false, TimeType.MILLIS);
 
-    // @formatter:off
-    Stream<Executable> cases = Stream.of(
-        () -> client.createTable(sharedSecret, table1, false, TimeType.MILLIS),
-        () -> client.renameTable(sharedSecret, table1, table2),
-        () -> client.cloneTable(sharedSecret, table1, table2, false, new HashMap<>(), new HashSet<>())
-    );
-    // @formatter:on
+    assertThrows(TableExistsException.class,
+        () -> client.createTable(sharedSecret, table1, false, TimeType.MILLIS));
+    assertThrows(TableExistsException.class,
+        () -> client.renameTable(sharedSecret, table1, table2));
+    assertThrows(TableExistsException.class, () -> client.cloneTable(sharedSecret, table1, table2,
+        false, new HashMap<>(), new HashSet<>()));
 
-    cases.forEach(executable -> assertThrows(TableExistsException.class, executable));
-  }
-
-  @Test
-  public void testNamespaceExists() throws TException {
     client.createNamespace(sharedSecret, "foobar");
 
-    // @formatter:off
-    Stream<Executable> cases = Stream.of(
-        () -> client.createNamespace(sharedSecret, namespaceName),
-        () -> client.renameNamespace(sharedSecret, "foobar", namespaceName)
-    );
-    // @formatter:on
+    assertThrows(NamespaceExistsException.class,
+        () -> client.createNamespace(sharedSecret, namespaceName));
+    assertThrows(NamespaceExistsException.class,
+        () -> client.renameNamespace(sharedSecret, "foobar", namespaceName));
 
-    cases.forEach(executable -> assertThrows(NamespaceExistsException.class, executable));
-  }
-
-  @Test
-  public void testNamespaceNotEmpty() throws Exception {
     final String tableInNamespace = namespaceName + ".abcdefg";
     client.createTable(sharedSecret, tableInNamespace, true, TimeType.MILLIS);
 
     assertThrows(NamespaceNotEmptyException.class,
         () -> client.deleteNamespace(sharedSecret, namespaceName));
-
     // delete table so namespace can also be deleted
     client.deleteTable(sharedSecret, tableInNamespace);
   }
diff --git a/src/test/java/org/apache/accumulo/proxy/its/TBinaryProxyIT.java b/src/test/java/org/apache/accumulo/proxy/its/TBinaryProxyIT.java
index f50187a..6ccb202 100644
--- a/src/test/java/org/apache/accumulo/proxy/its/TBinaryProxyIT.java
+++ b/src/test/java/org/apache/accumulo/proxy/its/TBinaryProxyIT.java
@@ -1,18 +1,20 @@
 /*
- * 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
+ * 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
+ *   https://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.
+ * 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.proxy.its;
 
diff --git a/src/test/java/org/apache/accumulo/proxy/its/TCompactProxyIT.java b/src/test/java/org/apache/accumulo/proxy/its/TCompactProxyIT.java
index bb39b17..8d0c157 100644
--- a/src/test/java/org/apache/accumulo/proxy/its/TCompactProxyIT.java
+++ b/src/test/java/org/apache/accumulo/proxy/its/TCompactProxyIT.java
@@ -1,18 +1,20 @@
 /*
- * 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
+ * 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
+ *   https://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.
+ * 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.proxy.its;
 
diff --git a/src/test/java/org/apache/accumulo/proxy/its/TJsonProtocolProxyIT.java b/src/test/java/org/apache/accumulo/proxy/its/TJsonProtocolProxyIT.java
index 66f476c..5e5120a 100644
--- a/src/test/java/org/apache/accumulo/proxy/its/TJsonProtocolProxyIT.java
+++ b/src/test/java/org/apache/accumulo/proxy/its/TJsonProtocolProxyIT.java
@@ -1,18 +1,20 @@
 /*
- * 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
+ * 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
+ *   https://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.
+ * 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.proxy.its;
 
diff --git a/src/test/java/org/apache/accumulo/proxy/its/TTupleProxyIT.java b/src/test/java/org/apache/accumulo/proxy/its/TTupleProxyIT.java
index 673e48c..418494e 100644
--- a/src/test/java/org/apache/accumulo/proxy/its/TTupleProxyIT.java
+++ b/src/test/java/org/apache/accumulo/proxy/its/TTupleProxyIT.java
@@ -1,18 +1,20 @@
 /*
- * 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
+ * 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
+ *   https://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.
+ * 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.proxy.its;
 
diff --git a/src/test/java/org/apache/accumulo/proxy/its/TestProxyClient.java b/src/test/java/org/apache/accumulo/proxy/its/TestProxyClient.java
index 9fe5cc3..baa742b 100644
--- a/src/test/java/org/apache/accumulo/proxy/its/TestProxyClient.java
+++ b/src/test/java/org/apache/accumulo/proxy/its/TestProxyClient.java
@@ -1,18 +1,20 @@
 /*
- * 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
+ * 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
+ *   https://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.
+ * 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.proxy.its;
 
diff --git a/src/test/thrift/test.thrift b/src/test/thrift/test.thrift
index fe74462..68a253f 100644
--- a/src/test/thrift/test.thrift
+++ b/src/test/thrift/test.thrift
@@ -1,19 +1,21 @@
 /*
-* 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.
-*/
+ * 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
+ *
+ *   https://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.
+ */
 namespace java org.apache.accumulo.test.rpc.thrift
 
 service SimpleThriftService {