use of org.btrplace.scheduler.choco.ChocoScheduler in project scheduler by btrplace.
the class CResourceCapacityTest method testWithSatisfiedConstraint.
@Test
public void testWithSatisfiedConstraint() throws SchedulerException {
Model mo = new DefaultModel();
VM vm1 = mo.newVM();
VM vm2 = mo.newVM();
VM vm3 = mo.newVM();
VM vm4 = mo.newVM();
VM vm5 = mo.newVM();
Node n1 = mo.newNode();
Node n2 = mo.newNode();
Node n3 = mo.newNode();
Mapping map = mo.getMapping().on(n1, n2, n3).run(n1, vm1, vm2).run(n3, vm3, vm4).sleep(n2, vm5);
ShareableResource rc = new ShareableResource("cpu", 5, 5);
rc.setConsumption(vm1, 2);
rc.setConsumption(vm2, 3);
rc.setConsumption(vm3, 3);
rc.setConsumption(vm4, 1);
rc.setConsumption(vm5, 5);
mo.attach(rc);
List<SatConstraint> l = new ArrayList<>();
ResourceCapacity x = new ResourceCapacity(map.getAllNodes(), "cpu", 10);
x.setContinuous(false);
l.add(x);
ChocoScheduler cra = new DefaultChocoScheduler();
ReconfigurationPlan plan = cra.solve(mo, l);
Assert.assertNotNull(plan);
Assert.assertEquals(plan.getSize(), 0);
}
use of org.btrplace.scheduler.choco.ChocoScheduler in project scheduler by btrplace.
the class CResourceCapacityTest method testSingleContinuousSolvable.
@Test
public void testSingleContinuousSolvable() throws SchedulerException {
Model mo = new DefaultModel();
VM vm1 = mo.newVM();
VM vm2 = mo.newVM();
VM vm3 = mo.newVM();
VM vm4 = mo.newVM();
Node n1 = mo.newNode();
Node n2 = mo.newNode();
Mapping map = mo.getMapping().on(n1, n2).run(n1, vm1, vm2).ready(vm4);
ShareableResource rc = new ShareableResource("cpu", 5, 5);
rc.setConsumption(vm1, 3);
rc.setConsumption(vm2, 1);
rc.setConsumption(vm3, 1);
rc.setConsumption(vm4, 3);
mo.attach(rc);
List<SatConstraint> cstrs = new ArrayList<>();
ResourceCapacity s = new ResourceCapacity(n1, "cpu", 4);
s.setContinuous(true);
cstrs.add(s);
cstrs.add(new Fence(vm4, Collections.singleton(n1)));
cstrs.add(new Running(vm4));
cstrs.addAll(Overbook.newOverbooks(map.getAllNodes(), "cpu", 1));
ChocoScheduler cra = new DefaultChocoScheduler();
ReconfigurationPlan p = cra.solve(mo, cstrs);
Assert.assertNotNull(p);
Assert.assertEquals(p.getSize(), 2);
}
use of org.btrplace.scheduler.choco.ChocoScheduler in project scheduler by btrplace.
the class CRootTest method testBasic.
@Test
public void testBasic() throws SchedulerException {
Model mo = new DefaultModel();
VM vm1 = mo.newVM();
VM vm2 = mo.newVM();
VM vm3 = mo.newVM();
Node n1 = mo.newNode();
Node n2 = mo.newNode();
Mapping map = mo.getMapping().on(n1, n2).run(n1, vm1, vm2).ready(vm3);
ChocoScheduler cra = new DefaultChocoScheduler();
cra.doRepair(false);
Root r1 = new Root(vm1);
List<SatConstraint> l = new ArrayList<>();
l.add(r1);
l.addAll(Online.newOnline(map.getAllNodes()));
ReconfigurationPlan p = cra.solve(mo, l);
Assert.assertNotNull(p);
Model res = p.getResult();
Assert.assertEquals(n1, res.getMapping().getVMLocation(vm1));
}
use of org.btrplace.scheduler.choco.ChocoScheduler in project scheduler by btrplace.
the class CRunningCapacityTest method testDiscreteSatisfaction.
@Test
public void testDiscreteSatisfaction() throws SchedulerException {
Model mo = new DefaultModel();
VM vm1 = mo.newVM();
VM vm2 = mo.newVM();
VM vm3 = mo.newVM();
VM vm4 = mo.newVM();
VM vm5 = mo.newVM();
Node n1 = mo.newNode();
Node n2 = mo.newNode();
Node n3 = mo.newNode();
mo.getMapping().on(n1, n2, n3).run(n1, vm1, vm2).run(n2, vm3, vm4, vm5);
Set<Node> on = new HashSet<>(Arrays.asList(n1, n2));
List<SatConstraint> l = new ArrayList<>();
org.btrplace.model.constraint.RunningCapacity x = new org.btrplace.model.constraint.RunningCapacity(on, 4);
x.setContinuous(false);
l.add(x);
ChocoScheduler cra = new DefaultChocoScheduler();
cra.getDurationEvaluators().register(ShutdownVM.class, new ConstantActionDuration<>(10));
ReconfigurationPlan plan = cra.solve(mo, l);
Assert.assertNotNull(plan);
Assert.assertEquals(plan.getSize(), 1);
}
use of org.btrplace.scheduler.choco.ChocoScheduler in project scheduler by btrplace.
the class CRunningCapacityTest method testUnFeasibleContinuousResolution.
@Test
public void testUnFeasibleContinuousResolution() throws SchedulerException {
Model mo = new DefaultModel();
VM vm1 = mo.newVM();
VM vm2 = mo.newVM();
VM vm3 = mo.newVM();
VM vm4 = mo.newVM();
VM vm5 = mo.newVM();
Node n1 = mo.newNode();
Node n2 = mo.newNode();
Node n3 = mo.newNode();
mo.getMapping().on(n1, n2, n3).ready(vm1).run(n1, vm2).run(n2, vm3, vm4).run(n3, vm5);
List<SatConstraint> l = new ArrayList<>();
List<VM> seq = new ArrayList<>();
seq.add(vm1);
seq.add(vm2);
l.add(new Seq(seq));
l.add(new Fence(vm1, Collections.singleton(n1)));
l.add(new Sleeping(vm2));
l.add(new Running(vm1));
l.add(new Root(vm3));
l.add(new Root(vm4));
Set<Node> on = new HashSet<>(Arrays.asList(n1, n2));
org.btrplace.model.constraint.RunningCapacity x = new org.btrplace.model.constraint.RunningCapacity(on, 3);
x.setContinuous(true);
l.add(x);
ChocoScheduler cra = new DefaultChocoScheduler();
cra.setMaxEnd(5);
cra.getDurationEvaluators().register(ShutdownVM.class, new ConstantActionDuration<>(10));
ReconfigurationPlan plan = cra.solve(mo, l);
Assert.assertNull(plan);
}
Aggregations