From c617025ca0efff766604bdee27aa248b2651bd5c Mon Sep 17 00:00:00 2001 From: Eike Stepper Date: Fri, 5 Mar 2010 16:46:07 +0000 Subject: [256936] Support for Offline Mode https://bugs.eclipse.org/bugs/show_bug.cgi?id=256936 --- .../src/org/eclipse/emf/cdo/tests/MergingTest.java | 107 +++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/MergingTest.java (limited to 'plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/MergingTest.java') diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/MergingTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/MergingTest.java new file mode 100644 index 0000000000..cc8e73e393 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/MergingTest.java @@ -0,0 +1,107 @@ +/** + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.tests; + +import org.eclipse.emf.cdo.common.branch.CDOBranch; +import org.eclipse.emf.cdo.common.revision.CDORevision; +import org.eclipse.emf.cdo.common.revision.CDORevisionUtil; +import org.eclipse.emf.cdo.eresource.CDOResource; +import org.eclipse.emf.cdo.internal.server.mem.MEMStore; +import org.eclipse.emf.cdo.server.IRepository; +import org.eclipse.emf.cdo.server.IStore; +import org.eclipse.emf.cdo.session.CDOSession; +import org.eclipse.emf.cdo.transaction.CDOMerger; +import org.eclipse.emf.cdo.transaction.CDOTransaction; + +import org.eclipse.emf.spi.cdo.DefaultCDOMerger; + +import java.util.List; +import java.util.Map; + +/** + * @author Eike Stepper + */ +public class MergingTest extends AbstractCDOTest +{ + @Override + public synchronized Map getTestProperties() + { + Map testProperties = super.getTestProperties(); + testProperties.put(IRepository.Props.SUPPORTING_AUDITS, "true"); + testProperties.put(IRepository.Props.SUPPORTING_BRANCHES, "true"); + return testProperties; + } + + public void testCreateBranch() throws Exception + { + CDOMerger merger = new DefaultCDOMerger.PerFeature(); + + CDOSession session = openSession(); + CDOBranch mainBranch = session.getBranchManager().getMainBranch(); + CDOTransaction transaction = session.openTransaction(mainBranch); + + sleep(10); + CDOResource resource = transaction.createResource("/res"); + resource.getContents().add(getModel1Factory().createCompany()); + resource.getContents().add(getModel1Factory().createCompany()); + resource.getContents().add(getModel1Factory().createCompany()); + resource.getContents().add(getModel1Factory().createCompany()); + resource.getContents().add(getModel1Factory().createCompany()); + long time1 = transaction.commit().getTimeStamp(); + CDOBranch source1 = mainBranch.createBranch("source1", time1); + + sleep(10); + resource.getContents().add(getModel1Factory().createCompany()); + resource.getContents().add(getModel1Factory().createCompany()); + resource.getContents().add(getModel1Factory().createCompany()); + long time2 = transaction.commit().getTimeStamp(); + CDOBranch source2 = mainBranch.createBranch("source2", time2); + + sleep(10); + resource.getContents().add(getModel1Factory().createCompany()); + resource.getContents().add(getModel1Factory().createCompany()); + resource.getContents().add(getModel1Factory().createCompany()); + long time3 = transaction.commit().getTimeStamp(); + CDOBranch source3 = mainBranch.createBranch("source3", time3); + + sleep(10); + + CDOTransaction t1 = session.openTransaction(mainBranch); + t1.merge(source1.getHead(), merger); + + session.close(); + } + + private void dumpAll(CDOSession session) + { + IStore store = getRepository().getStore(); + if (store instanceof MEMStore) + { + MEMStore memStore = (MEMStore)store; + dump("MEMStore", memStore.getAllRevisions()); + } + + // dump("ServerCache", getRepository().getRevisionManager().getCache().getAllRevisions()); + // dump("ClientCache", ((InternalCDOSession)session).getRevisionManager().getCache().getAllRevisions()); + } + + public static void dump(String label, Map> revisions) + { + System.out.println(); + System.out.println(); + System.out.println(label); + System.out + .println("==============================================================================================="); + CDORevisionUtil.dumpAllRevisions(revisions, System.out); + System.out.println(); + System.out.println(); + } +} -- cgit v1.2.3