blob: 263cbf4745f2b62fec40af669856ac4fb871fd89 [file] [log] [blame]
Toshio Koideebdbb622014-02-12 20:28:38 -08001package net.onrc.onos.intent;
2
Toshio Koide0c9106d2014-02-19 15:26:38 -08003import net.onrc.onos.ofcontroller.networkgraph.NetworkGraph;
Pavlin Radoslavov6397a7f2014-02-18 14:56:52 -08004import net.onrc.onos.ofcontroller.networkgraph.NetworkGraphImpl;
Toshio Koideebdbb622014-02-12 20:28:38 -08005import net.onrc.onos.ofcontroller.networkgraph.Link;
6import net.onrc.onos.ofcontroller.networkgraph.LinkImpl;
Toshio Koide0c9106d2014-02-19 15:26:38 -08007import net.onrc.onos.ofcontroller.networkgraph.Port;
Toshio Koideebdbb622014-02-12 20:28:38 -08008import net.onrc.onos.ofcontroller.networkgraph.Switch;
9import net.onrc.onos.ofcontroller.networkgraph.SwitchImpl;
10
Pavlin Radoslavov6397a7f2014-02-18 14:56:52 -080011public class MockNetworkGraph extends NetworkGraphImpl {
Toshio Koide0c9106d2014-02-19 15:26:38 -080012 class DetachableLinkImpl extends LinkImpl {
13 public DetachableLinkImpl(NetworkGraph graph, Port srcPort, Port dstPort) {
14 super(graph, srcPort, dstPort);
15 }
16
17 public void detachFromGraph() {
18 unsetFromPorts();
19 }
20 }
Toshio Koideebdbb622014-02-12 20:28:38 -080021 public Switch addSwitch(Long switchId) {
22 SwitchImpl sw = new SwitchImpl(this, switchId);
Pavlin Radoslavov6d224ee2014-02-18 16:43:15 -080023 this.putSwitch(sw);
Toshio Koideebdbb622014-02-12 20:28:38 -080024 return sw;
25
26 }
27
28 public Link addLink(Long srcDpid, Long srcPortNo, Long dstDpid, Long dstPortNo) {
Toshio Koide0c9106d2014-02-19 15:26:38 -080029 return new DetachableLinkImpl(
Toshio Koideebdbb622014-02-12 20:28:38 -080030 this,
31 getSwitch(srcDpid).getPort(srcPortNo),
32 getSwitch(dstDpid).getPort(dstPortNo));
33 }
34
35 public Link[] addBidirectionalLinks(Long srcDpid, Long srcPortNo, Long dstDpid, Long dstPortNo) {
36 Link[] links = new Link[2];
37 links[0] = addLink(srcDpid, srcPortNo, dstDpid, dstPortNo);
38 links[1] = addLink(dstDpid, dstPortNo, srcDpid, srcPortNo);
39
40 return links;
41 }
42
43 public void createSampleTopology() {
44 // add 10 switches (24 ports switch)
45 for (Long dpid=1L; dpid<10L; dpid++) {
46 SwitchImpl sw = (SwitchImpl) addSwitch(dpid);
47 for (Long j=1L; j<=24L; j++) {
48 sw.addPort(j);
49 }
50 }
51
52 // add loop path
53 addBidirectionalLinks(1L, 1L, 2L, 2L);
54 addBidirectionalLinks(2L, 1L, 3L, 2L);
55 addBidirectionalLinks(3L, 1L, 4L, 2L);
56 addBidirectionalLinks(4L, 1L, 5L, 2L);
57 addBidirectionalLinks(5L, 1L, 6L, 2L);
58 addBidirectionalLinks(6L, 1L, 7L, 2L);
59 addBidirectionalLinks(7L, 1L, 8L, 2L);
60 addBidirectionalLinks(8L, 1L, 9L, 2L);
61 addBidirectionalLinks(9L, 1L, 1L, 2L);
62
63 // add other links
64 addBidirectionalLinks(1L, 3L, 5L, 3L);
65 addBidirectionalLinks(2L, 4L, 5L, 4L);
66 addBidirectionalLinks(2L, 5L, 7L, 5L);
67 addBidirectionalLinks(3L, 6L, 7L, 6L);
68 addBidirectionalLinks(3L, 7L, 8L, 7L);
69 addBidirectionalLinks(3L, 8L, 9L, 8L);
70 addBidirectionalLinks(4L, 9l, 9L, 9L);
71
72 // set capacity of all links to 1000Mbps
73 for (Link link: getLinks()) {
74 ((LinkImpl)link).setCapacity(1000.0);
75 }
76 }
Toshio Koide0c9106d2014-02-19 15:26:38 -080077
78 public void removeLink(Long srcDpid, Long srcPortNo, Long dstDpid, Long dstPortNo) {
79 DetachableLinkImpl link = (DetachableLinkImpl)getSwitch(srcDpid).getPort(srcPortNo).getOutgoingLink();
80 if (link.getDestinationSwitch().getDpid().equals(dstDpid) && link.getDestinationPort().getNumber().equals(dstPortNo)) {
81 link.detachFromGraph();
82 }
83 }
Toshio Koideebdbb622014-02-12 20:28:38 -080084}