Merge branch 'master' into HDDS-3698-nonrolling-upgrade

* master:
  HDDS-3292. Support Hadoop 3.3 (#2356)
diff --git a/hadoop-hdds/common/pom.xml b/hadoop-hdds/common/pom.xml
index 772a53a..ca671b7 100644
--- a/hadoop-hdds/common/pom.xml
+++ b/hadoop-hdds/common/pom.xml
@@ -34,6 +34,11 @@
       <artifactId>hdds-hadoop-dependency-client</artifactId>
     </dependency>
     <dependency>
+      <groupId>org.apache.ozone</groupId>
+      <artifactId>hdds-hadoop-dependency-test</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
       <groupId>info.picocli</groupId>
       <artifactId>picocli</artifactId>
     </dependency>
diff --git a/hadoop-hdds/hadoop-dependency-test/pom.xml b/hadoop-hdds/hadoop-dependency-test/pom.xml
index 34cf949..799fc54 100644
--- a/hadoop-hdds/hadoop-dependency-test/pom.xml
+++ b/hadoop-hdds/hadoop-dependency-test/pom.xml
@@ -54,5 +54,14 @@
         </exclusion>
       </exclusions>
     </dependency>
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-compress</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.assertj</groupId>
+      <artifactId>assertj-core</artifactId>
+      <scope>compile</scope>
+    </dependency>
   </dependencies>
 </project>
diff --git a/hadoop-hdds/server-scm/pom.xml b/hadoop-hdds/server-scm/pom.xml
index 1f6f7e9..89edde4 100644
--- a/hadoop-hdds/server-scm/pom.xml
+++ b/hadoop-hdds/server-scm/pom.xml
@@ -118,8 +118,7 @@
     </dependency>
     <dependency>
       <groupId>org.mockito</groupId>
-      <artifactId>mockito-all</artifactId>
-      <version>${mockito1-hadoop.version}</version>
+      <artifactId>mockito-core</artifactId>
       <scope>test</scope>
     </dependency>
     <dependency>
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/TestContainerReportHandler.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/TestContainerReportHandler.java
index a72ab61..97e61ec 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/TestContainerReportHandler.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/TestContainerReportHandler.java
@@ -33,6 +33,7 @@
     .SCMDatanodeHeartbeatDispatcher.ContainerReportFromDatanode;
 import org.apache.hadoop.hdds.server.events.EventPublisher;
 import org.apache.hadoop.ozone.common.statemachine.InvalidStateTransitionException;
+import org.apache.hadoop.ozone.protocol.commands.CommandForDatanode;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
@@ -648,7 +649,8 @@
         new ContainerReportFromDatanode(datanodeOne, containerReport);
     reportHandler.onMessage(containerReportFromDatanode, publisher);
 
-    Mockito.verify(publisher, Mockito.times(1));
+    Mockito.verify(publisher, Mockito.times(1))
+        .fireEvent(Mockito.any(), Mockito.any(CommandForDatanode.class));
 
     Assert.assertEquals(0, containerManager.getContainerReplicas(
         containerOne.containerID()).size());
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/TestReplicationManager.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/TestReplicationManager.java
index 7d3d457..3bdc6ab 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/TestReplicationManager.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/TestReplicationManager.java
@@ -47,7 +47,6 @@
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
-import org.mockito.ArgumentMatcher;
 import org.mockito.Mockito;
 
 import java.io.IOException;
@@ -61,7 +60,6 @@
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import java.util.concurrent.atomic.AtomicInteger;
-import java.util.function.Function;
 import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 
@@ -130,8 +128,8 @@
     containerPlacementPolicy = Mockito.mock(PlacementPolicy.class);
 
     Mockito.when(containerPlacementPolicy.chooseDatanodes(
-        Mockito.anyListOf(DatanodeDetails.class),
-        Mockito.anyListOf(DatanodeDetails.class),
+        Mockito.any(),
+        Mockito.any(),
         Mockito.anyInt(), Mockito.anyLong()))
         .thenAnswer(invocation -> {
           int count = (int) invocation.getArguments()[2];
@@ -141,7 +139,7 @@
         });
 
     Mockito.when(containerPlacementPolicy.validateContainerPlacement(
-        Mockito.anyListOf(DatanodeDetails.class),
+        Mockito.any(),
         Mockito.anyInt()
         )).thenAnswer(invocation ->  {
           return new ContainerPlacementStatusDefault(2, 2, 3);
@@ -730,7 +728,7 @@
     // test where there are 3 replicas. When there are 2 or 4 replicas
     // the status returned will be healthy.
     Mockito.when(containerPlacementPolicy.validateContainerPlacement(
-        Mockito.argThat(new ListOfNElements(3)),
+        Mockito.argThat(list -> list.size() == 3),
         Mockito.anyInt()
     )).thenAnswer(invocation ->  {
       return new ContainerPlacementStatusDefault(1, 2, 3);
@@ -799,7 +797,7 @@
     // Ensure a mis-replicated status is returned for any containers in this
     // test where there are exactly 3 replicas checked.
     Mockito.when(containerPlacementPolicy.validateContainerPlacement(
-        Mockito.argThat(new ListOfNElements(3)),
+        Mockito.argThat(list -> list.size() == 3),
         Mockito.anyInt()
     )).thenAnswer(
         invocation -> new ContainerPlacementStatusDefault(1, 2, 3));
@@ -843,7 +841,7 @@
     containerStateManager.updateContainerReplica(id, replicaFour);
 
     Mockito.when(containerPlacementPolicy.validateContainerPlacement(
-        Mockito.argThat(new ListOfNElements(3)),
+        Mockito.argThat(list -> list.size() == 3),
         Mockito.anyInt()
     )).thenAnswer(
         invocation -> new ContainerPlacementStatusDefault(2, 2, 3));
@@ -883,8 +881,7 @@
     containerStateManager.updateContainerReplica(id, replicaFive);
 
     Mockito.when(containerPlacementPolicy.validateContainerPlacement(
-        Mockito.argThat(new FunctionMatcher(list ->
-            list != null && ((List) list).size() <= 4)),
+        Mockito.argThat(list -> list != null && list.size() <= 4),
         Mockito.anyInt()
     )).thenAnswer(
         invocation -> new ContainerPlacementStatusDefault(1, 2, 3));
@@ -1188,31 +1185,4 @@
     }
   }
 
-  static class ListOfNElements extends ArgumentMatcher<List> {
-
-    private int expected;
-
-    ListOfNElements(int expected) {
-      this.expected = expected;
-    }
-
-    @Override
-    public boolean matches(Object argument) {
-      return ((List)argument).size() == expected;
-    }
-  }
-
-  static class FunctionMatcher extends ArgumentMatcher<List> {
-
-    private Function<Object, Boolean> function;
-
-    FunctionMatcher(Function<Object, Boolean> function) {
-      this.function = function;
-    }
-
-    @Override
-    public boolean matches(Object argument) {
-      return function.apply(argument);
-    }
-  }
-}
\ No newline at end of file
+}
diff --git a/hadoop-hdds/tools/pom.xml b/hadoop-hdds/tools/pom.xml
index 1ce76e6..0799835 100644
--- a/hadoop-hdds/tools/pom.xml
+++ b/hadoop-hdds/tools/pom.xml
@@ -78,12 +78,10 @@
       <groupId>org.xerial</groupId>
       <artifactId>sqlite-jdbc</artifactId>
     </dependency>
-      <dependency>
-          <groupId>org.mockito</groupId>
-          <artifactId>mockito-all</artifactId>
-          <version>${mockito1-hadoop.version}</version>
-          <scope>test</scope>
-      </dependency>
-
+    <dependency>
+      <groupId>org.mockito</groupId>
+      <artifactId>mockito-core</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 </project>
diff --git a/hadoop-hdds/tools/src/test/java/org/apache/hadoop/hdds/scm/cli/datanode/TestListInfoSubcommand.java b/hadoop-hdds/tools/src/test/java/org/apache/hadoop/hdds/scm/cli/datanode/TestListInfoSubcommand.java
index cb7cf8a..70c74a9 100644
--- a/hadoop-hdds/tools/src/test/java/org/apache/hadoop/hdds/scm/cli/datanode/TestListInfoSubcommand.java
+++ b/hadoop-hdds/tools/src/test/java/org/apache/hadoop/hdds/scm/cli/datanode/TestListInfoSubcommand.java
@@ -68,9 +68,7 @@
   public void testDataNodeOperationalStateAndHealthIncludedInOutput()
       throws Exception {
     ScmClient scmClient = mock(ScmClient.class);
-    Mockito.when(scmClient.queryNode(any(HddsProtos.NodeOperationalState.class),
-        any(HddsProtos.NodeState.class), any(HddsProtos.QueryScope.class),
-        Mockito.anyString()))
+    Mockito.when(scmClient.queryNode(any(), any(), any(), any()))
         .thenAnswer(invocation -> getNodeDetails());
     Mockito.when(scmClient.listPipelines())
         .thenReturn(new ArrayList<>());
diff --git a/hadoop-ozone/dist/src/main/license/jar-report.txt b/hadoop-ozone/dist/src/main/license/jar-report.txt
index 11a3b74..8233966 100644
--- a/hadoop-ozone/dist/src/main/license/jar-report.txt
+++ b/hadoop-ozone/dist/src/main/license/jar-report.txt
@@ -57,6 +57,8 @@
 share/ozone/lib/hadoop-common.jar
 share/ozone/lib/hadoop-hdfs-client.jar
 share/ozone/lib/hadoop-hdfs.jar
+share/ozone/lib/hadoop-shaded-guava.jar
+share/ozone/lib/hadoop-shaded-protobuf_3_7.jar
 share/ozone/lib/hdds-client.jar
 share/ozone/lib/hdds-common.jar
 share/ozone/lib/hdds-config.jar
@@ -97,7 +99,6 @@
 share/ozone/lib/jakarta.ws.rs-api.jar
 share/ozone/lib/jakarta.xml.bind-api.jar
 share/ozone/lib/javassist-GA.jar
-share/ozone/lib/javax.activation-api.jar
 share/ozone/lib/javax.annotation-api.jar
 share/ozone/lib/javax.el-api.jar
 share/ozone/lib/javax.inject.jar
@@ -223,6 +224,7 @@
 share/ozone/lib/slf4j-api.jar
 share/ozone/lib/slf4j-log4j12.jar
 share/ozone/lib/snakeyaml.jar
+share/ozone/lib/snappy-java.jar
 share/ozone/lib/spring-beans.RELEASE.jar
 share/ozone/lib/spring-core.RELEASE.jar
 share/ozone/lib/spring-jcl.RELEASE.jar
diff --git a/hadoop-ozone/dist/src/main/smoketest/spnego/web.robot b/hadoop-ozone/dist/src/main/smoketest/spnego/web.robot
index 4a92bd7..c500d57 100644
--- a/hadoop-ozone/dist/src/main/smoketest/spnego/web.robot
+++ b/hadoop-ozone/dist/src/main/smoketest/spnego/web.robot
@@ -41,7 +41,7 @@
     [arguments]                      ${url}
     Run Keyword if      '${SECURITY_ENABLED}' == 'true'     Execute     kdestroy
     ${result} =         Execute                             curl --negotiate -u : -v -s -I ${url}
-    Should contain      ${result}       401 Unauthorized
+    Should contain      ${result}       401 Authentication required
 
     Run Keyword if      '${SECURITY_ENABLED}' == 'true'     Kinit test user     testuser     testuser.keytab
     ${result} =         Execute                             curl --negotiate -u : -v -s -I ${url}
diff --git a/hadoop-ozone/integration-test/pom.xml b/hadoop-ozone/integration-test/pom.xml
index 97e72ae..51328e4 100644
--- a/hadoop-ozone/integration-test/pom.xml
+++ b/hadoop-ozone/integration-test/pom.xml
@@ -135,8 +135,7 @@
     </dependency>
     <dependency>
       <groupId>org.mockito</groupId>
-      <artifactId>mockito-all</artifactId>
-      <version>${mockito1-hadoop.version}</version>
+      <artifactId>mockito-core</artifactId>
       <scope>test</scope>
     </dependency>
     <dependency>
diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/TestStorageContainerManager.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/TestStorageContainerManager.java
index 4ffa77b..108ccf8 100644
--- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/TestStorageContainerManager.java
+++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/TestStorageContainerManager.java
@@ -827,9 +827,8 @@
     }
   }
 
