[ONOS-5749] Add unit test for LISP device provider
Change-Id: I0ecb39e86f54dc381be68b69b38351def26fedd2
diff --git a/providers/lisp/device/BUCK b/providers/lisp/device/BUCK
index 240d54f..14d1d09 100644
--- a/providers/lisp/device/BUCK
+++ b/providers/lisp/device/BUCK
@@ -3,6 +3,11 @@
'//protocols/lisp/api:onos-protocols-lisp-api',
]
+TEST_DEPS = [
+ '//lib:TEST_ADAPTERS',
+]
+
osgi_jar_with_tests (
deps = COMPILE_DEPS,
+ test_deps = TEST_DEPS,
)
diff --git a/providers/lisp/device/pom.xml b/providers/lisp/device/pom.xml
index 2370a53..1416189 100644
--- a/providers/lisp/device/pom.xml
+++ b/providers/lisp/device/pom.xml
@@ -46,6 +46,11 @@
<artifactId>onos-lisp-ctl</artifactId>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.easymock</groupId>
+ <artifactId>easymock</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
diff --git a/providers/lisp/device/src/test/java/org/onosproject/provider/lisp/device/impl/LispControllerAdapter.java b/providers/lisp/device/src/test/java/org/onosproject/provider/lisp/device/impl/LispControllerAdapter.java
new file mode 100644
index 0000000..22c651f
--- /dev/null
+++ b/providers/lisp/device/src/test/java/org/onosproject/provider/lisp/device/impl/LispControllerAdapter.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2017-present Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.provider.lisp.device.impl;
+
+import org.onosproject.lisp.ctl.LispController;
+import org.onosproject.lisp.ctl.LispMessageListener;
+import org.onosproject.lisp.ctl.LispRouter;
+import org.onosproject.lisp.ctl.LispRouterId;
+import org.onosproject.lisp.ctl.LispRouterListener;
+
+/**
+ * Test Adapter for LispController.
+ */
+public class LispControllerAdapter implements LispController {
+ @Override
+ public Iterable<LispRouter> getRouters() {
+ return null;
+ }
+
+ @Override
+ public Iterable<LispRouter> getSubscribedRouters() {
+ return null;
+ }
+
+ @Override
+ public LispRouter connectRouter(LispRouterId routerId) {
+ return null;
+ }
+
+ @Override
+ public void disconnectRouter(LispRouterId routerId, boolean remove) {
+
+ }
+
+ @Override
+ public LispRouter getRouter(LispRouterId routerId) {
+ return null;
+ }
+
+ @Override
+ public void addRouterListener(LispRouterListener listener) {
+
+ }
+
+ @Override
+ public void removeRouterListener(LispRouterListener listener) {
+
+ }
+
+ @Override
+ public void addMessageListener(LispMessageListener listener) {
+
+ }
+
+ @Override
+ public void removeMessageListener(LispMessageListener listener) {
+
+ }
+}
diff --git a/providers/lisp/device/src/test/java/org/onosproject/provider/lisp/device/impl/LispDeviceProviderTest.java b/providers/lisp/device/src/test/java/org/onosproject/provider/lisp/device/impl/LispDeviceProviderTest.java
new file mode 100644
index 0000000..c040ca3
--- /dev/null
+++ b/providers/lisp/device/src/test/java/org/onosproject/provider/lisp/device/impl/LispDeviceProviderTest.java
@@ -0,0 +1,175 @@
+/*
+ * Copyright 2017-present Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.provider.lisp.device.impl;
+
+import com.google.common.collect.Sets;
+import org.junit.Before;
+import org.junit.Test;
+import org.onosproject.core.ApplicationId;
+import org.onosproject.core.CoreService;
+import org.onosproject.core.DefaultApplicationId;
+import org.onosproject.lisp.ctl.LispController;
+import org.onosproject.lisp.ctl.LispRouter;
+import org.onosproject.lisp.ctl.LispRouterListener;
+import org.onosproject.net.device.DeviceListener;
+import org.onosproject.net.device.DeviceProvider;
+import org.onosproject.net.device.DeviceProviderRegistry;
+import org.onosproject.net.device.DeviceProviderRegistryAdapter;
+import org.onosproject.net.device.DeviceProviderService;
+import org.onosproject.net.device.DeviceProviderServiceAdapter;
+import org.onosproject.net.device.DeviceService;
+import org.onosproject.net.device.DeviceServiceAdapter;
+import org.onosproject.net.provider.ProviderId;
+
+import java.util.Set;
+
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * LISP device provider unit test.
+ */
+public class LispDeviceProviderTest {
+
+ private static final String APP_NAME = "org.onosproject.lisp";
+
+ private final LispDeviceProvider provider = new LispDeviceProvider();
+ private final LispController controller = new MockLispController();
+
+ // provider mocks
+ private final DeviceProviderRegistry providerRegistry = new MockDeviceProviderRegistry();
+ private final DeviceProviderService providerService = new MockDeviceProviderService();
+ private final DeviceService deviceService = new MockDeviceService();
+
+ private final Set<LispRouterListener> routerListeners = Sets.newCopyOnWriteArraySet();
+
+ private CoreService coreService;
+ private ApplicationId appId = new DefaultApplicationId(200, APP_NAME);
+ private Set<DeviceListener> deviceListeners = Sets.newHashSet();
+
+ @Before
+ public void setUp() {
+ coreService = createMock(CoreService.class);
+ expect(coreService.registerApplication(APP_NAME))
+ .andReturn(appId).anyTimes();
+ replay(coreService);
+ provider.coreService = coreService;
+ provider.providerRegistry = providerRegistry;
+ provider.deviceService = deviceService;
+ provider.controller = controller;
+ provider.activate();
+ }
+
+ @Test
+ public void activate() throws Exception {
+
+ assertEquals("Provider should be registered", 1,
+ providerRegistry.getProviders().size());
+ assertTrue("LISP device provider should be registered",
+ providerRegistry.getProviders().contains(provider.id()));
+ assertEquals("Incorrect provider service",
+ providerService, provider.providerService);
+ assertEquals("LISP router listener should be registered", 1,
+ routerListeners.size());
+ }
+
+ @Test
+ public void deactivate() throws Exception {
+ provider.deactivate();
+
+ assertFalse("Provider should not be registered",
+ providerRegistry.getProviders().contains(provider));
+ assertNull("Provider service should be null",
+ provider.providerService);
+ assertEquals("Controller listener should be removed", 0,
+ routerListeners.size());
+ }
+
+ /**
+ * Mock class for LispController.
+ */
+ private class MockLispController extends LispControllerAdapter {
+
+ Iterable<LispRouter> routers = Sets.newHashSet();
+
+ @Override
+ public Iterable<LispRouter> getRouters() {
+ return routers;
+ }
+
+ @Override
+ public void addRouterListener(LispRouterListener listener) {
+ if (!routerListeners.contains(listener)) {
+ routerListeners.add(listener);
+ }
+ }
+
+ @Override
+ public void removeRouterListener(LispRouterListener listener) {
+ routerListeners.remove(listener);
+ }
+ }
+
+ /**
+ * Mock class for DeviceProviderRegistry.
+ */
+ private class MockDeviceProviderRegistry extends DeviceProviderRegistryAdapter {
+ Set<ProviderId> providers = Sets.newHashSet();
+
+ @Override
+ public DeviceProviderService register(DeviceProvider provider) {
+ providers.add(provider.id());
+ return providerService;
+ }
+
+ @Override
+ public void unregister(DeviceProvider provider) {
+ providers.remove(provider.id());
+ }
+
+ @Override
+ public Set<ProviderId> getProviders() {
+ return providers;
+ }
+ }
+
+ /**
+ * Mock class for DeviceService.
+ */
+ private class MockDeviceService extends DeviceServiceAdapter {
+ @Override
+ public void addListener(DeviceListener listener) {
+ deviceListeners.add(listener);
+ }
+
+ @Override
+ public void removeListener(DeviceListener listener) {
+ deviceListeners.remove(listener);
+ }
+ }
+
+ /**
+ * Mock class for DeviceProviderService.
+ */
+ private class MockDeviceProviderService extends DeviceProviderServiceAdapter {
+
+ }
+}