Committed by
Gerrit Code Review
Unit tests for the Network Config Manager class
Change-Id: Idc96f95acc79ed169abe9fbcbd64f85b8a6fb237
Showing
4 changed files
with
315 additions
and
6 deletions
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.event; | ||
17 | + | ||
18 | +import java.util.Set; | ||
19 | + | ||
20 | +import static org.junit.Assert.*; | ||
21 | + | ||
22 | +/** | ||
23 | + * Testing adapter for the event delivery service. | ||
24 | + */ | ||
25 | +public class EventDeliveryServiceAdapter implements EventDeliveryService { | ||
26 | + @Override | ||
27 | + public void setDispatchTimeLimit(long millis) { | ||
28 | + | ||
29 | + } | ||
30 | + | ||
31 | + @Override | ||
32 | + public long getDispatchTimeLimit() { | ||
33 | + return 0; | ||
34 | + } | ||
35 | + | ||
36 | + @Override | ||
37 | + public void post(Event event) { | ||
38 | + | ||
39 | + } | ||
40 | + | ||
41 | + @Override | ||
42 | + public <E extends Event> void addSink(Class<E> eventClass, EventSink<E> sink) { | ||
43 | + | ||
44 | + } | ||
45 | + | ||
46 | + @Override | ||
47 | + public <E extends Event> void removeSink(Class<E> eventClass) { | ||
48 | + | ||
49 | + } | ||
50 | + | ||
51 | + @Override | ||
52 | + public <E extends Event> EventSink<E> getSink(Class<E> eventClass) { | ||
53 | + return null; | ||
54 | + } | ||
55 | + | ||
56 | + @Override | ||
57 | + public Set<Class<? extends Event>> getSinks() { | ||
58 | + return null; | ||
59 | + } | ||
60 | +} |
... | @@ -41,7 +41,7 @@ | ... | @@ -41,7 +41,7 @@ |
41 | 41 | ||
42 | <dependency> | 42 | <dependency> |
43 | <groupId>org.onosproject</groupId> | 43 | <groupId>org.onosproject</groupId> |
44 | - <artifactId>onos-incubator-api</artifactId> | 44 | + <artifactId>onos-core-common</artifactId> |
45 | <version>${project.version}</version> | 45 | <version>${project.version}</version> |
46 | <classifier>tests</classifier> | 46 | <classifier>tests</classifier> |
47 | <scope>test</scope> | 47 | <scope>test</scope> |
... | @@ -49,7 +49,7 @@ | ... | @@ -49,7 +49,7 @@ |
49 | 49 | ||
50 | <dependency> | 50 | <dependency> |
51 | <groupId>org.onosproject</groupId> | 51 | <groupId>org.onosproject</groupId> |
52 | - <artifactId>onos-core-common</artifactId> | 52 | + <artifactId>onos-core-serializers</artifactId> |
53 | <version>${project.version}</version> | 53 | <version>${project.version}</version> |
54 | <classifier>tests</classifier> | 54 | <classifier>tests</classifier> |
55 | <scope>test</scope> | 55 | <scope>test</scope> |
... | @@ -80,6 +80,13 @@ | ... | @@ -80,6 +80,13 @@ |
80 | <groupId>org.apache.karaf.system</groupId> | 80 | <groupId>org.apache.karaf.system</groupId> |
81 | <artifactId>org.apache.karaf.system.core</artifactId> | 81 | <artifactId>org.apache.karaf.system.core</artifactId> |
82 | </dependency> | 82 | </dependency> |
83 | + | ||
84 | + <dependency> | ||
85 | + <groupId>org.onosproject</groupId> | ||
86 | + <artifactId>onos-incubator-store</artifactId> | ||
87 | + <version>${project.version}</version> | ||
88 | + <scope>test</scope> | ||
89 | + </dependency> | ||
83 | </dependencies> | 90 | </dependencies> |
84 | 91 | ||
85 | <build> | 92 | <build> | ... | ... |
... | @@ -226,11 +226,11 @@ public class NetworkConfigManager | ... | @@ -226,11 +226,11 @@ public class NetworkConfigManager |
226 | } | 226 | } |
227 | 227 | ||
228 | // Auxiliary key to track config factories. | 228 | // Auxiliary key to track config factories. |
229 | - private static final class ConfigKey { | 229 | + protected static final class ConfigKey { |
230 | final Class subjectClass; | 230 | final Class subjectClass; |
231 | final Class configClass; | 231 | final Class configClass; |
232 | 232 | ||
233 | - private ConfigKey(Class subjectClass, Class configClass) { | 233 | + protected ConfigKey(Class subjectClass, Class configClass) { |
234 | this.subjectClass = subjectClass; | 234 | this.subjectClass = subjectClass; |
235 | this.configClass = configClass; | 235 | this.configClass = configClass; |
236 | } | 236 | } |
... | @@ -258,11 +258,11 @@ public class NetworkConfigManager | ... | @@ -258,11 +258,11 @@ public class NetworkConfigManager |
258 | return new ConfigIdentifier(factory.subjectFactory().subjectKey(), factory.configKey()); | 258 | return new ConfigIdentifier(factory.subjectFactory().subjectKey(), factory.configKey()); |
259 | } | 259 | } |
260 | 260 | ||
261 | - private static final class ConfigIdentifier { | 261 | + protected static final class ConfigIdentifier { |
262 | final String subjectKey; | 262 | final String subjectKey; |
263 | final String configKey; | 263 | final String configKey; |
264 | 264 | ||
265 | - private ConfigIdentifier(String subjectKey, String configKey) { | 265 | + protected ConfigIdentifier(String subjectKey, String configKey) { |
266 | this.subjectKey = subjectKey; | 266 | this.subjectKey = subjectKey; |
267 | this.configKey = configKey; | 267 | this.configKey = configKey; |
268 | } | 268 | } | ... | ... |
incubator/net/src/test/java/org/onosproject/incubator/net/config/impl/NetworkConfigManagerTest.java
0 → 100644
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.incubator.net.config.impl; | ||
17 | + | ||
18 | +import java.util.Set; | ||
19 | + | ||
20 | +import org.junit.After; | ||
21 | +import org.junit.Before; | ||
22 | +import org.junit.Test; | ||
23 | +import org.onlab.junit.TestUtils; | ||
24 | +import org.onosproject.event.EventDeliveryServiceAdapter; | ||
25 | +import org.onosproject.incubator.net.config.Config; | ||
26 | +import org.onosproject.incubator.net.config.ConfigFactory; | ||
27 | +import org.onosproject.incubator.net.config.NetworkConfigRegistry; | ||
28 | +import org.onosproject.incubator.net.config.NetworkConfigService; | ||
29 | +import org.onosproject.incubator.net.config.SubjectFactory; | ||
30 | +import org.onosproject.incubator.store.config.impl.DistributedNetworkConfigStore; | ||
31 | +import org.onosproject.net.NetTestTools; | ||
32 | +import org.onosproject.store.service.TestStorageService; | ||
33 | + | ||
34 | +import static org.hamcrest.Matchers.hasSize; | ||
35 | +import static org.hamcrest.Matchers.instanceOf; | ||
36 | +import static org.hamcrest.Matchers.is; | ||
37 | +import static org.hamcrest.Matchers.notNullValue; | ||
38 | +import static org.hamcrest.Matchers.nullValue; | ||
39 | +import static org.junit.Assert.assertThat; | ||
40 | + | ||
41 | +import com.fasterxml.jackson.databind.ObjectMapper; | ||
42 | +import com.google.common.testing.EqualsTester; | ||
43 | + | ||
44 | +/** | ||
45 | + * Unit tests for network config registry. | ||
46 | + */ | ||
47 | +public class NetworkConfigManagerTest { | ||
48 | + private NetworkConfigManager manager; | ||
49 | + private NetworkConfigRegistry registry; | ||
50 | + private NetworkConfigService configService; | ||
51 | + private DistributedNetworkConfigStore configStore; | ||
52 | + | ||
53 | + /** | ||
54 | + * Config classes for testing. | ||
55 | + */ | ||
56 | + public class BasicConfig1 extends Config<String> { } | ||
57 | + public class BasicConfig2 extends Config<String> { } | ||
58 | + | ||
59 | + public class MockSubjectFactory extends SubjectFactory<String> { | ||
60 | + protected MockSubjectFactory(Class<String> subjectClass, String subjectKey) { | ||
61 | + super(subjectClass, subjectKey); | ||
62 | + } | ||
63 | + | ||
64 | + @Override | ||
65 | + public String createSubject(String subjectKey) { | ||
66 | + return subjectKey + "-subject"; | ||
67 | + } | ||
68 | + } | ||
69 | + | ||
70 | + /** | ||
71 | + * Config factory classes for testing. | ||
72 | + */ | ||
73 | + public class MockConfigFactory1 extends ConfigFactory<String, BasicConfig1> { | ||
74 | + protected MockConfigFactory1(SubjectFactory<String> subjectFactory, | ||
75 | + Class<BasicConfig1> configClass, String configKey) { | ||
76 | + super(subjectFactory, configClass, configKey); | ||
77 | + } | ||
78 | + @Override | ||
79 | + public BasicConfig1 createConfig() { | ||
80 | + return new BasicConfig1(); | ||
81 | + } | ||
82 | + } | ||
83 | + | ||
84 | + public class MockConfigFactory2 extends ConfigFactory<String, BasicConfig2> { | ||
85 | + protected MockConfigFactory2(SubjectFactory<String> subjectFactory, | ||
86 | + Class<BasicConfig2> configClass, String configKey) { | ||
87 | + super(subjectFactory, configClass, configKey); | ||
88 | + } | ||
89 | + @Override | ||
90 | + public BasicConfig2 createConfig() { | ||
91 | + return new BasicConfig2(); | ||
92 | + } | ||
93 | + } | ||
94 | + | ||
95 | + MockSubjectFactory factory1 = new MockSubjectFactory(String.class, | ||
96 | + "key1"); | ||
97 | + MockSubjectFactory factory2 = new MockSubjectFactory(String.class, | ||
98 | + "key2"); | ||
99 | + | ||
100 | + MockConfigFactory1 config1Factory = new MockConfigFactory1(factory1, | ||
101 | + BasicConfig1.class, "config1"); | ||
102 | + MockConfigFactory2 config2Factory = new MockConfigFactory2(factory2, | ||
103 | + BasicConfig2.class, "config2"); | ||
104 | + | ||
105 | + | ||
106 | + @Before | ||
107 | + public void setUp() throws Exception { | ||
108 | + configStore = new DistributedNetworkConfigStore(); | ||
109 | + TestUtils.setField(configStore, "storageService", new TestStorageService()); | ||
110 | + configStore.activate(); | ||
111 | + manager = new NetworkConfigManager(); | ||
112 | + manager.store = configStore; | ||
113 | + NetTestTools.injectEventDispatcher(manager, new EventDeliveryServiceAdapter()); | ||
114 | + manager.activate(); | ||
115 | + registry = manager; | ||
116 | + configService = manager; | ||
117 | + } | ||
118 | + | ||
119 | + @After | ||
120 | + public void tearDown() { | ||
121 | + configStore.deactivate(); | ||
122 | + manager.deactivate(); | ||
123 | + } | ||
124 | + | ||
125 | + @Test | ||
126 | + public void testRegistry() { | ||
127 | + assertThat(registry.getConfigFactories(), hasSize(0)); | ||
128 | + assertThat(registry.getConfigFactories(String.class), hasSize(0)); | ||
129 | + assertThat(registry.getConfigFactory(BasicConfig1.class), nullValue()); | ||
130 | + | ||
131 | + registry.registerConfigFactory(config1Factory); | ||
132 | + registry.registerConfigFactory(config2Factory); | ||
133 | + | ||
134 | + assertThat(registry.getConfigFactories(), hasSize(2)); | ||
135 | + assertThat(registry.getConfigFactories(String.class), hasSize(2)); | ||
136 | + | ||
137 | + ConfigFactory queried = registry.getConfigFactory(BasicConfig1.class); | ||
138 | + assertThat(queried, is(config1Factory)); | ||
139 | + | ||
140 | + registry.unregisterConfigFactory(queried); | ||
141 | + // Factory associations are not removed according to code documentation | ||
142 | + assertThat(registry.getConfigFactories(), hasSize(1)); | ||
143 | + assertThat(registry.getConfigFactories(String.class), hasSize(1)); | ||
144 | + assertThat(registry.getConfigFactory(BasicConfig1.class), nullValue()); | ||
145 | + } | ||
146 | + | ||
147 | + @Test | ||
148 | + public void configIdEquals() { | ||
149 | + NetworkConfigManager.ConfigIdentifier id1 = | ||
150 | + new NetworkConfigManager.ConfigIdentifier("s1", "c1"); | ||
151 | + NetworkConfigManager.ConfigIdentifier likeId1 = | ||
152 | + new NetworkConfigManager.ConfigIdentifier("s1", "c1"); | ||
153 | + NetworkConfigManager.ConfigIdentifier id2 = | ||
154 | + new NetworkConfigManager.ConfigIdentifier("s1", "c2"); | ||
155 | + NetworkConfigManager.ConfigIdentifier id3 = | ||
156 | + new NetworkConfigManager.ConfigIdentifier("s2", "c1"); | ||
157 | + | ||
158 | + new EqualsTester().addEqualityGroup(id1, likeId1) | ||
159 | + .addEqualityGroup(id2) | ||
160 | + .addEqualityGroup(id3) | ||
161 | + .testEquals(); | ||
162 | + } | ||
163 | + | ||
164 | + @Test | ||
165 | + public void configKeyEquals() { | ||
166 | + NetworkConfigManager.ConfigKey key1 = | ||
167 | + new NetworkConfigManager.ConfigKey(String.class, String.class); | ||
168 | + NetworkConfigManager.ConfigKey likeKey1 = | ||
169 | + new NetworkConfigManager.ConfigKey(String.class, String.class); | ||
170 | + NetworkConfigManager.ConfigKey key2 = | ||
171 | + new NetworkConfigManager.ConfigKey(String.class, Integer.class); | ||
172 | + NetworkConfigManager.ConfigKey key3 = | ||
173 | + new NetworkConfigManager.ConfigKey(Integer.class, String.class); | ||
174 | + | ||
175 | + new EqualsTester().addEqualityGroup(key1, likeKey1) | ||
176 | + .addEqualityGroup(key2) | ||
177 | + .addEqualityGroup(key3) | ||
178 | + .testEquals(); | ||
179 | + } | ||
180 | + | ||
181 | + /** | ||
182 | + * Tests creation, query and removal of a factory. | ||
183 | + */ | ||
184 | + @Test | ||
185 | + public void testAddConfig() { | ||
186 | + | ||
187 | + assertThat(configService.getSubjectFactory(String.class), nullValue()); | ||
188 | + assertThat(configService.getSubjectFactory("key"), nullValue()); | ||
189 | + | ||
190 | + registry.registerConfigFactory(config1Factory); | ||
191 | + registry.registerConfigFactory(config2Factory); | ||
192 | + configService.addConfig("configKey", BasicConfig1.class); | ||
193 | + | ||
194 | + Config newConfig = configService.getConfig("configKey", BasicConfig1.class); | ||
195 | + assertThat(newConfig, notNullValue()); | ||
196 | + | ||
197 | + assertThat(configService.getSubjectFactory(String.class), notNullValue()); | ||
198 | + assertThat(configService.getSubjectFactory("key1"), notNullValue()); | ||
199 | + | ||
200 | + Set<Class> classes = configService.getSubjectClasses(); | ||
201 | + assertThat(classes, hasSize(1)); | ||
202 | + | ||
203 | + Set<String> subjectsForClass = | ||
204 | + configService.getSubjects(String.class); | ||
205 | + assertThat(subjectsForClass, hasSize(1)); | ||
206 | + | ||
207 | + Set<String> subjectsForConfig = | ||
208 | + configService.getSubjects(String.class, BasicConfig1.class); | ||
209 | + assertThat(subjectsForConfig, hasSize(1)); | ||
210 | + | ||
211 | + Class queriedConfigClass = configService.getConfigClass("key1", "config1"); | ||
212 | + assertThat(queriedConfigClass == BasicConfig1.class, is(true)); | ||
213 | + | ||
214 | + Set<? extends Config> configs = configService.getConfigs("configKey"); | ||
215 | + assertThat(configs.size(), is(1)); | ||
216 | + configs.forEach(c -> assertThat(c, instanceOf(BasicConfig1.class))); | ||
217 | + | ||
218 | + configService.removeConfig("configKey", BasicConfig1.class); | ||
219 | + Config newConfigAfterRemove = configService.getConfig("configKey", BasicConfig1.class); | ||
220 | + assertThat(newConfigAfterRemove, nullValue()); | ||
221 | + } | ||
222 | + | ||
223 | + /** | ||
224 | + * Tests creation, query and removal of a factory. | ||
225 | + */ | ||
226 | + @Test | ||
227 | + public void testApplyConfig() { | ||
228 | + | ||
229 | + assertThat(configService.getSubjectFactory(String.class), nullValue()); | ||
230 | + assertThat(configService.getSubjectFactory("key"), nullValue()); | ||
231 | + | ||
232 | + registry.registerConfigFactory(config1Factory); | ||
233 | + registry.registerConfigFactory(config2Factory); | ||
234 | + configService.applyConfig("configKey", BasicConfig1.class, new ObjectMapper().createObjectNode()); | ||
235 | + | ||
236 | + Config newConfig = configService.getConfig("configKey", BasicConfig1.class); | ||
237 | + assertThat(newConfig, notNullValue()); | ||
238 | + | ||
239 | + assertThat(configService.getSubjectFactory(String.class), notNullValue()); | ||
240 | + assertThat(configService.getSubjectFactory("key1"), notNullValue()); | ||
241 | + } | ||
242 | +} |
-
Please register or login to post a comment