You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by dw...@apache.org on 2010/02/23 15:48:49 UTC

svn commit: r915360 - in /incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub: fixture/CMISTestFixture.java test/spec/VersionsTest.java

Author: dward
Date: Tue Feb 23 14:48:49 2010
New Revision: 915360

URL: http://svn.apache.org/viewvc?rev=915360&view=rev
Log:
CMIS-126: Correct TCK VersionsTest
- No assumption made about number of initial versions in a version series (other than > 0)
- No assumption that the object returned by checkin is the object against which the checkin comment was recorded (now assume that it was the latest major version)
- Also made CMISTestFixture.testStartTime non-static so that tests can be run more than once in same VM

Modified:
    incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/fixture/CMISTestFixture.java
    incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/test/spec/VersionsTest.java

Modified: incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/fixture/CMISTestFixture.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/fixture/CMISTestFixture.java?rev=915360&r1=915359&r2=915360&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/fixture/CMISTestFixture.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/fixture/CMISTestFixture.java Tue Feb 23 14:48:49 2010
@@ -34,7 +34,7 @@
  */
 public class CMISTestFixture {
 
-    private static Long testStartTime = null;
+    private Long testStartTime = null;
 
     private CMISClient client;
     private String name;

Modified: incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/test/spec/VersionsTest.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/test/spec/VersionsTest.java?rev=915360&r1=915359&r2=915360&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/test/spec/VersionsTest.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/test/spec/VersionsTest.java Tue Feb 23 14:48:49 2010
@@ -18,6 +18,7 @@
 package org.apache.chemistry.tck.atompub.test.spec;
 
 import java.io.StringReader;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -257,6 +258,11 @@
         // updatedObject.getVersionSeriesId().getStringValue());
         Assert.assertNull(updatedObject.getVersionSeriesCheckedOutId().getStringValue());
         Assert.assertNull(updatedObject.getVersionSeriesCheckedOutBy().getStringValue());
+        
+        // There is no guarantee that the object returned by checkin is the object against which our checkin comment
+        // was recorded, so let's get the 'latest major version'
+        updatedDoc = client.getEntry(updatedDoc.getSelfLink().getHref(), Collections.singletonMap("returnVersion", "latestmajor"));
+        updatedObject = updatedDoc.getExtension(CMISConstants.OBJECT);
         Assert.assertEquals(guid, updatedObject.getCheckinComment().getStringValue());
     }
 
@@ -329,6 +335,17 @@
         String xml = documentRes.getContentAsString();
         Assert.assertNotNull(xml);
 
+        // get all versions
+        Link allVersionsLink = document.getLink(CMISConstants.REL_VERSION_HISTORY);
+        Assert.assertNotNull(allVersionsLink);
+        Feed allVersions = client.getFeed(allVersionsLink.getHref());
+        Assert.assertNotNull(allVersions);
+        
+        // Remember the initial number of versions. This should be at least one, but may vary across repositories that
+        // may maintain a 'current' version in tandem with version history snapshots.
+        int initialVersions = allVersions.getEntries().size();
+        Assert.assertTrue(initialVersions > 0);
+        
         IRI checkedoutHREF = client.getCheckedOutCollection(client.getWorkspace());
         for (int i = 0; i < NUMBER_OF_VERSIONS; i++) {
             // checkout
@@ -355,13 +372,12 @@
         }
 
         // get all versions
-        Link allVersionsLink = document.getLink(CMISConstants.REL_VERSION_HISTORY);
-        Assert.assertNotNull(allVersionsLink);
-        Feed allVersions = client.getFeed(allVersionsLink.getHref());
+        allVersions = client.getFeed(allVersionsLink.getHref());
         Assert.assertNotNull(allVersions);
-        Assert.assertEquals(NUMBER_OF_VERSIONS + 1 /** initial version */
-        , allVersions.getEntries().size());
-        for (int i = 0; i < NUMBER_OF_VERSIONS; i++) {
+        Assert.assertEquals(NUMBER_OF_VERSIONS + initialVersions, allVersions.getEntries().size());
+        boolean pastLatestMajor = false;
+        int versionIndex = NUMBER_OF_VERSIONS - 1;
+        for (int i = 0; i < allVersions.getEntries().size(); i++) {
             Link versionLink = allVersions.getEntries().get(i).getSelfLink();
             Assert.assertNotNull(versionLink);
             Entry version = client.getEntry(versionLink.getHref());
@@ -370,12 +386,35 @@
             // checked-in document
             // Assert.assertEquals("Update Title checkin " + i,
             // version.getTitle());
-            Response versionContentRes = client.executeRequest(new GetRequest(version.getContentSrc().toString()), 200);
-            Assert.assertEquals("updated content checkin " + (NUMBER_OF_VERSIONS - 1 - i), versionContentRes.getContentAsString());
             CMISObject versionObject = version.getExtension(CMISConstants.OBJECT);
             Assert.assertNotNull(versionObject);
-            Assert.assertEquals("checkin" + +(NUMBER_OF_VERSIONS - 1 - i), versionObject.getCheckinComment().getStringValue());
+
+            // Validate latest major version flag
+            if (pastLatestMajor) {
+                Assert.assertFalse("More than one latest major version!", versionObject.isLatestMajorVersion()
+                        .getBooleanValue());
+            } else {
+                pastLatestMajor = versionObject.isLatestMajorVersion().getBooleanValue();
+            }
+            
+            if (versionIndex >= 0) {
+                // Validate non-initial versions have content
+                Response versionContentRes = client.executeRequest(new GetRequest(version.getContentSrc().toString()),
+                        200);
+
+                // Ensure that the latest major version and its preceding
+                // checkins match up to what we checked in
+                if (pastLatestMajor) {
+                    Assert.assertEquals("updated content checkin " + versionIndex, versionContentRes
+                            .getContentAsString());
+                    Assert.assertEquals("checkin" + versionIndex, versionObject.getCheckinComment().getStringValue());
+                    versionIndex--;
+                }
+            }
         }
+        // Make sure all versions were found
+        Assert.assertTrue("No latest major version found", pastLatestMajor);
+        Assert.assertEquals("Not all versions found", -1, versionIndex);
     }
 
 }