use of org.btrplace.model.Model in project scheduler by btrplace.
the class CShareableResourceTest method testSimple.
/**
* Test the instantiation and the creation of the variables.
*
* @throws org.btrplace.scheduler.SchedulerException should not occur
*/
@Test
public void testSimple() throws SchedulerException {
Model mo = new DefaultModel();
Mapping ma = mo.getMapping();
VM vm1 = mo.newVM();
VM vm2 = mo.newVM();
VM vm3 = mo.newVM();
Node n1 = mo.newNode();
Node n2 = mo.newNode();
ma.addOnlineNode(n1);
ma.addOfflineNode(n2);
ma.addRunningVM(vm1, n1);
ma.addRunningVM(vm2, n1);
ma.addReadyVM(vm3);
ShareableResource rc = new ShareableResource("foo", 0, 0);
rc.setConsumption(vm2, 3);
rc.setCapacity(n1, 4);
ReconfigurationProblem rp = new DefaultReconfigurationProblemBuilder(mo).build();
CShareableResource rcm = new CShareableResource(rc);
rcm.inject(new DefaultParameters(), rp);
Assert.assertEquals(rc.getIdentifier(), rcm.getIdentifier());
// Assert.assertEquals(-1, rcm.getVMsAllocation(rp.getVM(vm1)).getLB());
Assert.assertEquals(-1, rcm.getVMAllocation(rp.getVM(vm1)));
// Assert.assertEquals(-1, rcm.getVMsAllocation(rp.getVM(vm2)).getLB());
Assert.assertEquals(-1, rcm.getVMAllocation(rp.getVM(vm2)));
// Assert.assertEquals(0, rcm.getVMsAllocation(rp.getVM(vm3)).getUB()); //Will not be running so 0
// Will not be running so 0
Assert.assertEquals(0, rcm.getVMAllocation(rp.getVM(vm3)));
IntVar pn1 = rcm.getPhysicalUsage().get(rp.getNode(n1));
IntVar pn2 = rcm.getPhysicalUsage().get(rp.getNode(n2));
Assert.assertTrue(pn1.getLB() == 0 && pn1.getUB() == 4);
Assert.assertTrue(pn2.getLB() == 0 && pn2.getUB() == 0);
pn1 = rcm.getPhysicalUsage(rp.getNode(n1));
Assert.assertTrue(pn1.getLB() == 0 && pn1.getUB() == 4);
IntVar vn1 = rcm.getVirtualUsage().get(rp.getNode(n1));
IntVar vn2 = rcm.getVirtualUsage().get(rp.getNode(n2));
Assert.assertEquals(vn1.getLB(), 0);
Assert.assertEquals(vn2.getLB(), 0);
Assert.assertEquals(rc, rcm.getSourceResource());
}
use of org.btrplace.model.Model in project scheduler by btrplace.
the class Decommissionning method run.
@Override
public void run() {
int ratio = 1;
int nbPCPUs = 4;
int nbNodes = 2;
// The current DC
Model mo = new DefaultModel();
for (int i = 0; i < nbNodes; i++) {
Node n = mo.newNode();
mo.getMapping().addOnlineNode(n);
// 4 VMs per node
for (int j = 0; j < ratio * nbPCPUs; j++) {
VM v = mo.newVM();
mo.getMapping().addRunningVM(v, n);
}
}
// Resource allocation
ShareableResource rc = new ShareableResource("cpu", 8, 1);
mo.attach(rc);
// The new DC
for (int i = 0; i < nbNodes; i++) {
Node n = mo.newNode();
mo.getMapping().addOfflineNode(n);
rc.setCapacity(n, 10);
}
List<SatConstraint> cstrs = new ArrayList<>();
cstrs.addAll(Offline.newOffline(mo.getMapping().getOnlineNodes()));
MaxOnline m = new MaxOnline(mo.getMapping().getAllNodes(), nbNodes + 1, true);
cstrs.add(m);
ChocoScheduler cra = new DefaultChocoScheduler();
cra.setMaxEnd(3);
cra.setVerbosity(1);
ReconfigurationPlan p = cra.solve(mo, cstrs);
System.out.println(p);
System.out.println(cra.getStatistics());
}
use of org.btrplace.model.Model in project scheduler by btrplace.
the class InstanceConverter method fromJSON.
@Override
public Instance fromJSON(JSONObject in) throws JSONConverterException {
checkKeys(in, MODEL_LABEL, CONSTRAINTS_LABEL, OBJ_LABEL);
Model mo = moc.fromJSON((JSONObject) in.get(MODEL_LABEL));
return new Instance(mo, cc.listFromJSON(mo, (JSONArray) in.get(CONSTRAINTS_LABEL)), (OptConstraint) cc.fromJSON(mo, (JSONObject) in.get(OBJ_LABEL)));
}
use of org.btrplace.model.Model in project scheduler by btrplace.
the class SpecVerifier method verify.
@Override
public VerifierResult verify(TestCase tc) {
Proposition good = tc.constraint().proposition();
if (tc.continuous()) {
Context mo = new Context(tc.instance().getModel());
mo.setRootContext(new Context(tc.instance().getModel().copy()));
fillArguments(mo, tc);
Boolean res = good.eval(mo);
if (!Boolean.TRUE.equals(res)) {
return VerifierResult.newKo("Failure at the initial stage");
}
ReconfigurationSimulator sim = new ReconfigurationSimulator(mo, tc.plan());
int x = sim.start(good);
if (x >= 0) {
return VerifierResult.newKo("Failure at time '" + x + "'");
}
return VerifierResult.newOk();
}
// DISCRETE
Model res = tc.plan().getResult();
if (res == null) {
throw new IllegalStateException("no destination model");
}
Context mo = new Context(res);
mo.setRootContext(new Context(tc.instance().getModel().copy()));
fillArguments(mo, tc);
Boolean bOk = good.eval(mo);
if (bOk == null) {
return VerifierResult.newError(new Exception("Runtime error in the spec"));
}
if (bOk) {
return VerifierResult.newOk();
}
return VerifierResult.newKo("Unconsistent destination model");
}
use of org.btrplace.model.Model in project scheduler by btrplace.
the class ReconfigurationPlanConverter method fromJSON.
@Override
public ReconfigurationPlan fromJSON(JSONObject ob) throws JSONConverterException {
checkKeys(ob, ORIGIN_LABEL, ACTIONS_LABEL);
Model m = mc.fromJSON((JSONObject) ob.get(ORIGIN_LABEL));
ActionConverter ac = new ActionConverter(m);
ReconfigurationPlan plan = new DefaultReconfigurationPlan(m);
for (Action a : ac.listFromJSON((JSONArray) ob.get(ACTIONS_LABEL))) {
plan.add(a);
}
return plan;
}
Aggregations