Search in sources :

Example 1 with ResourceObjectClassDefinition

use of com.evolveum.midpoint.schema.processor.ResourceObjectClassDefinition in project midpoint by Evolveum.

the class TestImportRecon method test001SanityAzure.

@Test
public void test001SanityAzure() throws Exception {
    displayDumpable("Dummy resource azure", dummyResourceAzure);
    // WHEN
    ResourceSchema resourceSchemaAzure = ResourceSchemaFactory.getRawSchema(resourceDummyAzureType);
    displayDumpable("Dummy azure resource schema", resourceSchemaAzure);
    // THEN
    dummyResourceCtlAzure.assertDummyResourceSchemaSanityExtended(resourceSchemaAzure);
    ResourceObjectClassDefinition orgOcDef = resourceSchemaAzure.findObjectClassDefinition(dummyResourceCtlAzure.getOrgObjectClassQName());
    assertNotNull("No org object class def in azure resource schema", orgOcDef);
}
Also used : ResourceObjectClassDefinition(com.evolveum.midpoint.schema.processor.ResourceObjectClassDefinition) ResourceSchema(com.evolveum.midpoint.schema.processor.ResourceSchema) Test(org.testng.annotations.Test) AbstractInitializedModelIntegrationTest(com.evolveum.midpoint.model.intest.AbstractInitializedModelIntegrationTest)

Example 2 with ResourceObjectClassDefinition

use of com.evolveum.midpoint.schema.processor.ResourceObjectClassDefinition in project midpoint by Evolveum.

the class TestImportRecon method test002SanityAzureRefined.

@Test
public void test002SanityAzureRefined() throws Exception {
    // WHEN
    ResourceSchema refinedSchemaAzure = ResourceSchemaFactory.getCompleteSchema(resourceDummyAzureType);
    displayDumpable("Dummy azure refined schema", refinedSchemaAzure);
    // THEN
    dummyResourceCtlAzure.assertRefinedSchemaSanity(refinedSchemaAzure);
    ResourceObjectClassDefinition orgOcDef = refinedSchemaAzure.findObjectClassDefinition(dummyResourceCtlAzure.getOrgObjectClassQName());
    assertNotNull("No org object class def in azure refined schema", orgOcDef);
}
Also used : ResourceObjectClassDefinition(com.evolveum.midpoint.schema.processor.ResourceObjectClassDefinition) ResourceSchema(com.evolveum.midpoint.schema.processor.ResourceSchema) Test(org.testng.annotations.Test) AbstractInitializedModelIntegrationTest(com.evolveum.midpoint.model.intest.AbstractInitializedModelIntegrationTest)

Example 3 with ResourceObjectClassDefinition

use of com.evolveum.midpoint.schema.processor.ResourceObjectClassDefinition in project midpoint by Evolveum.

the class TestUcfDummyMulti method test210TwoBlockingSearches.

