blob: b2435d672b8134ef81be544396ffc9e955229186 [file] [log] [blame]
Jonathan Hartaa380972014-04-03 10:24:46 -07001package net.onrc.onos.core.intent;
Toshio Koideebdbb622014-02-12 20:28:38 -08002
Jonathan Hart472062d2014-04-03 10:56:48 -07003import net.onrc.onos.core.topology.Link;
4import net.onrc.onos.core.topology.LinkImpl;
5import net.onrc.onos.core.topology.NetworkGraph;
6import net.onrc.onos.core.topology.NetworkGraphImpl;
7import net.onrc.onos.core.topology.Port;
8import net.onrc.onos.core.topology.Switch;
9import net.onrc.onos.core.topology.SwitchImpl;
Toshio Koideebdbb622014-02-12 20:28:38 -080010
Toshio Koide066506e2014-02-20 19:52:09 -080011/**
Toshio Koidefe1d5d92014-02-26 20:09:48 -080012 * A mock class of NetworkGraph.
13 * This class should be used only by test codes.
14 *
Toshio Koide066506e2014-02-20 19:52:09 -080015 * @author Toshio Koide (t-koide@onlab.us)
16 */
Pavlin Radoslavov6397a7f2014-02-18 14:56:52 -080017public class MockNetworkGraph extends NetworkGraphImpl {
Ray Milkey269ffb92014-04-03 14:43:30 -070018 public static Long LOCAL_PORT = 0xFFFEL;
19 public SwitchImpl sw1, sw2, sw3, sw4;
Toshio Koidefe1d5d92014-02-26 20:09:48 -080020
Ray Milkey269ffb92014-04-03 14:43:30 -070021 class DetachableLinkImpl extends LinkImpl {
22 public DetachableLinkImpl(NetworkGraph graph, Port srcPort, Port dstPort) {
23 super(graph, srcPort, dstPort);
24 }
Toshio Koide0c9106d2014-02-19 15:26:38 -080025
Ray Milkey269ffb92014-04-03 14:43:30 -070026 public void detachFromGraph() {
27 unsetFromPorts();
28 }
29 }
Toshio Koideebdbb622014-02-12 20:28:38 -080030
Ray Milkey269ffb92014-04-03 14:43:30 -070031 public Switch addSwitch(Long switchId) {
32 SwitchImpl sw = new SwitchImpl(this, switchId);
33 this.putSwitch(sw);
34 return sw;
35 }
Toshio Koideebdbb622014-02-12 20:28:38 -080036
Ray Milkey269ffb92014-04-03 14:43:30 -070037 public Link addLink(Long srcDpid, Long srcPortNo, Long dstDpid, Long dstPortNo) {
38 return new DetachableLinkImpl(
39 this,
40 getSwitch(srcDpid).getPort(srcPortNo),
41 getSwitch(dstDpid).getPort(dstPortNo));
42 }
Toshio Koideebdbb622014-02-12 20:28:38 -080043
Ray Milkey269ffb92014-04-03 14:43:30 -070044 public Link[] addBidirectionalLinks(Long srcDpid, Long srcPortNo, Long dstDpid, Long dstPortNo) {
45 Link[] links = new Link[2];
46 links[0] = addLink(srcDpid, srcPortNo, dstDpid, dstPortNo);
47 links[1] = addLink(dstDpid, dstPortNo, srcDpid, srcPortNo);
Toshio Koide066506e2014-02-20 19:52:09 -080048
Ray Milkey269ffb92014-04-03 14:43:30 -070049 return links;
50 }
Toshio Koideebdbb622014-02-12 20:28:38 -080051
Ray Milkey269ffb92014-04-03 14:43:30 -070052 /**
53 * create sample topology of 4 switches and 5 bidirectional links.
54 * <pre>
55 * [1] --- [2]
56 * | / |
57 * | / |
58 * [4] --- [3]
59 * </pre>
60 */
61 public void createSampleTopology1() {
62 sw1 = (SwitchImpl) addSwitch(1L);
63 sw1.addPort(LOCAL_PORT);
64 sw2 = (SwitchImpl) addSwitch(2L);
65 sw2.addPort(LOCAL_PORT);
66 sw3 = (SwitchImpl) addSwitch(3L);
67 sw3.addPort(LOCAL_PORT);
68 sw4 = (SwitchImpl) addSwitch(4L);
69 sw4.addPort(LOCAL_PORT);
Toshio Koideebdbb622014-02-12 20:28:38 -080070
Ray Milkey269ffb92014-04-03 14:43:30 -070071 sw1.addPort(12L); // sw1 -> sw2
72 sw1.addPort(14L); // sw1 -> sw4
73 sw2.addPort(21L); // sw2 -> sw1
74 sw2.addPort(23L); // sw2 -> sw3
75 sw2.addPort(24L); // sw2 -> sw4
76 sw3.addPort(32L); // sw3 -> sw2
77 sw3.addPort(34L); // sw3 -> sw4
78 sw4.addPort(41L); // sw4 -> sw1
79 sw4.addPort(42L); // sw4 -> sw2
80 sw4.addPort(43L); // sw4 -> sw3
Toshio Koideebdbb622014-02-12 20:28:38 -080081
Ray Milkey269ffb92014-04-03 14:43:30 -070082 addBidirectionalLinks(1L, 12L, 2L, 21L);
83 addBidirectionalLinks(2L, 23L, 3L, 32L);
84 addBidirectionalLinks(3L, 34L, 4L, 43L);
85 addBidirectionalLinks(4L, 41L, 1L, 14L);
86 addBidirectionalLinks(2L, 24L, 4L, 42L);
Toshio Koide0c9106d2014-02-19 15:26:38 -080087
Ray Milkey269ffb92014-04-03 14:43:30 -070088 // set capacity of all links to 1000Mbps
89 for (Link link : getLinks()) {
90 ((LinkImpl) link).setCapacity(1000.0);
91 }
92 }
93
94 public void removeLink(Long srcDpid, Long srcPortNo, Long dstDpid, Long dstPortNo) {
95 DetachableLinkImpl link = (DetachableLinkImpl) getSwitch(srcDpid).getPort(srcPortNo).getOutgoingLink();
96 if (link.getDstSwitch().getDpid().equals(dstDpid) && link.getDstPort().getNumber().equals(dstPortNo)) {
97 link.detachFromGraph();
98 }
99 }
Toshio Koideebdbb622014-02-12 20:28:38 -0800100}