Pārlūkot izejas kodu

HDDS-144. Fix TestEndPoint#testHeartbeat and TestEndPoint#testRegister.
Contributed by Shashikant Banerjee.

Anu Engineer 7 gadi atpakaļ
vecāks
revīzija
9e50dce46c

+ 32 - 0
hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/ScmTestMock.java

@@ -16,6 +16,7 @@
  */
 package org.apache.hadoop.ozone.container.common;
 
+import com.google.common.base.Preconditions;
 import org.apache.hadoop.hdds.protocol.proto.StorageContainerDatanodeProtocolProtos;
 import org.apache.hadoop.hdds.scm.VersionInfo;
 import org.apache.hadoop.hdds.protocol.DatanodeDetails;
@@ -179,6 +180,7 @@ public class ScmTestMock implements StorageContainerDatanodeProtocol {
     List<SCMCommandProto>
         cmdResponses = new LinkedList<>();
     return SCMHeartbeatResponseProto.newBuilder().addAllCommands(cmdResponses)
+        .setDatanodeUUID(heartbeat.getDatanodeDetails().getUuid())
         .build();
   }
 
@@ -197,6 +199,7 @@ public class ScmTestMock implements StorageContainerDatanodeProtocol {
       throws IOException {
     rpcCount.incrementAndGet();
     updateNodeReport(datanodeDetailsProto, nodeReport);
+    updateContainerReport(containerReportsRequestProto, datanodeDetailsProto);
     sleepIfNeeded();
     return StorageContainerDatanodeProtocolProtos.SCMRegisteredResponseProto
         .newBuilder().setClusterID(UUID.randomUUID().toString())
@@ -227,6 +230,35 @@ public class ScmTestMock implements StorageContainerDatanodeProtocol {
 
   }
 
+  /**
+   * Update the cotainerReport.
+   *
+   * @param reports Container report
+   * @param datanodeDetails DataNode Info
+   * @throws IOException
+   */
+  public void updateContainerReport(
+      StorageContainerDatanodeProtocolProtos.ContainerReportsProto reports,
+      DatanodeDetailsProto datanodeDetails) throws IOException {
+    Preconditions.checkNotNull(reports);
+    containerReportsCount.incrementAndGet();
+    DatanodeDetails datanode = DatanodeDetails.getFromProtoBuf(
+        datanodeDetails);
+    if (reports.getReportsCount() > 0) {
+      Map containers = nodeContainers.get(datanode);
+      if (containers == null) {
+        containers = new LinkedHashMap();
+        nodeContainers.put(datanode, containers);
+      }
+
+      for (StorageContainerDatanodeProtocolProtos.ContainerInfo report : reports
+          .getReportsList()) {
+        containers.put(report.getContainerID(), report);
+      }
+    }
+  }
+
+
   /**
    * Return the number of StorageReports of a datanode.
    * @param datanodeDetails