Search in sources :

Example 1 with StaticRouting

use of org.btrplace.model.view.network.StaticRouting 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 2 with StaticRouting

use of org.btrplace.model.view.network.StaticRouting in project scheduler by btrplace.

the class StaticRoutingConverter method toJSON.

/**
 * Convert a Routing implementation into a JSON object
 *
 * @param routing the routing implementation to convert
 * @return the JSON formatted routing object
 */
@Override
public JSONObject toJSON(StaticRouting routing) {
    JSONObject o = new JSONObject();
    o.put("type", getJSONId());
    JSONArray a = new JSONArray();
    Map<StaticRouting.NodesMap, Map<Link, Boolean>> routes = routing.getStaticRoutes();
    for (Map.Entry<StaticRouting.NodesMap, Map<Link, Boolean>> e : routes.entrySet()) {
        StaticRouting.NodesMap nm = e.getKey();
        JSONObject ao = new JSONObject();
        ao.put("nodes_map", nodesMapToJSON(nm));
        JSONArray links = new JSONArray();
        Map<Link, Boolean> v = e.getValue();
        for (Link l : v.keySet()) {
            JSONObject lo = new JSONObject();
            lo.put("link", l.id());
            lo.put("direction", routes.get(nm).get(l).toString());
            links.add(lo);
        }
        ao.put("links", links);
        a.add(ao);
    }
    o.put(ROUTES_LABEL, a);
    return o;
}
Also used : JSONObject(net.minidev.json.JSONObject) StaticRouting(org.btrplace.model.view.network.StaticRouting) JSONArray(net.minidev.json.JSONArray) LinkedHashMap(java.util.LinkedHashMap) TIntObjectHashMap(gnu.trove.map.hash.TIntObjectHashMap) TIntObjectMap(gnu.trove.map.TIntObjectMap) Map(java.util.Map) Link(org.btrplace.model.view.network.Link)

Example 3 with StaticRouting

use of org.btrplace.model.view.network.StaticRouting in project scheduler by btrplace.

the class StaticRoutingConverter method fromJSON.

@Override
public StaticRouting fromJSON(Model mo, JSONObject o) throws JSONConverterException {
    Network v = Network.get(mo);
    TIntObjectMap<Link> idToLink = new TIntObjectHashMap<>();
    for (Link l : v.getLinks()) {
        idToLink.put(l.id(), l);
    }
    StaticRouting r = new StaticRouting();
    checkKeys(o, ROUTES_LABEL);
    JSONArray a = (JSONArray) o.get(ROUTES_LABEL);
    for (Object ao : a) {
        StaticRouting.NodesMap nm = nodesMapFromJSON(mo, (JSONObject) ((JSONObject) ao).get("nodes_map"));
        Map<Link, Boolean> links = new LinkedHashMap<>();
        JSONArray aoa = (JSONArray) ((JSONObject) ao).get("links");
        for (Object aoao : aoa) {
            links.put(idToLink.get(requiredInt((JSONObject) aoao, "link")), Boolean.valueOf(requiredString((JSONObject) aoao, "direction")));
        }
        r.setStaticRoute(nm, links);
    }
    return r;
}
Also used : JSONObject(net.minidev.json.JSONObject) StaticRouting(org.btrplace.model.view.network.StaticRouting) Network(org.btrplace.model.view.network.Network) TIntObjectHashMap(gnu.trove.map.hash.TIntObjectHashMap) JSONArray(net.minidev.json.JSONArray) JSONObject(net.minidev.json.JSONObject) Link(org.btrplace.model.view.network.Link) LinkedHashMap(java.util.LinkedHashMap)

Example 4 with StaticRouting

use of org.btrplace.model.view.network.StaticRouting 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

LinkedHashMap (java.util.LinkedHashMap)4 Link (org.btrplace.model.view.network.Link)4 StaticRouting (org.btrplace.model.view.network.StaticRouting)4 JSONObject (net.minidev.json.JSONObject)3 Network (org.btrplace.model.view.network.Network)3 TIntObjectHashMap (gnu.trove.map.hash.TIntObjectHashMap)2 Map (java.util.Map)2 JSONArray (net.minidev.json.JSONArray)2 DefaultModel (org.btrplace.model.DefaultModel)2 Model (org.btrplace.model.Model)2 Node (org.btrplace.model.Node)2 Switch (org.btrplace.model.view.network.Switch)2 Test (org.testng.annotations.Test)2 TIntObjectMap (gnu.trove.map.TIntObjectMap)1 ModelConverter (org.btrplace.json.model.ModelConverter)1