package org.jboss.as.controller.transform;
import java.util.List;
import org.jboss.as.controller.AttributeDefinition;
import org.jboss.as.controller.PathAddress;
import org.jboss.as.controller.PathElement;
import org.jboss.as.controller.ProcessType;
import org.jboss.as.controller.ResourceDefinition;
import org.jboss.as.controller.registry.LegacyResourceDefinition;
import org.jboss.as.controller.registry.ManagementResourceRegistration;
import org.jboss.dmr.ModelNode;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
/**
* @author <a href="mailto:tomaz.cerar@redhat.com">Tomaz Cerar</a>
*/
public class ModelDescriptionTestCase {
private static ManagementResourceRegistration registration;
@BeforeClass
public static void setup() {
registration = ManagementResourceRegistration.Factory.forProcessType(ProcessType.EMBEDDED_SERVER).createRegistration(RootSubsystemResource.INSTANCE);
registration.registerSubModel(SessionDefinition.INSTANCE);
}
@AfterClass
public static void tearDown() {
registration = null;
}
@Test
public void testManagementResourceSerialization() {
ModelNode model = SubsystemDescriptionDump.readFullModelDescription(PathAddress.EMPTY_ADDRESS, registration);
ResourceDefinition definition = new LegacyResourceDefinition(model);
ManagementResourceRegistration loaded = ManagementResourceRegistration.Factory.forProcessType(ProcessType.EMBEDDED_SERVER).createRegistration(definition);
validate(registration, loaded);
List<TransformRule> rules1 = ModelMatcher.getRules(registration, loaded);
List<TransformRule> rules2 = ModelMatcher.getRules(loaded, loaded);
Assert.assertEquals(rules1, rules2);
}
private static void validate(ManagementResourceRegistration orig, ManagementResourceRegistration loaded) {
Assert.assertEquals(orig.getChildAddresses(PathAddress.EMPTY_ADDRESS).size(), loaded.getChildAddresses(PathAddress.EMPTY_ADDRESS).size());
Assert.assertEquals(orig.getAttributeNames(PathAddress.EMPTY_ADDRESS).size(), loaded.getAttributeNames(PathAddress.EMPTY_ADDRESS).size());
for (String name : orig.getAttributeNames(PathAddress.EMPTY_ADDRESS)) {
AttributeDefinition attr1 = orig.getAttributeAccess(PathAddress.EMPTY_ADDRESS, name).getAttributeDefinition();
AttributeDefinition attr2 = loaded.getAttributeAccess(PathAddress.EMPTY_ADDRESS, name).getAttributeDefinition();
Assert.assertEquals(1d, SimilarityIndex.compareAttributes(attr1, attr2), 0.0d);
}
for (PathElement pe : orig.getChildAddresses(PathAddress.EMPTY_ADDRESS)) {
ManagementResourceRegistration origSub = orig.getSubModel(PathAddress.pathAddress(pe));
ManagementResourceRegistration loadedSub = loaded.getSubModel(PathAddress.pathAddress(pe));
validate(origSub, loadedSub);
}
}
@Test
public void testSimilarity() {
double factor = SimilarityIndex.compareStrings("test", "testa");
double factor2 = SimilarityIndex.compareStrings("modelController", "model-controller");
}
}