/* * Lokomo OneCMDB - An Open Source Software for Configuration * Management of Datacenter Resources * * Copyright (C) 2006 Lokomo Systems AB * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301 USA. * * Lokomo Systems AB can be contacted via e-mail: info@lokomo.com or via * paper mail: Lokomo Systems AB, Sv�rdv�gen 27, SE-182 33 * Danderyd, Sweden. * */ package org.onecmdb.core.tests.core; import java.io.File; import java.io.IOException; import java.net.MalformedURLException; import java.util.List; import java.util.Set; import junit.framework.Assert; import org.onecmdb.core.IAttribute; import org.onecmdb.core.IAttributeModifiable; import org.onecmdb.core.ICcb; import org.onecmdb.core.ICi; import org.onecmdb.core.ICiModifiable; import org.onecmdb.core.ICmdbTransaction; import org.onecmdb.core.IModelService; import org.onecmdb.core.IRFC; import org.onecmdb.core.IReference; import org.onecmdb.core.IReferenceService; import org.onecmdb.core.IRfcResult; import org.onecmdb.core.ITicket; import org.onecmdb.core.IType; import org.onecmdb.core.IValue; import org.onecmdb.core.IValueSelector; import org.onecmdb.core.internal.model.BasicAttribute; import org.onecmdb.core.internal.model.primitivetypes.SimpleTypeFactory; import org.onecmdb.core.tests.AbstractOneCmdbTestCase; import org.onecmdb.core.tests.OneCMDBTestConfig; import org.onecmdb.core.tests.OnecmdbTestUtils; import org.onecmdb.core.utils.bean.CiBean; import org.onecmdb.core.utils.xml.BeanScope; import org.onecmdb.core.utils.xml.OneCmdbBeanProvider; import org.onecmdb.core.utils.xml.XmlGenerator; import org.onecmdb.core.utils.xml.XmlParser; /** * Main OneCMDB core test. * */ public class TestOneCmdbCore extends AbstractOneCmdbTestCase { public TestOneCmdbCore() { this(new OneCMDBTestConfig()); } public TestOneCmdbCore(OneCMDBTestConfig config) { super(config); } public String dumpOffsprings(ICi ci, int level) { StringBuffer buffer = new StringBuffer(); String isBlueprint = "I"; if (ci.isBlueprint()) { isBlueprint = "B"; } buffer.append(ci.getAlias() + ":" + isBlueprint); buffer.append("\n"); level++; for (ICi o : ci.getOffsprings()) { for (int i = 0; i < level; i++) { buffer.append(" "); } buffer.append(dumpOffsprings(o, level)); } return (buffer.toString()); } public void testDeleteReferences() { ICi target = testUtils.createTemplate(this.ciRoot, "Target"); ICi source = testUtils.createTemplate(this.ciRoot, "Source"); IAttribute a = testUtils.newAttribute(source, "toTarget", target, this.ciRelationRoot, 1, 1); // Create instances ICi t1 = testUtils.createInstance(target, "T1"); ICi s1 = testUtils.createInstance(source, "S1"); testUtils.setValue(s1, "toTarget", t1); System.out.println(s1.toString()); List<IAttribute> attrs = s1.getAttributesWithAlias("toTarget"); for (IAttribute attr : attrs) { BasicAttribute ba = (BasicAttribute)attr; System.out.println("ValueAsLong=" + ba.getValueAsLong()); System.out.println("ValueAsString=" + ba.getValueAsString()); } testUtils.destroyCi(t1); attrs = s1.getAttributesWithAlias("toTarget"); for (IAttribute attr : attrs) { BasicAttribute ba = (BasicAttribute)attr; System.out.println("ValueAsLong=" + ba.getValueAsLong()); System.out.println("ValueAsString=" + ba.getValueAsString()); } System.out.println(s1.toString()); //System.exit(-1); } public void testGUICreateTemplate() { List<IAttribute> rootIcons = this.ciRoot.getAttributesWithAlias("icon"); Assert.assertEquals(1, rootIcons.size()); IAttribute rootIcon = rootIcons.get(0); ICcb ccb = (ICcb) session.getService(ICcb.class); { // Update root icon. ICmdbTransaction tx = ccb.getTx(session); { IAttributeModifiable aMod = tx.getAttributeTemplate(rootIcon); aMod.setValue(SimpleTypeFactory.STRING.parseString("resource")); } ITicket ticket = ccb.submitTx(tx); IRfcResult result = ccb.waitForTx(ticket); Assert.assertEquals(null, result.getRejectCause()); } { // Create an empty instance. ICmdbTransaction tx = ccb.getTx(session); ICiModifiable instance = null; { ICiModifiable rootTemplate = tx.getTemplate(this.ciRoot); instance = rootTemplate.createOffspring(); instance.setAlias("Testing"); instance.setIsBlueprint(false); } ITicket ticket = ccb.submitTx(tx); IRfcResult result = ccb.waitForTx(ticket); Assert.assertEquals(null, result.getRejectCause()); } // Reload Testing CI. ICi test = this.testUtils.findAlias("Testing"); Assert.assertNotNull(test); List<IAttribute> icons = test.getAttributesWithAlias("icon"); Assert.assertEquals(1, icons.size()); IAttribute icon = icons.get(0); { ICmdbTransaction tx = ccb.getTx(session); ICiModifiable instance = null; { instance = tx.getTemplate(test); // Set icon. IAttributeModifiable aMod = tx.getAttributeTemplate(icon); aMod.setValue(SimpleTypeFactory.STRING.parseString("resource")); // Convert to template. instance.setIsBlueprint(true); } ITicket ticket = ccb.submitTx(tx); IRfcResult result = ccb.waitForTx(ticket); Assert.assertEquals(null, result.getRejectCause()); } } public void testGetAllComplexTypes() { IModelService model = (IModelService)this.session.getService(IModelService.class); Set<IType> allTypes = model.getAllComplexTypes(null); for (IType type : allTypes) { System.out.println("\t" + type.getDisplayName() + ":" + type.getClass().getSimpleName()); } } public void testAttributeDisplayNameExpression() { OnecmdbTestUtils testUtils = new OnecmdbTestUtils(this.session); ICi test = testUtils.createTemplate(this.ciRoot, "Test"); IAttribute a = testUtils.newAttribute(test, "name", SimpleTypeFactory.STRING, null, 1, 1); ICcb ccb = (ICcb) session.getService(ICcb.class); // Create a Blueprint that defines one IP Address. ICmdbTransaction tx = ccb.getTx(session); { IAttributeModifiable aTemplate = tx.getAttributeTemplate(a); aTemplate.setDisplayNameExpression("Name is the one to change"); } ITicket ticket = ccb.submitTx(tx); IRfcResult result = ccb.waitForTx(ticket); Assert.assertEquals(null, result.getRejectCause()); ICi inst = testUtils.createInstance(test, "test-1"); IAttribute iA = inst.getAttributesWithAlias("name").get(0); Assert.assertEquals("Name is the one to change", iA.getDisplayName()); a = test.getAttributesWithAlias("name").get(0); Assert.assertEquals("Name is the one to change", a.getDisplayName()); } public void testGetOffspringsTypes() { OnecmdbTestUtils testUtils = new OnecmdbTestUtils(this.session); ICi parent = testUtils.createTemplate(this.ciRoot, "Parent"); ICi child1 = testUtils.createTemplate(parent, "Child1"); ICi child2 = testUtils.createTemplate(parent, "Child2"); ICi childI1 = testUtils.createInstance(child1, "IChild1"); ICi childI2 = testUtils.createInstance(child2, "IChild2"); Set<IType> set = parent.getAllOffspringTypes(); Assert.assertEquals(2, set.size()); } public void testGenerateXml() { // OneCmdb Provider. IModelService model = (IModelService) session.getService(IModelService.class); OneCmdbBeanProvider onecmdbProvider = new OneCmdbBeanProvider(); onecmdbProvider.setModelService(model); // Generate Xml file. XmlGenerator gen = new XmlGenerator(); gen.setOutput("testGenerateModel.xml"); gen.setBeans(onecmdbProvider.getBeans()); try { gen.process(); } catch (IOException e) { e.printStackTrace(); fail(e.toString()); } // Read Xml back. XmlParser fileProvider = new XmlParser(); try { fileProvider.setURL(new File("testGenerateModel.xml").toURL().toExternalForm()); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); fail(e.toString()); } // Validate that we don't have any empty references { BeanScope scope = new BeanScope(); scope.setBeanProvider(fileProvider); scope.setValidation(true); scope.process(); // Other this to ask the scope for, used to verify. scope.getDuplicatedBeans(); scope.getReposiotryBeanUsed(); scope.getSimpleTypesUsed(); for (String unresolved : scope.getUnresolvedAliases()) { System.out.println("Unresolved alias:" + unresolved); } Assert.assertEquals(0, scope.getUnresolvedAliases().size()); } { // Compare two provides, and generate RFC for the diff. // Will not support delete. // TODO: rename BeanScope to something else. BeanScope scope = new BeanScope(); scope.setBeanProvider(fileProvider); scope.setRemoteBeanProvider(onecmdbProvider); scope.process(); List<IRFC> list = scope.getRFCs(); Assert.assertEquals(0, list.size()); } } public void testDisplayNameInheritange() { Assert.assertNotNull(ciRoot); OnecmdbTestUtils utils = new OnecmdbTestUtils(this.session); String path = this.getClass().getPackage().getName().replace('.', '/'); try { utils.importXml("res:" + path + "/DisplayNameInherite.xml"); } catch (Throwable e) { // TODO Auto-generated catch block e.printStackTrace(); fail("" + e); } ICi item = utils.findAlias("Item"); Assert.assertNotNull(item); ICi child1 = utils.findAlias("Child1"); Assert.assertNotNull(child1); ICi child2 = utils.findAlias("Child2"); Assert.assertNotNull(child2); ICi child3 = utils.findAlias("Child3"); Assert.assertNotNull(child3); System.out.println(utils.dumpOffsprings(item,0)); Assert.assertEquals("Item.Category/Item", item.getDisplayName()); Assert.assertEquals("Child1.Category/Child1", child1.getDisplayName()); Assert.assertEquals("Child1.Category/Child2", child2.getDisplayName()); Assert.assertEquals("Child1.Category/Child3", child3.getDisplayName()); } public void testDescriptionInheritage() { OnecmdbTestUtils utils = new OnecmdbTestUtils(this.session); ICi ci = utils.createTemplate(ciRoot, "Test"); IAttribute a = utils.newAttribute(ci, "a1", SimpleTypeFactory.STRING, null, 1, 1); a = (IAttribute) utils.setDescription(a, "My description"); Assert.assertEquals("My description", a.getDescription()); ICi child = utils.createTemplate(ci, "Child1"); List<IAttribute> list = child.getAttributesWithAlias("a1"); Assert.assertEquals(1, list.size()); IAttribute cA = list.get(0); Assert.assertEquals("My description", cA.getDescription()); } public void testDestoryUsedType() { } public void testDestroyUntilMinOccursAttribute() { OnecmdbTestUtils utils = new OnecmdbTestUtils(this.session); ICi ci = utils.createTemplate(ciRoot, "CI1"); IAttribute a = utils.newAttribute(ci, "a1", SimpleTypeFactory.STRING, null, 1, 3); List<IAttribute> attributes = ci.getAttributesWithAlias("a1"); Assert.assertEquals(1, attributes.size()); ICi instance = utils.createInstance(ci, "instance1"); attributes = instance.getAttributesWithAlias("a1"); Assert.assertEquals(1, attributes.size()); IAttribute iAttribute = attributes.get(0); // Try to destory attribute on instance, should fail. utils.destroyCi(iAttribute, true); utils.addAttribute(instance, "a1"); attributes = instance.getAttributesWithAlias("a1"); Assert.assertEquals(2, attributes.size()); utils.destroyCi(iAttribute); attributes = instance.getAttributesWithAlias("a1"); Assert.assertEquals(1, attributes.size()); } public void testDestroyAttribute() { OnecmdbTestUtils utils = new OnecmdbTestUtils(this.session); ICi ci = utils.createTemplate(ciRoot, "CI1"); IAttribute a = utils.newAttribute(ci, "a1", SimpleTypeFactory.STRING, null, 1, 1); List<IAttribute> attributes = ci.getAttributesWithAlias("a1"); Assert.assertEquals(1, attributes.size()); testUtils.destroyCi(a); attributes = ci.getAttributesWithAlias("a1"); Assert.assertEquals(0, attributes.size()); a = utils.newAttribute(ci, "a1", SimpleTypeFactory.STRING, null, 1, 1); attributes = ci.getAttributesWithAlias("a1"); Assert.assertEquals(1, attributes.size()); ICi instance = utils.createInstance(ci, "instance1"); attributes = instance.getAttributesWithAlias("a1"); Assert.assertEquals(1, attributes.size()); IAttribute iAttribute = attributes.get(0); // Try to destory attribute on instance, should fail. utils.destroyCi(iAttribute, true); attributes = ci.getAttributesWithAlias("a1"); Assert.assertEquals(1, attributes.size()); attributes = instance.getAttributesWithAlias("a1"); Assert.assertEquals(1, attributes.size()); // Try to destory attribute on instance, should fail. utils.destroyCi(a); attributes = ci.getAttributesWithAlias("a1"); Assert.assertEquals(0, attributes.size()); attributes = instance.getAttributesWithAlias("a1"); Assert.assertEquals(0, attributes.size()); } public void testRelinkReference() { OnecmdbTestUtils utils = new OnecmdbTestUtils(this.session); // Create reference type ICi refTp1 = utils.createTemplate(ciRelationRoot, "refT1"); // Create two templates. ICi tp1 = utils.createTemplate(ciRoot, "TP1"); ICi tp2 = utils.createTemplate(ciRoot, "TP2"); IAttribute a = utils.newAttribute(tp1, "refToTp2", tp2, refTp1, 1, 1); utils.setValue(a, (IValue)tp2, false); Assert.assertEquals(1, refTp1.getOffsprings().size()); utils.setValue(a, (IValue)tp2, false); Assert.assertEquals(1, refTp1.getOffsprings().size()); } public void testReferences() { OnecmdbTestUtils utils = new OnecmdbTestUtils(this.session); // Create reference type ICi refTp1 = utils.createTemplate(ciRelationRoot, "refT1"); // Create two templates. ICi tp1 = utils.createTemplate(ciRoot, "TP1"); ICi tp2 = utils.createTemplate(ciRoot, "TP2"); IAttribute a = utils.newAttribute(tp1, "refToTp2", tp2, refTp1, 1, 1); utils.setValue(a, (IValue)tp2, false); IReferenceService refSvc = (IReferenceService)this.session.getService(IReferenceService.class); Set<IReference> refs = refSvc.getReferrers(tp2); Assert.assertEquals(1, refs.size()); IReference ref = refs.iterator().next(); Assert.assertNotNull(ref); ICi target = ref.getTarget(); Assert.assertEquals(tp2, target); Set<ICi> sources = ref.getSourceCis(); Assert.assertEquals(1, sources.size()); ICi source = sources.iterator().next(); Assert.assertNotNull(source); Assert.assertEquals(tp1, source); Set<IAttribute> sourceAtts = ref.getSourceAttributes(); Assert.assertEquals(1, sourceAtts.size()); IAttribute sourceAtt = sourceAtts.iterator().next(); Assert.assertNotNull(sourceAtt); Assert.assertEquals(a, sourceAtt); } public void testComplexReferences() { // Create a target template ICi target = testUtils.createTemplate(ciRoot, "Target"); // Create a target instance. ICi targetInstance = testUtils.createInstance(target, "Target-instance"); // Create a 'direct' source template. ICi sourceDirectLink = testUtils.createTemplate(ciRoot, "Direct-Source"); // Add link attribute to source template. testUtils.newAttribute(sourceDirectLink, "reference", target, null, 1, 1); // Create a source instance. ICi sourceDI1 = testUtils.createInstance(sourceDirectLink, "Direct-source-instance"); // Connect the source attribute to the target instance. testUtils.setValue(sourceDI1, "reference", targetInstance); // Validate the 'direct' link. IValue value = testUtils.getValue(sourceDI1, "reference"); Assert.assertEquals(targetInstance, value); // Create a 'in-direct' source template. ICi sourceRefLink = testUtils.createTemplate(ciRoot, "REFERNCE_LINK"); testUtils.newAttribute(sourceRefLink, "reference", target, ciRelationRoot, 1, 1); // Create the 'in-direct' source instance. ICi sourceRefI1 = testUtils.createInstance(sourceRefLink, "Refernce_link_instance"); testUtils.setValue(sourceRefI1, "reference", targetInstance); // Validate value. IValue value2 = testUtils.getValue(sourceRefI1, "reference"); Assert.assertEquals(targetInstance, value2); // Get the reference service. IReferenceService refService = (IReferenceService) session .getService(IReferenceService.class); // Validate that the target has two references. Set<ICi> cis = refService.getOriginCiReferrers(targetInstance); Assert.assertEquals(2, cis.size()); for (ICi ci : cis) { if (ci.equals(sourceRefI1)) { continue; } if (ci.equals(sourceDI1)) { continue; } Assert.assertEquals("", targetInstance.getAlias() + " is has not correct referred " + ci.toString()); } } public void testUniqueAliasName() { String alias = "ALIASNAME"; ICi ci = testUtils.createTemplate(ciRoot, "ALIASNAME"); ICcb ccb = (ICcb) session.getService(ICcb.class); ICi shouldFail = testUtils.createTemplate(ciRoot, "ALIASNAME", true); Assert.assertEquals(null, shouldFail); // Set alias with space // Create new with same alias name. shouldFail = testUtils.createTemplate(ciRoot, "alias with space", true); Assert.assertEquals(null, shouldFail); // Set alias with no letter first char // Create new with same alias name. shouldFail = testUtils.createTemplate(ciRoot, "1alias", true); Assert.assertEquals(null, shouldFail); // Set alias with no letter first char // Create new with same alias name. shouldFail = testUtils.createTemplate(ciRoot, "#alias", true); Assert.assertEquals(null, shouldFail); // Create new with alias as alias name. ICi ok = testUtils.createTemplate(ciRoot, "alias", false); Assert.assertNotNull(ok); } public void testInheriteAttribuite() { ICi tp1 = testUtils.createTemplate(ciRoot, "TP1"); IAttribute a = testUtils.newAttribute(tp1, "a1", SimpleTypeFactory.STRING, null, 1,1); ICi ip1 = testUtils.createInstance(tp1, null); List<IAttribute> list = ip1.getAttributesWithAlias("a1"); Assert.assertEquals(1, list.size()); IAttribute na = list.get(0); Assert.assertNull(na.getValue()); testUtils.setValue(a, a.getValueType().parseString("Testing")); list = ip1.getAttributesWithAlias("a1"); Assert.assertEquals(1, list.size()); na = list.get(0); Assert.assertNotNull(na.getValue()); Assert.assertEquals("Testing", na.getValue().getAsString()); ICi tp2 = testUtils.createTemplate(tp1, "TP2"); list = tp2.getAttributesWithAlias("a1"); Assert.assertEquals(1, list.size()); na = list.get(0); Assert.assertNotNull(na.getValue()); Assert.assertEquals("Testing", na.getValue().getAsString()); } public void testFindAllCis() { IModelService model = (IModelService) session.getService(IModelService.class); Set<ICi> all1 = model.getAllCis(); Set<IType> types1 = model.getAllComplexTypes(null); Set<ICi> templates1 = model.getAllTemplates(null); ICi tp1 = testUtils.createTemplate(ciRoot, "TP1"); testUtils.createInstance(tp1, null); Set<ICi> all2 = model.getAllCis(); Set<IType> types2 = model.getAllComplexTypes(null); Set<ICi> templates2 = model.getAllTemplates(null); // One template and one instance. Assert.assertEquals(2, all2.size() - all1.size()); Assert.assertEquals(1, types2.size() - types1.size()); Assert.assertEquals(1, templates2.size() - templates1.size()); } public void testAddableAttribute() { // Test with unlimit.. { ICi tp1 = testUtils.createTemplate(ciRoot, "TP1"); testUtils.newAttribute(tp1, "a1", SimpleTypeFactory.STRING, null, 0, -1); ICi i1 = testUtils.createInstance(tp1, null); List<IAttribute> addable = i1.getAddableAttributes(); Assert.assertEquals(1, addable.size()); Assert.assertEquals("a1", addable.get(0).getAlias()); // Add alot of attributes. for (int i = 0; i < 100; i++) { testUtils.addAttribute(i1, "a1"); } testUtils.addAttribute(i1, "a1"); addable = i1.getAddableAttributes(); Assert.assertEquals(1, addable.size()); Assert.assertEquals("a1", addable.get(0).getAlias()); } // Test with limit.. { ICi tp2 = testUtils.createTemplate(ciRoot, "TP2"); testUtils.newAttribute(tp2, "a1", SimpleTypeFactory.STRING, null, 0, 4); ICi i1 = testUtils.createInstance(tp2, null); List<IAttribute> addable = i1.getAddableAttributes(); Assert.assertEquals(1, addable.size()); Assert.assertEquals("a1", addable.get(0).getAlias()); testUtils.addAttribute(i1, "a1"); addable = i1.getAddableAttributes(); Assert.assertEquals(1, addable.size()); Assert.assertEquals("a1", addable.get(0).getAlias()); testUtils.addAttribute(i1, "a1"); testUtils.addAttribute(i1, "a1"); testUtils.addAttribute(i1, "a1"); addable = i1.getAddableAttributes(); Assert.assertEquals(0, addable.size()); } } public void testAttribute() { IModelService cisrvc = (IModelService) session .getService(IModelService.class); ICi tp1 = testUtils.createTemplate(ciRoot, "TP1"); ICi i1 = testUtils.createInstance(tp1, null); IAttribute tpa1 = testUtils.newAttribute(tp1, "a1", SimpleTypeFactory.STRING, null, 1, 1); List<IAttribute> iaList = i1.getAttributesWithAlias("a1"); Assert.assertNotNull(iaList); Assert.assertEquals(1, iaList.size()); ICi parent = tp1; for (int i = 0; i < 10; i++) { parent = testUtils.createTemplate(parent, "TP1" + i); } IAttribute tpa2 = testUtils.newAttribute(tp1, "a2", SimpleTypeFactory.STRING, null, 1, 1); // Now all should have a2... validateAttribute("a1", tp1); validateAttribute("a2", tp1); } private void validateAttribute(String aName, ICi ci) { List<IAttribute> iaList = ci.getAttributesWithAlias(aName); System.out.println("Validate attr<" + aName+ "> : " + ci.toString()); Assert.assertNotNull(iaList); Assert.assertEquals(1, iaList.size()); for (ICi offspring : ci.getOffsprings()) { validateAttribute(aName, offspring); } } public void testDestroy() { IModelService cisrvc = (IModelService) session .getService(IModelService.class); ICi target = testUtils.createTemplate(ciRoot, "CI1"); ICi reloaded = cisrvc.find(target.getId()); assertEquals(target, reloaded); testUtils.destroyCi(target); // Check that it has been removed. ICi destroyedCi = cisrvc.find(target.getId()); assertEquals(null, destroyedCi); } public void testValueSelector() { // Check String Type. IType sType = SimpleTypeFactory.STRING; IValueSelector sSelector = sType.getValueSelector(); Assert.assertEquals(true, sSelector.isInfinite()); ICi bp = testUtils.createTemplate(ciRoot, "BP1"); testUtils.setDisplaynameExpression(bp, "BP ${alias}"); // Create 5 instances, flat. for (int i = 0; i < 5; i++) { testUtils.createInstance(bp, "instance-" + i); } // Convert bp to a type. IType bpType = (IType) bp; IValueSelector selector = bpType.getValueSelector(); // Should not be infinit. Assert.assertEquals(false, selector.isInfinite()); Assert.assertNotNull(selector.getSet()); Assert.assertEquals(5, selector.getSet().size()); ICi bp2 = testUtils.createTemplate(bp, "BP2"); // Should be the same. Assert.assertEquals(5, selector.getSet().size()); for (int i = 0; i < 5; i++) { testUtils.createInstance(bp2, "bp2-instance-" + i); } // Should now be 10 Assert.assertEquals(10, selector.getSet().size()); IType bp2Type = (IType) bp2; IValueSelector selector2 = bp2Type.getValueSelector(); // Should not be infinit. Assert.assertEquals(false, selector2.isInfinite()); Assert.assertNotNull(selector2.getSet()); Assert.assertEquals(5, selector2.getSet().size()); } public void testDisplayName() { Assert.assertNotNull(ciRoot); ICi target = testUtils.createTemplate(ciRoot, "TARGET"); testUtils.setDisplaynameExpression(target, "TARGET"); ICi targetI1 = testUtils.createInstance(target, null); IAttribute ta1 = testUtils.newAttribute(targetI1, "ta1", SimpleTypeFactory.STRING, null, 1, 1); testUtils.setValue(ta1, SimpleTypeFactory.STRING.parseString("T_V1")); ICi ci = testUtils.createTemplate(ciRoot, null); IAttribute ia1 = testUtils.newAttribute(ci, "a1", SimpleTypeFactory.STRING, null, 1, 1); IAttribute ia2 = testUtils.newAttribute(ci, "a2", SimpleTypeFactory.STRING, null, 1, 1); IAttribute complex = testUtils.newAttribute(ci, "complex", target, null, 1, 1); testUtils.setValue(ia1, SimpleTypeFactory.STRING.parseString("V1")); testUtils.setValue(ia2, SimpleTypeFactory.STRING.parseString("V2")); testUtils.setValue(complex, targetI1); ci = testUtils.setDisplaynameExpression(ci, "PLAIN"); Assert.assertEquals("PLAIN", ci.getDisplayName()); ci = testUtils.setDisplaynameExpression(ci, "${a1}"); Assert.assertEquals("V1", ci.getDisplayName()); ci = testUtils.setDisplaynameExpression(ci, "--${a1}--${a2}--"); Assert.assertEquals("--V1--V2--", ci.getDisplayName()); ci = testUtils.setDisplaynameExpression(ci, "--${a1}--${a2}--${complex}"); Assert.assertEquals("--V1--V2--TARGET", ci.getDisplayName()); targetI1 = testUtils.setDisplaynameExpression(targetI1, "TARGET ${ta1}"); Assert.assertEquals("--V1--V2--TARGET T_V1", ci.getDisplayName()); /* * // test display name ConfigurationItem ci = (ConfigurationItem) * ciRoot; ci.setDisplayName("name"); Assert.assertEquals("name", * ciRoot.getDisplayName()); * * ci.setDisplayName("${name}"); Assert.assertEquals("ROOT", * ciRoot.getDisplayName()); * * ci.setDisplayName("--${name}--"); Assert.assertEquals("--ROOT--", * ciRoot.getDisplayName()); */ } }