diff --git a/server/src/main/java/com/cloud/api/query/dao/VolumeJoinDaoImpl.java b/server/src/main/java/com/cloud/api/query/dao/VolumeJoinDaoImpl.java index 4f5d984c969a..6367f472b184 100644 --- a/server/src/main/java/com/cloud/api/query/dao/VolumeJoinDaoImpl.java +++ b/server/src/main/java/com/cloud/api/query/dao/VolumeJoinDaoImpl.java @@ -77,6 +77,13 @@ protected VolumeJoinDaoImpl() { _count = "select count(distinct id) from volume_view WHERE "; } + protected void setThrottleRates(VolumeResponse volResponse, VolumeJoinVO volume) { + volResponse.setBytesReadRate(volume.getBytesReadRate()); + volResponse.setBytesWriteRate(volume.getBytesWriteRate()); + volResponse.setIopsReadRate(volume.getIopsReadRate()); + volResponse.setIopsWriteRate(volume.getIopsWriteRate()); + } + @Override public VolumeResponse newVolumeResponse(ResponseView view, VolumeJoinVO volume) { VolumeResponse volResponse = new VolumeResponse(); @@ -206,10 +213,7 @@ public VolumeResponse newVolumeResponse(ResponseView view, VolumeJoinVO volume) if (view == ResponseView.Full) { volResponse.setStorageType(volume.isUseLocalStorage() ? ServiceOffering.StorageType.local.toString() : ServiceOffering.StorageType.shared.toString()); } - volResponse.setBytesReadRate(volume.getBytesReadRate()); - volResponse.setBytesWriteRate(volume.getBytesReadRate()); - volResponse.setIopsReadRate(volume.getIopsWriteRate()); - volResponse.setIopsWriteRate(volume.getIopsWriteRate()); + setThrottleRates(volResponse, volume); } diff --git a/server/src/test/java/com/cloud/api/query/dao/VolumeJoinDaoImplTest.java b/server/src/test/java/com/cloud/api/query/dao/VolumeJoinDaoImplTest.java index 8ac60f4a64c8..e4e0b69de7d8 100755 --- a/server/src/test/java/com/cloud/api/query/dao/VolumeJoinDaoImplTest.java +++ b/server/src/test/java/com/cloud/api/query/dao/VolumeJoinDaoImplTest.java @@ -18,10 +18,12 @@ import com.cloud.api.query.vo.VolumeJoinVO; import org.apache.cloudstack.api.response.VolumeResponse; +import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; +import org.mockito.Mockito; import org.mockito.junit.MockitoJUnitRunner; @RunWith(MockitoJUnitRunner.class) @@ -43,4 +45,21 @@ public void testUpdateVolumeTagInfo(){ testUpdateTagInformation(_volumeJoinDaoImpl, volume, volumeResponse); } + @Test + public void testSetThrottleRatesMapsReadAndWriteDistinctly() { + VolumeJoinVO vol = Mockito.mock(VolumeJoinVO.class); + Mockito.when(vol.getBytesReadRate()).thenReturn(100L); + Mockito.when(vol.getBytesWriteRate()).thenReturn(200L); + Mockito.when(vol.getIopsReadRate()).thenReturn(300L); + Mockito.when(vol.getIopsWriteRate()).thenReturn(400L); + + VolumeResponse response = new VolumeResponse(); + _volumeJoinDaoImpl.setThrottleRates(response, vol); + + Assert.assertEquals(Long.valueOf(100L), response.getBytesReadRate()); + Assert.assertEquals(Long.valueOf(200L), response.getBytesWriteRate()); + Assert.assertEquals(Long.valueOf(300L), response.getIopsReadRate()); + Assert.assertEquals(Long.valueOf(400L), response.getIopsWriteRate()); + } + }