@Test
public void test210TwoBlockingSearches() throws Exception {
    // GIVEN
    UcfExecutionContext ctx = createExecutionContext();
    final ResourceObjectClassDefinition accountDefinition = resourceSchema.findObjectClassDefinitionRequired(ACCOUNT_OBJECT_CLASS_NAME);
    // Determine object class from the schema
    OperationResult result1 = createOperationResult();
    final List<PrismObject<ShadowType>> searchResults1 = new ArrayList<>();
    final ObjectHandler handler1 = (ucfObject, result) -> {
        checkUcfShadow(ucfObject.getResourceObject(), accountDefinition);
        searchResults1.add(ucfObject.getResourceObject());
        return true;
    };
    OperationResult result2 = createOperationResult();
    final List<PrismObject<ShadowType>> searchResults2 = new ArrayList<>();
    final ObjectHandler handler2 = (ucfObject, result) -> {
        checkUcfShadow(ucfObject.getResourceObject(), accountDefinition);
        searchResults2.add(ucfObject.getResourceObject());
        return true;
    };
    dummyResource.setBlockOperations(true);
    // WHEN
    Thread t1 = new Thread(() -> {
        try {
            cc.search(accountDefinition, null, handler1, null, null, null, null, ctx, result1);
        } catch (CommunicationException | GenericFrameworkException | SchemaException | SecurityViolationException | ObjectNotFoundException e) {
            logger.error("Error in the search: {}", e.getMessage(), e);
        }
    });
    t1.setName("search1");
    t1.start();
    // Give the new thread a chance to get blocked
    Thread.sleep(500);
    ConnectorOperationalStatus opStat = cc.getOperationalStatus();
    displayDumpable("stats (blocked 1)", opStat);
    assertEquals("Wrong pool active", (Integer) 1, opStat.getPoolStatusNumActive());
    assertEquals("Wrong pool active", (Integer) 0, opStat.getPoolStatusNumIdle());
    assertEquals("Unexpected number of search results", 0, searchResults1.size());
    Thread t2 = new Thread(() -> {
        try {
            cc.search(accountDefinition, null, handler2, null, null, null, null, ctx, result2);
        } catch (CommunicationException | GenericFrameworkException | SchemaException | SecurityViolationException | ObjectNotFoundException e) {
            logger.error("Error in the search: {}", e.getMessage(), e);
        }
    });
    t2.setName("search2");
    t2.start();
    // Give the new thread a chance to get blocked
    Thread.sleep(500);
    opStat = cc.getOperationalStatus();
    displayDumpable("stats (blocked 2)", opStat);
    assertEquals("Wrong pool active", (Integer) 2, opStat.getPoolStatusNumActive());
    assertEquals("Wrong pool active", (Integer) 0, opStat.getPoolStatusNumIdle());
    assertEquals("Unexpected number of search results", 0, searchResults1.size());
    dummyResource.unblockAll();
    t1.join();
    t2.join();
    dummyResource.setBlockOperations(false);
    // THEN
    assertEquals("Unexpected number of search results 1", 1, searchResults1.size());
    assertEquals("Unexpected number of search results 2", 1, searchResults2.size());
    opStat = cc.getOperationalStatus();
    displayDumpable("stats (final)", opStat);
    assertEquals("Wrong pool active", (Integer) 0, opStat.getPoolStatusNumActive());
    assertEquals("Wrong pool active", (Integer) 2, opStat.getPoolStatusNumIdle());
    PrismObject<ShadowType> searchResult1 = searchResults1.get(0);
    displayDumpable("Search result 1", searchResult1);
    PrismObject<ShadowType> searchResult2 = searchResults2.get(0);
    displayDumpable("Search result 2", searchResult2);
}
Also used : ResourceObjectClassDefinition(com.evolveum.midpoint.schema.processor.ResourceObjectClassDefinition) AssertJUnit(org.testng.AssertJUnit) com.evolveum.midpoint.xml.ns._public.common.common_3(com.evolveum.midpoint.xml.ns._public.common.common_3) SchemaConstants(com.evolveum.midpoint.schema.constants.SchemaConstants) ResourceAttributeContainer(com.evolveum.midpoint.schema.processor.ResourceAttributeContainer) OperationResult(com.evolveum.midpoint.schema.result.OperationResult) SchemaException(com.evolveum.midpoint.util.exception.SchemaException) Test(org.testng.annotations.Test) SchemaRegistry(com.evolveum.midpoint.prism.schema.SchemaRegistry) ObjectHandler(com.evolveum.midpoint.provisioning.ucf.api.ObjectHandler) ACCOUNT_OBJECT_CLASS_NAME(com.evolveum.midpoint.schema.util.SchemaTestConstants.ACCOUNT_OBJECT_CLASS_NAME) ArrayList(java.util.ArrayList) ResourceAttribute(com.evolveum.midpoint.schema.processor.ResourceAttribute) SecurityViolationException(com.evolveum.midpoint.util.exception.SecurityViolationException) PrismTestUtil(com.evolveum.midpoint.prism.util.PrismTestUtil) ResourceObjectClassDefinition(com.evolveum.midpoint.schema.processor.ResourceObjectClassDefinition) Files(com.google.common.io.Files) ConnectorOperationalStatus(com.evolveum.midpoint.schema.statistics.ConnectorOperationalStatus) TestUtil(com.evolveum.midpoint.test.util.TestUtil) PrismContainerDefinition(com.evolveum.midpoint.prism.PrismContainerDefinition) DummyAccount(com.evolveum.icf.dummy.resource.DummyAccount) ObjectNotFoundException(com.evolveum.midpoint.util.exception.ObjectNotFoundException) Collection(java.util.Collection) Set(java.util.Set) IOException(java.io.IOException) ResourceTypeUtil(com.evolveum.midpoint.schema.util.ResourceTypeUtil) PrismObject(com.evolveum.midpoint.prism.PrismObject) File(java.io.File) GenericFrameworkException(com.evolveum.midpoint.provisioning.ucf.api.GenericFrameworkException) TimeUnit(java.util.concurrent.TimeUnit) CountDownLatch(java.util.concurrent.CountDownLatch) List(java.util.List) PrismContainerValue(com.evolveum.midpoint.prism.PrismContainerValue) ShadowUtil(com.evolveum.midpoint.schema.util.ShadowUtil) ContextConfiguration(org.springframework.test.context.ContextConfiguration) CommunicationException(com.evolveum.midpoint.util.exception.CommunicationException) UcfExecutionContext(com.evolveum.midpoint.provisioning.ucf.api.UcfExecutionContext) PrismSchema(com.evolveum.midpoint.prism.schema.PrismSchema) SchemaException(com.evolveum.midpoint.util.exception.SchemaException) CommunicationException(com.evolveum.midpoint.util.exception.CommunicationException) GenericFrameworkException(com.evolveum.midpoint.provisioning.ucf.api.GenericFrameworkException) SecurityViolationException(com.evolveum.midpoint.util.exception.SecurityViolationException) ArrayList(java.util.ArrayList) OperationResult(com.evolveum.midpoint.schema.result.OperationResult) PrismObject(com.evolveum.midpoint.prism.PrismObject) ObjectHandler(com.evolveum.midpoint.provisioning.ucf.api.ObjectHandler) ObjectNotFoundException(com.evolveum.midpoint.util.exception.ObjectNotFoundException) ConnectorOperationalStatus(com.evolveum.midpoint.schema.statistics.ConnectorOperationalStatus) UcfExecutionContext(com.evolveum.midpoint.provisioning.ucf.api.UcfExecutionContext) Test(org.testng.annotations.Test)

