| /* |
| * Copyright 2014 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.net.provider; |
| |
| import org.junit.Test; |
| |
| import static org.hamcrest.MatcherAssert.assertThat; |
| import static org.junit.Assert.assertEquals; |
| |
| /** |
| * Test of the base provider registry. |
| */ |
| public class AbstractProviderRegistryTest { |
| |
| private class TestProviderService extends AbstractProviderService<TestProvider> { |
| protected TestProviderService(TestProvider provider) { |
| super(provider); |
| } |
| } |
| |
| private class TestProviderRegistry extends AbstractProviderRegistry<TestProvider, TestProviderService> { |
| @Override |
| protected TestProviderService createProviderService(TestProvider provider) { |
| return new TestProviderService(provider); |
| } |
| } |
| |
| @Test |
| public void basics() { |
| TestProviderRegistry registry = new TestProviderRegistry(); |
| assertEquals("incorrect provider count", 0, registry.getProviders().size()); |
| |
| ProviderId fooId = new ProviderId("of", "foo"); |
| TestProvider pFoo = new TestProvider(fooId); |
| TestProviderService psFoo = registry.register(pFoo); |
| assertEquals("incorrect provider count", 1, registry.getProviders().size()); |
| assertThat("provider not found", registry.getProviders().contains(fooId)); |
| assertEquals("incorrect provider", psFoo.provider(), pFoo); |
| |
| ProviderId barId = new ProviderId("snmp", "bar"); |
| TestProvider pBar = new TestProvider(barId); |
| TestProviderService psBar = registry.register(pBar); |
| assertEquals("incorrect provider count", 2, registry.getProviders().size()); |
| assertThat("provider not found", registry.getProviders().contains(barId)); |
| assertEquals("incorrect provider", psBar.provider(), pBar); |
| |
| psFoo.checkValidity(); |
| registry.unregister(pFoo); |
| psBar.checkValidity(); |
| assertEquals("incorrect provider count", 1, registry.getProviders().size()); |
| assertThat("provider not found", registry.getProviders().contains(barId)); |
| } |
| |
| @Test |
| public void ancillaryProviders() { |
| TestProviderRegistry registry = new TestProviderRegistry(); |
| TestProvider pFoo = new TestProvider(new ProviderId("of", "foo")); |
| TestProvider pBar = new TestProvider(new ProviderId("of", "bar", true)); |
| registry.register(pFoo); |
| registry.register(pBar); |
| assertEquals("incorrect provider count", 2, registry.getProviders().size()); |
| } |
| |
| @Test(expected = IllegalStateException.class) |
| public void duplicateRegistration() { |
| TestProviderRegistry registry = new TestProviderRegistry(); |
| TestProvider pFoo = new TestProvider(new ProviderId("of", "foo")); |
| registry.register(pFoo); |
| registry.register(pFoo); |
| } |
| |
| @Test(expected = IllegalStateException.class) |
| public void duplicateSchemeRegistration() { |
| TestProviderRegistry registry = new TestProviderRegistry(); |
| TestProvider pFoo = new TestProvider(new ProviderId("of", "foo")); |
| TestProvider pBar = new TestProvider(new ProviderId("of", "bar")); |
| registry.register(pFoo); |
| registry.register(pBar); |
| } |
| |
| @Test |
| public void voidUnregistration() { |
| TestProviderRegistry registry = new TestProviderRegistry(); |
| registry.unregister(new TestProvider(new ProviderId("of", "foo"))); |
| } |
| |
| @Test(expected = IllegalStateException.class) |
| public void unregistration() { |
| TestProviderRegistry registry = new TestProviderRegistry(); |
| TestProvider pFoo = new TestProvider(new ProviderId("of", "foo")); |
| TestProviderService psFoo = registry.register(pFoo); |
| registry.unregister(pFoo); |
| psFoo.checkValidity(); |
| } |
| } |