mirror of
https://github.com/apache/cloudstack.git
synced 2025-11-03 04:12:31 +01:00
Add unit tests for getConfigResources in ModuleDefinitionSet and improve context readability (#11042)
This commit is contained in:
parent
21dde2b9a2
commit
1a9efe8de3
@ -18,27 +18,31 @@
|
||||
*/
|
||||
package org.apache.cloudstack.spring.module.factory;
|
||||
|
||||
import org.apache.cloudstack.spring.module.locator.impl.ClasspathModuleDefinitionLocator;
|
||||
import org.apache.cloudstack.spring.module.model.ModuleDefinition;
|
||||
import org.apache.cloudstack.spring.module.model.ModuleDefinitionSet;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.core.io.Resource;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.junit.Assert.fail;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Collection;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
|
||||
import org.apache.cloudstack.spring.module.locator.impl.ClasspathModuleDefinitionLocator;
|
||||
import org.apache.cloudstack.spring.module.model.ModuleDefinition;
|
||||
import org.apache.cloudstack.spring.module.model.ModuleDefinitionSet;
|
||||
|
||||
public class ModuleBasedContextFactoryTest {
|
||||
|
||||
Collection<ModuleDefinition> defs;
|
||||
ModuleBasedContextFactory factory = new ModuleBasedContextFactory();
|
||||
|
||||
@Before
|
||||
public void setUp() throws IOException {
|
||||
@ -51,8 +55,6 @@ public class ModuleBasedContextFactoryTest {
|
||||
@Test
|
||||
public void testLoad() throws IOException {
|
||||
|
||||
ModuleBasedContextFactory factory = new ModuleBasedContextFactory();
|
||||
|
||||
ModuleDefinitionSet set = factory.loadModules(defs, "base");
|
||||
|
||||
assertNotNull(set.getApplicationContext("base"));
|
||||
@ -63,8 +65,6 @@ public class ModuleBasedContextFactoryTest {
|
||||
|
||||
InitTest.initted = false;
|
||||
|
||||
ModuleBasedContextFactory factory = new ModuleBasedContextFactory();
|
||||
|
||||
ModuleDefinitionSet set = factory.loadModules(defs, "base");
|
||||
|
||||
assertTrue(!InitTest.initted);
|
||||
@ -73,7 +73,6 @@ public class ModuleBasedContextFactoryTest {
|
||||
|
||||
@Test
|
||||
public void testExcluded() throws IOException {
|
||||
ModuleBasedContextFactory factory = new ModuleBasedContextFactory();
|
||||
ModuleDefinitionSet set = factory.loadModules(defs, "base");
|
||||
|
||||
assertNull(set.getApplicationContext("excluded"));
|
||||
@ -83,7 +82,6 @@ public class ModuleBasedContextFactoryTest {
|
||||
|
||||
@Test
|
||||
public void testBeans() throws IOException {
|
||||
ModuleBasedContextFactory factory = new ModuleBasedContextFactory();
|
||||
ModuleDefinitionSet set = factory.loadModules(defs, "base");
|
||||
|
||||
testBeansInContext(set, "base", 1, new String[] {"base"}, new String[] {"child1", "child2", "child1-1"});
|
||||
@ -92,6 +90,51 @@ public class ModuleBasedContextFactoryTest {
|
||||
testBeansInContext(set, "child1-1", 3, new String[] {"base", "child1", "child1-1"}, new String[] {"child2"});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEmptyNameConfigResources() throws IOException {
|
||||
ModuleDefinitionSet set = factory.loadModules(defs, "base");
|
||||
testConfigResourcesArray(new String[] {}, set.getConfigResources(""));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBaseConfigResources() throws IOException {
|
||||
ModuleDefinitionSet set = factory.loadModules(defs, "base");
|
||||
testConfigResourcesArray(new String[] {"base-context.xml", "base-context-inheritable.xml"}, set.getConfigResources("base"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testChild1ConfigResources() throws IOException {
|
||||
ModuleDefinitionSet set = factory.loadModules(defs, "base");
|
||||
testConfigResourcesArray(new String[] {
|
||||
"child1-context.xml", "child1-context-inheritable.xml",
|
||||
"base-context-inheritable.xml", "child1-context-override.xml"
|
||||
}, set.getConfigResources("child1"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testChild2ConfigResources() throws IOException {
|
||||
ModuleDefinitionSet set = factory.loadModules(defs, "base");
|
||||
testConfigResourcesArray(new String[] {
|
||||
"child2-context.xml", "base-context-inheritable.xml"
|
||||
}, set.getConfigResources("child2"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testChild1_1ConfigResources() throws IOException {
|
||||
ModuleDefinitionSet set = factory.loadModules(defs, "base");
|
||||
testConfigResourcesArray(new String[] {
|
||||
"child1-1-context.xml", "child1-context-inheritable.xml", "base-context-inheritable.xml"
|
||||
}, set.getConfigResources("child1-1"));
|
||||
}
|
||||
|
||||
private void testConfigResourcesArray(String[] expected, Resource[] actual) {
|
||||
assertEquals(expected.length, actual.length);
|
||||
List<String> actualFileNameList = Arrays.stream(actual).map(Resource::getFilename).collect(Collectors.toList());
|
||||
for (int i = 0; i < expected.length; i++) {
|
||||
assertEquals(expected[i], actualFileNameList.get(i));
|
||||
}
|
||||
}
|
||||
|
||||
protected void testBeansInContext(ModuleDefinitionSet set, String name, int order, String[] parents, String[] notTheres) {
|
||||
ApplicationContext context = set.getApplicationContext(name);
|
||||
|
||||
|
||||
@ -0,0 +1,24 @@
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you 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.
|
||||
-->
|
||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans
|
||||
http://www.springframework.org/schema/beans/spring-beans.xsd">
|
||||
|
||||
</beans>
|
||||
Loading…
x
Reference in New Issue
Block a user