2828import static org .mockito .Mockito .when ;
2929
3030import java .io .IOException ;
31+ import java .util .Arrays ;
3132import java .util .UUID ;
3233import org .apache .hadoop .hdds .protocol .DatanodeDetails ;
3334import org .apache .hadoop .hdds .protocol .proto .DiskBalancerProtocolProtos .GetDiskBalancerInfoRequestProto ;
3435import org .apache .hadoop .hdds .protocol .proto .HddsProtos .DatanodeDiskBalancerInfoProto ;
3536import org .apache .hadoop .hdds .protocol .proto .HddsProtos .DiskBalancerConfigurationProto ;
3637import org .apache .hadoop .hdds .protocol .proto .HddsProtos .DiskBalancerRunningStatus ;
38+ import org .apache .hadoop .hdds .protocol .proto .HddsProtos .VolumeReportProto ;
3739import org .apache .hadoop .ozone .container .common .statemachine .DatanodeStateMachine ;
3840import org .apache .hadoop .ozone .container .diskbalancer .DiskBalancerProtocolServer .PrivilegedOperation ;
3941import org .apache .hadoop .ozone .container .ozoneimpl .OzoneContainer ;
@@ -51,6 +53,23 @@ class TestDiskBalancerProtocolServer {
5153 private static final int TEST_THREADS = 5 ;
5254 private static final boolean TEST_STOP_AFTER_DISK_EVEN = true ;
5355 private static final double TEST_VOLUME_DENSITY = 15.5 ;
56+ private static final double TEST_IDEAL_USAGE = 0.6 ;
57+ private static final String TEST_STORAGE_ID_1 = "vol1" ;
58+ private static final String TEST_STORAGE_PATH_1 = "/data/hdds1" ;
59+ private static final String TEST_STORAGE_ID_2 = "vol2" ;
60+ private static final String TEST_STORAGE_PATH_2 = "/data/hdds2" ;
61+ private static final double TEST_UTILIZATION_1 = 0.57 ;
62+ private static final double TEST_UTILIZATION_2 = 0.63 ;
63+ private static final long TEST_COMMITTED_BYTES_1 = 10L * 1024 * 1024 ;
64+ private static final long TEST_COMMITTED_BYTES_2 = 25L * 1024 * 1024 ;
65+ private static final long TEST_TOTAL_CAPACITY = 200L * 1024 * 1024 ;
66+ private static final long TEST_USED_SPACE_1 = 40L * 1024 * 1024 ;
67+ private static final long TEST_USED_SPACE_2 = 50L * 1024 * 1024 ;
68+ private static final long TEST_EFFECTIVE_USED_SPACE_1 =
69+ TEST_USED_SPACE_1 + TEST_COMMITTED_BYTES_1 ;
70+ private static final long TEST_EFFECTIVE_USED_SPACE_2 =
71+ TEST_USED_SPACE_2 + TEST_COMMITTED_BYTES_2 ;
72+ private static final int TEST_VOLUME_INFO_COUNT = 2 ;
5473
5574 private DatanodeStateMachine datanodeStateMachine ;
5675 private DiskBalancerService diskBalancerService ;
@@ -80,6 +99,27 @@ void setup() throws IOException {
8099 0L , // balancedBytes
81100 TEST_VOLUME_DENSITY
82101 );
102+ diskBalancerInfo .setIdealUsage (TEST_IDEAL_USAGE );
103+ diskBalancerInfo .setVolumeInfo (Arrays .asList (
104+ VolumeReportProto .newBuilder ()
105+ .setStorageId (TEST_STORAGE_ID_1 )
106+ .setStoragePath (TEST_STORAGE_PATH_1 )
107+ .setUtilization (TEST_UTILIZATION_1 )
108+ .setCommittedBytes (TEST_COMMITTED_BYTES_1 )
109+ .setTotalCapacity (TEST_TOTAL_CAPACITY )
110+ .setUsedSpace (TEST_USED_SPACE_1 )
111+ .setEffectiveUsedSpace (TEST_EFFECTIVE_USED_SPACE_1 )
112+ .build (),
113+ VolumeReportProto .newBuilder ()
114+ .setStorageId (TEST_STORAGE_ID_2 )
115+ .setStoragePath (TEST_STORAGE_PATH_2 )
116+ .setUtilization (TEST_UTILIZATION_2 )
117+ .setCommittedBytes (TEST_COMMITTED_BYTES_2 )
118+ .setTotalCapacity (TEST_TOTAL_CAPACITY )
119+ .setUsedSpace (TEST_USED_SPACE_2 )
120+ .setEffectiveUsedSpace (TEST_EFFECTIVE_USED_SPACE_2 )
121+ .build ()));
122+
83123 when (ozoneContainer .getDiskBalancerInfo ()).thenReturn (diskBalancerInfo );
84124
85125 // Create datanode details
@@ -102,12 +142,29 @@ void setup() throws IOException {
102142
103143 @ Test
104144 void testGetDiskBalancerInfoReport () throws IOException {
105- // Test REPORT type - should only return volume density
106145 DatanodeDiskBalancerInfoProto report = server .getDiskBalancerInfo (REQUEST_WITH_OLD_CLIENT_VERSION );
107-
146+ VolumeReportProto volReport0 = report .getVolumeInfo (0 );
147+ VolumeReportProto volReport1 = report .getVolumeInfo (1 );
148+
108149 assertNotNull (report );
109150 assertNotNull (report .getNode ());
110151 assertEquals (TEST_VOLUME_DENSITY , report .getCurrentVolumeDensitySum ());
152+ assertEquals (TEST_IDEAL_USAGE , report .getIdealUsage ());
153+ assertEquals (TEST_VOLUME_INFO_COUNT , report .getVolumeInfoCount ());
154+ assertEquals (TEST_STORAGE_ID_1 , volReport0 .getStorageId ());
155+ assertEquals (TEST_STORAGE_PATH_1 , volReport0 .getStoragePath ());
156+ assertEquals (TEST_UTILIZATION_1 , volReport0 .getUtilization ());
157+ assertEquals (TEST_COMMITTED_BYTES_1 , volReport0 .getCommittedBytes ());
158+ assertEquals (TEST_TOTAL_CAPACITY , volReport0 .getTotalCapacity ());
159+ assertEquals (TEST_USED_SPACE_1 , volReport0 .getUsedSpace ());
160+ assertEquals (TEST_EFFECTIVE_USED_SPACE_1 , volReport0 .getEffectiveUsedSpace ());
161+ assertEquals (TEST_STORAGE_ID_2 , volReport1 .getStorageId ());
162+ assertEquals (TEST_STORAGE_PATH_2 , volReport1 .getStoragePath ());
163+ assertEquals (TEST_UTILIZATION_2 , volReport1 .getUtilization ());
164+ assertEquals (TEST_COMMITTED_BYTES_2 , volReport1 .getCommittedBytes ());
165+ assertEquals (TEST_TOTAL_CAPACITY , volReport1 .getTotalCapacity ());
166+ assertEquals (TEST_USED_SPACE_2 , volReport1 .getUsedSpace ());
167+ assertEquals (TEST_EFFECTIVE_USED_SPACE_2 , volReport1 .getEffectiveUsedSpace ());
111168 }
112169
113170 @ Test
0 commit comments