blob: 6ae2c2bd965532c6131096573a3551267e5f34f9 [file] [log] [blame]
Nikhil Cheerlad6734f62015-07-21 10:41:44 -07001package org.onosproject.flowanalyzer;
2
3import org.onosproject.net.PortNumber;
4import org.onosproject.net.link.LinkServiceAdapter;
5import org.onosproject.net.topology.TopologyEdge;
6import org.onosproject.net.ConnectPoint;
7import org.onosproject.net.DeviceId;
8import org.onosproject.net.ElementId;
9import org.onosproject.net.HostId;
10import org.onosproject.net.Link;
11import org.onosproject.net.Annotations;
12import org.onosproject.net.provider.ProviderId;
13import org.onosproject.net.topology.TopologyVertex;
14
15import java.util.Set;
16import java.util.ArrayList;
17import java.util.List;
18import java.util.HashSet;
19
20import static org.onosproject.net.Link.State.ACTIVE;
21
22
23/**
24 * Created by nikcheerla on 7/21/15.
25 */
26public class MockLinkService extends LinkServiceAdapter {
27 DefaultMutableTopologyGraph createdGraph = new DefaultMutableTopologyGraph(new HashSet<>(), new HashSet<>());
28 List<Link> links = new ArrayList<>();
29
30 @Override
31 public int getLinkCount() {
32 return links.size();
33 }
34
35 @Override
36 public Iterable<Link> getLinks() {
37 return links;
38 }
39
40 @Override
41 public Set<Link> getDeviceLinks(DeviceId deviceId) {
42 Set<Link> egress = getDeviceEgressLinks(deviceId);
43 egress.addAll(getDeviceIngressLinks(deviceId));
44 return egress;
45 }
46
47 @Override
48 public Set<Link> getDeviceEgressLinks(DeviceId deviceId) {
49 Set<Link> setL = new HashSet<>();
50 for (Link l: links) {
51 if (l.src().elementId() instanceof DeviceId && l.src().deviceId().equals(deviceId)) {
52 setL.add(l);
53 }
54 }
55 return setL;
56 }
57
58 @Override
59 public Set<Link> getDeviceIngressLinks(DeviceId deviceId) {
60 Set<Link> setL = new HashSet<>();
61 for (Link l: links) {
62 if (l.dst().elementId() instanceof DeviceId && l.dst().deviceId().equals(deviceId)) {
63 setL.add(l);
64 }
65 }
66 return setL;
67 }
68
69
70 @Override
71 public Set<Link> getEgressLinks(ConnectPoint pt) {
72 Set<Link> setL = new HashSet<>();
73 for (Link l: links) {
74 if (l.src().equals(pt)) {
75 setL.add(l);
76 }
77 }
78 return setL;
79 }
80
81 @Override
82 public Set<Link> getIngressLinks(ConnectPoint pt) {
83 Set<Link> setL = new HashSet<>();
84 for (Link l: links) {
85 if (l.dst().equals(pt)) {
86 setL.add(l);
87 }
88 }
89 return setL;
90 }
91
92 @Override
93 public Set<Link> getLinks(ConnectPoint pt) {
94 Set<Link> setL = new HashSet<>();
95 for (Link l: links) {
96 if (l.src().equals(pt) || l.dst().equals(pt)) {
97 setL.add(l);
98 }
99 }
100 return setL;
101 }
102
103 public void addLink(String device, long port, String device2, long port2) {
104 ElementId d1;
105 if (device.charAt(0) == 'H') {
106 device = device.substring(1, device.length());
107 d1 = HostId.hostId(device);
108 } else {
109 d1 = DeviceId.deviceId(device);
110 }
111
112 ElementId d2;
113 if (device2.charAt(0) == 'H') {
114 d2 = HostId.hostId(device2.substring(1, device2.length()));
115 } else {
116 d2 = DeviceId.deviceId(device2);
117 }
118
119 ConnectPoint src = new ConnectPoint(d1, PortNumber.portNumber(port));
120 ConnectPoint dst = new ConnectPoint(d2, PortNumber.portNumber(port2));
121 Link curLink;
122 curLink = new Link() {
123 @Override
124 public ConnectPoint src() {
125 return src;
126 }
127
128 @Override
129 public ConnectPoint dst() {
130 return dst;
131 }
132
133 @Override
134 public boolean isDurable() {
135 return true;
136 }
137
138 @Override
Ray Milkeyd0dd1352016-01-19 10:58:41 -0800139 public boolean isExpected() {
140 return false;
141 }
142
143 @Override
Nikhil Cheerlad6734f62015-07-21 10:41:44 -0700144 public Annotations annotations() {
145 return null;
146 }
147
148 @Override
149 public Type type() {
150 return null;
151 }
152
153 @Override
154 public ProviderId providerId() {
155 return null;
156 }
157
158 @Override
159 public State state() {
160 return ACTIVE;
161 }
162 };
163 links.add(curLink);
164 if (d1 instanceof DeviceId && d2 instanceof DeviceId) {
165 TopologyVertex v1 = () -> (DeviceId) d1, v2 = () -> (DeviceId) d2;
166 createdGraph.addVertex(v1);
167 createdGraph.addVertex(v2);
168 createdGraph.addEdge(new TopologyEdge() {
169 @Override
170 public Link link() {
171 return curLink;
172 }
173
174 @Override
175 public TopologyVertex src() {
176 return v1;
177 }
178
179 @Override
180 public TopologyVertex dst() {
181 return v2;
182 }
183 });
184 }
185 }
186
187
188}