/*
* Title: CloudSim Toolkit
* Description: CloudSim (Cloud Simulation) Toolkit for Modeling and Simulation of Clouds
* Licence: GPL - http://www.gnu.org/copyleft/gpl.html
*
* Copyright (c) 2009-2012, The University of Melbourne, Australia
*/
package org.cloudbus.cloudsim.provisioners;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import org.cloudbus.cloudsim.Vm;
import org.junit.Before;
import org.junit.Test;
/**
* @author Anton Beloglazov
* @since CloudSim Toolkit 2.0
*/
public class PeProvisionerSimpleTest {
private static final double MIPS = 1000;
private PeProvisionerSimple peProvisioner;
@Before
public void setUp() throws Exception {
peProvisioner = new PeProvisionerSimple(MIPS);
}
@Test
public void testGetMips() {
assertEquals(MIPS, peProvisioner.getMips(), 0);
}
@Test
public void testGetAvailableMips() {
assertEquals(MIPS, peProvisioner.getAvailableMips(), 0);
}
@Test
public void testGetTotalAllocatedMips() {
assertEquals(0, peProvisioner.getTotalAllocatedMips(), 0);
}
@Test
public void testGetUtilization() {
assertEquals(0, peProvisioner.getUtilization(), 0);
}
@Test
public void testAllocateMipsForVm() {
Vm vm1 = new Vm(0, 0, MIPS / 2, 1, 0, 0, 0, "", null);
Vm vm2 = new Vm(1, 0, MIPS / 2, 1, 0, 0, 0, "", null);
Vm vm3 = new Vm(2, 0, MIPS / 2, 2, 0, 0, 0, "", null);
assertTrue(peProvisioner.allocateMipsForVm(vm1, MIPS / 2));
assertEquals(MIPS / 2, peProvisioner.getAvailableMips(), 0);
assertEquals(MIPS / 2, peProvisioner.getTotalAllocatedMips(), 0);
assertEquals(0.5, peProvisioner.getUtilization(), 0);
assertTrue(peProvisioner.allocateMipsForVm(vm2, MIPS / 4));
assertEquals(MIPS / 4, peProvisioner.getAvailableMips(), 0);
assertEquals(MIPS * 3 / 4, peProvisioner.getTotalAllocatedMips(), 0);
assertEquals(0.75, peProvisioner.getUtilization(), 0);
assertFalse(peProvisioner.allocateMipsForVm(vm3, MIPS / 2));
assertEquals(MIPS / 4, peProvisioner.getAvailableMips(), 0);
assertEquals(MIPS * 3 / 4, peProvisioner.getTotalAllocatedMips(), 0);
assertEquals(0.75, peProvisioner.getUtilization(), 0);
peProvisioner.deallocateMipsForVm(vm1);
peProvisioner.deallocateMipsForVm(vm2);
assertTrue(peProvisioner.allocateMipsForVm(vm3, MIPS / 4));
assertEquals(MIPS * 3 / 4, peProvisioner.getAvailableMips(), 0);
assertEquals(MIPS / 4, peProvisioner.getTotalAllocatedMips(), 0);
assertEquals(0.25, peProvisioner.getUtilization(), 0);
assertTrue(peProvisioner.allocateMipsForVm(vm3, MIPS / 4));
assertEquals(MIPS / 2, peProvisioner.getAvailableMips(), 0);
assertEquals(MIPS / 2, peProvisioner.getTotalAllocatedMips(), 0);
assertEquals(0.5, peProvisioner.getUtilization(), 0);
ArrayList<Double> mipsArray = new ArrayList<Double>();
mipsArray.add(MIPS / 2.0);
mipsArray.add(MIPS / 2.0);
assertTrue(peProvisioner.allocateMipsForVm(vm3, mipsArray));
assertEquals(0, peProvisioner.getAvailableMips(), 0);
assertEquals(MIPS, peProvisioner.getTotalAllocatedMips(), 0);
assertEquals(1, peProvisioner.getUtilization(), 0);
}
@Test
public void testGetAllocatedMipsForVm() {
Vm vm1 = new Vm(0, 0, MIPS / 2, 1, 0, 0, 0, "", null);
Vm vm2 = new Vm(1, 0, MIPS / 2, 1, 0, 0, 0, "", null);
Vm vm3 = new Vm(2, 0, MIPS / 2, 2, 0, 0, 0, "", null);
assertNull(peProvisioner.getAllocatedMipsForVm(vm1));
assertEquals(0, peProvisioner.getAllocatedMipsForVmByVirtualPeId(vm1, 0), 0);
assertTrue(peProvisioner.allocateMipsForVm(vm1, MIPS / 2));
ArrayList<Double> allocatedMips1 = new ArrayList<Double>();
allocatedMips1.add(MIPS / 2);
assertTrue(allocatedMips1.equals(peProvisioner.getAllocatedMipsForVm(vm1)));
assertEquals(MIPS / 2, peProvisioner.getAllocatedMipsForVmByVirtualPeId(vm1, 0), 0);
assertEquals(0, peProvisioner.getAllocatedMipsForVmByVirtualPeId(vm1, 1), 0);
assertEquals(MIPS / 2, peProvisioner.getTotalAllocatedMipsForVm(vm1), 0);
assertTrue(peProvisioner.allocateMipsForVm(vm2, MIPS / 4));
ArrayList<Double> allocatedMips2 = new ArrayList<Double>();
allocatedMips2.add(MIPS / 4);
assertTrue(allocatedMips2.equals(peProvisioner.getAllocatedMipsForVm(vm2)));
assertEquals(MIPS / 4, peProvisioner.getAllocatedMipsForVmByVirtualPeId(vm2, 0), 0);
assertEquals(MIPS / 4, peProvisioner.getTotalAllocatedMipsForVm(vm2), 0);
peProvisioner.deallocateMipsForVm(vm1);
peProvisioner.deallocateMipsForVm(vm2);
assertTrue(peProvisioner.allocateMipsForVm(vm3, MIPS / 4));
ArrayList<Double> allocatedMips3 = new ArrayList<Double>();
allocatedMips3.add(MIPS / 4);
assertTrue(allocatedMips3.equals(peProvisioner.getAllocatedMipsForVm(vm3)));
assertEquals(MIPS / 4, peProvisioner.getAllocatedMipsForVmByVirtualPeId(vm3, 0), 0);
assertEquals(MIPS / 4, peProvisioner.getTotalAllocatedMipsForVm(vm3), 0);
assertTrue(peProvisioner.allocateMipsForVm(vm3, MIPS / 4));
allocatedMips3.add(MIPS / 4);
assertTrue(allocatedMips3.equals(peProvisioner.getAllocatedMipsForVm(vm3)));
assertEquals(MIPS / 4, peProvisioner.getAllocatedMipsForVmByVirtualPeId(vm3, 0), 0);
assertEquals(MIPS / 4, peProvisioner.getAllocatedMipsForVmByVirtualPeId(vm3, 1), 0);
assertEquals(MIPS / 2, peProvisioner.getTotalAllocatedMipsForVm(vm3), 0);
ArrayList<Double> allocatedMips4 = new ArrayList<Double>();
allocatedMips4.add(MIPS / 2.0);
allocatedMips4.add(MIPS);
assertFalse(peProvisioner.allocateMipsForVm(vm3, allocatedMips4));
ArrayList<Double> allocatedMips5 = new ArrayList<Double>();
allocatedMips5.add(MIPS / 2.0);
allocatedMips5.add(MIPS / 2.0);
assertTrue(peProvisioner.allocateMipsForVm(vm3, allocatedMips5));
assertTrue(allocatedMips5.equals(peProvisioner.getAllocatedMipsForVm(vm3)));
assertEquals(MIPS / 2, peProvisioner.getAllocatedMipsForVmByVirtualPeId(vm3, 0), 0);
assertEquals(MIPS / 2, peProvisioner.getAllocatedMipsForVmByVirtualPeId(vm3, 1), 0);
assertEquals(MIPS, peProvisioner.getTotalAllocatedMipsForVm(vm3), 0);
peProvisioner.deallocateMipsForVm(vm1);
peProvisioner.deallocateMipsForVm(vm2);
peProvisioner.deallocateMipsForVm(vm3);
assertNull(peProvisioner.getAllocatedMipsForVm(vm1));
assertNull(peProvisioner.getAllocatedMipsForVm(vm2));
assertNull(peProvisioner.getAllocatedMipsForVm(vm3));
assertEquals(0, peProvisioner.getAllocatedMipsForVmByVirtualPeId(vm1, 0), 0);
assertEquals(0, peProvisioner.getAllocatedMipsForVmByVirtualPeId(vm2, 0), 0);
assertEquals(0, peProvisioner.getAllocatedMipsForVmByVirtualPeId(vm3, 0), 0);
assertEquals(0, peProvisioner.getAllocatedMipsForVmByVirtualPeId(vm3, 1), 0);
assertEquals(0, peProvisioner.getTotalAllocatedMipsForVm(vm1), 0);
assertEquals(0, peProvisioner.getTotalAllocatedMipsForVm(vm2), 0);
assertEquals(0, peProvisioner.getTotalAllocatedMipsForVm(vm3), 0);
assertEquals(MIPS, peProvisioner.getAvailableMips(), 0);
}
@Test
public void testDeallocateMipsForVM() {
Vm vm1 = new Vm(0, 0, MIPS / 2, 1, 0, 0, 0, "", null);
Vm vm2 = new Vm(1, 0, MIPS / 2, 1, 0, 0, 0, "", null);
peProvisioner.allocateMipsForVm(vm1, MIPS / 2);
peProvisioner.allocateMipsForVm(vm2, MIPS / 4);
assertEquals(MIPS / 4, peProvisioner.getAvailableMips(), 0);
peProvisioner.deallocateMipsForVm(vm1);
assertEquals(MIPS * 3 / 4, peProvisioner.getAvailableMips(), 0);
peProvisioner.deallocateMipsForVm(vm2);
assertEquals(MIPS, peProvisioner.getAvailableMips(), 0);
}
}