use of org.btrplace.model.Model in project scheduler by btrplace.
the class CMinMigrationsTest method simpleTest.
@Test
public void simpleTest() {
Model mo = new DefaultModel();
Node n0 = mo.newNode();
Node n1 = mo.newNode();
VM vm0 = mo.newVM();
VM vm1 = mo.newVM();
VM vm2 = mo.newVM();
mo.getMapping().on(n0, n1).run(n0, vm0, vm1, vm2);
ShareableResource mem = new ShareableResource("mem", 5, 1);
// cpu dimension to create the violation
ShareableResource cpu = new ShareableResource("cpu", 5, 1);
// VM0 as the big VM
mem.setConsumption(vm0, 3);
mo.attach(cpu);
mo.attach(mem);
List<SatConstraint> cstrs = new ArrayList<>();
// The 3 VMs no longer feet on n0
cstrs.add(new Preserve(vm0, "cpu", 5));
ChocoScheduler s = new DefaultChocoScheduler();
s.doOptimize(true);
ReconfigurationPlan p = s.solve(mo, cstrs, new MinMigrations());
System.out.println(s.getStatistics());
System.out.println(p);
// VM0 to n1
Assert.assertEquals(p.getActions().size(), 1);
// VM0 to n1
Assert.assertEquals(p.getResult().getMapping().getVMLocation(vm0), n1);
}
use of org.btrplace.model.Model in project scheduler by btrplace.
the class CMinMigrationsTest method testWithFreeNodes.
/**
* Issue #137.
* ShutdownableNode.isOnline() is not instantiated at the end of the problem
*/
@Test
public void testWithFreeNodes() {
Model mo = new DefaultModel();
Node n0 = mo.newNode();
Node n1 = mo.newNode();
Node n2 = mo.newNode();
VM v1 = mo.newVM();
VM v2 = mo.newVM();
DefaultChocoScheduler s = new DefaultChocoScheduler();
mo.getMapping().on(n0, n1, n2).run(n0, v1, v2);
Instance i = new Instance(mo, Arrays.asList(new Spread(mo.getMapping().getAllVMs(), false)), new MinMigrations());
ReconfigurationPlan p = s.solve(i);
Assert.assertNotNull(p);
}
use of org.btrplace.model.Model in project scheduler by btrplace.
the class DurationFromOptionalAttributeTest method test.
@Test
public void test() {
Model mo = new DefaultModel();
Attributes attrs = mo.getAttributes();
ActionDurationEvaluator<VM> parent = new ConstantActionDuration<>(15);
VM vm1 = mo.newVM();
ActionDurationFromOptionalAttribute<VM> dev = new ActionDurationFromOptionalAttribute<>("boot", parent);
Assert.assertEquals(parent, dev.getParent());
Assert.assertEquals("boot", dev.getAttributeKey());
Assert.assertEquals(15, dev.evaluate(mo, vm1));
attrs.put(vm1, "boot", 7);
Assert.assertEquals(7, dev.evaluate(mo, vm1));
parent = new ConstantActionDuration<>(2);
dev.setParent(parent);
attrs.clear();
Assert.assertEquals(2, dev.evaluate(mo, vm1));
Assert.assertEquals(parent, dev.getParent());
Assert.assertFalse(dev.toString().contains("null"));
}
use of org.btrplace.model.Model in project scheduler by btrplace.
the class LinearToAResourceDurationTest method testSimple.
@Test
public void testSimple() {
ShareableResource rc = new ShareableResource("foo", 0, 0);
Model mo = new DefaultModel();
VM vm1 = mo.newVM();
VM vm2 = mo.newVM();
VM vm3 = mo.newVM();
mo.attach(rc);
rc.setConsumption(vm1, 3);
LinearToAResourceActionDuration<VM> d = new LinearToAResourceActionDuration<>("foo", 3);
System.out.println(d.toString());
Assert.assertEquals(d.getCoefficient(), 3.0);
Assert.assertEquals(d.getOffset(), 0.0);
Assert.assertEquals(d.getResourceId(), "foo");
Assert.assertEquals(d.evaluate(mo, vm1), 9);
Assert.assertEquals(d.evaluate(mo, vm2), 0);
d = new LinearToAResourceActionDuration<>("foo", 3, 4);
Assert.assertEquals(d.evaluate(mo, vm1), 13);
Assert.assertEquals(d.evaluate(mo, vm3), 4);
d = new LinearToAResourceActionDuration<>("bar", 3, 4);
Assert.assertEquals(d.evaluate(mo, vm3), -1);
d.setCoefficient(5);
d.setOffset(12);
d.setResourceId("bar");
Assert.assertEquals(d.getCoefficient(), 5.0);
Assert.assertEquals(d.getOffset(), 12.0);
Assert.assertEquals(d.getResourceId(), "bar");
}
use of org.btrplace.model.Model in project scheduler by btrplace.
the class ScriptTest method testNodeAddition.
public void testNodeAddition() {
Script v = new Script();
Model mo = new DefaultModel();
BtrpElement n1 = new BtrpElement(BtrpOperand.Type.NODE, "@N1", mo.newNode());
BtrpElement n2 = new BtrpElement(BtrpOperand.Type.NODE, "@N2", mo.newNode());
v.add(n1);
v.add(n2);
Assert.assertEquals(v.getNodes().size(), 2);
Assert.assertTrue(v.getNodes().contains(n1.getElement()) && v.getNodes().contains(n2.getElement()));
}
Aggregations