blob: 7663a64dd306203d9dbe2b8ee7877f8c33e9e470 [file] [log] [blame]
YuanyouZhangb5e05302015-07-21 20:14:35 +08001/*
2 * Copyright 2015 Open Networking Laboratory
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package org.onosproject.ovsdb.providers.device;
17
18import static org.junit.Assert.assertEquals;
19import static org.junit.Assert.assertNotNull;
20
21import java.util.Collection;
22import java.util.HashSet;
23import java.util.List;
24import java.util.Set;
25
26import org.junit.After;
27import org.junit.Before;
28import org.junit.Test;
29import org.onlab.packet.IpAddress;
Hyunsun Moon5fb20a52015-09-25 17:02:33 -070030import org.onlab.packet.TpPort;
YuanyouZhangb5e05302015-07-21 20:14:35 +080031import org.onosproject.net.DeviceId;
32import org.onosproject.net.MastershipRole;
33import org.onosproject.net.device.DeviceDescription;
34import org.onosproject.net.device.DeviceProvider;
35import org.onosproject.net.device.DeviceProviderRegistry;
36import org.onosproject.net.device.DeviceProviderService;
37import org.onosproject.net.device.PortDescription;
38import org.onosproject.net.device.PortStatistics;
39import org.onosproject.net.provider.ProviderId;
40import org.onosproject.ovsdb.controller.OvsdbClientService;
41import org.onosproject.ovsdb.controller.OvsdbController;
42import org.onosproject.ovsdb.controller.OvsdbEventListener;
43import org.onosproject.ovsdb.controller.OvsdbNodeId;
44import org.onosproject.ovsdb.controller.OvsdbNodeListener;
45
46import com.google.common.collect.HashMultimap;
47import com.google.common.collect.Multimap;
48
49/**
50 * Test for ovsdb device provider.
51 */
52public class OvsdbDeviceProviderTest {
53 private final OvsdbDeviceProvider provider = new OvsdbDeviceProvider();
54 private final TestDeviceRegistry registry = new TestDeviceRegistry();
55 private final TestController controller = new TestController();
56
57 @Before
58 public void startUp() {
59 provider.providerRegistry = registry;
60 provider.controller = controller;
61 provider.activate();
62 assertNotNull("provider should be registered", registry.provider);
63 }
64
65 @After
66 public void tearDown() {
67 provider.deactivate();
68 provider.controller = null;
69 provider.providerRegistry = null;
70 }
71
72 @Test
73 public void triggerProbe() {
74
75 }
76
77 @Test
78 public void testNodeAdded() {
79 controller.listener.nodeAdded(new OvsdbNodeId(IpAddress
80 .valueOf("192.168.202.36"), 5000));
81 assertEquals("ovsdb node added", 1, registry.connected.size());
82 }
83
84 @Test
85 public void testNodeRemoved() {
86 controller.listener.nodeAdded(new OvsdbNodeId(IpAddress
87 .valueOf("192.168.202.36"), 5000));
88 controller.listener.nodeRemoved(new OvsdbNodeId(IpAddress
89 .valueOf("192.168.202.36"), 5000));
90 assertEquals("ovsdb node removded", 0, registry.connected.size());
91 }
92
93 private class TestDeviceRegistry implements DeviceProviderRegistry {
94 DeviceProvider provider;
95
96 Set<DeviceId> connected = new HashSet<>();
97 Multimap<DeviceId, PortDescription> ports = HashMultimap.create();
98 PortDescription descr = null;
99
100 @Override
101 public DeviceProviderService register(DeviceProvider provider) {
102 this.provider = provider;
103 return new TestProviderService();
104 }
105
106 @Override
107 public void unregister(DeviceProvider provider) {
108 }
109
110 @Override
111 public Set<ProviderId> getProviders() {
112 return null;
113 }
114
115 private class TestProviderService implements DeviceProviderService {
116
117 @Override
118 public DeviceProvider provider() {
119 return null;
120 }
121
122 @Override
123 public void deviceConnected(DeviceId deviceId,
124 DeviceDescription deviceDescription) {
125 connected.add(deviceId);
126 }
127
128 @Override
129 public void deviceDisconnected(DeviceId deviceId) {
130 connected.remove(deviceId);
131 ports.removeAll(deviceId);
132 }
133
134 @Override
135 public void updatePorts(DeviceId deviceId,
136 List<PortDescription> portDescriptions) {
137 for (PortDescription p : portDescriptions) {
138 ports.put(deviceId, p);
139 }
140 }
141
142 @Override
143 public void portStatusChanged(DeviceId deviceId,
144 PortDescription portDescription) {
145 ports.put(deviceId, portDescription);
146 descr = portDescription;
147 }
148
149 @Override
150 public void receivedRoleReply(DeviceId deviceId,
151 MastershipRole requested,
152 MastershipRole response) {
153 }
154
155 @Override
156 public void updatePortStatistics(DeviceId deviceId,
157 Collection<PortStatistics> portStatistics) {
158
159 }
160
161 }
162 }
163
164 private class TestController implements OvsdbController {
165 OvsdbNodeListener listener = null;
166
167 @Override
168 public void addNodeListener(OvsdbNodeListener listener) {
169 this.listener = listener;
170 }
171
172 @Override
173 public void removeNodeListener(OvsdbNodeListener listener) {
174 this.listener = null;
175 }
176
177 @Override
178 public void addOvsdbEventListener(OvsdbEventListener listener) {
179
180 }
181
182 @Override
183 public void removeOvsdbEventListener(OvsdbEventListener listener) {
184
185 }
186
187 @Override
188 public List<OvsdbNodeId> getNodeIds() {
189 return null;
190 }
191
192 @Override
193 public OvsdbClientService getOvsdbClient(OvsdbNodeId nodeId) {
194 return null;
195 }
196
Hyunsun Moon5fb20a52015-09-25 17:02:33 -0700197 @Override
198 public void connect(IpAddress ip, TpPort port) {
199
200 }
YuanyouZhangb5e05302015-07-21 20:14:35 +0800201 }
202
203}