-  @SuppressWarnings("visibilitymodifier")
-  static class CloseContainerCommandMatcher
-      extends ArgumentMatcher<CommandForDatanode> {
+  private static class CloseContainerCommandMatcher
+      implements ArgumentMatcher<CommandForDatanode> {
 
     private final CommandForDatanode cmd;
     private final UUID uuid;
@@ -840,8 +839,7 @@
     }
 
     @Override
-    public boolean matches(Object argument) {
-      CommandForDatanode cmdRight = (CommandForDatanode) argument;
+    public boolean matches(CommandForDatanode cmdRight) {
       CloseContainerCommand left = (CloseContainerCommand) cmd.getCommand();
       CloseContainerCommand right =
           (CloseContainerCommand) cmdRight.getCommand();
diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/shell/TestOzoneShellHA.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/shell/TestOzoneShellHA.java
index 162ed8a..155738b 100644
--- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/shell/TestOzoneShellHA.java
+++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/shell/TestOzoneShellHA.java
@@ -139,7 +139,6 @@
         .setOMServiceId(omServiceId)
         .setNumOfOzoneManagers(numOfOMs)
         .build();
-    conf.setQuietMode(false);
     cluster.waitForClusterToBeReady();
   }
 
diff --git a/pom.xml b/pom.xml
index 2cdca42..0097604 100644
--- a/pom.xml
+++ b/pom.xml
@@ -62,7 +62,7 @@
   </organization>
 
   <properties>
-    <hadoop.version>3.2.2</hadoop.version>
+    <hadoop.version>3.3.1</hadoop.version>
 
     <!-- version for hdds/ozone components -->
     <hdds.version>${ozone.version}</hdds.version>
@@ -161,7 +161,6 @@
     <hikari.version>2.4.12</hikari.version>
     <mssql.version>6.2.1.jre7</mssql.version>
     <okhttp.version>2.7.5</okhttp.version>
-    <mockito1-hadoop.version>1.8.5</mockito1-hadoop.version>
     <mockito1-powermock.version>1.10.19</mockito1-powermock.version>
     <mockito2.version>2.28.2</mockito2.version>
     <hamcrest.version>1.3</hamcrest.version>
@@ -1564,7 +1563,7 @@
       <dependency>
         <groupId>org.assertj</groupId>
         <artifactId>assertj-core</artifactId>
-        <version>3.8.0</version>
+        <version>3.12.2</version>
         <scope>test</scope>
       </dependency>
       <dependency>