You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by fm...@apache.org on 2010/11/10 15:07:45 UTC

svn commit: r1033477 - in /incubator/chemistry/opencmis/trunk: chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/impl/ chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemis...

Author: fmui
Date: Wed Nov 10 14:07:44 2010
New Revision: 1033477

URL: http://svn.apache.org/viewvc?rev=1033477&view=rev
Log:
- added more TCK code (shallow testing of getDescendants and getFolderTree)

Modified:
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.java
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/impl/CmisTestResultImpl.java
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/RootFolderTest.java
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/crud/CreateAndDeleteFolderTest.java
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/TckDialog.java

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.java?rev=1033477&r1=1033476&r2=1033477&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.java Wed Nov 10 14:07:44 2010
@@ -20,6 +20,7 @@ package org.apache.chemistry.opencmis.tc
 
 import static org.apache.chemistry.opencmis.tck.CmisTestResultStatus.FAILURE;
 import static org.apache.chemistry.opencmis.tck.CmisTestResultStatus.OK;
+import static org.apache.chemistry.opencmis.tck.CmisTestResultStatus.SKIPPED;
 import static org.apache.chemistry.opencmis.tck.CmisTestResultStatus.UNEXPECTED_EXCEPTION;
 import static org.apache.chemistry.opencmis.tck.CmisTestResultStatus.WARNING;
 
@@ -36,10 +37,12 @@ import org.apache.chemistry.opencmis.cli
 import org.apache.chemistry.opencmis.client.api.Property;
 import org.apache.chemistry.opencmis.client.api.Session;
 import org.apache.chemistry.opencmis.client.api.SessionFactory;
+import org.apache.chemistry.opencmis.client.api.Tree;
 import org.apache.chemistry.opencmis.client.runtime.OperationContextImpl;
 import org.apache.chemistry.opencmis.client.runtime.SessionFactoryImpl;
 import org.apache.chemistry.opencmis.commons.PropertyIds;
 import org.apache.chemistry.opencmis.commons.SessionParameter;
+import org.apache.chemistry.opencmis.commons.data.RepositoryCapabilities;
 import org.apache.chemistry.opencmis.commons.data.RepositoryInfo;
 import org.apache.chemistry.opencmis.commons.definitions.DocumentTypeDefinition;
 import org.apache.chemistry.opencmis.commons.definitions.PropertyDefinition;
@@ -307,6 +310,34 @@ public abstract class AbstractSessionTes
 
     // --- reusable checks ----
 
+    protected boolean isGetDescendantsSupported(Session session) {
+        RepositoryCapabilities cap = session.getRepositoryInfo().getCapabilities();
+
+        if (cap == null) {
+            return false;
+        }
+
+        if (cap.isGetDescendantsSupported() == null) {
+            return false;
+        }
+
+        return cap.isGetDescendantsSupported().booleanValue();
+    }
+
+    protected boolean isGetFolderTreeSupported(Session session) {
+        RepositoryCapabilities cap = session.getRepositoryInfo().getCapabilities();
+
+        if (cap == null) {
+            return false;
+        }
+
+        if (cap.isGetFolderTreeSupported() == null) {
+            return false;
+        }
+
+        return cap.isGetFolderTreeSupported().booleanValue();
+    }
+
     protected CmisTestResult checkObject(CmisObject object, String[] properties, String message) {
         List<CmisTestResult> results = new ArrayList<CmisTestResult>();
 
@@ -470,87 +501,141 @@ public abstract class AbstractSessionTes
         return (result.getStatus().getLevel() <= OK.getLevel() ? null : result);
     }
 
