package org.ovirt.engine.core.vdsbroker.vdsbroker;
import static org.junit.Assert.assertEquals;
import static org.ovirt.engine.core.vdsbroker.vdsbroker.IoTuneUtils.MB_TO_BYTES;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import org.ovirt.engine.core.common.businessentities.qos.StorageQos;
public class IoTuneUtilsTest {
private StorageQos qos;
@Before
public void setUp() {
qos = new StorageQos();
}
void assertIoTune(long totalBytesSec, long readBytesSec, long writeBytesSec,
long totalIopsSec, long readIopsSec, long writeIopsSec) {
Map<String, Long> ioTune = IoTuneUtils.ioTuneMapFrom(qos);
assertEquals(ioTune.get(VdsProperties.TotalBytesSec).longValue(), totalBytesSec);
assertEquals(ioTune.get(VdsProperties.ReadBytesSec).longValue(), readBytesSec);
assertEquals(ioTune.get(VdsProperties.WriteBytesSec).longValue(), writeBytesSec);
assertEquals(ioTune.get(VdsProperties.TotalIopsSec).longValue(), totalIopsSec);
assertEquals(ioTune.get(VdsProperties.ReadIopsSec).longValue(), readIopsSec);
assertEquals(ioTune.get(VdsProperties.WriteIopsSec).longValue(), writeIopsSec);
}
@Test
public void testUnlimited() {
assertIoTune(0, 0, 0, 0, 0, 0);
}
@Test
public void testThroughput() {
qos.setMaxThroughput(100);
assertIoTune(100L * MB_TO_BYTES, 0, 0, 0, 0, 0);
qos.setMaxThroughput(null);
qos.setMaxReadThroughput(60);
qos.setMaxWriteThroughput(30);
assertIoTune(0, 60L * MB_TO_BYTES, 30L * MB_TO_BYTES, 0, 0, 0);
}
@Test
public void testZeroThroughputIsUnlimited() {
qos.setMaxThroughput(0);
assertIoTune(0, 0, 0, 0, 0, 0);
qos.setMaxThroughput(null);
qos.setMaxReadThroughput(0);
qos.setMaxWriteThroughput(1);
assertIoTune(0, 0, 1L * MB_TO_BYTES, 0, 0, 0);
}
@Test
public void testIopsSec() {
qos.setMaxIops(10000);
assertIoTune(0, 0, 0, 10000, 0, 0);
qos.setMaxIops(null);
qos.setMaxReadIops(10000);
qos.setMaxWriteIops(5000);
assertIoTune(0, 0, 0, 0, 10000, 5000);
}
@Test
public void testZeroIopsSecIsUnlimited() {
qos.setMaxIops(0);
assertIoTune(0, 0, 0, 0, 0, 0);
qos.setMaxIops(null);
qos.setMaxReadIops(0);
qos.setMaxWriteIops(1);
assertIoTune(0, 0, 0, 0, 0, 1);
}
}