Example 4 with ResourceObjectClassDefinition

use of com.evolveum.midpoint.schema.processor.ResourceObjectClassDefinition in project midpoint by Evolveum.

the class TestUcfDummyMulti method test110SearchNonBlocking.

@Test
public void test110SearchNonBlocking() throws Exception {
    // GIVEN
    UcfExecutionContext ctx = createExecutionContext();
    final ResourceObjectClassDefinition accountDefinition = resourceSchema.findObjectClassDefinitionRequired(ACCOUNT_OBJECT_CLASS_NAME);
    // Determine object class from the schema
    final List<PrismObject<ShadowType>> searchResults = new ArrayList<>();
    ObjectHandler handler = (ucfObject, result) -> {
        displayDumpable("Search: found", ucfObject);
        checkUcfShadow(ucfObject.getResourceObject(), accountDefinition);
        searchResults.add(ucfObject.getResourceObject());
        return true;
    };
    OperationResult result = createOperationResult();
    // WHEN
    cc.search(accountDefinition, null, handler, null, null, null, null, ctx, result);
    // THEN
    assertEquals("Unexpected number of search results", 1, searchResults.size());
    ConnectorOperationalStatus opStat = cc.getOperationalStatus();
    displayDumpable("stats", opStat);
    assertEquals("Wrong pool active", (Integer) 0, opStat.getPoolStatusNumActive());
    assertEquals("Wrong pool active", (Integer) 1, opStat.getPoolStatusNumIdle());
}
Also used : ResourceObjectClassDefinition(com.evolveum.midpoint.schema.processor.ResourceObjectClassDefinition) AssertJUnit(org.testng.AssertJUnit) com.evolveum.midpoint.xml.ns._public.common.common_3(com.evolveum.midpoint.xml.ns._public.common.common_3) SchemaConstants(com.evolveum.midpoint.schema.constants.SchemaConstants) ResourceAttributeContainer(com.evolveum.midpoint.schema.processor.ResourceAttributeContainer) OperationResult(com.evolveum.midpoint.schema.result.OperationResult) SchemaException(com.evolveum.midpoint.util.exception.SchemaException) Test(org.testng.annotations.Test) SchemaRegistry(com.evolveum.midpoint.prism.schema.SchemaRegistry) ObjectHandler(com.evolveum.midpoint.provisioning.ucf.api.ObjectHandler) ACCOUNT_OBJECT_CLASS_NAME(com.evolveum.midpoint.schema.util.SchemaTestConstants.ACCOUNT_OBJECT_CLASS_NAME) ArrayList(java.util.ArrayList) ResourceAttribute(com.evolveum.midpoint.schema.processor.ResourceAttribute) SecurityViolationException(com.evolveum.midpoint.util.exception.SecurityViolationException) PrismTestUtil(com.evolveum.midpoint.prism.util.PrismTestUtil) ResourceObjectClassDefinition(com.evolveum.midpoint.schema.processor.ResourceObjectClassDefinition) Files(com.google.common.io.Files) ConnectorOperationalStatus(com.evolveum.midpoint.schema.statistics.ConnectorOperationalStatus) TestUtil(com.evolveum.midpoint.test.util.TestUtil) PrismContainerDefinition(com.evolveum.midpoint.prism.PrismContainerDefinition) DummyAccount(com.evolveum.icf.dummy.resource.DummyAccount) ObjectNotFoundException(com.evolveum.midpoint.util.exception.ObjectNotFoundException) Collection(java.util.Collection) Set(java.util.Set) IOException(java.io.IOException) ResourceTypeUtil(com.evolveum.midpoint.schema.util.ResourceTypeUtil) PrismObject(com.evolveum.midpoint.prism.PrismObject) File(java.io.File) GenericFrameworkException(com.evolveum.midpoint.provisioning.ucf.api.GenericFrameworkException) TimeUnit(java.util.concurrent.TimeUnit) CountDownLatch(java.util.concurrent.CountDownLatch) List(java.util.List) PrismContainerValue(com.evolveum.midpoint.prism.PrismContainerValue) ShadowUtil(com.evolveum.midpoint.schema.util.ShadowUtil) ContextConfiguration(org.springframework.test.context.ContextConfiguration) CommunicationException(com.evolveum.midpoint.util.exception.CommunicationException) UcfExecutionContext(com.evolveum.midpoint.provisioning.ucf.api.UcfExecutionContext) PrismSchema(com.evolveum.midpoint.prism.schema.PrismSchema) PrismObject(com.evolveum.midpoint.prism.PrismObject) ObjectHandler(com.evolveum.midpoint.provisioning.ucf.api.ObjectHandler) ArrayList(java.util.ArrayList) OperationResult(com.evolveum.midpoint.schema.result.OperationResult) ConnectorOperationalStatus(com.evolveum.midpoint.schema.statistics.ConnectorOperationalStatus) UcfExecutionContext(com.evolveum.midpoint.provisioning.ucf.api.UcfExecutionContext) Test(org.testng.annotations.Test)

