diff options
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/offline/OfflineRawTest.java')
-rw-r--r-- | plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/offline/OfflineRawTest.java | 514 |
1 files changed, 257 insertions, 257 deletions
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/offline/OfflineRawTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/offline/OfflineRawTest.java index ca0001f6ec..9992c4c632 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/offline/OfflineRawTest.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/offline/OfflineRawTest.java @@ -1,257 +1,257 @@ -/*
- * Copyright (c) 2004 - 2012 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.offline;
-
-import org.eclipse.emf.cdo.common.CDOCommonSession.Options.PassiveUpdateMode;
-import org.eclipse.emf.cdo.common.revision.delta.CDOListFeatureDelta;
-import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
-import org.eclipse.emf.cdo.eresource.CDOResource;
-import org.eclipse.emf.cdo.session.CDOSession;
-import org.eclipse.emf.cdo.session.CDOSessionInvalidationEvent;
-import org.eclipse.emf.cdo.spi.server.InternalRepository;
-import org.eclipse.emf.cdo.spi.server.InternalSynchronizableRepository;
-import org.eclipse.emf.cdo.tests.config.impl.ConfigTest.CleanRepositoriesBefore;
-import org.eclipse.emf.cdo.tests.util.TestListener;
-import org.eclipse.emf.cdo.transaction.CDOTransaction;
-import org.eclipse.emf.cdo.view.CDOViewInvalidationEvent;
-
-import org.eclipse.net4j.util.event.IEvent;
-import org.eclipse.net4j.util.om.monitor.NotifyingMonitor.ProgressEvent;
-
-/**
- * @author Eike Stepper
- */
-@CleanRepositoriesBefore
-public class OfflineRawTest extends OfflineTest
-{
- @Override
- protected boolean isRawReplication()
- {
- return true;
- }
-
- public void _testMasterCommits_NotificationsFromClone() throws Exception
- {
- masterCommits_NotificationsFromClone();
- }
-
- /**
- * @since 4.0
- */
- public void _testNotification() throws Exception
- {
- InternalRepository clone = getRepository();
- waitForOnline(clone);
-
- CDOSession session = openSession();
- CDOTransaction transaction = session.openTransaction();
- CDOResource resource = transaction.createResource("/my/resource");
-
- resource.getContents().add(getModel1Factory().createCompany());
- transaction.setCommitComment("resource with one company created on clone");
- transaction.commit();
-
- getOfflineConfig().stopMasterTransport();
- waitForOffline(clone);
-
- TestListener sessionListener = new TestListener();
- session.addListener(sessionListener);
-
- TestListener transactionListener = new TestListener();
- transaction.addListener(transactionListener);
-
- {
- CDOSession masterSession = openSession("master");
- CDOTransaction masterTransaction = masterSession.openTransaction();
- CDOResource masterResource = masterTransaction.getResource("/my/resource");
-
- masterResource.getContents().add(getModel1Factory().createCompany());
- masterTransaction.setCommitComment("one company added on master");
- masterTransaction.commit();
-
- masterResource.getContents().add(getModel1Factory().createCompany());
- masterTransaction.setCommitComment("one company added on master");
- masterTransaction.commit();
-
- masterTransaction.close();
- }
-
- getOfflineConfig().startMasterTransport();
- waitForOnline(clone);
- sleep(1000);
-
- IEvent[] sessionEvents = sessionListener.getEvents();
- assertEquals(4, sessionEvents.length); // 3x repo state change + 1x invalidation
-
- int count = 0;
- for (IEvent sessionEvent : sessionEvents)
- {
- if (sessionEvent instanceof CDOSessionInvalidationEvent)
- {
- CDOSessionInvalidationEvent sessionInvalidationEvent = (CDOSessionInvalidationEvent)sessionEvent;
- assertEquals(2, sessionInvalidationEvent.getNewObjects().size());
- assertEquals(1, sessionInvalidationEvent.getChangedObjects().size());
- assertEquals(0, sessionInvalidationEvent.getDetachedObjects().size());
- ++count;
- }
- }
-
- assertEquals(1, count);
-
- IEvent[] transactionEvents = transactionListener.getEvents();
- assertEquals(2, transactionEvents.length); // 1x invalidation + 1x adapters notified
-
- CDOViewInvalidationEvent viewInvalidationEvent = (CDOViewInvalidationEvent)transactionEvents[0];
- assertEquals(1, viewInvalidationEvent.getDirtyObjects().size());
- assertEquals(1, viewInvalidationEvent.getRevisionDeltas().size());
- assertEquals(0, viewInvalidationEvent.getDetachedObjects().size());
-
- CDORevisionDelta delta = viewInvalidationEvent.getRevisionDeltas().get(resource);
- assertEquals(null, delta);
- assertEquals(true, viewInvalidationEvent.getRevisionDeltas().containsKey(resource));
- }
-
- /**
- * @since 4.0
- */
- public void testNotificationAllDeltas() throws Exception
- {
- InternalRepository clone = getRepository();
- waitForOnline(clone);
-
- CDOSession session = openSession();
- session.options().setPassiveUpdateMode(PassiveUpdateMode.ADDITIONS);
- CDOTransaction transaction = session.openTransaction();
- CDOResource resource = transaction.createResource("/my/resource");
-
- resource.getContents().add(getModel1Factory().createCompany());
- transaction.setCommitComment("resource with one company created on clone");
- transaction.commit();
-
- TestListener sessionListener = new TestListener();
- session.addListener(sessionListener);
-
- getOfflineConfig().stopMasterTransport();
- waitForOffline(clone);
-
- TestListener transactionListener = new TestListener();
- transaction.addListener(transactionListener);
-
- {
- CDOSession masterSession = openSession("master");
- CDOTransaction masterTransaction = masterSession.openTransaction();
- CDOResource masterResource = masterTransaction.getResource("/my/resource");
-
- masterResource.getContents().add(getModel1Factory().createCompany());
- masterTransaction.setCommitComment("one company added on master");
- masterTransaction.commit();
-
- masterResource.getContents().add(getModel1Factory().createCompany());
- masterTransaction.setCommitComment("one company added on master");
- masterTransaction.commit();
-
- masterTransaction.close();
- }
-
- getOfflineConfig().startMasterTransport();
- waitForOnline(clone);
- sleep(1000);
-
- IEvent[] sessionEvents = sessionListener.getEvents();
- assertEquals(4, sessionEvents.length); // 3x repo state change + 1x invalidation
-
- int count = 0;
- for (IEvent sessionEvent : sessionEvents)
- {
- if (sessionEvent instanceof CDOSessionInvalidationEvent)
- {
- CDOSessionInvalidationEvent sessionInvalidationEvent = (CDOSessionInvalidationEvent)sessionEvent;
- assertEquals(2, sessionInvalidationEvent.getNewObjects().size());
- assertEquals(1, sessionInvalidationEvent.getChangedObjects().size());
- assertEquals(0, sessionInvalidationEvent.getDetachedObjects().size());
- ++count;
- }
- }
-
- assertEquals(1, count);
-
- IEvent[] transactionEvents = transactionListener.getEvents();
- assertEquals(2, transactionEvents.length); // 1x invalidation + 1x adapters notified
-
- CDOViewInvalidationEvent viewInvalidationEvent = (CDOViewInvalidationEvent)transactionEvents[0];
- assertEquals(1, viewInvalidationEvent.getDirtyObjects().size());
- assertEquals(1, viewInvalidationEvent.getRevisionDeltas().size());
- assertEquals(0, viewInvalidationEvent.getDetachedObjects().size());
-
- CDORevisionDelta delta = viewInvalidationEvent.getRevisionDeltas().get(resource);
- assertEquals(1, delta.getFeatureDeltas().size());
-
- CDOListFeatureDelta listDelta = (CDOListFeatureDelta)delta.getFeatureDeltas().get(0);
- assertEquals(2, listDelta.getListChanges().size());
- }
-
- /**
- * @since 4.0
- */
- public void testSyncProgressEvents() throws Exception
- {
- InternalSynchronizableRepository clone = getRepository();
- waitForOnline(clone);
-
- CDOSession session = openSession();
- CDOTransaction transaction = session.openTransaction();
- CDOResource resource = transaction.createResource("/my/resource");
-
- resource.getContents().add(getModel1Factory().createCompany());
- transaction.setCommitComment("resource with one company created on clone");
- transaction.commit();
-
- getOfflineConfig().stopMasterTransport();
- waitForOffline(clone);
-
- {
- CDOSession masterSession = openSession("master");
- CDOTransaction masterTransaction = masterSession.openTransaction();
- CDOResource masterResource = masterTransaction.getResource("/my/resource");
-
- for (int i = 0; i < 100; i++)
- {
- masterResource.getContents().add(getModel1Factory().createCompany());
- masterTransaction.setCommitComment("one company added on master");
- masterTransaction.commit();
- }
-
- masterTransaction.close();
- }
-
- final int[] workPercent = { 0 };
- TestListener listener = new TestListener()
- {
- @Override
- public void notifyEvent(IEvent event)
- {
- super.notifyEvent(event);
- if (event instanceof ProgressEvent)
- {
- ProgressEvent e = (ProgressEvent)event;
- workPercent[0] = (int)e.getWorkPercent();
- msg(e.getTask() + ": " + workPercent[0] + " percent");
- }
- }
- };
-
- clone.getSynchronizer().addListener(listener);
-
- getOfflineConfig().startMasterTransport();
- waitForOnline(clone);
- assertEquals(100, workPercent[0]);
- }
-}
+/* + * Copyright (c) 2004 - 2012 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.offline; + +import org.eclipse.emf.cdo.common.CDOCommonSession.Options.PassiveUpdateMode; +import org.eclipse.emf.cdo.common.revision.delta.CDOListFeatureDelta; +import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta; +import org.eclipse.emf.cdo.eresource.CDOResource; +import org.eclipse.emf.cdo.session.CDOSession; +import org.eclipse.emf.cdo.session.CDOSessionInvalidationEvent; +import org.eclipse.emf.cdo.spi.server.InternalRepository; +import org.eclipse.emf.cdo.spi.server.InternalSynchronizableRepository; +import org.eclipse.emf.cdo.tests.config.impl.ConfigTest.CleanRepositoriesBefore; +import org.eclipse.emf.cdo.tests.util.TestListener; +import org.eclipse.emf.cdo.transaction.CDOTransaction; +import org.eclipse.emf.cdo.view.CDOViewInvalidationEvent; + +import org.eclipse.net4j.util.event.IEvent; +import org.eclipse.net4j.util.om.monitor.NotifyingMonitor.ProgressEvent; + +/** + * @author Eike Stepper + */ +@CleanRepositoriesBefore +public class OfflineRawTest extends OfflineTest +{ + @Override + protected boolean isRawReplication() + { + return true; + } + + public void _testMasterCommits_NotificationsFromClone() throws Exception + { + masterCommits_NotificationsFromClone(); + } + + /** + * @since 4.0 + */ + public void _testNotification() throws Exception + { + InternalRepository clone = getRepository(); + waitForOnline(clone); + + CDOSession session = openSession(); + CDOTransaction transaction = session.openTransaction(); + CDOResource resource = transaction.createResource("/my/resource"); + + resource.getContents().add(getModel1Factory().createCompany()); + transaction.setCommitComment("resource with one company created on clone"); + transaction.commit(); + + getOfflineConfig().stopMasterTransport(); + waitForOffline(clone); + + TestListener sessionListener = new TestListener(); + session.addListener(sessionListener); + + TestListener transactionListener = new TestListener(); + transaction.addListener(transactionListener); + + { + CDOSession masterSession = openSession("master"); + CDOTransaction masterTransaction = masterSession.openTransaction(); + CDOResource masterResource = masterTransaction.getResource("/my/resource"); + + masterResource.getContents().add(getModel1Factory().createCompany()); + masterTransaction.setCommitComment("one company added on master"); + masterTransaction.commit(); + + masterResource.getContents().add(getModel1Factory().createCompany()); + masterTransaction.setCommitComment("one company added on master"); + masterTransaction.commit(); + + masterTransaction.close(); + } + + getOfflineConfig().startMasterTransport(); + waitForOnline(clone); + sleep(1000); + + IEvent[] sessionEvents = sessionListener.getEvents(); + assertEquals(4, sessionEvents.length); // 3x repo state change + 1x invalidation + + int count = 0; + for (IEvent sessionEvent : sessionEvents) + { + if (sessionEvent instanceof CDOSessionInvalidationEvent) + { + CDOSessionInvalidationEvent sessionInvalidationEvent = (CDOSessionInvalidationEvent)sessionEvent; + assertEquals(2, sessionInvalidationEvent.getNewObjects().size()); + assertEquals(1, sessionInvalidationEvent.getChangedObjects().size()); + assertEquals(0, sessionInvalidationEvent.getDetachedObjects().size()); + ++count; + } + } + + assertEquals(1, count); + + IEvent[] transactionEvents = transactionListener.getEvents(); + assertEquals(2, transactionEvents.length); // 1x invalidation + 1x adapters notified + + CDOViewInvalidationEvent viewInvalidationEvent = (CDOViewInvalidationEvent)transactionEvents[0]; + assertEquals(1, viewInvalidationEvent.getDirtyObjects().size()); + assertEquals(1, viewInvalidationEvent.getRevisionDeltas().size()); + assertEquals(0, viewInvalidationEvent.getDetachedObjects().size()); + + CDORevisionDelta delta = viewInvalidationEvent.getRevisionDeltas().get(resource); + assertEquals(null, delta); + assertEquals(true, viewInvalidationEvent.getRevisionDeltas().containsKey(resource)); + } + + /** + * @since 4.0 + */ + public void testNotificationAllDeltas() throws Exception + { + InternalRepository clone = getRepository(); + waitForOnline(clone); + + CDOSession session = openSession(); + session.options().setPassiveUpdateMode(PassiveUpdateMode.ADDITIONS); + CDOTransaction transaction = session.openTransaction(); + CDOResource resource = transaction.createResource("/my/resource"); + + resource.getContents().add(getModel1Factory().createCompany()); + transaction.setCommitComment("resource with one company created on clone"); + transaction.commit(); + + TestListener sessionListener = new TestListener(); + session.addListener(sessionListener); + + getOfflineConfig().stopMasterTransport(); + waitForOffline(clone); + + TestListener transactionListener = new TestListener(); + transaction.addListener(transactionListener); + + { + CDOSession masterSession = openSession("master"); + CDOTransaction masterTransaction = masterSession.openTransaction(); + CDOResource masterResource = masterTransaction.getResource("/my/resource"); + + masterResource.getContents().add(getModel1Factory().createCompany()); + masterTransaction.setCommitComment("one company added on master"); + masterTransaction.commit(); + + masterResource.getContents().add(getModel1Factory().createCompany()); + masterTransaction.setCommitComment("one company added on master"); + masterTransaction.commit(); + + masterTransaction.close(); + } + + getOfflineConfig().startMasterTransport(); + waitForOnline(clone); + sleep(1000); + + IEvent[] sessionEvents = sessionListener.getEvents(); + assertEquals(4, sessionEvents.length); // 3x repo state change + 1x invalidation + + int count = 0; + for (IEvent sessionEvent : sessionEvents) + { + if (sessionEvent instanceof CDOSessionInvalidationEvent) + { + CDOSessionInvalidationEvent sessionInvalidationEvent = (CDOSessionInvalidationEvent)sessionEvent; + assertEquals(2, sessionInvalidationEvent.getNewObjects().size()); + assertEquals(1, sessionInvalidationEvent.getChangedObjects().size()); + assertEquals(0, sessionInvalidationEvent.getDetachedObjects().size()); + ++count; + } + } + + assertEquals(1, count); + + IEvent[] transactionEvents = transactionListener.getEvents(); + assertEquals(2, transactionEvents.length); // 1x invalidation + 1x adapters notified + + CDOViewInvalidationEvent viewInvalidationEvent = (CDOViewInvalidationEvent)transactionEvents[0]; + assertEquals(1, viewInvalidationEvent.getDirtyObjects().size()); + assertEquals(1, viewInvalidationEvent.getRevisionDeltas().size()); + assertEquals(0, viewInvalidationEvent.getDetachedObjects().size()); + + CDORevisionDelta delta = viewInvalidationEvent.getRevisionDeltas().get(resource); + assertEquals(1, delta.getFeatureDeltas().size()); + + CDOListFeatureDelta listDelta = (CDOListFeatureDelta)delta.getFeatureDeltas().get(0); + assertEquals(2, listDelta.getListChanges().size()); + } + + /** + * @since 4.0 + */ + public void testSyncProgressEvents() throws Exception + { + InternalSynchronizableRepository clone = getRepository(); + waitForOnline(clone); + + CDOSession session = openSession(); + CDOTransaction transaction = session.openTransaction(); + CDOResource resource = transaction.createResource("/my/resource"); + + resource.getContents().add(getModel1Factory().createCompany()); + transaction.setCommitComment("resource with one company created on clone"); + transaction.commit(); + + getOfflineConfig().stopMasterTransport(); + waitForOffline(clone); + + { + CDOSession masterSession = openSession("master"); + CDOTransaction masterTransaction = masterSession.openTransaction(); + CDOResource masterResource = masterTransaction.getResource("/my/resource"); + + for (int i = 0; i < 100; i++) + { + masterResource.getContents().add(getModel1Factory().createCompany()); + masterTransaction.setCommitComment("one company added on master"); + masterTransaction.commit(); + } + + masterTransaction.close(); + } + + final int[] workPercent = { 0 }; + TestListener listener = new TestListener() + { + @Override + public void notifyEvent(IEvent event) + { + super.notifyEvent(event); + if (event instanceof ProgressEvent) + { + ProgressEvent e = (ProgressEvent)event; + workPercent[0] = (int)e.getWorkPercent(); + msg(e.getTask() + ": " + workPercent[0] + " percent"); + } + } + }; + + clone.getSynchronizer().addListener(listener); + + getOfflineConfig().startMasterTransport(); + waitForOnline(clone); + assertEquals(100, workPercent[0]); + } +} |