diff options
author | Eike Stepper | 2008-09-25 10:48:17 +0000 |
---|---|---|
committer | Eike Stepper | 2008-09-25 10:48:17 +0000 |
commit | 45b008a844699b5b6d0f3b90cc869dd7a0d37da4 (patch) | |
tree | 269d83757f1c02ac680a3cc2901f901f1943ce80 /plugins/org.eclipse.emf.cdo.tests | |
parent | 615a26b0ef27b21bb654385823df0d47b8ec259f (diff) | |
download | cdo-45b008a844699b5b6d0f3b90cc869dd7a0d37da4.tar.gz cdo-45b008a844699b5b6d0f3b90cc869dd7a0d37da4.tar.xz cdo-45b008a844699b5b6d0f3b90cc869dd7a0d37da4.zip |
[248325] Support CDOAudit.setTimeStamp()
https://bugs.eclipse.org/bugs/show_bug.cgi?id=248325
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.tests')
6 files changed, 293 insertions, 44 deletions
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AbstractCDOTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AbstractCDOTest.java index 7fcc6e0362..545de35d61 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AbstractCDOTest.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AbstractCDOTest.java @@ -12,6 +12,7 @@ package org.eclipse.emf.cdo.tests; import org.eclipse.emf.cdo.CDOObject; import org.eclipse.emf.cdo.CDOState; +import org.eclipse.emf.cdo.CDOTransaction; import org.eclipse.emf.cdo.CDOView; import org.eclipse.emf.cdo.eresource.CDOResource; import org.eclipse.emf.cdo.tests.config.ConfigTest; @@ -155,6 +156,20 @@ public abstract class AbstractCDOTest extends ConfigTest assertEquals(false, CDOLegacyWrapper.isLegacyProxy(object)); } + protected static void assertCreatedTime(EObject eObject) + { + CDOObject object = CDOUtil.getCDOObject(eObject); + if (object != null) + { + CDOView view = object.cdoView(); + if (view instanceof CDOTransaction) + { + CDOTransaction transaction = (CDOTransaction)view; + assertEquals(transaction.getLastCommitTime(), object.cdoRevision().getCreated()); + } + } + } + /** * @author Eike Stepper */ diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTestsAllConfigs.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTestsAllConfigs.java index 8836d8a3ee..95b9a35ccb 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTestsAllConfigs.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTestsAllConfigs.java @@ -42,6 +42,7 @@ public class AllTestsAllConfigs extends ConfigTestSuite testClasses.add(EnumTest.class); testClasses.add(StateMachineTest.class); testClasses.add(ViewTest.class); + testClasses.add(AuditTest.class); testClasses.add(ResourceTest.class); testClasses.add(ContainmentTest.class); testClasses.add(InvalidationTest.class); @@ -54,6 +55,7 @@ public class AllTestsAllConfigs extends ConfigTestSuite testClasses.add(MetaTest.class); testClasses.add(RevisionDeltaWithDeltaSupportTest.class); testClasses.add(RevisionDeltaWithoutDeltaSupportTest.class); + testClasses.add(RevisionHolderTest.class); testClasses.add(IndexReconstructionTest.class); testClasses.add(AutoAttacherTest.class); testClasses.add(SavepointTest.class); diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AuditTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AuditTest.java index 47d6c2c155..ac47a2e822 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AuditTest.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AuditTest.java @@ -17,6 +17,11 @@ import org.eclipse.emf.cdo.eresource.CDOResource; import org.eclipse.emf.cdo.server.IRepository; import org.eclipse.emf.cdo.tests.model1.Company; +import org.eclipse.emf.internal.cdo.CDOAuditImpl; + +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.ecore.EObject; + import java.util.Map; /** @@ -80,7 +85,165 @@ public class AuditTest extends AbstractCDOTest CDOResource auditResource = audit.getResource("/res1"); Company auditCompany = (Company)auditResource.getContents().get(0); assertEquals("ESC", auditCompany.getName()); + + CDOAudit audit2 = session.openAudit(commitTime2); + CDOResource auditResource2 = audit2.getResource("/res1"); + Company auditCompany2 = (Company)auditResource2.getContents().get(0); + assertEquals("Sympedia", auditCompany2.getName()); + session.close(); + } + + public void testRemoteAudit() throws Exception + { + CDOSession session = openModel1Session(); + CDOTransaction transaction = session.openTransaction(); + CDOResource resource = transaction.createResource("/res1"); + + Company company = getModel1Factory().createCompany(); + company.setName("ESC"); + resource.getContents().add(company); + transaction.commit(); + long commitTime1 = transaction.getLastCommitTime(); + assertTrue(session.getRepositoryCreationTime() < commitTime1); + assertEquals("ESC", company.getName()); + sleep(100); + + company.setName("Sympedia"); + transaction.commit(); + long commitTime2 = transaction.getLastCommitTime(); + assertTrue(commitTime1 < commitTime2); + assertTrue(session.getRepositoryCreationTime() < commitTime2); + assertEquals("Sympedia", company.getName()); + sleep(100); + + company.setName("Eclipse"); + transaction.commit(); + long commitTime3 = transaction.getLastCommitTime(); + assertTrue(commitTime2 < commitTime3); + assertTrue(session.getRepositoryCreationTime() < commitTime2); + assertEquals("Eclipse", company.getName()); + session.close(); + + CDOSession session2 = openModel1Session(); + CDOAudit audit = session2.openAudit(commitTime1); + CDOResource auditResource = audit.getResource("/res1"); + EList<EObject> contents = auditResource.getContents(); + Company auditCompany = (Company)contents.get(0); + String name = auditCompany.getName(); + assertEquals("ESC", name); + + CDOAudit audit2 = session2.openAudit(commitTime2); + CDOResource auditResource2 = audit2.getResource("/res1"); + Company auditCompany2 = (Company)auditResource2.getContents().get(0); + assertEquals("Sympedia", auditCompany2.getName()); + session2.close(); + } + + public void testChangeLocalAudit() throws Exception + { + CDOSession session = openModel1Session(); + CDOTransaction transaction = session.openTransaction(); + CDOResource resource = transaction.createResource("/res1"); + + Company company = getModel1Factory().createCompany(); + company.setName("ESC"); + resource.getContents().add(company); + transaction.commit(); + long commitTime1 = transaction.getLastCommitTime(); + assertTrue(session.getRepositoryCreationTime() < commitTime1); + assertEquals("ESC", company.getName()); + sleep(100); + + company.setName("Sympedia"); + transaction.commit(); + long commitTime2 = transaction.getLastCommitTime(); + assertTrue(commitTime1 < commitTime2); + assertTrue(session.getRepositoryCreationTime() < commitTime2); + assertEquals("Sympedia", company.getName()); + + company.setName("Eclipse"); + transaction.commit(); + long commitTime3 = transaction.getLastCommitTime(); + assertTrue(commitTime2 < commitTime3); + assertTrue(session.getRepositoryCreationTime() < commitTime2); assertEquals("Eclipse", company.getName()); + + CDOAudit audit = session.openAudit(commitTime1); + { + CDOResource auditResource = audit.getResource("/res1"); + Company auditCompany = (Company)auditResource.getContents().get(0); + assertEquals("ESC", auditCompany.getName()); + } + + ((CDOAuditImpl)audit).setTimeStamp(commitTime2); + { + CDOResource auditResource = audit.getResource("/res1"); + Company auditCompany = (Company)auditResource.getContents().get(0); + assertEquals("Sympedia", auditCompany.getName()); + } + + ((CDOAuditImpl)audit).setTimeStamp(commitTime3); + { + CDOResource auditResource = audit.getResource("/res1"); + Company auditCompany = (Company)auditResource.getContents().get(0); + assertEquals("Eclipse", auditCompany.getName()); + } + session.close(); } + + public void testChangeRemoteAudit() throws Exception + { + CDOSession session = openModel1Session(); + CDOTransaction transaction = session.openTransaction(); + CDOResource resource = transaction.createResource("/res1"); + + Company company = getModel1Factory().createCompany(); + company.setName("ESC"); + resource.getContents().add(company); + transaction.commit(); + long commitTime1 = transaction.getLastCommitTime(); + assertTrue(session.getRepositoryCreationTime() < commitTime1); + assertEquals("ESC", company.getName()); + sleep(100); + + company.setName("Sympedia"); + transaction.commit(); + long commitTime2 = transaction.getLastCommitTime(); + assertTrue(commitTime1 < commitTime2); + assertTrue(session.getRepositoryCreationTime() < commitTime2); + assertEquals("Sympedia", company.getName()); + + company.setName("Eclipse"); + transaction.commit(); + long commitTime3 = transaction.getLastCommitTime(); + assertTrue(commitTime2 < commitTime3); + assertTrue(session.getRepositoryCreationTime() < commitTime2); + assertEquals("Eclipse", company.getName()); + session.close(); + + CDOSession session2 = openModel1Session(); + CDOAudit audit = session2.openAudit(commitTime1); + { + CDOResource auditResource = audit.getResource("/res1"); + Company auditCompany = (Company)auditResource.getContents().get(0); + assertEquals("ESC", auditCompany.getName()); + } + + ((CDOAuditImpl)audit).setTimeStamp(commitTime2); + { + CDOResource auditResource = audit.getResource("/res1"); + Company auditCompany = (Company)auditResource.getContents().get(0); + assertEquals("Sympedia", auditCompany.getName()); + } + + ((CDOAuditImpl)audit).setTimeStamp(commitTime3); + { + CDOResource auditResource = audit.getResource("/res1"); + Company auditCompany = (Company)auditResource.getContents().get(0); + assertEquals("Eclipse", auditCompany.getName()); + } + + session2.close(); + } } diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/InitialTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/InitialTest.java index 1143d6daf4..f53dd1c57f 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/InitialTest.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/InitialTest.java @@ -302,6 +302,8 @@ public class InitialTest extends AbstractCDOTest transaction.commit(); assertEquals(CDOState.CLEAN, resource.cdoState()); assertEquals(CDOState.CLEAN, CDOUtil.getCDOObject(supplier).cdoState()); + assertCreatedTime(resource); + assertCreatedTime(supplier); } public void testReadResourceClean() throws Exception @@ -331,6 +333,7 @@ public class InitialTest extends AbstractCDOTest EList<EObject> contents = resource.getContents(); Supplier s = (Supplier)contents.get(0); assertEquals(supplier, s); + assertCreatedTime(s); } public void testReadObjectClean() throws Exception @@ -418,14 +421,21 @@ public class InitialTest extends AbstractCDOTest msg("Committing"); transaction.commit(); + long commitTime1 = transaction.getLastCommitTime(); + assertCreatedTime(supplier); msg("Setting name"); supplier.setName("Eike"); + sleep(100); msg("Committing"); transaction.commit(); + long commitTime2 = transaction.getLastCommitTime(); + assertTrue(commitTime1 < commitTime2); + assertEquals(CDOState.CLEAN, resource.cdoState()); assertEquals(CDOState.CLEAN, CDOUtil.getCDOObject(supplier).cdoState()); + assertCreatedTime(supplier); } public void testGetResource() throws Exception diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/InvalidationTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/InvalidationTest.java index df585ebec1..aa85e1a328 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/InvalidationTest.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/InvalidationTest.java @@ -501,7 +501,6 @@ public class InvalidationTest extends AbstractCDOTest msg("Checking after sync"); assertEquals(false, timeOuter.timedOut()); - } public void testPassiveUpdateOnAndOff() throws Exception diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RevisionHolderTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RevisionHolderTest.java index 100f6a32fa..29e34f5007 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RevisionHolderTest.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RevisionHolderTest.java @@ -22,12 +22,13 @@ import org.eclipse.emf.cdo.common.revision.CDORevisionData; import org.eclipse.emf.cdo.common.revision.CDORevisionResolver; import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta; import org.eclipse.emf.cdo.internal.common.revision.cache.lru.DLRevisionHolder; +import org.eclipse.emf.cdo.internal.common.revision.cache.lru.LRURevisionCache; import org.eclipse.emf.cdo.internal.common.revision.cache.lru.LRURevisionHolder; import org.eclipse.emf.cdo.internal.common.revision.cache.lru.LRURevisionList; +import org.eclipse.emf.cdo.internal.common.revision.cache.lru.RevisionHolder; import org.eclipse.emf.cdo.spi.common.InternalCDOList; import org.eclipse.emf.cdo.spi.common.InternalCDORevision; -import org.eclipse.net4j.tests.AbstractOMTest; import org.eclipse.net4j.util.io.ExtendedDataOutput; import java.io.IOException; @@ -38,8 +39,48 @@ import java.util.Map; /** * @author Eike Stepper */ -public class RevisionHolderTest extends AbstractOMTest +public class RevisionHolderTest extends AbstractCDOTest { + public void testChronology() throws Exception + { + LRURevisionCache cache = new LRURevisionCache(); + cache.activate(); + + TestRevision r1v1 = new TestRevision(1, 1, 1); + cache.addRevision(r1v1); + assertEquals(CDORevision.UNSPECIFIED_DATE, r1v1.getRevised()); + + TestRevision r1v2 = new TestRevision(1, 2, 6); + cache.addRevision(r1v2); + assertEquals(CDORevision.UNSPECIFIED_DATE, r1v2.getRevised()); + assertEquals(r1v2.getCreated() - 1, r1v1.getRevised()); + + TestRevision r1v3 = new TestRevision(1, 3, 11); + cache.addRevision(r1v3); + assertEquals(CDORevision.UNSPECIFIED_DATE, r1v3.getRevised()); + assertEquals(r1v3.getCreated() - 1, r1v2.getRevised()); + assertEquals(r1v2.getCreated() - 1, r1v1.getRevised()); + + CDOID id = r1v1.getID(); + + RevisionHolder h1v3 = cache.getHolder(id); + assertEquals(r1v3, h1v3.getRevision()); + + RevisionHolder h1v2 = h1v3.getNext(); + assertEquals(r1v2, h1v2.getRevision()); + + RevisionHolder h1v1 = h1v2.getNext(); + assertEquals(r1v1, h1v1.getRevision()); + assertEquals(null, h1v1.getNext()); + + h1v2 = h1v1.getPrev(); + assertEquals(r1v2, h1v2.getRevision()); + + h1v3 = h1v2.getPrev(); + assertEquals(r1v3, h1v3.getRevision()); + assertEquals(null, h1v3.getPrev()); + } + public void testAddHead() throws Exception { LinkedList<LRURevisionHolder> linkedList = new LinkedList<LRURevisionHolder>(); @@ -196,64 +237,103 @@ public class RevisionHolderTest extends AbstractOMTest { private CDOID id; - public TestRevision(long id) + private int version; + + private long created; + + private long revised; + + public TestRevision(long id, int version, long created, long revised) { this.id = CDOIDUtil.createLong(id); + this.version = version; + this.created = created; + this.revised = revised; } - public CDOClass getCDOClass() + public TestRevision(long id, int version, long created) { - return null; + this(id, version, created, CDORevision.UNSPECIFIED_DATE); } - public long getCreated() + public TestRevision(long id) { - return 0; + this(id, 0, CDORevision.UNSPECIFIED_DATE); } - public CDORevisionData getData() + public CDOID getID() { - return null; + return id; } - public CDOID getID() + public void setID(CDOID id) { - return id; + this.id = id; } - public long getRevised() + public int getVersion() { - return 0; + return version; } - public CDORevisionResolver getRevisionResolver() + public void setVersion(int version) { - return null; + this.version = version; } - public int getVersion() + public long getCreated() { - return 0; + return created; } - public boolean isCurrent() + public void setCreated(long created) { - return false; + this.created = created; } - public boolean isResource() + public long getRevised() + { + return revised; + } + + public void setRevised(long revised) { - return false; + this.revised = revised; + } + + public boolean isCurrent() + { + return revised == UNSPECIFIED_DATE; } public boolean isTransactional() { - return false; + return version < 0; } public boolean isValid(long timeStamp) { - return false; + return (revised == UNSPECIFIED_DATE || revised >= timeStamp) && timeStamp >= created; + } + + public CDOClass getCDOClass() + { + throw new UnsupportedOperationException(); + } + + public CDORevisionData getData() + { + throw new UnsupportedOperationException(); + } + + public CDORevisionResolver getRevisionResolver() + { + throw new UnsupportedOperationException(); + } + + public boolean isResource() + { + throw new UnsupportedOperationException(); } public CDORevisionDelta compare(CDORevision origin) @@ -381,16 +461,6 @@ public class RevisionHolderTest extends AbstractOMTest throw new UnsupportedOperationException(); } - public void setCreated(long created) - { - throw new UnsupportedOperationException(); - } - - public void setID(CDOID id) - { - throw new UnsupportedOperationException(); - } - public void setListSize(CDOFeature feature, int size) { throw new UnsupportedOperationException(); @@ -401,11 +471,6 @@ public class RevisionHolderTest extends AbstractOMTest throw new UnsupportedOperationException(); } - public void setRevised(long revised) - { - throw new UnsupportedOperationException(); - } - public int setTransactional() { throw new UnsupportedOperationException(); @@ -421,11 +486,6 @@ public class RevisionHolderTest extends AbstractOMTest throw new UnsupportedOperationException(); } - public void setVersion(int version) - { - throw new UnsupportedOperationException(); - } - public int size(CDOFeature feature) { throw new UnsupportedOperationException(); |