Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'cdo/benchmarks/org.eclipse.papyrus.cdo.uml.benchmarks.creation.tests/src/org/eclipse/papyrus/cdo/uml/benchmarks/creation/tests/CDORemoteTests_LazyLoadingV2.java')
-rwxr-xr-xcdo/benchmarks/org.eclipse.papyrus.cdo.uml.benchmarks.creation.tests/src/org/eclipse/papyrus/cdo/uml/benchmarks/creation/tests/CDORemoteTests_LazyLoadingV2.java344
1 files changed, 344 insertions, 0 deletions
diff --git a/cdo/benchmarks/org.eclipse.papyrus.cdo.uml.benchmarks.creation.tests/src/org/eclipse/papyrus/cdo/uml/benchmarks/creation/tests/CDORemoteTests_LazyLoadingV2.java b/cdo/benchmarks/org.eclipse.papyrus.cdo.uml.benchmarks.creation.tests/src/org/eclipse/papyrus/cdo/uml/benchmarks/creation/tests/CDORemoteTests_LazyLoadingV2.java
new file mode 100755
index 00000000..5e9a1665
--- /dev/null
+++ b/cdo/benchmarks/org.eclipse.papyrus.cdo.uml.benchmarks.creation.tests/src/org/eclipse/papyrus/cdo/uml/benchmarks/creation/tests/CDORemoteTests_LazyLoadingV2.java
@@ -0,0 +1,344 @@
+package org.eclipse.papyrus.cdo.uml.benchmarks.creation.tests;
+
+import java.util.Properties;
+
+import org.eclipse.emf.cdo.common.branch.CDOBranch;
+import org.eclipse.emf.cdo.common.branch.CDOBranchPoint;
+import org.eclipse.emf.cdo.explorer.CDOExplorerUtil;
+import org.eclipse.emf.cdo.explorer.checkouts.CDOCheckout;
+import org.eclipse.emf.cdo.explorer.repositories.CDORepository;
+import org.eclipse.emf.cdo.internal.explorer.AbstractElement;
+import org.eclipse.emf.cdo.internal.explorer.checkouts.CDOCheckoutImpl;
+import org.eclipse.emf.cdo.internal.explorer.repositories.CDORepositoryImpl;
+import org.eclipse.emf.cdo.internal.explorer.repositories.RemoteCDORepository;
+import org.eclipse.emf.cdo.net4j.CDONet4jSessionConfiguration;
+import org.eclipse.emf.cdo.net4j.CDONet4jUtil;
+import org.eclipse.emf.cdo.session.CDOSession;
+import org.eclipse.emf.cdo.transaction.CDOTransaction;
+import org.eclipse.emf.cdo.util.CommitException;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.net4j.Net4jUtil;
+import org.eclipse.net4j.connector.IConnector;
+import org.eclipse.net4j.tcp.TCPUtil;
+import org.eclipse.net4j.util.container.ContainerUtil;
+import org.eclipse.net4j.util.container.IManagedContainer;
+import org.eclipse.net4j.util.security.IPasswordCredentialsProvider;
+import org.eclipse.net4j.util.security.PasswordCredentialsProvider;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.UMLFactory;
+import org.eclipse.uml2.uml.UMLPackage;
+
+//import RequirementWithEMF.Constants;
+
+public class CDORemoteTests_LazyLoadingV2 {
+
+ // @Test
+ public void create_10000_Elements() {
+ create_Elements(10000);
+ }
+
+ // @Test
+ public void create_50000_Elements() {
+ create_Elements(50000);
+ }
+
+ // @Test
+ public void create_500000_Elements() {
+ create_Elements(500000);
+ }
+
+ /**
+ * run in 194619 ms (outside of the UI thread) -> 3,2 minutes
+ */
+// @Test
+ public void create_1000000_Elements() {
+ create_Elements(1000000);
+ }
+
+
+ public void create_Elements(int size) {
+ System.out.println("Creation in Remote CDO file with LazyLoading");
+ System.out.println("create " + size + " elements with the factory " + UMLFactory.eINSTANCE.getClass().getName());
+ String fileName = size + "_Elements";
+ String timsestamp = Long.toString(System.currentTimeMillis());
+ fileName = fileName + "_" + timsestamp;
+
+ // 1. CDO connection
+ try {
+ connect();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ // 2 CDO transaction
+ CDOTransaction transaction = getSession().openTransaction();
+
+ URI uri = URI.createURI(fileName);
+ uri = uri.appendFileExtension("uml");
+
+ // 3. create CDO resource
+ Resource myResource = transaction.getOrCreateResource("/home/Administrator/" + fileName);
+
+ // 1. create the root package
+ org.eclipse.uml2.uml.Package rootPackage = UMLFactory.eINSTANCE.createPackage();
+ rootPackage.setName("RootPackage_" + fileName);
+ myResource.getContents().add(rootPackage);
+ try {
+ transaction.commit();
+ } catch (CommitException e1) {
+ // TODO Auto-generated catch block
+ e1.printStackTrace();
+ }
+ transaction.close();
+ getSession().close();
+
+
+
+ int nbClassPerLoop = 1000;
+ long start = System.currentTimeMillis();
+
+ try {
+ connect();
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ CDOTransaction transaction2 = getSession().openTransaction();
+
+ Resource res = transaction2.getResource("/home/Administrator/" + fileName);
+
+ // 2. we get the root package
+ Package pack = (Package) res.getContents().get(0);
+
+ // 2. create the elements
+ for (int i = 0; i < size; i += nbClassPerLoop) {
+ createElementsInNewPackage(fileName, i, nbClassPerLoop, pack);
+ if (i % 20000 == 0) {
+ System.out.println(" create " + i + " on " + size + " creations.");
+ // System.gc();
+ }
+ try {
+ transaction2.commit();
+ } catch (CommitException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ // }
+
+ }
+
+ transaction2.close();
+ getSession().close();
+ long end = System.currentTimeMillis();
+ System.out.println("+ " + size + " creations WITH UML done: " + (end - start) + " ms ");
+
+
+ }
+
+ private void createElementsInNewPackage(final String fileName, final int packIndex, final int nbClassToCreate, Package pack) {
+ // System.out.println(".");
+ // 1. we connect to CDO server
+ // try {
+ // connect();
+ // } catch (Exception e) {
+ // // TODO Auto-generated catch block
+ // e.printStackTrace();
+ // }
+ // CDOTransaction transaction2 = getSession().openTransaction();
+ //
+ // Resource res = transaction2.getResource("/home/Administrator/" + fileName);
+ //
+ // // 2. we get the root package
+ // Package pack = (Package) res.getContents().get(0);
+
+
+ // 3. we create an intermediate package
+ Package currentPackage = UMLFactory.eINSTANCE.createPackage();
+ currentPackage.setName("package" + packIndex);
+ pack.getPackagedElements().add(currentPackage);
+// Package currentPackage = pack;
+ long start = System.currentTimeMillis();
+
+ // we create nbClasses
+ for (int i = 0; i < nbClassToCreate; i++) {
+ org.eclipse.uml2.uml.Class aclass = UMLFactory.eINSTANCE.createClass();
+ final StringBuilder builder = new StringBuilder("Class_");
+ builder.append(i);
+ aclass.setName(builder.toString());
+ currentPackage.getPackagedElements().add(aclass);
+ }
+
+ long end = System.currentTimeMillis();
+ System.out.println(" " + nbClassToCreate + " created in " + (end - start) + " ms");
+ // 4. we close the transaction
+ // try {
+ // transaction2.commit();
+ // } catch (CommitException e) {
+ // // TODO Auto-generated catch block
+ // e.printStackTrace();
+ //// start = System.currentTimeMillis();
+ //// while (((int) (System.currentTimeMillis() - start)) < 1000) {
+ //// int i = 0;
+ //// i++;
+ //// i++;
+ //// i++;
+ ////
+ //// }
+ //// try {
+ //// System.out.println("2nd try to commit");
+ //// transaction2.commit();
+ //// } catch (ConcurrentAccessException e1) {
+ //// // TODO Auto-generated catch block
+ //// e1.printStackTrace();
+ //// } catch (CommitException e1) {
+ //// // TODO Auto-generated catch block
+ //// e1.printStackTrace();
+ //// }
+ //
+ // }
+ // transaction2.close();
+ // getSession().close();
+ }
+ // ==================CDO METHODS AND FIELDS============================
+
+ // CDO fields and methods
+ private static final String HOST_AND_PORT = "localhost:2036";
+ private static final String USER_NAME = "Administrator";
+ private static final String PASSWORD = "0000";
+ final String PAPYRUS_CDO_SECURED_REPOSITORY = "PapyrusCDOSecuredRepository";
+
+
+ private CDOSession session;
+ private CDOCheckout checkout;
+ private CDORepository repository;
+ private CDOTransaction transaction;
+
+
+ public final void connect() throws Exception {
+ connect(getHostAndPort(), getUser(), getPassword());
+ }
+
+ /**
+ * @return
+ */
+ private String getPassword() {
+ return PASSWORD;
+ }
+
+ /**
+ * @return
+ */
+ private String getUser() {
+ return USER_NAME;
+ }
+
+ /**
+ * @return
+ */
+ private String getHostAndPort() {
+ return HOST_AND_PORT;
+ }
+
+ private void connect(final String serverURI, final String login, final String password) throws Exception {
+ try {
+ // Prepare container
+ final IManagedContainer container = ContainerUtil.createContainer();
+ Net4jUtil.prepareContainer(container); // Register Net4j factories
+ TCPUtil.prepareContainer(container); // Register TCP factories
+ CDONet4jUtil.prepareContainer(container); // Register CDO factories
+ container.activate();
+
+ // Create connector
+ final IConnector connector = TCPUtil.getConnector(container, serverURI);
+
+ // Create configuration
+ final CDONet4jSessionConfiguration configuration = CDONet4jUtil.createNet4jSessionConfiguration();
+ configuration.setConnector(connector);
+ configuration.setRepositoryName(PAPYRUS_CDO_SECURED_REPOSITORY);
+ final IPasswordCredentialsProvider credentialsProvider = new PasswordCredentialsProvider(login, password);
+ configuration.setCredentialsProvider(credentialsProvider);
+
+ final Properties properties = new Properties();
+
+ properties.setProperty(AbstractElement.PROP_TYPE, CDORepository.TYPE_REMOTE);
+ properties.setProperty(AbstractElement.PROP_LABEL, PAPYRUS_CDO_SECURED_REPOSITORY);
+ properties.setProperty(CDORepositoryImpl.PROP_NAME, PAPYRUS_CDO_SECURED_REPOSITORY);
+ properties.setProperty(RemoteCDORepository.PROP_CONNECTOR_TYPE, "tcp"); //$NON-NLS-1$
+ // TODO : is it serverURI?
+ properties.setProperty(RemoteCDORepository.PROP_CONNECTOR_DESCRIPTION, serverURI);
+
+ repository = CDOExplorerUtil.getRepositoryManager().addRepository(properties, credentialsProvider.getCredentials());
+ repository.connect();
+
+ // Open session
+ // try {
+ session = configuration.openNet4jSession();
+ System.gc();
+ // }catch(Exception e) {
+ // e.printStackTrace();
+ // long start = System.currentTimeMillis();
+ // while (((int) (System.currentTimeMillis() - start)) < 1000) {
+ // int i = 0;
+ // i++;
+ // i++;
+ // i++;
+ //
+ // }
+ // try {
+ // System.out.println("2nd try to open session");
+ // session = configuration.openNet4jSession();
+ // } catch (Exception ee) {
+ // // TODO Auto-generated catch block
+ // ee.printStackTrace();
+ // }
+ //
+ // }
+ // these informations have no impact on the performance
+ session.getPackageRegistry().putEPackage(UMLPackage.eINSTANCE);
+ // session.getPackageRegistry().putEPackage(sysmlPackage.eINSTANCE);
+
+ this.checkout = createCheckout("PapyrusPerfoTestCheckout" + Long.toString(System.currentTimeMillis())); //$NON-NLS-1$
+
+
+ } catch (final Exception e) {
+ throw e;
+ }
+
+ }
+
+ private CDOCheckout createCheckout(final String checkoutName) {
+ final Properties properties = new Properties();
+ properties.setProperty(AbstractElement.PROP_TYPE, CDOCheckout.TYPE_ONLINE_HISTORICAL);
+ properties.setProperty(AbstractElement.PROP_LABEL, checkoutName);
+ properties.setProperty(CDOCheckoutImpl.PROP_REPOSITORY, this.repository.getID());
+ properties.setProperty(CDOCheckoutImpl.PROP_BRANCH_ID, Integer.toString(CDOBranch.MAIN_BRANCH_ID));
+ properties.setProperty(CDOCheckoutImpl.PROP_TIME_STAMP, Long.toString(CDOBranchPoint.UNSPECIFIED_DATE));
+ properties.setProperty(CDOCheckoutImpl.PROP_READ_ONLY, Boolean.toString(false));
+
+ final CDOCheckout checkout = CDOExplorerUtil.getCheckoutManager().addCheckout(properties);
+ checkout.open();
+ return checkout;
+ }
+
+ /**
+ * Gets the running session.
+ *
+ * @return the running session
+ */
+ protected CDOSession getSession() {
+ return this.session;
+ }
+
+
+
+ public void closeTransaction() {
+ if (null != this.transaction) {
+ this.transaction.close();
+ }
+ transaction = null;// TODO : probably missing in QS
+ }
+
+
+
+}

Back to the top