Search in sources :

Example 6 with Switch

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()));
}
Also used : DefaultModel(org.btrplace.model.DefaultModel) Switch(org.btrplace.model.view.network.Switch) StaticRouting(org.btrplace.model.view.network.StaticRouting) Network(org.btrplace.model.view.network.Network) Node(org.btrplace.model.Node) Model(org.btrplace.model.Model) DefaultModel(org.btrplace.model.DefaultModel) Link(org.btrplace.model.view.network.Link) LinkedHashMap(java.util.LinkedHashMap) Test(org.testng.annotations.Test)

Example 7 with Switch

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();
            }
        }
    }
}
Also used : Task(org.chocosolver.solver.variables.Task) Switch(org.btrplace.model.view.network.Switch) RelocatableVM(org.btrplace.scheduler.choco.transition.RelocatableVM) VM(org.btrplace.model.VM) Node(org.btrplace.model.Node) ArrayList(java.util.ArrayList) VMTransition(org.btrplace.scheduler.choco.transition.VMTransition) RelocatableVM(org.btrplace.scheduler.choco.transition.RelocatableVM) IntVar(org.chocosolver.solver.variables.IntVar)

Example 8 with Switch

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);
    }
}
Also used : Switch(org.btrplace.model.view.network.Switch) Network(org.btrplace.model.view.network.Network) Node(org.btrplace.model.Node) Mapping(org.btrplace.model.Mapping)

Example 9 with Switch

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()));
}
Also used : DefaultModel(org.btrplace.model.DefaultModel) Switch(org.btrplace.model.view.network.Switch) JSONObject(net.minidev.json.JSONObject) Network(org.btrplace.model.view.network.Network) Node(org.btrplace.model.Node) Model(org.btrplace.model.Model) DefaultModel(org.btrplace.model.DefaultModel) ModelConverter(org.btrplace.json.model.ModelConverter) Test(org.testng.annotations.Test)

Example 10 with Switch

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)));
        }
    }
}
Also used : DefaultModel(org.btrplace.model.DefaultModel) StaticRouting(org.btrplace.model.view.network.StaticRouting) Node(org.btrplace.model.Node) ModelConverter(org.btrplace.json.model.ModelConverter) LinkedHashMap(java.util.LinkedHashMap) Switch(org.btrplace.model.view.network.Switch) JSONObject(net.minidev.json.JSONObject) Network(org.btrplace.model.view.network.Network) Model(org.btrplace.model.Model) DefaultModel(org.btrplace.model.DefaultModel) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map) Link(org.btrplace.model.view.network.Link) Test(org.testng.annotations.Test)

Aggregations

Switch (org.btrplace.model.view.network.Switch)21 Network (org.btrplace.model.view.network.Network)19 ArrayList (java.util.ArrayList)14 SatConstraint (org.btrplace.model.constraint.SatConstraint)13 ShareableResource (org.btrplace.model.view.ShareableResource)13 ReconfigurationPlan (org.btrplace.plan.ReconfigurationPlan)13 DefaultChocoScheduler (org.btrplace.scheduler.choco.DefaultChocoScheduler)13 Test (org.testng.annotations.Test)12 Offline (org.btrplace.model.constraint.Offline)11 MinMTTRMig (org.btrplace.model.constraint.migration.MinMTTRMig)11 MigrateVM (org.btrplace.plan.event.MigrateVM)8 Node (org.btrplace.model.Node)7 Fence (org.btrplace.model.constraint.Fence)6 SchedulerException (org.btrplace.scheduler.SchedulerException)6 DefaultModel (org.btrplace.model.DefaultModel)4 Model (org.btrplace.model.Model)4 DefaultParameters (org.btrplace.scheduler.choco.DefaultParameters)4 JSONObject (net.minidev.json.JSONObject)3 Deadline (org.btrplace.model.constraint.migration.Deadline)3 Sync (org.btrplace.model.constraint.migration.Sync)3