/* * 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.mapping.impl; import com.google.common.collect.Sets; import org.junit.Before; import org.junit.Test; import org.onosproject.lisp.ctl.LispController; import org.onosproject.lisp.ctl.LispControllerAdapter; import org.onosproject.lisp.ctl.LispRouter; import org.onosproject.lisp.ctl.LispRouterListener; import org.onosproject.mapping.MappingProvider; import org.onosproject.mapping.MappingProviderRegistry; import org.onosproject.mapping.MappingProviderRegistryAdapter; import org.onosproject.mapping.MappingProviderService; import org.onosproject.mapping.MappingProviderServiceAdapter; import org.onosproject.net.provider.ProviderId; import java.util.Set; import static junit.framework.TestCase.assertFalse; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; /** * LISP mapping provider unit test. */ public class LispMappingProviderTest { private final LispMappingProvider provider = new LispMappingProvider(); private final LispController controller = new MockLispController(); // provider mocks private final MappingProviderRegistry providerRegistry = new MockMappingProviderRegistry(); private final MappingProviderService providerService = new MockMappingProviderService(); private final Set<LispRouterListener> routerListeners = Sets.newCopyOnWriteArraySet(); @Before public void setUp() { provider.providerRegistry = providerRegistry; 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 MappingProviderRegistry. */ private class MockMappingProviderRegistry extends MappingProviderRegistryAdapter { Set<ProviderId> providers = Sets.newHashSet(); @Override public MappingProviderService register(MappingProvider provider) { providers.add(provider.id()); return providerService; } @Override public void unregister(MappingProvider provider) { providers.remove(provider.id()); } @Override public Set<ProviderId> getProviders() { return providers; } } /** * Mock class for MappingService. */ private class MockMappingProviderService extends MappingProviderServiceAdapter { } }