use of org.btrplace.model.view.network.Switch in project scheduler by btrplace.
the class NetworkTest method staticRoutingTest.
/**
* Test the static routing implementation.
*/
@Test
public void staticRoutingTest() {
Model mo = new DefaultModel();
Network net = new Network(new StaticRouting());
Switch s = net.newSwitch(1000);
Node n1 = mo.newNode();
Node n2 = mo.newNode();
net.connect(2000, s, n1, n2);
Map<Link, Boolean> route = new LinkedHashMap<>();
route.put(net.getConnectedLinks(n1).get(0), true);
route.put(net.getConnectedLinks(n2).get(0), false);
((StaticRouting) net.getRouting()).setStaticRoute(new StaticRouting.NodesMap(n1, n2), route);
mo.attach(net);
Assert.assertTrue(net.getRouting().getPath(n1, n2).size() == 2);
Assert.assertTrue(net.getRouting().getPath(n1, n2).containsAll(net.getLinks()));
}
use of org.btrplace.model.view.network.Switch in project scheduler by btrplace.
the class CNetwork method addSwitchConstraints.
/**
* Add the cumulative constraints for each blocking switch (having limited capacity)
*
* @param rp the reconfiguration problem
*/
private void addSwitchConstraints(ReconfigurationProblem rp) {
// Switches capacity limitation
List<Task> tasksList = new ArrayList<>();
List<IntVar> heightsList = new ArrayList<>();
for (Switch sw : net.getSwitches()) {
// Only if the capacity is limited
if (sw.getCapacity() != Integer.MAX_VALUE) {
for (VM vm : rp.getVMs()) {
VMTransition a = rp.getVMAction(vm);
if (a != null && a instanceof RelocatableVM) {
if (a.getDSlice().getHoster().isInstantiated()) {
if (a.getCSlice().getHoster().getValue() != a.getDSlice().getHoster().getValue()) {
Node src = source.getMapping().getVMLocation(vm);
Node dst = rp.getNode(a.getDSlice().getHoster().getValue());
if (!Collections.disjoint(net.getConnectedLinks(sw), net.getRouting().getPath(src, dst))) {
tasksList.add(new Task(a.getStart(), a.getDuration(), a.getEnd()));
heightsList.add(((RelocatableVM) a).getBandwidth());
}
}
}
}
}
if (!tasksList.isEmpty()) {
// Post the cumulative constraint for the current switch
csp.post(csp.cumulative(tasksList.toArray(new Task[tasksList.size()]), heightsList.toArray(new IntVar[heightsList.size()]), csp.intVar(sw.getCapacity()), true));
tasksList.clear();
heightsList.clear();
}
}
}
}
use of org.btrplace.model.view.network.Switch in project scheduler by btrplace.
the class NetworkFuzzer method decorate.
@Override
public void decorate(ReconfigurationPlan p) {
Network net = new Network();
Mapping m = p.getOrigin().getMapping();
Switch s = net.newSwitch(1000 * (1 + rnd.nextInt(40)));
for (Node n : m.getAllNodes()) {
int bw = 1000 * (1 + rnd.nextInt(40));
net.connect(bw, s, n);
}
}
use of org.btrplace.model.view.network.Switch in project scheduler by btrplace.
the class NetworkConverterTest method switchesAndLinksTest.
@Test
public void switchesAndLinksTest() throws JSONConverterException {
Model mo = new DefaultModel();
Network net = new Network();
Switch s = net.newSwitch(1000);
Node n1 = mo.newNode();
Node n2 = mo.newNode();
mo.getMapping().addOnlineNode(n1);
mo.getMapping().addOnlineNode(n2);
net.connect(1000, s, n1, n2);
mo.attach(net);
ModelConverter mc = new ModelConverter();
JSONObject jo = mc.toJSON(mo);
System.err.println(jo);
Model mo2 = mc.fromJSON(jo);
Network net2 = Network.get(mo2);
Assert.assertTrue(net.getSwitches().equals(net2.getSwitches()));
Assert.assertTrue(net.getLinks().equals(net2.getLinks()));
Assert.assertTrue(net.getConnectedNodes().equals(net2.getConnectedNodes()));
}
use of org.btrplace.model.view.network.Switch in project scheduler by btrplace.
the class NetworkConverterTest method staticRoutingTest.
@Test
public void staticRoutingTest() throws JSONConverterException {
Model mo = new DefaultModel();
Network net = new Network(new StaticRouting());
Switch s = net.newSwitch(1000);
Node n1 = mo.newNode();
Node n2 = mo.newNode();
mo.getMapping().addOnlineNode(n1);
mo.getMapping().addOnlineNode(n2);
net.connect(1000, s, n1, n2);
Map<Link, Boolean> route = new LinkedHashMap<>();
route.put(net.getConnectedLinks(n1).get(0), true);
route.put(net.getConnectedLinks(n2).get(0), false);
((StaticRouting) net.getRouting()).setStaticRoute(new StaticRouting.NodesMap(n1, n2), route);
mo.attach(net);
ModelConverter mc = new ModelConverter();
JSONObject jo = mc.toJSON(mo);
System.err.println(jo);
Model mo2 = mc.fromJSON(jo);
Network net2 = Network.get(mo2);
Assert.assertTrue(net.getSwitches().equals(net2.getSwitches()));
Assert.assertTrue(net.getLinks().equals(net2.getLinks()));
Assert.assertTrue(net.getConnectedNodes().equals(net2.getConnectedNodes()));
Map<StaticRouting.NodesMap, Map<Link, Boolean>> routes = ((StaticRouting) net.getRouting()).getStaticRoutes();
Map<StaticRouting.NodesMap, Map<Link, Boolean>> routes2 = ((StaticRouting) net2.getRouting()).getStaticRoutes();
for (StaticRouting.NodesMap nm : routes.keySet()) {
for (StaticRouting.NodesMap nm2 : routes2.keySet()) {
Assert.assertTrue(nm.equals(nm2));
Assert.assertTrue(routes.get(nm).equals(routes2.get(nm2)));
}
}
}
Aggregations