diff options
author | Ashlee Young <ashlee@onosfw.com> | 2015-09-09 22:15:21 -0700 |
---|---|---|
committer | Ashlee Young <ashlee@onosfw.com> | 2015-09-09 22:15:21 -0700 |
commit | 13d05bc8458758ee39cb829098241e89616717ee (patch) | |
tree | 22a4d1ce65f15952f07a3df5af4b462b4697cb3a /framework/src/onos/core/net/src/test/java/org/onosproject/net/config/impl/NetworkConfigManagerTest.java | |
parent | 6139282e1e93c2322076de4b91b1c85d0bc4a8b3 (diff) |
ONOS checkin based on commit tag e796610b1f721d02f9b0e213cf6f7790c10ecd60
Change-Id: Ife8810491034fe7becdba75dda20de4267bd15cd
Diffstat (limited to 'framework/src/onos/core/net/src/test/java/org/onosproject/net/config/impl/NetworkConfigManagerTest.java')
-rw-r--r-- | framework/src/onos/core/net/src/test/java/org/onosproject/net/config/impl/NetworkConfigManagerTest.java | 242 |
1 files changed, 242 insertions, 0 deletions
diff --git a/framework/src/onos/core/net/src/test/java/org/onosproject/net/config/impl/NetworkConfigManagerTest.java b/framework/src/onos/core/net/src/test/java/org/onosproject/net/config/impl/NetworkConfigManagerTest.java new file mode 100644 index 00000000..2d03bfc8 --- /dev/null +++ b/framework/src/onos/core/net/src/test/java/org/onosproject/net/config/impl/NetworkConfigManagerTest.java @@ -0,0 +1,242 @@ +/* + * Copyright 2015 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.config.impl; + +import java.util.Set; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.onlab.junit.TestUtils; +import org.onosproject.event.EventDeliveryServiceAdapter; +import org.onosproject.net.config.Config; +import org.onosproject.net.config.ConfigFactory; +import org.onosproject.net.config.NetworkConfigRegistry; +import org.onosproject.net.config.NetworkConfigService; +import org.onosproject.net.config.SubjectFactory; +import org.onosproject.net.NetTestTools; +import org.onosproject.store.config.impl.DistributedNetworkConfigStore; +import org.onosproject.store.service.TestStorageService; + +import static org.hamcrest.Matchers.hasSize; +import static org.hamcrest.Matchers.instanceOf; +import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.notNullValue; +import static org.hamcrest.Matchers.nullValue; +import static org.junit.Assert.assertThat; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.common.testing.EqualsTester; + +/** + * Unit tests for network config registry. + */ +public class NetworkConfigManagerTest { + private NetworkConfigManager manager; + private NetworkConfigRegistry registry; + private NetworkConfigService configService; + private DistributedNetworkConfigStore configStore; + + /** + * Config classes for testing. + */ + public class BasicConfig1 extends Config<String> { } + public class BasicConfig2 extends Config<String> { } + + public class MockSubjectFactory extends SubjectFactory<String> { + protected MockSubjectFactory(Class<String> subjectClass, String subjectKey) { + super(subjectClass, subjectKey); + } + + @Override + public String createSubject(String subjectKey) { + return subjectKey + "-subject"; + } + } + + /** + * Config factory classes for testing. + */ + public class MockConfigFactory1 extends ConfigFactory<String, BasicConfig1> { + protected MockConfigFactory1(SubjectFactory<String> subjectFactory, + Class<BasicConfig1> configClass, String configKey) { + super(subjectFactory, configClass, configKey); + } + @Override + public BasicConfig1 createConfig() { + return new BasicConfig1(); + } + } + + public class MockConfigFactory2 extends ConfigFactory<String, BasicConfig2> { + protected MockConfigFactory2(SubjectFactory<String> subjectFactory, + Class<BasicConfig2> configClass, String configKey) { + super(subjectFactory, configClass, configKey); + } + @Override + public BasicConfig2 createConfig() { + return new BasicConfig2(); + } + } + + MockSubjectFactory factory1 = new MockSubjectFactory(String.class, + "key1"); + MockSubjectFactory factory2 = new MockSubjectFactory(String.class, + "key2"); + + MockConfigFactory1 config1Factory = new MockConfigFactory1(factory1, + BasicConfig1.class, "config1"); + MockConfigFactory2 config2Factory = new MockConfigFactory2(factory2, + BasicConfig2.class, "config2"); + + + @Before + public void setUp() throws Exception { + configStore = new DistributedNetworkConfigStore(); + TestUtils.setField(configStore, "storageService", new TestStorageService()); + configStore.activate(); + manager = new NetworkConfigManager(); + manager.store = configStore; + NetTestTools.injectEventDispatcher(manager, new EventDeliveryServiceAdapter()); + manager.activate(); + registry = manager; + configService = manager; + } + + @After + public void tearDown() { + configStore.deactivate(); + manager.deactivate(); + } + + @Test + public void testRegistry() { + assertThat(registry.getConfigFactories(), hasSize(0)); + assertThat(registry.getConfigFactories(String.class), hasSize(0)); + assertThat(registry.getConfigFactory(BasicConfig1.class), nullValue()); + + registry.registerConfigFactory(config1Factory); + registry.registerConfigFactory(config2Factory); + + assertThat(registry.getConfigFactories(), hasSize(2)); + assertThat(registry.getConfigFactories(String.class), hasSize(2)); + + ConfigFactory queried = registry.getConfigFactory(BasicConfig1.class); + assertThat(queried, is(config1Factory)); + + registry.unregisterConfigFactory(queried); + // Factory associations are not removed according to code documentation + assertThat(registry.getConfigFactories(), hasSize(1)); + assertThat(registry.getConfigFactories(String.class), hasSize(1)); + assertThat(registry.getConfigFactory(BasicConfig1.class), nullValue()); + } + + @Test + public void configIdEquals() { + NetworkConfigManager.ConfigIdentifier id1 = + new NetworkConfigManager.ConfigIdentifier("s1", "c1"); + NetworkConfigManager.ConfigIdentifier likeId1 = + new NetworkConfigManager.ConfigIdentifier("s1", "c1"); + NetworkConfigManager.ConfigIdentifier id2 = + new NetworkConfigManager.ConfigIdentifier("s1", "c2"); + NetworkConfigManager.ConfigIdentifier id3 = + new NetworkConfigManager.ConfigIdentifier("s2", "c1"); + + new EqualsTester().addEqualityGroup(id1, likeId1) + .addEqualityGroup(id2) + .addEqualityGroup(id3) + .testEquals(); + } + + @Test + public void configKeyEquals() { + NetworkConfigManager.ConfigKey key1 = + new NetworkConfigManager.ConfigKey(String.class, String.class); + NetworkConfigManager.ConfigKey likeKey1 = + new NetworkConfigManager.ConfigKey(String.class, String.class); + NetworkConfigManager.ConfigKey key2 = + new NetworkConfigManager.ConfigKey(String.class, Integer.class); + NetworkConfigManager.ConfigKey key3 = + new NetworkConfigManager.ConfigKey(Integer.class, String.class); + + new EqualsTester().addEqualityGroup(key1, likeKey1) + .addEqualityGroup(key2) + .addEqualityGroup(key3) + .testEquals(); + } + + /** + * Tests creation, query and removal of a factory. + */ + @Test + public void testAddConfig() { + + assertThat(configService.getSubjectFactory(String.class), nullValue()); + assertThat(configService.getSubjectFactory("key"), nullValue()); + + registry.registerConfigFactory(config1Factory); + registry.registerConfigFactory(config2Factory); + configService.addConfig("configKey", BasicConfig1.class); + + Config newConfig = configService.getConfig("configKey", BasicConfig1.class); + assertThat(newConfig, notNullValue()); + + assertThat(configService.getSubjectFactory(String.class), notNullValue()); + assertThat(configService.getSubjectFactory("key1"), notNullValue()); + + Set<Class> classes = configService.getSubjectClasses(); + assertThat(classes, hasSize(1)); + + Set<String> subjectsForClass = + configService.getSubjects(String.class); + assertThat(subjectsForClass, hasSize(1)); + + Set<String> subjectsForConfig = + configService.getSubjects(String.class, BasicConfig1.class); + assertThat(subjectsForConfig, hasSize(1)); + + Class queriedConfigClass = configService.getConfigClass("key1", "config1"); + assertThat(queriedConfigClass == BasicConfig1.class, is(true)); + + Set<? extends Config> configs = configService.getConfigs("configKey"); + assertThat(configs.size(), is(1)); + configs.forEach(c -> assertThat(c, instanceOf(BasicConfig1.class))); + + configService.removeConfig("configKey", BasicConfig1.class); + Config newConfigAfterRemove = configService.getConfig("configKey", BasicConfig1.class); + assertThat(newConfigAfterRemove, nullValue()); + } + + /** + * Tests creation, query and removal of a factory. + */ + @Test + public void testApplyConfig() { + + assertThat(configService.getSubjectFactory(String.class), nullValue()); + assertThat(configService.getSubjectFactory("key"), nullValue()); + + registry.registerConfigFactory(config1Factory); + registry.registerConfigFactory(config2Factory); + configService.applyConfig("configKey", BasicConfig1.class, new ObjectMapper().createObjectNode()); + + Config newConfig = configService.getConfig("configKey", BasicConfig1.class); + assertThat(newConfig, notNullValue()); + + assertThat(configService.getSubjectFactory(String.class), notNullValue()); + assertThat(configService.getSubjectFactory("key1"), notNullValue()); + } +} |