@Test public void testApply() { AllocateEvent na = new AllocateEvent(vms.get(0), "foo", 3); Model mo = new DefaultModel(); Mapping map = mo.getMapping(); map.addOnlineNode(ns.get(0)); map.addRunningVM(vms.get(0), ns.get(0)); Assert.assertFalse(na.apply(mo)); ShareableResource rc = new ShareableResource("foo"); mo.attach(rc); Assert.assertTrue(na.apply(mo)); Assert.assertEquals(3, rc.getConsumption(vms.get(0))); }
private boolean discreteCheck(Model mo) { Mapping map = mo.getMapping(); for (VM vm : getVMs()) { if (map.isRunning(vm)) { Node host = map.getVMLocation(vm); Set<VM> on = map.getRunningVMs(host); // Check for other VMs on the node. If they are not in the constraint // it's a violation for (VM vm2 : on) { if (!vm2.equals(vm) && !getVMs().contains(vm2)) { return false; } } } } return true; }
@Override public boolean startsWith(Model mo) { if (getConstraint().isContinuous()) { boolean ret = discreteCheck(mo); if (ret) { Mapping map = mo.getMapping(); for (VM vm : getVMs()) { if (map.isRunning(vm)) { privateNodes.add(map.getVMLocation(vm)); } } for (Node n : map.getOnlineNodes()) { if (map.getRunningVMs(n).isEmpty()) { idleNodes.add(n); } } } return ret; } return true; }
@Test public void testContinuousIsSatisfied() { Model mo = new DefaultModel(); List<VM> vms = Util.newVMs(mo, 5); List<Node> ns = Util.newNodes(mo, 5); Mapping map = mo.getMapping(); map.addOnlineNode(ns.get(0)); map.addOnlineNode(ns.get(1)); map.addOnlineNode(ns.get(2)); map.addRunningVM(vms.get(0), ns.get(0)); map.addRunningVM(vms.get(1), ns.get(1)); map.addReadyVM(vms.get(2)); map.addRunningVM(vms.get(3), ns.get(2)); Quarantine q = new Quarantine(ns.get(0)); ReconfigurationPlan plan = new DefaultReconfigurationPlan(mo); Assert.assertEquals(q.isSatisfied(plan), true); plan.add(new ShutdownVM(vms.get(1), ns.get(1), 1, 2)); Assert.assertEquals(q.isSatisfied(plan), true); plan.add(new BootVM(vms.get(2), ns.get(0), 0, 1)); Assert.assertEquals(q.isSatisfied(plan), false); plan = new DefaultReconfigurationPlan(mo); plan.add(new BootVM(vms.get(2), ns.get(2), 0, 1)); Assert.assertEquals(new Quarantine(ns.get(1)).isSatisfied(plan), true); plan.add(new MigrateVM(vms.get(3), ns.get(2), ns.get(1), 0, 1)); Assert.assertEquals(new Quarantine(ns.get(1)).isSatisfied(plan), false); plan = new DefaultReconfigurationPlan(mo); plan.add(new MigrateVM(vms.get(1), ns.get(1), ns.get(0), 0, 1)); Assert.assertEquals(q.isSatisfied(plan), false); }