package org.ovirt.engine.core.bll.scheduling.pending;
import static org.junit.Assert.assertEquals;
import java.util.Set;
import org.junit.Test;
import org.ovirt.engine.core.common.businessentities.VDS;
import org.ovirt.engine.core.common.businessentities.VM;
import org.ovirt.engine.core.compat.Guid;
public class PendingResourceManagerTest {
@Test
public void testClearVm() throws Exception {
PendingResourceManager manager = new PendingResourceManager();
VDS host = new VDS();
host.setId(Guid.newGuid());
VM vm1 = new VM();
vm1.setId(Guid.newGuid());
VM vm2 = new VM();
vm2.setId(Guid.newGuid());
manager.addPending(new PendingVM(host, vm1));
manager.addPending(new PendingVM(host, vm2));
manager.addPending(new PendingMemory(host, vm2, 1024));
manager.addPending(new PendingCpuCores(host, vm2, 10));
manager.clearVm(vm2);
Set<Guid> pending = PendingVM.collectForHost(manager, host.getId());
assertEquals(1, pending.size());
assertEquals(vm1.getId(), pending.iterator().next());
assertEquals(0, PendingCpuCores.collectForHost(manager, host.getId()));
assertEquals(0, PendingMemory.collectForHost(manager, host.getId()));
// test clearing the VM twice to make sure it works..
manager.clearVm(vm2);
}
@Test
public void testClearHost() throws Exception {
PendingResourceManager manager = new PendingResourceManager();
VDS host = new VDS();
host.setId(Guid.newGuid());
VM vm1 = new VM();
vm1.setId(Guid.newGuid());
VM vm2 = new VM();
vm2.setId(Guid.newGuid());
manager.addPending(new PendingVM(host, vm1));
manager.addPending(new PendingVM(host, vm2));
manager.addPending(new PendingMemory(host, vm2, 1024));
manager.addPending(new PendingCpuCores(host, vm2, 10));
manager.clearHost(host);
Set<Guid> pending = PendingVM.collectForHost(manager, host.getId());
assertEquals(0, pending.size());
assertEquals(0, PendingCpuCores.collectForHost(manager, host.getId()));
assertEquals(0, PendingMemory.collectForHost(manager, host.getId()));
}
@Test
public void testAddPending() throws Exception {
PendingResourceManager manager = new PendingResourceManager();
VDS host = new VDS();
host.setId(Guid.newGuid());
VM vm1 = new VM();
vm1.setId(Guid.newGuid());
VM vm2 = new VM();
vm2.setId(Guid.newGuid());
manager.addPending(new PendingVM(host, vm1));
manager.addPending(new PendingMemory(host, vm1, 768));
manager.addPending(new PendingCpuCores(host, vm1, 1));
manager.addPending(new PendingVM(host, vm2));
manager.addPending(new PendingMemory(host, vm2, 1024));
manager.addPending(new PendingCpuCores(host, vm2, 10));
Set<Guid> pending = PendingVM.collectForHost(manager, host.getId());
assertEquals(2, pending.size());
assertEquals(11, PendingCpuCores.collectForHost(manager, host.getId()));
assertEquals(1024+768, PendingMemory.collectForHost(manager, host.getId()));
assertEquals(host.getId(), PendingVM.getScheduledHost(manager, vm1));
assertEquals(host.getId(), PendingVM.getScheduledHost(manager, vm2));
}
@Test
public void testGetScheduledHost() throws Exception {
PendingResourceManager manager = new PendingResourceManager();
VDS host1 = new VDS();
host1.setId(Guid.newGuid());
VDS host2 = new VDS();
host2.setId(Guid.newGuid());
VM vm1 = new VM();
vm1.setId(Guid.newGuid());
VM vm2 = new VM();
vm2.setId(Guid.newGuid());
manager.addPending(new PendingVM(host1, vm1));
manager.addPending(new PendingMemory(host1, vm1, 768));
manager.addPending(new PendingCpuCores(host1, vm1, 1));
manager.addPending(new PendingVM(host2, vm2));
manager.addPending(new PendingMemory(host2, vm2, 1024));
manager.addPending(new PendingCpuCores(host2, vm2, 10));
assertEquals(host1.getId(), PendingVM.getScheduledHost(manager, vm1));
assertEquals(host2.getId(), PendingVM.getScheduledHost(manager, vm2));
}
}