5e4c56770f428575f53d543faf331326664372b4
[onosfw.git] /
1 /*
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  */
16 package org.onosproject.ovsdb.providers.device;
17
18 import static org.junit.Assert.assertEquals;
19 import static org.junit.Assert.assertNotNull;
20
21 import java.util.Collection;
22 import java.util.HashSet;
23 import java.util.List;
24 import java.util.Set;
25
26 import org.junit.After;
27 import org.junit.Before;
28 import org.junit.Test;
29 import org.onlab.packet.IpAddress;
30 import org.onosproject.net.DeviceId;
31 import org.onosproject.net.MastershipRole;
32 import org.onosproject.net.device.DeviceDescription;
33 import org.onosproject.net.device.DeviceProvider;
34 import org.onosproject.net.device.DeviceProviderRegistry;
35 import org.onosproject.net.device.DeviceProviderService;
36 import org.onosproject.net.device.PortDescription;
37 import org.onosproject.net.device.PortStatistics;
38 import org.onosproject.net.provider.ProviderId;
39 import org.onosproject.ovsdb.controller.OvsdbClientService;
40 import org.onosproject.ovsdb.controller.OvsdbController;
41 import org.onosproject.ovsdb.controller.OvsdbEventListener;
42 import org.onosproject.ovsdb.controller.OvsdbNodeId;
43 import org.onosproject.ovsdb.controller.OvsdbNodeListener;
44
45 import com.google.common.collect.HashMultimap;
46 import com.google.common.collect.Multimap;
47
48 /**
49  * Test for ovsdb device provider.
50  */
51 public class OvsdbDeviceProviderTest {
52     private final OvsdbDeviceProvider provider = new OvsdbDeviceProvider();
53     private final TestDeviceRegistry registry = new TestDeviceRegistry();
54     private final TestController controller = new TestController();
55
56     @Before
57     public void startUp() {
58         provider.providerRegistry = registry;
59         provider.controller = controller;
60         provider.activate();
61         assertNotNull("provider should be registered", registry.provider);
62     }
63
64     @After
65     public void tearDown() {
66         provider.deactivate();
67         provider.controller = null;
68         provider.providerRegistry = null;
69     }
70
71     @Test
72     public void triggerProbe() {
73
74     }
75
76     @Test
77     public void testNodeAdded() {
78         controller.listener.nodeAdded(new OvsdbNodeId(IpAddress
79                 .valueOf("192.168.202.36"), 5000));
80         assertEquals("ovsdb node added", 1, registry.connected.size());
81     }
82
83     @Test
84     public void testNodeRemoved() {
85         controller.listener.nodeAdded(new OvsdbNodeId(IpAddress
86                 .valueOf("192.168.202.36"), 5000));
87         controller.listener.nodeRemoved(new OvsdbNodeId(IpAddress
88                 .valueOf("192.168.202.36"), 5000));
89         assertEquals("ovsdb node removded", 0, registry.connected.size());
90     }
91
92     private class TestDeviceRegistry implements DeviceProviderRegistry {
93         DeviceProvider provider;
94
95         Set<DeviceId> connected = new HashSet<>();
96         Multimap<DeviceId, PortDescription> ports = HashMultimap.create();
97         PortDescription descr = null;
98
99         @Override
100         public DeviceProviderService register(DeviceProvider provider) {
101             this.provider = provider;
102             return new TestProviderService();
103         }
104
105         @Override
106         public void unregister(DeviceProvider provider) {
107         }
108
109         @Override
110         public Set<ProviderId> getProviders() {
111             return null;
112         }
113
114         private class TestProviderService implements DeviceProviderService {
115
116             @Override
117             public DeviceProvider provider() {
118                 return null;
119             }
120
121             @Override
122             public void deviceConnected(DeviceId deviceId,
123                                         DeviceDescription deviceDescription) {
124                 connected.add(deviceId);
125             }
126
127             @Override
128             public void deviceDisconnected(DeviceId deviceId) {
129                 connected.remove(deviceId);
130                 ports.removeAll(deviceId);
131             }
132
133             @Override
134             public void updatePorts(DeviceId deviceId,
135                                     List<PortDescription> portDescriptions) {
136                 for (PortDescription p : portDescriptions) {
137                     ports.put(deviceId, p);
138                 }
139             }
140
141             @Override
142             public void portStatusChanged(DeviceId deviceId,
143                                           PortDescription portDescription) {
144                 ports.put(deviceId, portDescription);
145                 descr = portDescription;
146             }
147
148             @Override
149             public void receivedRoleReply(DeviceId deviceId,
150                                           MastershipRole requested,
151                                           MastershipRole response) {
152             }
153
154             @Override
155             public void updatePortStatistics(DeviceId deviceId,
156                                              Collection<PortStatistics> portStatistics) {
157
158             }
159
160         }
161     }
162
163     private class TestController implements OvsdbController {
164         OvsdbNodeListener listener = null;
165
166         @Override
167         public void addNodeListener(OvsdbNodeListener listener) {
168             this.listener = listener;
169         }
170
171         @Override
172         public void removeNodeListener(OvsdbNodeListener listener) {
173             this.listener = null;
174         }
175
176         @Override
177         public void addOvsdbEventListener(OvsdbEventListener listener) {
178
179         }
180
181         @Override
182         public void removeOvsdbEventListener(OvsdbEventListener listener) {
183
184         }
185
186         @Override
187         public List<OvsdbNodeId> getNodeIds() {
188             return null;
189         }
190
191         @Override
192         public OvsdbClientService getOvsdbClient(OvsdbNodeId nodeId) {
193             return null;
194         }
195
196     }
197
198 }