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

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


The following commit(s) were added to refs/heads/master by this push:
     new eab67e71ef HDDS-8127. Exclude deleted containers from Recon container 
count (#4440)
eab67e71ef is described below

commit eab67e71ef1ae3100fcb9e47409dc9875afc0474
Author: Arafat2198 <[email protected]>
AuthorDate: Tue Apr 4 12:25:08 2023 +0530

    HDDS-8127. Exclude deleted containers from Recon container count (#4440)
    
    * Rebased the conflict
    
    * Addressed review comments
    
    * Renamed ContainerStats to ContainerStateCounts
    
    * Consolidated unit tests for container states into one file - 
TestContainerStateCounts
    
    * fixed checkstyle issues
    
    * Made review changes
---
 .../ozone/recon/api/ClusterStateEndpoint.java      |  37 +++--
 .../recon/api/types/ClusterStateResponse.java      |  18 +++
 .../recon/api/types/ContainerStateCounts.java      |  62 +++++++++
 ...nerCount.java => TestContainerStateCounts.java} | 154 ++++++++++-----------
 4 files changed, 181 insertions(+), 90 deletions(-)

diff --git 
a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/ClusterStateEndpoint.java
 
b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/ClusterStateEndpoint.java
index 840e8acf7c..7c563e13da 100644
--- 
a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/ClusterStateEndpoint.java
+++ 
b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/ClusterStateEndpoint.java
@@ -24,6 +24,7 @@ import 
org.apache.hadoop.hdds.scm.container.placement.metrics.SCMNodeStat;
 import org.apache.hadoop.hdds.scm.node.NodeStatus;
 import org.apache.hadoop.hdds.scm.server.OzoneStorageContainerManager;
 import org.apache.hadoop.ozone.recon.api.types.ClusterStateResponse;
+import org.apache.hadoop.ozone.recon.api.types.ContainerStateCounts;
 import org.apache.hadoop.ozone.recon.api.types.DatanodeStorageReport;
 import org.apache.hadoop.ozone.recon.persistence.ContainerHealthSchemaManager;
 import org.apache.hadoop.ozone.recon.scm.ReconContainerManager;
@@ -52,7 +53,6 @@ import static 
org.apache.hadoop.ozone.om.OmMetadataManagerImpl.KEY_TABLE;
 import static org.apache.hadoop.ozone.om.OmMetadataManagerImpl.VOLUME_TABLE;
 import static org.apache.hadoop.ozone.om.OmMetadataManagerImpl.FILE_TABLE;
 
-
 /**
  * Endpoint to fetch current state of ozone cluster.
  */
@@ -91,25 +91,37 @@ public class ClusterStateEndpoint {
    */
   @GET
   public Response getClusterState() {
+    ContainerStateCounts containerStateCounts = new ContainerStateCounts();
     List<DatanodeDetails> datanodeDetails = nodeManager.getAllNodes();
-    int containers = this.containerManager.getContainers().size();
+
     int pipelines = this.pipelineManager.getPipelines().size();
+
     List<UnhealthyContainers> missingContainers = containerHealthSchemaManager
         .getUnhealthyContainers(
             ContainerSchemaDefinition.UnHealthyContainerStates.MISSING,
             0, MISSING_CONTAINER_COUNT_LIMIT);
-    int totalMissingContainerCount = missingContainers.size() ==
-        MISSING_CONTAINER_COUNT_LIMIT ?
-        MISSING_CONTAINER_COUNT_LIMIT : missingContainers.size();
-    int openContainersCount = this.containerManager.getContainerStateCount(
-        HddsProtos.LifeCycleState.OPEN);
+
+    containerStateCounts.setMissingContainerCount(
+        missingContainers.size() == MISSING_CONTAINER_COUNT_LIMIT ?
+            MISSING_CONTAINER_COUNT_LIMIT : missingContainers.size());
+
+    containerStateCounts.setOpenContainersCount(
+        this.containerManager.getContainerStateCount(
+            HddsProtos.LifeCycleState.OPEN));
+
+    containerStateCounts.setDeletedContainersCount(
+        this.containerManager.getContainerStateCount(
+            HddsProtos.LifeCycleState.DELETED));
+
     int healthyDatanodes =
         nodeManager.getNodeCount(NodeStatus.inServiceHealthy()) +
             nodeManager.getNodeCount(NodeStatus.inServiceHealthyReadOnly());
+
     SCMNodeStat stats = nodeManager.getStats();
     DatanodeStorageReport storageReport =
         new DatanodeStorageReport(stats.getCapacity().get(),
             stats.getScmUsed().get(), stats.getRemaining().get());
+
     ClusterStateResponse.Builder builder = ClusterStateResponse.newBuilder();
     GlobalStats volumeRecord = globalStatsDao.findById(
         TableCountTask.getRowKeyFromTable(VOLUME_TABLE));
@@ -156,14 +168,19 @@ public class ClusterStateEndpoint {
     builder.setDeletedKeys(deletedKeys);
     builder.setDeletedDirs(deletedDirs);
 
+    // Subtract deleted containers from total containers.
+    containerStateCounts.setTotalContainerCount(
+        this.containerManager.getContainers().size() -
+            containerStateCounts.getDeletedContainersCount());
     ClusterStateResponse response = builder
         .setStorageReport(storageReport)
         .setPipelines(pipelines)
-        .setContainers(containers)
-        .setMissingContainers(totalMissingContainerCount)
+        .setContainers(containerStateCounts.getTotalContainerCount())
+        .setMissingContainers(containerStateCounts.getMissingContainerCount())
         .setTotalDatanodes(datanodeDetails.size())
         .setHealthyDatanodes(healthyDatanodes)
-        .setOpenContainers(openContainersCount)
+        .setOpenContainers(containerStateCounts.getOpenContainersCount())
+        .setDeletedContainers(containerStateCounts.getDeletedContainersCount())
         .build();
     return Response.ok(response).build();
   }
diff --git 
a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/types/ClusterStateResponse.java
 
b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/types/ClusterStateResponse.java
index 118cedc2de..e7296d7100 100644
--- 
a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/types/ClusterStateResponse.java
+++ 
b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/types/ClusterStateResponse.java
@@ -66,6 +66,12 @@ public final class ClusterStateResponse {
   @JsonProperty("openContainers")
   private int openContainers;
 
+  /**
+   * Total count of deleted containers in the cluster.
+   */
+  @JsonProperty("deletedContainers")
+  private int deletedContainers;
+
   /**
    * Total count of volumes in the cluster.
    */
@@ -118,6 +124,7 @@ public final class ClusterStateResponse {
     this.openContainers = b.openContainers;
     this.deletedKeys = b.deletedKeys;
     this.deletedDirs = b.deletedDirs;
+    this.deletedContainers = b.deletedContainers;
   }
 
   /**
@@ -132,6 +139,7 @@ public final class ClusterStateResponse {
     private int containers;
     private int missingContainers;
     private int openContainers;
+    private int deletedContainers;
     private long volumes;
     private long buckets;
     private long keys;
@@ -143,6 +151,7 @@ public final class ClusterStateResponse {
       this.containers = 0;
       this.missingContainers = 0;
       this.openContainers = 0;
+      this.deletedContainers = 0;
       this.volumes = 0;
       this.buckets = 0;
       this.keys = 0;
@@ -188,6 +197,11 @@ public final class ClusterStateResponse {
       return this;
     }
 
+    public Builder setDeletedContainers(int deletedContainers) {
+      this.deletedContainers = deletedContainers;
+      return this;
+    }
+
     public Builder setVolumes(long volumes) {
       this.volumes = volumes;
       return this;
@@ -250,6 +264,10 @@ public final class ClusterStateResponse {
     return openContainers;
   }
 
+  public int getDeletedContainers() {
+    return deletedContainers;
+  }
+
   public long getBuckets() {
     return buckets;
   }
diff --git 
a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/types/ContainerStateCounts.java
 
b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/types/ContainerStateCounts.java
new file mode 100644
index 0000000000..d4db87f9df
--- /dev/null
+++ 
b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/types/ContainerStateCounts.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * 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.hadoop.ozone.recon.api.types;
+
+/**
+ * Represents statistics related to containers in the Ozone cluster.
+ */
+public class ContainerStateCounts {
+
+  private int totalContainerCount;
+  private int missingContainerCount;
+  private int openContainersCount;
+  private int deletedContainersCount;
+
+  public int getTotalContainerCount() {
+    return totalContainerCount;
+  }
+
+  public void setTotalContainerCount(int totalContainerCount) {
+    this.totalContainerCount = totalContainerCount;
+  }
+
+  public int getMissingContainerCount() {
+    return missingContainerCount;
+  }
+
+  public void setMissingContainerCount(int missingContainerCount) {
+    this.missingContainerCount = missingContainerCount;
+  }
+
+  public int getOpenContainersCount() {
+    return openContainersCount;
+  }
+
+  public void setOpenContainersCount(int openContainersCount) {
+    this.openContainersCount = openContainersCount;
+  }
+
+  public int getDeletedContainersCount() {
+    return deletedContainersCount;
+  }
+
+  public void setDeletedContainersCount(int deletedContainersCount) {
+    this.deletedContainersCount = deletedContainersCount;
+  }
+}
diff --git 
a/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/TestTotalOpenContainerCount.java
 
b/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/TestContainerStateCounts.java
similarity index 82%
rename from 
hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/TestTotalOpenContainerCount.java
rename to 
hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/TestContainerStateCounts.java
index 04eb53bb6e..c61bb13901 100644
--- 
a/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/TestTotalOpenContainerCount.java
+++ 
b/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/TestContainerStateCounts.java
@@ -17,22 +17,19 @@
  */
 
 package org.apache.hadoop.ozone.recon.api;
+
 import org.apache.hadoop.hdds.client.RatisReplicationConfig;
 import org.apache.hadoop.hdds.conf.OzoneConfiguration;
 import org.apache.hadoop.hdds.protocol.DatanodeDetails;
 import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
-import org.apache.hadoop.hdds.protocol.proto.HddsProtos
-    .ExtendedDatanodeDetailsProto;
+import 
org.apache.hadoop.hdds.protocol.proto.HddsProtos.ExtendedDatanodeDetailsProto;
 import org.apache.hadoop.hdds.protocol.proto.HddsProtos.LifeCycleState;
 import org.apache.hadoop.hdds.protocol.proto.HddsProtos.PipelineID;
-import org.apache.hadoop.hdds.protocol.proto.HddsProtos.ReplicationFactor;
-import org.apache.hadoop.hdds.protocol.proto
-    .StorageContainerDatanodeProtocolProtos.LayoutVersionProto;
 import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerDatanodeProtocolProtos.ContainerReplicaProto;
 import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerDatanodeProtocolProtos.PipelineReport;
-import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerDatanodeProtocolProtos.SCMHeartbeatRequestProto;
 import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerDatanodeProtocolProtos.StorageTypeProto;
 import org.apache.hadoop.hdds.protocol.proto.HddsProtos.DatanodeDetailsProto;
+import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerDatanodeProtocolProtos.LayoutVersionProto;
 import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerDatanodeProtocolProtos.StorageReportProto;
 import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerDatanodeProtocolProtos.NodeReportProto;
 import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerDatanodeProtocolProtos.ContainerReportsProto;
@@ -55,36 +52,33 @@ import 
org.apache.hadoop.ozone.recon.spi.StorageContainerServiceProvider;
 import org.apache.hadoop.ozone.recon.spi.impl.OzoneManagerServiceProviderImpl;
 import 
org.apache.hadoop.ozone.recon.spi.impl.StorageContainerServiceProviderImpl;
 import org.apache.ozone.test.GenericTestUtils;
-import org.apache.ozone.test.LambdaTestUtils;
 import org.hadoop.ozone.recon.schema.tables.daos.GlobalStatsDao;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
+import javax.servlet.http.HttpServletResponse;
+import javax.ws.rs.core.Response;
+import java.net.HttpURLConnection;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.UUID;
+
 import static 
org.apache.hadoop.hdds.protocol.MockDatanodeDetails.randomDatanodeDetails;
 import static 
org.apache.hadoop.ozone.container.upgrade.UpgradeUtils.defaultLayoutVersionProto;
+import static 
org.apache.hadoop.ozone.recon.OMMetadataManagerTestUtils.initializeNewOmMetadataManager;
 import static 
org.apache.hadoop.ozone.recon.OMMetadataManagerTestUtils.getRandomPipeline;
 import static 
org.apache.hadoop.ozone.recon.OMMetadataManagerTestUtils.getTestReconOmMetadataManager;
-import static 
org.apache.hadoop.ozone.recon.OMMetadataManagerTestUtils.initializeNewOmMetadataManager;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyBoolean;
 import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
-import javax.servlet.http.HttpServletResponse;
-import javax.ws.rs.core.Response;
-import java.net.HttpURLConnection;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.UUID;
-import java.util.concurrent.Callable;
-import java.util.concurrent.atomic.AtomicInteger;
-
 /**
- * Test for Recon API endpoints.
+ * Test for clusterStateEndpoint for checking deletedContainers count.
  */
-public class TestTotalOpenContainerCount extends AbstractReconSqlDBTest {
+public class TestContainerStateCounts extends AbstractReconSqlDBTest {
   private NodeEndpoint nodeEndpoint;
   private ClusterStateEndpoint clusterStateEndpoint;
   private ReconOMMetadataManager reconOMMetadataManager;
@@ -94,7 +88,7 @@ public class TestTotalOpenContainerCount extends 
AbstractReconSqlDBTest {
   private DatanodeDetails datanodeDetails;
   private DatanodeDetails datanodeDetails2;
   private ContainerReportsProto containerReportsProto;
-  private ExtendedDatanodeDetailsProto extendedDatanodeDetailsProto;
+  private HddsProtos.ExtendedDatanodeDetailsProto extendedDatanodeDetailsProto;
   private Pipeline pipeline, pipeline2;
   private static final String HOST1 = "host1.datanode";
   private static final String HOST2 = "host2.datanode";
@@ -132,18 +126,20 @@ public class TestTotalOpenContainerCount extends 
AbstractReconSqlDBTest {
     when(mockScmServiceProvider.getPipeline(
         pipeline2.getId().getProtobuf())).thenReturn(pipeline2);
 
-    // Open 5 containers on pipeline 1
+    // Initialize 5 DELETED containers associated with pipeline 1
+    // which is associated with DataNode1
     containerIDs = new LinkedList<>();
     cpw = new LinkedList<>();
     for (long i = 1L; i <= 5L; ++i) {
       ContainerInfo containerInfo = new ContainerInfo.Builder()
           .setContainerID(i)
-          .setReplicationConfig(
-              RatisReplicationConfig.getInstance(ReplicationFactor.ONE))
-          .setState(LifeCycleState.OPEN)
+          .setReplicationConfig(RatisReplicationConfig.getInstance(
+              HddsProtos.ReplicationFactor.ONE))
+          .setState(LifeCycleState.DELETED)
           .setOwner("test")
           .setPipelineID(pipeline.getId())
           .build();
+
       ContainerWithPipeline containerWithPipeline =
           new ContainerWithPipeline(containerInfo, pipeline);
       when(mockScmServiceProvider.getContainerWithPipeline(i))
@@ -152,13 +148,18 @@ public class TestTotalOpenContainerCount extends 
AbstractReconSqlDBTest {
       cpw.add(containerWithPipeline);
     }
 
-    // Open 5 containers on pipeline 2
+
+    // Initialize 2 CLOSED and 3 OPEN containers associated with pipeline 2
+    // which is associated with DataNode2
     for (long i = 6L; i <= 10L; ++i) {
+      LifeCycleState lifeCycleState = (i == 6L || i == 7L) ?
+          LifeCycleState.CLOSED : LifeCycleState.OPEN;
       ContainerInfo containerInfo = new ContainerInfo.Builder()
           .setContainerID(i)
           .setReplicationConfig(
-              RatisReplicationConfig.getInstance(ReplicationFactor.ONE))
-          .setState(LifeCycleState.OPEN)
+              RatisReplicationConfig.getInstance(
+                  HddsProtos.ReplicationFactor.ONE))
+          .setState(lifeCycleState)
           .setOwner("test")
           .setPipelineID(pipeline2.getId())
           .build();
@@ -170,6 +171,7 @@ public class TestTotalOpenContainerCount extends 
AbstractReconSqlDBTest {
       cpw.add(containerWithPipeline);
     }
 
+
     when(mockScmServiceProvider
         .getExistContainerWithPipelinesInBatch(containerIDs))
         .thenReturn(cpw);
@@ -213,43 +215,51 @@ public class TestTotalOpenContainerCount extends 
AbstractReconSqlDBTest {
 
   @BeforeEach
   public void setUp() throws Exception {
-    // The following setup runs only once
+    // Check if the setup has already been done
     if (!isSetupDone) {
+      // Initialize the injector if setup has not been done
       initializeInjector();
+      // Mark the setup as done
       isSetupDone = true;
     }
+    // Get UUIDs for datanodes
     String datanodeId = datanodeDetails.getUuid().toString();
     String datanodeId2 = datanodeDetails2.getUuid().toString();
 
     // initialize container report
     builder = ContainerReportsProto.newBuilder();
-    for (long i = 1L; i <= 10L; i++) {
-      if (i >= 1L && i < 6L) {
-        builder.addReports(
-            ContainerReplicaProto.newBuilder()
-                .setContainerID(i)
-                .setState(ContainerReplicaProto.State.OPEN)
-                .setOriginNodeId(datanodeId)
-                .build()
-        );
+    builder = ContainerReportsProto.newBuilder();
+
+    // Generate container reports with different states
+    for (long i = 1L; i < 11L; i++) {
+      ContainerReplicaProto.State state;
+      if (i < 5L) {
+        state = ContainerReplicaProto.State.DELETED;
+      } else if (i < 8L) {
+        state = ContainerReplicaProto.State.CLOSED;
       } else {
-        builder.addReports(
-            ContainerReplicaProto.newBuilder()
-                .setContainerID(i)
-                .setState(ContainerReplicaProto.State.OPEN)
-                .setOriginNodeId(datanodeId2)
-                .build()
-        );
+        state = ContainerReplicaProto.State.OPEN;
       }
+
+      builder.addReports(
+          ContainerReplicaProto.newBuilder()
+              .setContainerID(i)
+              .setState(state)
+              .setOriginNodeId(i < 5L ? datanodeId : datanodeId2)
+              .build()
+      );
     }
+    // Build container reports
     containerReportsProto = builder.build();
 
+    // Build UUID object for pipeline
     UUID pipelineUuid = UUID.fromString(pipelineId);
     HddsProtos.UUID uuid128 = HddsProtos.UUID.newBuilder()
         .setMostSigBits(pipelineUuid.getMostSignificantBits())
         .setLeastSigBits(pipelineUuid.getLeastSignificantBits())
         .build();
 
+    // Build pipeline report for pipeline 1
     PipelineReport pipelineReport = PipelineReport.newBuilder()
         .setPipelineID(
             PipelineID.newBuilder().setId(pipelineId).setUuid128(uuid128)
@@ -292,6 +302,8 @@ public class TestTotalOpenContainerCount extends 
AbstractReconSqlDBTest {
         .setMostSigBits(pipelineUuid2.getMostSignificantBits())
         .setLeastSigBits(pipelineUuid2.getLeastSignificantBits())
         .build();
+
+    // Build pipeline report for pipeline 2
     PipelineReport pipelineReport2 = PipelineReport.newBuilder()
         .setPipelineID(
             PipelineID.newBuilder().setId(pipelineId2).setUuid128(uuid128)
@@ -307,7 +319,7 @@ public class TestTotalOpenContainerCount extends 
AbstractReconSqlDBTest {
             .setUuid(datanodeId2)
             .setIpAddress(IP2)
             .build();
-    ExtendedDatanodeDetailsProto extendedDatanodeDetailsProto2 =
+    HddsProtos.ExtendedDatanodeDetailsProto extendedDatanodeDetailsProto2 =
         ExtendedDatanodeDetailsProto.newBuilder()
             .setDatanodeDetails(datanodeDetailsProto2)
             .setVersion("0.6.0")
@@ -349,48 +361,30 @@ public class TestTotalOpenContainerCount extends 
AbstractReconSqlDBTest {
   }
 
   @Test
-  public void testOpenContainerCount() throws Exception {
+  public void testDeletedContainerCount() throws Exception {
 
-    waitAndCheckConditionAfterHeartbeat(() -> {
-      Response response1 = clusterStateEndpoint.getClusterState();
-      ClusterStateResponse clusterStateResponse1 =
-          (ClusterStateResponse) response1.getEntity();
-      return (clusterStateResponse1.getContainers() == 10);
-    });
+    // Total Available Containers = Total - Deleted Containers = 10 - 5 = 5
+    // Total Deleted Containers = 5
+    // Total Open Containers = 3
+    // Total Closed Containers = 2
 
-    Response response = clusterStateEndpoint.getClusterState();
-    response = nodeEndpoint.getDatanodes();
+    Response response = nodeEndpoint.getDatanodes();
     DatanodesResponse datanodesResponse =
         (DatanodesResponse) response.getEntity();
     Assertions.assertEquals(2, datanodesResponse.getTotalCount());
-    AtomicInteger expectedCount = new AtomicInteger();
 
     Response response1 = clusterStateEndpoint.getClusterState();
     ClusterStateResponse clusterStateResponse1 =
         (ClusterStateResponse) response1.getEntity();
-    // Get the total count of Open containers across all DataNodes
-    datanodesResponse.getDatanodes().forEach(datanodeMetadata -> {
-      expectedCount.set(
-          expectedCount.get() +
-              datanodeMetadata.getOpenContainers());
-    });
-
-    Assertions.assertEquals(expectedCount.intValue(),
-        clusterStateResponse1.getOpenContainers());
-  }
 
-  private void waitAndCheckConditionAfterHeartbeat(Callable<Boolean> check)
-      throws Exception {
-    // if container report is processed first, and pipeline does not exist
-    // then container is not added until the next container report is processed
-    SCMHeartbeatRequestProto heartbeatRequestProto =
-        SCMHeartbeatRequestProto.newBuilder()
-            .setContainerReport(containerReportsProto)
-            .setDatanodeDetails(extendedDatanodeDetailsProto
-                .getDatanodeDetails())
-            .setDataNodeLayoutVersion(defaultLayoutVersionProto())
-            .build();
-    reconScm.getDatanodeProtocolServer().sendHeartbeat(heartbeatRequestProto);
-    LambdaTestUtils.await(30000, 1000, check);
+    // Test for total pipelines
+    Assertions.assertEquals(2, clusterStateResponse1.getPipelines());
+    // Test for total containers
+    Assertions.assertEquals(5, clusterStateResponse1.getContainers());
+    // Test for total deleted containers
+    Assertions.assertEquals(5, clusterStateResponse1.getDeletedContainers());
+    // Test for OPEN containers
+    Assertions.assertEquals(3, clusterStateResponse1.getOpenContainers());
   }
+
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to