Example 5 with ResourceObjectClassDefinition

use of com.evolveum.midpoint.schema.processor.ResourceObjectClassDefinition in project midpoint by Evolveum.

the class ResourceTypeUtil method validateSchema.

// TODO: maybe later move to ResourceSchema?
public static void validateSchema(ResourceSchema resourceSchema, PrismObject<ResourceType> resource) throws SchemaException {
    Set<QName> objectClassNames = new HashSet<>();
    for (ResourceObjectClassDefinition objectClassDefinition : resourceSchema.getObjectClassDefinitions()) {
        QName typeName = objectClassDefinition.getTypeName();
        if (objectClassNames.contains(typeName)) {
            throw new SchemaException("Duplicate definition of object class " + typeName + " in resource schema of " + resource);
        }
        objectClassNames.add(typeName);
        validateObjectClassDefinition(objectClassDefinition, resource);
    }
}
Also used : ResourceObjectClassDefinition(com.evolveum.midpoint.schema.processor.ResourceObjectClassDefinition) QName(javax.xml.namespace.QName) HashSet(java.util.HashSet)

Aggregations

ResourceObjectClassDefinition (com.evolveum.midpoint.schema.processor.ResourceObjectClassDefinition)11 Test (org.testng.annotations.Test)6 DummyAccount (com.evolveum.icf.dummy.resource.DummyAccount)4 PrismObject (com.evolveum.midpoint.prism.PrismObject)4 ResourceAttributeContainer (com.evolveum.midpoint.schema.processor.ResourceAttributeContainer)4 OperationResult (com.evolveum.midpoint.schema.result.OperationResult)4 PrismContainerDefinition (com.evolveum.midpoint.prism.PrismContainerDefinition)3 PrismContainerValue (com.evolveum.midpoint.prism.PrismContainerValue)3 PrismSchema (com.evolveum.midpoint.prism.schema.PrismSchema)3 SchemaRegistry (com.evolveum.midpoint.prism.schema.SchemaRegistry)3 PrismTestUtil (com.evolveum.midpoint.prism.util.PrismTestUtil)3 GenericFrameworkException (com.evolveum.midpoint.provisioning.ucf.api.GenericFrameworkException)3 ObjectHandler (com.evolveum.midpoint.provisioning.ucf.api.ObjectHandler)3 UcfExecutionContext (com.evolveum.midpoint.provisioning.ucf.api.UcfExecutionContext)3 SchemaConstants (com.evolveum.midpoint.schema.constants.SchemaConstants)3 ResourceAttribute (com.evolveum.midpoint.schema.processor.ResourceAttribute)3 ConnectorOperationalStatus (com.evolveum.midpoint.schema.statistics.ConnectorOperationalStatus)3 ResourceTypeUtil (com.evolveum.midpoint.schema.util.ResourceTypeUtil)3 ACCOUNT_OBJECT_CLASS_NAME (com.evolveum.midpoint.schema.util.SchemaTestConstants.ACCOUNT_OBJECT_CLASS_NAME)3 ShadowUtil (com.evolveum.midpoint.schema.util.ShadowUtil)3