-    protected CmisTestResult checkChildren(Folder folder, String message) {
+    protected CmisTestResult checkChildren(Session session, Folder folder, String message) {
         List<CmisTestResult> results = new ArrayList<CmisTestResult>();
 
         CmisTestResult f;
 
-        f = createResult(FAILURE, "Folder is null!");
-        addResult(results, assertNotNull(folder, null, f));
+        if (folder == null) {
+            return createResult(FAILURE, "Folder is null!");
+        }
 
-        if (folder != null) {
-            long count = 0;
-            ItemIterable<CmisObject> children = folder.getChildren(SELECT_ALL_NO_CACHE_OC);
+        // getChildren
 
-            for (CmisObject child : children) {
-                count++;
+        long childrenCount = 0;
+        long childrenFolderCount = 0;
+        ItemIterable<CmisObject> children = folder.getChildren(SELECT_ALL_NO_CACHE_OC);
 
-                if (child == null) {
-                    addResult(results, createResult(FAILURE, "Folder contains a null child!"));
-                } else {
-                    String[] propertiesToCheck = new String[child.getType().getPropertyDefinitions().size()];
+        for (CmisObject child : children) {
+            childrenCount++;
+            if (child instanceof Folder) {
+                childrenFolderCount++;
+            }
 
-                    int i = 0;
-                    for (String propId : child.getType().getPropertyDefinitions().keySet()) {
-                        propertiesToCheck[i++] = propId;
-                    }
+            checkChild(results, folder, child);
+        }
 
-                    addResult(results, checkObject(child, propertiesToCheck, "Child check: " + child.getId()));
+        f = createResult(WARNING, "Number of children doesn't match the reported total number of items!");
+        addResult(results, assertEquals(childrenCount, children.getTotalNumItems(), null, f));
 
-                    f = createResult(FAILURE, "Child is not fileable! Id: " + child.getId() + " / Type: "
-                            + child.getType().getId());
-                    addResult(results, assertIsTrue(child instanceof FileableCmisObject, null, f));
+        // getDescendants
 
-                    if (child instanceof FileableCmisObject) {
-                        FileableCmisObject fileableChild = (FileableCmisObject) child;
-                        List<Folder> parents = fileableChild.getParents();
+        if (isGetDescendantsSupported(session)) {
+            long descendantsCount = 0;
+            List<Tree<FileableCmisObject>> descendants = folder.getDescendants(1);
 
-                        f = createResult(FAILURE, "Child has no parents! Id: " + child.getId());
-                        addResult(results, assertIsTrue(parents.size() > 0, null, f));
+            for (Tree<FileableCmisObject> child : descendants) {
+                descendantsCount++;
 
-                        boolean foundParent = false;
-                        for (Folder parent : parents) {
-                            if (parent == null) {
-                                f = createResult(FAILURE, "One of childs parents is null! Id: " + child.getId());
-                                addResult(results, assertIsTrue(parents.size() > 0, null, f));
-                            }
-
-                            if (folder.getId().equals(parent.getId())) {
-                                foundParent = true;
-                                break;
-                            }
-                        }
+                if (child == null) {
+                    addResult(results, createResult(FAILURE, "Folder descendants contain a null tree!"));
+                } else {
+                    checkChild(results, folder, child.getItem());
+                }
+            }
 
-                        if (!foundParent) {
-                            f = createResult(FAILURE, "Folder is not found in childs parents! Id: " + child.getId());
-                            addResult(results, assertIsTrue(parents.size() > 0, null, f));
-                        }
-                    } else {
-                        addResult(results, createResult(FAILURE, "Found a non-filealed child! Id: " + child.getId()));
-                    }
+            f = createResult(FAILURE,
+                    "Number of descendants doesn't match the number of children returned by getChildren!");
+            addResult(results, assertEquals(childrenCount, descendantsCount, null, f));
+        } else {
+            addResult(results, createResult(SKIPPED, "getDescendants is not supported."));
+        }
 
-                    f = createResult(FAILURE,
-                            "Child has no CAN_GET_OBJECT_PARENTS allowable action! Id: " + child.getId());
-                    addResult(results, assertAllowableAction(child, Action.CAN_GET_OBJECT_PARENTS, null, f));
+        // getFolderTree
 
-                    if (child instanceof Folder) {
-                        f = createResult(FAILURE,
-                                "Child has no CAN_GET_FOLDER_PARENT allowable action! Id: " + child.getId());
-                        addResult(results, assertAllowableAction(child, Action.CAN_GET_FOLDER_PARENT, null, f));
-                    }
+        if (isGetFolderTreeSupported(session)) {
+            long folderTreeCount = 0;
+            List<Tree<FileableCmisObject>> folderTree = folder.getFolderTree(1);
+
+            for (Tree<FileableCmisObject> child : folderTree) {
+                folderTreeCount++;
+
+                if (child == null) {
+                    addResult(results, createResult(FAILURE, "Folder tree contains a null tree!"));
+                } else {
+                    checkChild(results, folder, child.getItem());
                 }
             }
 
-            f = createResult(WARNING, "Number of children doesn't match the reported total number of items!");
-            addResult(results, assertEquals(count, children.getTotalNumItems(), null, f));
+            f = createResult(FAILURE, "Number of folders doesn't match the number of folders returned by getChildren!");
+            addResult(results, assertEquals(childrenFolderCount, folderTreeCount, null, f));
+        } else {
+            addResult(results, createResult(SKIPPED, "getFolderTree is not supported."));
         }
 
+        // --- wrap up ---
+
         CmisTestResultImpl result = createResult(getWorst(results), message);
         result.getChildren().addAll(results);
 
         return (result.getStatus().getLevel() <= OK.getLevel() ? null : result);
     }
 
+    private void checkChild(List<CmisTestResult> results, Folder folder, CmisObject child) {
+        CmisTestResult f;
+
+        if (child == null) {
+            addResult(results, createResult(FAILURE, "Folder contains a null child!"));
+        } else {
+            String[] propertiesToCheck = new String[child.getType().getPropertyDefinitions().size()];
+
+            int i = 0;
+            for (String propId : child.getType().getPropertyDefinitions().keySet()) {
+                propertiesToCheck[i++] = propId;
+            }
+
+            addResult(results, checkObject(child, propertiesToCheck, "Child check: " + child.getId()));
+
+            f = createResult(FAILURE, "Child is not fileable! Id: " + child.getId() + " / Type: "
+                    + child.getType().getId());
+            addResult(results, assertIsTrue(child instanceof FileableCmisObject, null, f));
+
+            if (child instanceof FileableCmisObject) {
+                FileableCmisObject fileableChild = (FileableCmisObject) child;
+                List<Folder> parents = fileableChild.getParents();
+
+                f = createResult(FAILURE, "Child has no parents! Id: " + child.getId());
+                addResult(results, assertIsTrue(parents.size() > 0, null, f));
+
+                boolean foundParent = false;
+                for (Folder parent : parents) {
+                    if (parent == null) {
+                        f = createResult(FAILURE, "One of childs parents is null! Id: " + child.getId());
+                        addResult(results, assertIsTrue(parents.size() > 0, null, f));
+                    }
+
+                    if (folder.getId().equals(parent.getId())) {
+                        foundParent = true;
+                        break;
+                    }
+                }
+
+                if (!foundParent) {
+                    f = createResult(FAILURE, "Folder is not found in childs parents! Id: " + child.getId());
+                    addResult(results, assertIsTrue(parents.size() > 0, null, f));
+                }
+            }
+
+            f = createResult(FAILURE, "Child has no CAN_GET_OBJECT_PARENTS allowable action! Id: " + child.getId());
+            addResult(results, assertAllowableAction(child, Action.CAN_GET_OBJECT_PARENTS, null, f));
+
+            if (child instanceof Folder) {
+                f = createResult(FAILURE, "Child has no CAN_GET_FOLDER_PARENT allowable action! Id: " + child.getId());
+                addResult(results, assertAllowableAction(child, Action.CAN_GET_FOLDER_PARENT, null, f));
+            }
+        }
+    }
+
     protected CmisTestResult assertShallowEquals(CmisObject expected, CmisObject actual, CmisTestResult success,
             CmisTestResult failure) {
 
@@ -1241,5 +1326,4 @@ public abstract class AbstractSessionTes
             return (result.getStatus().getLevel() <= OK.getLevel() ? null : result);
         }
     }
-
 }

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/impl/CmisTestResultImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/impl/CmisTestResultImpl.java?rev=1033477&r1=1033476&r2=1033477&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/impl/CmisTestResultImpl.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/impl/CmisTestResultImpl.java Wed Nov 10 14:07:44 2010
@@ -109,4 +109,9 @@ public class CmisTestResultImpl implemen
     public boolean isFatal() {
         return isFatal;
     }
+
+    @Override
+    public String toString() {
+        return status + ": " + groupName + "/" + testName + ": " + message;
+    }
 }

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/RootFolderTest.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/RootFolderTest.java?rev=1033477&r1=1033476&r2=1033477&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/RootFolderTest.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/RootFolderTest.java Wed Nov 10 14:07:44 2010
@@ -93,6 +93,6 @@ public class RootFolderTest extends Abst
         addResult(assertAllowableAction(rootFolder, Action.CAN_GET_CHILDREN, null, failure));
 
         // simple children test
-        addResult(checkChildren(rootFolder, "Root folder children check"));
+        addResult(checkChildren(session, rootFolder, "Root folder children check"));
     }
 }

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/crud/CreateAndDeleteFolderTest.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/crud/CreateAndDeleteFolderTest.java?rev=1033477&r1=1033476&r2=1033477&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/crud/CreateAndDeleteFolderTest.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/crud/CreateAndDeleteFolderTest.java Wed Nov 10 14:07:44 2010
@@ -65,7 +65,7 @@ public class CreateAndDeleteFolderTest e
         }
 
         // simple children test
-        addResult(checkChildren(testFolder, "Test folder children check"));
+        addResult(checkChildren(session, testFolder, "Test folder children check"));
 
         // check if all folders are there
         ItemIterable<CmisObject> children = testFolder.getChildren();

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/TckDialog.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/TckDialog.java?rev=1033477&r1=1033476&r2=1033477&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/TckDialog.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/TckDialog.java Wed Nov 10 14:07:44 2010
@@ -245,7 +245,7 @@ public class TckDialog {
 
         public void endGroup(CmisTestGroup group) {
             groupsProgressBar.setString("");
-            groupsProgressBar.setValue(testsProgressBar.getValue() + 1);
+            groupsProgressBar.setValue(groupsProgressBar.getValue() + 1);
         }
 
         public void startTest(CmisTest test) {