blob: 5675756546a2695515e9b3d77fd3411c98d1c4ed [file] [log] [blame]
package org.eclipse.papyrus.cdo.uml.benchmarks.creation.tests.cleanexamples;
import org.eclipse.emf.cdo.net4j.CDONet4jSession;
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.view.CDOView;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.net4j.Net4jUtil;
import org.eclipse.net4j.connector.IConnector;
import org.eclipse.net4j.signal.ISignalProtocol;
import org.eclipse.net4j.tcp.TCPUtil;
import org.eclipse.net4j.util.container.IPluginContainer;
import org.eclipse.net4j.util.om.OMPlatform;
import org.eclipse.net4j.util.security.PasswordCredentialsProvider;
import org.eclipse.uml2.uml.UMLFactory;
import org.junit.Assert;
public class CDORemoteTests_OneCommit_OneTransaction_NoSubPackage {
private static final UMLFactory FACTORY = UMLFactory.eINSTANCE;
// @Test
public void create_10000_Elements() throws Exception {
create_Elements(10000);
}
// @Test
public void create_50000_Elements() throws Exception {
create_Elements(50000);
}
// @Test
public void create_500000_Elements() throws Exception {
create_Elements(500000);
}
// @Test
public void create_1000000_Elements() throws Exception {
create_Elements(1000000);
}
private void create_Elements(int size) throws Exception {
System.out.println("Class Tests Name:" + getClass().getSimpleName());
System.out.println("Creation in Remote CDO file");
System.out.println("Creating " + size + " elements with the factory " + FACTORY.getClass().getName() + "...");
String fileName = size + "_Elements";
String timsestamp = Long.toString(System.currentTimeMillis());
fileName = fileName + "_" + timsestamp;
CDOSession session = openSession();
CDOTransaction transaction = session.openTransaction();
Resource myResource = transaction.getOrCreateResource("/home/Administrator/" + fileName);
///////////////////////////////// CREATE //////////////////////////////////////////////////////
long start = System.currentTimeMillis();
// 1. create the root package
org.eclipse.uml2.uml.Package rootPackage = FACTORY.createPackage();
rootPackage.setName("RootPackage_" + fileName);
myResource.getContents().add(rootPackage);
// 2. create the elements
for (long i = 0; i < size; i++) {
org.eclipse.uml2.uml.Class aclass = FACTORY.createClass();
final StringBuilder builder = new StringBuilder("Class_");
builder.append(i);
aclass.setName(builder.toString());
rootPackage.getPackagedElements().add(aclass);
}
long end = System.currentTimeMillis();
System.out.println("Done: " + (end - start) + " ms ");
///////////////////////////////// SAVE //////////////////////////////////////////////////////
System.out.println("Committing...");
start = System.currentTimeMillis();
transaction.commit();
session.close();
end = System.currentTimeMillis();
System.out.println("Done: " + (end - start) + " ms");
///////////////////////////////// LOAD //////////////////////////////////////////////////////
CDOSession session2 = openSession();
CDOView view = session2.openView();
Resource resource2 = view.getResource("/home/Administrator/" + fileName);
System.out.println("Loading root object...");
start = System.currentTimeMillis();
org.eclipse.uml2.uml.Package p = (org.eclipse.uml2.uml.Package) resource2.getContents().get(0);
end = System.currentTimeMillis();
Assert.assertNotNull(p);
System.out.println("Done: " + (end - start) + " ms");
System.out.println("\n\n\n");
session2.close();
}
//================== CDO ==============================================
static {
if (!OMPlatform.INSTANCE.isOSGiRunning()) {
Net4jUtil.prepareContainer(IPluginContainer.INSTANCE); // Register Net4j factories
TCPUtil.prepareContainer(IPluginContainer.INSTANCE); // Register TCP factories
CDONet4jUtil.prepareContainer(IPluginContainer.INSTANCE); // Register CDO factories
IPluginContainer.INSTANCE.activate();
}
}
private static final String HOST_AND_PORT = "localhost:2036";
private static final String USER_NAME = "Administrator";
private static final String PASSWORD = "0000";
private static final String PAPYRUS_CDO_SECURED_REPOSITORY = "PapyrusCDOSecuredRepository";
private CDOSession openSession() throws Exception {
IConnector connector = TCPUtil.getConnector(IPluginContainer.INSTANCE, HOST_AND_PORT);
CDONet4jSessionConfiguration configuration = CDONet4jUtil.createNet4jSessionConfiguration();
configuration.setConnector(connector);
configuration.setRepositoryName(PAPYRUS_CDO_SECURED_REPOSITORY);
configuration.setCredentialsProvider(new PasswordCredentialsProvider(USER_NAME, PASSWORD));
CDONet4jSession session = configuration.openNet4jSession();
session.options().getNet4jProtocol().setTimeout(ISignalProtocol.NO_TIMEOUT);
return session;
}
}