HDDS-144. Fix TestEndPoint#testHeartbeat and TestEndPoint#testRegister.

Contributed by Shashikant Banerjee.
This commit is contained in:
Anu Engineer 2018-06-01 14:42:03 -07:00
parent ff583d3fa3
commit 9e50dce46c
1 changed files with 32 additions and 0 deletions

View File

@ -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