/* * 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.assertTrue; import org.cloudbus.cloudsim.Vm; import org.junit.Before; import org.junit.Test; /** * @author Anton Beloglazov * @since CloudSim Toolkit 2.0 */ public class RamProvisionerSimpleTest { private static final int RAM = 1000; private RamProvisionerSimple ramProvisioner; @Before public void setUp() throws Exception { ramProvisioner = new RamProvisionerSimple(RAM); } @Test public void testGetRam() { assertEquals(RAM, ramProvisioner.getRam()); } @Test public void testGetAvailableRam() { assertEquals(RAM, ramProvisioner.getAvailableRam()); } @Test public void testAllocateRamForVm() { Vm vm1 = new Vm(0, 0, 0, 0, RAM / 2, 0, 0, "", null); Vm vm2 = new Vm(1, 0, 0, 0, RAM, 0, 0, "", null); assertTrue(ramProvisioner.isSuitableForVm(vm1, RAM / 2)); assertTrue(ramProvisioner.allocateRamForVm(vm1, RAM / 2)); assertEquals(RAM / 2, ramProvisioner.getAvailableRam()); assertFalse(ramProvisioner.isSuitableForVm(vm2, RAM)); assertFalse(ramProvisioner.allocateRamForVm(vm2, RAM)); assertEquals(RAM / 2, ramProvisioner.getAvailableRam()); assertTrue(ramProvisioner.isSuitableForVm(vm2, RAM / 4)); assertTrue(ramProvisioner.allocateRamForVm(vm2, RAM / 4)); assertEquals(RAM * 1 / 4, ramProvisioner.getAvailableRam()); assertTrue(ramProvisioner.isSuitableForVm(vm2, RAM / 2)); assertTrue(ramProvisioner.allocateRamForVm(vm2, RAM / 2)); assertEquals(0, ramProvisioner.getAvailableRam()); } @Test public void testGetAllocatedRamForVm() { Vm vm1 = new Vm(0, 0, 0, 0, RAM / 2, 0, 0, "", null); Vm vm2 = new Vm(1, 0, 0, 0, RAM, 0, 0, "", null); assertTrue(ramProvisioner.isSuitableForVm(vm1, RAM / 2)); assertTrue(ramProvisioner.allocateRamForVm(vm1, RAM / 2)); assertEquals(RAM / 2, ramProvisioner.getAllocatedRamForVm(vm1)); assertFalse(ramProvisioner.isSuitableForVm(vm2, RAM)); assertFalse(ramProvisioner.allocateRamForVm(vm2, RAM)); assertEquals(0, ramProvisioner.getAllocatedRamForVm(vm2)); assertTrue(ramProvisioner.isSuitableForVm(vm2, RAM / 4)); assertTrue(ramProvisioner.allocateRamForVm(vm2, RAM / 4)); assertEquals(RAM / 4, ramProvisioner.getAllocatedRamForVm(vm2)); assertTrue(ramProvisioner.isSuitableForVm(vm2, RAM / 2)); assertTrue(ramProvisioner.allocateRamForVm(vm2, RAM / 2)); assertEquals(RAM / 2, ramProvisioner.getAllocatedRamForVm(vm2)); } @Test public void testDeallocateBwForVm() { Vm vm1 = new Vm(0, 0, 0, 0, RAM / 2, 0, 0, "", null); Vm vm2 = new Vm(1, 0, 0, 0, RAM / 2, 0, 0, "", null); assertEquals(0, vm1.getCurrentAllocatedRam()); assertEquals(0, vm2.getCurrentAllocatedRam()); assertTrue(ramProvisioner.isSuitableForVm(vm1, RAM / 2)); assertTrue(ramProvisioner.allocateRamForVm(vm1, RAM / 2)); assertEquals(RAM / 2, ramProvisioner.getAvailableRam()); ramProvisioner.deallocateRamForVm(vm1); assertEquals(RAM, ramProvisioner.getAvailableRam()); assertTrue(ramProvisioner.isSuitableForVm(vm1, RAM / 2)); assertTrue(ramProvisioner.allocateRamForVm(vm1, RAM / 2)); assertTrue(ramProvisioner.isSuitableForVm(vm2, RAM / 2)); assertTrue(ramProvisioner.allocateRamForVm(vm2, RAM / 2)); assertEquals(0, ramProvisioner.getAvailableRam()); ramProvisioner.deallocateRamForVm(vm1); ramProvisioner.deallocateRamForVm(vm2); assertEquals(RAM, ramProvisioner.getAvailableRam()); assertEquals(0, vm1.getCurrentAllocatedRam()); assertEquals(0, vm2.getCurrentAllocatedRam()); } }