You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2016/03/10 08:40:49 UTC

syncope git commit: Cum grano salis (still struggling with Travis CI failure on VirAttrITCase#issueSYNCOPE453

Repository: syncope
Updated Branches:
  refs/heads/master feaea6915 -> 29928e1e7


Cum grano salis (still struggling with Travis CI failure on VirAttrITCase#issueSYNCOPE453


Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/29928e1e
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/29928e1e
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/29928e1e

Branch: refs/heads/master
Commit: 29928e1e730abbae976e37414679d89fe68fd387
Parents: feaea69
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Thu Mar 10 08:40:42 2016 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Thu Mar 10 08:40:42 2016 +0100

----------------------------------------------------------------------
 .travis.yml                                     |   3 +-
 .../apache/syncope/fit/core/VirAttrITCase.java  | 224 ++++++++++---------
 2 files changed, 115 insertions(+), 112 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/29928e1e/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index 241c951..bd888bd 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -26,7 +26,8 @@ script:
   #invoker.streamLogs: we cannot access to log files through Travis web ui, so display everything in the console
   - mvn --show-version --quiet clean install -Dinvoker.streamLogs=true
 after_failure:
-  - cat fit/core-reference/target/log/* fit/core/reference/target/failsafe-reports/org.apache.syncope.fit.core.VirAttrITCase-output.txt
+  - cat fit/core-reference/target/log/*
+  - cat fit/core/reference/target/failsafe-reports/org.apache.syncope.fit.*-output.txt
 notifications:
   email:
     - dev@syncope.apache.org

http://git-wip-us.apache.org/repos/asf/syncope/blob/29928e1e/fit/core-reference/src/test/java/org/apache/syncope/fit/core/VirAttrITCase.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/VirAttrITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/VirAttrITCase.java
index 3776eea..b67ae4e 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/VirAttrITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/VirAttrITCase.java
@@ -22,7 +22,6 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
 
 import java.util.Locale;
 import java.util.Map;
@@ -31,7 +30,7 @@ import javax.ws.rs.core.Response;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.collections4.Predicate;
 import org.apache.commons.lang3.SerializationUtils;
-import org.apache.syncope.common.lib.patch.GroupPatch;
+import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.patch.PasswordPatch;
 import org.apache.syncope.common.lib.patch.StatusPatch;
 import org.apache.syncope.common.lib.patch.StringPatchItem;
@@ -450,127 +449,130 @@ public class VirAttrITCase extends AbstractITCase {
 
     @Test
     public void issueSYNCOPE453() {
-        final String resourceName = "issueSYNCOPE453-Res-" + getUUIDString();
-        final String groupName = "issueSYNCOPE453-Group-" + getUUIDString();
-
-        // -------------------------------------------
-        // Create a resource ad-hoc
-        // -------------------------------------------
-        ResourceTO resourceTO = new ResourceTO();
-
-        resourceTO.setKey(resourceName);
-        resourceTO.setConnector(107L);
-
-        ProvisionTO provisionTO = new ProvisionTO();
-        provisionTO.setAnyType(AnyTypeKind.USER.name());
-        provisionTO.setObjectClass(ObjectClass.ACCOUNT_NAME);
-        resourceTO.getProvisions().add(provisionTO);
-
-        MappingTO mapping = new MappingTO();
-        provisionTO.setMapping(mapping);
-
-        MappingItemTO item = new MappingItemTO();
-        item.setIntAttrName("aLong");
-        item.setIntMappingType(IntMappingType.UserPlainSchema);
-        item.setExtAttrName("ID");
-        item.setPurpose(MappingPurpose.PROPAGATION);
-        item.setConnObjectKey(true);
-        mapping.setConnObjectKeyItem(item);
-
-        item = new MappingItemTO();
-        item.setExtAttrName("USERNAME");
-        item.setIntAttrName("username");
-        item.setIntMappingType(IntMappingType.Username);
-        item.setPurpose(MappingPurpose.PROPAGATION);
-        mapping.getItems().add(item);
-
-        item = new MappingItemTO();
-        item.setExtAttrName("EMAIL");
-        item.setIntAttrName("rvirtualdata");
-        item.setIntMappingType(IntMappingType.GroupVirtualSchema);
-        item.setPurpose(MappingPurpose.PROPAGATION);
-        mapping.getItems().add(item);
-
-        assertNotNull(getObject(
-                resourceService.create(resourceTO).getLocation(), ResourceService.class, ResourceTO.class));
-        // -------------------------------------------
-
-        // -------------------------------------------
-        // Create a VirAttrITCase ad-hoc
-        // -------------------------------------------
-        GroupTO groupTO = new GroupTO();
-        groupTO.setName(groupName);
-        groupTO.setRealm("/");
-        groupTO.getResources().add(RESOURCE_NAME_LDAP);
-        groupTO = createGroup(groupTO).getAny();
-
-        String rvirtualdata = "ml@group.it";
-
-        int i = 0;
-        int maxit = 5;
-
-        // wait for group propagation on LDAP
-        do {
+        String resourceName = "issueSYNCOPE453-Res-" + getUUIDString();
+        Long groupKey = null;
+        String groupName = "issueSYNCOPE453-Group-" + getUUIDString();
+
+        try {
+            // -------------------------------------------
+            // Create a resource ad-hoc
+            // -------------------------------------------
+            ResourceTO resourceTO = new ResourceTO();
+
+            resourceTO.setKey(resourceName);
+            resourceTO.setConnector(107L);
+
+            ProvisionTO provisionTO = new ProvisionTO();
+            provisionTO.setAnyType(AnyTypeKind.USER.name());
+            provisionTO.setObjectClass(ObjectClass.ACCOUNT_NAME);
+            resourceTO.getProvisions().add(provisionTO);
+
+            MappingTO mapping = new MappingTO();
+            provisionTO.setMapping(mapping);
+
+            MappingItemTO item = new MappingItemTO();
+            item.setIntAttrName("aLong");
+            item.setIntMappingType(IntMappingType.UserPlainSchema);
+            item.setExtAttrName("ID");
+            item.setPurpose(MappingPurpose.PROPAGATION);
+            item.setConnObjectKey(true);
+            mapping.setConnObjectKeyItem(item);
+
+            item = new MappingItemTO();
+            item.setExtAttrName("USERNAME");
+            item.setIntAttrName("username");
+            item.setIntMappingType(IntMappingType.Username);
+            item.setPurpose(MappingPurpose.PROPAGATION);
+            mapping.getItems().add(item);
+
+            item = new MappingItemTO();
+            item.setExtAttrName("EMAIL");
+            item.setIntAttrName("rvirtualdata");
+            item.setIntMappingType(IntMappingType.GroupVirtualSchema);
+            item.setPurpose(MappingPurpose.PROPAGATION);
+            mapping.getItems().add(item);
+
+            assertNotNull(getObject(
+                    resourceService.create(resourceTO).getLocation(), ResourceService.class, ResourceTO.class));
+            // -------------------------------------------
+            // -------------------------------------------
+            // Create a VirAttrITCase ad-hoc
+            // -------------------------------------------
+            VirSchemaTO rvirtualdata;
             try {
-                Thread.sleep(1000);
-            } catch (InterruptedException e) {
-            }
+                rvirtualdata = schemaService.read(SchemaType.VIRTUAL, "rvirtualdata");
+            } catch (SyncopeClientException e) {
+                LOG.warn("rvirtualdata not found, re-creating", e);
 
-            GroupPatch patch = new GroupPatch();
-            patch.setKey(groupTO.getKey());
-            rvirtualdata = i + rvirtualdata;
-            patch.getVirAttrs().add(attrTO("rvirtualdata", rvirtualdata));
+                rvirtualdata = new VirSchemaTO();
+                rvirtualdata.setKey("rvirtualdata");
+                rvirtualdata.setExtAttrName("businessCategory");
+                rvirtualdata.setProvision(20);
 
-            LOG.info("Updating " + groupName + " with " + rvirtualdata);
-            groupTO = updateGroup(patch).getAny();
-            assertNotNull(groupTO);
-            LOG.info("Updated " + groupName + " now has virAttrs " + groupTO.getVirAttrs());
+                rvirtualdata = createSchema(SchemaType.VIRTUAL, rvirtualdata);
+            }
+            assertNotNull(rvirtualdata);
 
-            i++;
-        } while (groupTO.getVirAttrs().isEmpty() && i < maxit);
-        if (i == 5) {
-            fail("Timeout when propagating " + groupName + " to LDAP");
-        }
+            if (!"minimal group".equals(rvirtualdata.getAnyTypeClass())) {
+                LOG.warn("rvirtualdata not in minimal group, restoring");
 
-        assertEquals(1, groupTO.getVirAttrs().size());
-        assertEquals(rvirtualdata, groupTO.getVirAttrs().iterator().next().getValues().get(0));
-        // -------------------------------------------
+                AnyTypeClassTO minimalGroup = anyTypeClassService.read("minimal group");
+                minimalGroup.getVirSchemas().add(rvirtualdata.getKey());
+                anyTypeClassService.update(minimalGroup);
 
-        // -------------------------------------------
-        // Create new user
-        // -------------------------------------------
-        UserTO userTO = UserITCase.getUniqueSampleTO("syncope453@syncope.apache.org");
-        userTO.getPlainAttrs().add(attrTO("aLong", "123"));
-        userTO.getResources().clear();
-        userTO.getResources().add(resourceName);
-        userTO.getVirAttrs().clear();
-        userTO.getDerAttrs().clear();
-        userTO.getMemberships().clear();
+                rvirtualdata = schemaService.read(SchemaType.VIRTUAL, rvirtualdata.getKey());
+                assertEquals("minimal group", rvirtualdata.getAnyTypeClass());
+            }
 
-        userTO.getMemberships().add(new MembershipTO.Builder().group(groupTO.getKey()).build());
+            GroupTO groupTO = new GroupTO();
+            groupTO.setName(groupName);
+            groupTO.setRealm("/");
+            groupTO.getVirAttrs().add(attrTO(rvirtualdata.getKey(), "ml@group.it"));
+            groupTO.getResources().add(RESOURCE_NAME_LDAP);
+            groupTO = createGroup(groupTO).getAny();
+            groupKey = groupTO.getKey();
+            assertEquals(1, groupTO.getVirAttrs().size());
+            assertEquals("ml@group.it", groupTO.getVirAttrs().iterator().next().getValues().get(0));
+            // -------------------------------------------
+
+            // -------------------------------------------
+            // Create new user
+            // -------------------------------------------
+            UserTO userTO = UserITCase.getUniqueSampleTO("syncope453@syncope.apache.org");
+            userTO.getPlainAttrs().add(attrTO("aLong", "123"));
+            userTO.getResources().clear();
+            userTO.getResources().add(resourceName);
+            userTO.getVirAttrs().clear();
+            userTO.getDerAttrs().clear();
+            userTO.getMemberships().clear();
 
-        ProvisioningResult<UserTO> result = createUser(userTO);
-        assertEquals(2, result.getPropagationStatuses().size());
-        assertEquals(PropagationTaskExecStatus.SUCCESS, result.getPropagationStatuses().get(0).getStatus());
-        assertEquals(PropagationTaskExecStatus.SUCCESS, result.getPropagationStatuses().get(1).getStatus());
-        userTO = result.getAny();
+            userTO.getMemberships().add(new MembershipTO.Builder().group(groupTO.getKey()).build());
 
-        JdbcTemplate jdbcTemplate = new JdbcTemplate(testDataSource);
+            ProvisioningResult<UserTO> result = createUser(userTO);
+            assertEquals(2, result.getPropagationStatuses().size());
+            assertEquals(PropagationTaskExecStatus.SUCCESS, result.getPropagationStatuses().get(0).getStatus());
+            assertEquals(PropagationTaskExecStatus.SUCCESS, result.getPropagationStatuses().get(1).getStatus());
+            userTO = result.getAny();
 
-        Map<String, Object> actuals = jdbcTemplate.queryForMap(
-                "SELECT id, surname, email FROM testsync WHERE id=?",
-                new Object[] { Integer.parseInt(userTO.getPlainAttrMap().get("aLong").getValues().get(0)) });
+            JdbcTemplate jdbcTemplate = new JdbcTemplate(testDataSource);
 
-        assertEquals(userTO.getPlainAttrMap().get("aLong").getValues().get(0), actuals.get("id").toString());
-        assertEquals(rvirtualdata, actuals.get("email"));
-        // -------------------------------------------
+            Map<String, Object> actuals = jdbcTemplate.queryForMap(
+                    "SELECT id, surname, email FROM testsync WHERE id=?",
+                    new Object[] { Integer.parseInt(userTO.getPlainAttrMap().get("aLong").getValues().get(0)) });
 
-        // -------------------------------------------
-        // Delete resource and group ad-hoc
-        // -------------------------------------------
-        resourceService.delete(resourceName);
-        groupService.delete(groupTO.getKey());
-        // -------------------------------------------
+            assertEquals(userTO.getPlainAttrMap().get("aLong").getValues().get(0), actuals.get("id").toString());
+            assertEquals("ml@group.it", actuals.get("email"));
+            // -------------------------------------------
+        } finally {
+            // -------------------------------------------
+            // Delete resource and group ad-hoc
+            // -------------------------------------------
+            resourceService.delete(resourceName);
+            if (groupKey != null) {
+                groupService.delete(groupKey);
+            }
+            // -------------------------------------------
+        }
     }
 
     @Test