/* * 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 BwProvisionerSimpleTest { private static final long BW = 1000; private BwProvisionerSimple bwProvisioner; @Before public void setUp() throws Exception { bwProvisioner = new BwProvisionerSimple(BW); } @Test public void testGetBw() { assertEquals(BW, bwProvisioner.getBw()); } @Test public void testGetAvailableBw() { assertEquals(BW, bwProvisioner.getAvailableBw()); } @Test public void testAllocateBwforVm() { Vm vm1 = new Vm(0, 0, 0, 0, 0, BW / 2, 0, "", null); Vm vm2 = new Vm(1, 0, 0, 0, 0, BW, 0, "", null); assertTrue(bwProvisioner.isSuitableForVm(vm1, BW / 2)); assertTrue(bwProvisioner.allocateBwForVm(vm1, BW / 2)); assertEquals(BW / 2, bwProvisioner.getAvailableBw()); assertFalse(bwProvisioner.isSuitableForVm(vm2, BW)); assertFalse(bwProvisioner.allocateBwForVm(vm2, BW)); assertEquals(BW / 2, bwProvisioner.getAvailableBw()); assertTrue(bwProvisioner.isSuitableForVm(vm2, BW / 4)); assertTrue(bwProvisioner.allocateBwForVm(vm2, BW / 4)); assertEquals(BW * 1 / 4, bwProvisioner.getAvailableBw()); assertTrue(bwProvisioner.isSuitableForVm(vm2, BW / 2)); assertTrue(bwProvisioner.allocateBwForVm(vm2, BW / 2)); assertEquals(0, bwProvisioner.getAvailableBw()); } @Test public void testGetAllocatedBwforVm() { Vm vm1 = new Vm(0, 0, 0, 0, 0, BW / 2, 0, "", null); Vm vm2 = new Vm(1, 0, 0, 0, 0, BW, 0, "", null); assertTrue(bwProvisioner.isSuitableForVm(vm1, BW / 2)); assertTrue(bwProvisioner.allocateBwForVm(vm1, BW / 2)); assertEquals(BW / 2, bwProvisioner.getAllocatedBwForVm(vm1)); assertFalse(bwProvisioner.isSuitableForVm(vm2, BW)); assertFalse(bwProvisioner.allocateBwForVm(vm2, BW)); assertEquals(0, bwProvisioner.getAllocatedBwForVm(vm2)); assertTrue(bwProvisioner.isSuitableForVm(vm2, BW / 4)); assertTrue(bwProvisioner.allocateBwForVm(vm2, BW / 4)); assertEquals(BW / 4, bwProvisioner.getAllocatedBwForVm(vm2)); assertTrue(bwProvisioner.isSuitableForVm(vm2, BW / 2)); assertTrue(bwProvisioner.allocateBwForVm(vm2, BW / 2)); assertEquals(BW / 2, bwProvisioner.getAllocatedBwForVm(vm2)); } @Test public void testDeallocateBwForVm() { Vm vm1 = new Vm(0, 0, 0, 0, 0, BW / 2, 0, "", null); Vm vm2 = new Vm(1, 0, 0, 0, 0, BW / 2, 0, "", null); assertEquals(0, vm1.getCurrentAllocatedBw()); assertEquals(0, vm2.getCurrentAllocatedBw()); assertTrue(bwProvisioner.isSuitableForVm(vm1, BW / 2)); assertTrue(bwProvisioner.allocateBwForVm(vm1, BW / 2)); assertEquals(BW / 2, bwProvisioner.getAvailableBw()); bwProvisioner.deallocateBwForVm(vm1); assertEquals(BW, bwProvisioner.getAvailableBw()); assertTrue(bwProvisioner.isSuitableForVm(vm1, BW / 2)); assertTrue(bwProvisioner.allocateBwForVm(vm1, BW / 2)); assertTrue(bwProvisioner.isSuitableForVm(vm2, BW / 2)); assertTrue(bwProvisioner.allocateBwForVm(vm2, BW / 2)); assertEquals(0, bwProvisioner.getAvailableBw()); bwProvisioner.deallocateBwForVm(vm1); bwProvisioner.deallocateBwForVm(vm2); assertEquals(BW, bwProvisioner.getAvailableBw()); assertEquals(0, vm1.getCurrentAllocatedBw()); assertEquals(0, vm2.getCurrentAllocatedBw()); } }