/** * */ package fr.inria.atlanmod.neo4emf.drivers.impl; import java.io.File; import java.util.Collections; import java.util.List; import org.apache.commons.io.FileUtils; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.EcoreFactory; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.neo4j.graphdb.Node; import org.neo4j.graphdb.RelationshipType; import org.neo4j.graphdb.Transaction; import org.neo4j.graphdb.index.Index; import fr.inria.atlanmod.neo4emf.drivers.IPersistenceService; import fr.inria.atlanmod.neo4emf.drivers.IPersistenceServiceFactory; import fr.inria.atlanmod.neo4emf.drivers.NEConfiguration; import fr.inria.atlanmod.neo4emf.testdata.TestFactory; import fr.inria.atlanmod.neo4emf.testdata.TestPackage; import fr.inria.atlanmod.neo4emf.testdata.Vertex; /** * @author sunye * */ public class PersistenceServiceTest { private static final File DB_FOLDER = new File( "/tmp/PersistentServiceTest/"); private IPersistenceService ps; /** * @throws java.lang.Exception */ @BeforeClass public static void setUpBeforeClass() throws Exception { FileUtils.forceMkdir(DB_FOLDER); } /** * @throws java.lang.Exception */ @AfterClass public static void tearDownAfterClass() throws Exception { FileUtils.forceDelete(DB_FOLDER); } /** * @throws java.lang.Exception */ @Before public void setUp() throws Exception { URI uri = URI.createURI("neo4emf:///"+DB_FOLDER.getAbsolutePath()); NEConfiguration conf = new NEConfiguration(TestPackage.eINSTANCE, uri, Collections.<String,String>emptyMap()); ps = IPersistenceServiceFactory.eINSTANCE .createPersistenceService(conf); } /** * @throws java.lang.Exception */ @After public void tearDown() throws Exception { ps.shutdown(); } /** * Test method for * {@link fr.inria.atlanmod.neo4emf.drivers.impl.PersistenceService#PersistenceService(java.lang.String, fr.inria.atlanmod.neo4emf.drivers.IPersistenceManager)} * . */ @Test public void testPersistenceService() { assert ps != null : "null persistence service"; } /** * Test method for * {@link fr.inria.atlanmod.neo4emf.drivers.impl.PersistenceService#createWithIndexIfNotExists(org.eclipse.emf.ecore.EClass)} * . */ /*@Test public void testCreateWithIndexIfNotExists() { String className = "TestEClass"; String uri = "TestURI"; EClass klass = EcoreFactory.eINSTANCE.createEClass(); klass.setName(className); EPackage pac = EcoreFactory.eINSTANCE.createEPackage(); pac.getEClassifiers().add(klass); pac.setNsURI(uri); NETransaction t = ps.createTransaction(); Node n = ps.createWithIndexIfNotExists(klass); assert n != null; assert className.equals(n.getProperty(IPersistenceService.ECLASS_NAME)); assert uri.equals(n.getProperty(IPersistenceService.NS_URI)); t.commit(); }*/ /* * Test method for {@link * fr.inria.atlanmod.neo4emf.drivers.impl.PersistenceService * #createResourceNodeIfAbsent()}. */ @Test public void testCreateResourceNodeIfAbsent() { /* Transaction t = ps.beginTx(); Node n = ps.createResourceNodeIfAbsent(); t.success(); assert n != null; assert n.equals(ps .getMetaIndex() .get(IPersistenceService.ID_META, IPersistenceService.RESOURCE_NODE).getSingle()); t.finish(); */ } /** * Test method for * {@link fr.inria.atlanmod.neo4emf.drivers.impl.PersistenceService#createObjectProxyFromNode(org.neo4j.graphdb.Node)} * . */ // @Test public void testCreateObjectProxyFromNode() { // //fail("Not yet implemented"); } /** * Test method for * {@link fr.inria.atlanmod.neo4emf.drivers.impl.PersistenceService#createNodeFromEObject(org.eclipse.emf.ecore.EObject)} * . */ // @Test public void testCreateNodeFromEObject() { Vertex vertex = TestFactory.eINSTANCE.createVertex(); NETransaction t = ps.createTransaction(); Node n = ps.createNodeFromEObject(vertex); n.setProperty("Name", "My first node"); t.commit(); assert n != null; assert n.getId() > 0; } /** * Test method for * {@link fr.inria.atlanmod.neo4emf.drivers.impl.PersistenceService#createTmpNodeFromEObject(org.eclipse.emf.ecore.EObject)} * . */ // @Test public void testCreateTmpNodeFromEObject() { // //fail("Not yet implemented"); } /** * Test method for * {@link fr.inria.atlanmod.neo4emf.drivers.impl.PersistenceService#getAllRootNodes()} * . */ // @Test public void testGetAllRootNodes() { /* Transaction t = ps.beginTx(); ps.createResourceNodeIfAbsent(); List<Node> nodes = ps.getAllRootNodes(); assert nodes.isEmpty(); t.finish(); */ } /** * Test method for * {@link fr.inria.atlanmod.neo4emf.drivers.impl.PersistenceService#getAllTmpNodes()} * . */ // @Test public void testGetAllTmpNodes() { // //fail("Not yet implemented"); } /** * Test method for * {@link fr.inria.atlanmod.neo4emf.drivers.impl.PersistenceService#deleteBaseNode(org.neo4j.graphdb.Node, org.neo4j.graphdb.Node)} * . */ // @Test public void testDeleteBaseNode() { // //fail("Not yet implemented"); } /** * Test method for * {@link fr.inria.atlanmod.neo4emf.drivers.impl.PersistenceService#setUpTraversal(long, org.neo4j.graphdb.RelationshipType, org.neo4j.graphdb.Direction)} * . */ // @Test public void testSetUpTraversal() { // //fail("Not yet implemented"); } /** * Test method for * {@link fr.inria.atlanmod.neo4emf.drivers.impl.PersistenceService#getNodeType(org.neo4j.graphdb.Node)} * . */ // @Test public void testGetNodeType() { // //fail("Not yet implemented"); } /** * Test method for * {@link fr.inria.atlanmod.neo4emf.drivers.impl.PersistenceService#getContainingPackage(org.neo4j.graphdb.Node)} * . */ // @Test public void testGetContainingPackage() { // //fail("Not yet implemented"); } /** * Test method for * {@link fr.inria.atlanmod.neo4emf.drivers.impl.PersistenceService#getNodesOnDemand(long, org.neo4j.graphdb.RelationshipType)} * . */ // @Test public void testGetNodesOnDemand() { // //fail("Not yet implemented"); } /** * Test method for * {@link fr.inria.atlanmod.neo4emf.drivers.impl.PersistenceService#isRootNode(org.neo4j.graphdb.Node)} * . */ // @Test public void testIsRootNode() { // //fail("Not yet implemented"); } /** * Test method for * {@link fr.inria.atlanmod.neo4emf.drivers.impl.PersistenceService#getAllNodesOfType(org.eclipse.emf.ecore.EClass)} * . */ // @Test public void testGetAllNodesOfType() { // //fail("Not yet implemented"); } /** * Test method for * {@link fr.inria.atlanmod.neo4emf.drivers.impl.PersistenceService#createTransaction()} * . */ // @Test public void testBeginTx() { // //fail("Not yet implemented"); } /** * Test method for * {@link fr.inria.atlanmod.neo4emf.drivers.impl.PersistenceService#createNode()} * . */ @Test public void testCreateNode() { /* Transaction t = ps.beginTx(); Node root = ps.createResourceNodeIfAbsent(); root.setProperty("name", "ROOT"); try { for (int i = 0; i < 100; i++) { Node n = ps.createNode(); n.setProperty("ID", i); root.createRelationshipTo(n, RelTypes.LINK); } t.success(); } finally { t.finish(); } */ } /** * Test method for * {@link fr.inria.atlanmod.neo4emf.drivers.impl.PersistenceService#getAllNodes()} * . */ // @Test public void testGetAllNodes() { // //fail("Not yet implemented"); } /** * Test method for * {@link fr.inria.atlanmod.neo4emf.drivers.impl.PersistenceService#getNodeById(long)} * . */ @Test public void testGetNodeById() { NETransaction tx; int times = 100; Node[] nodes = new Node[times]; tx = ps.createTransaction(); try { for (int i = 0; i < nodes.length; i++) { nodes[i] = ps.createNode(); } tx.success(); } finally { tx.commit(); } tx = ps.createTransaction(); for (int i = 0; i < nodes.length; i++) { Node n = ps.getNodeById(nodes[i].getId()); assert n.equals(nodes[i]); } } /** * Test method for * {@link fr.inria.atlanmod.neo4emf.drivers.impl.PersistenceService#getReferenceNode()} * . */ // @Test public void testGetReferenceNode() { // //fail("Not yet implemented"); } /** * Test method for * {@link fr.inria.atlanmod.neo4emf.drivers.impl.PersistenceService#getRelationshipById(long)} * . */ // @Test public void testGetRelationshipById() { // //fail("Not yet implemented"); } /** * Test method for * {@link fr.inria.atlanmod.neo4emf.drivers.impl.PersistenceService#getRelationshipTypes()} * . */ // @Test public void testGetRelationshipTypes() { // //fail("Not yet implemented"); } /** * Test method for * {@link fr.inria.atlanmod.neo4emf.drivers.impl.PersistenceService#index()} * . */ // @Test public void testIndex() { // //fail("Not yet implemented"); } /** * Test method for * {@link fr.inria.atlanmod.neo4emf.drivers.impl.PersistenceService#registerKernelEventHandler(org.neo4j.graphdb.event.KernelEventHandler)} * . */ // @Test public void testRegisterKernelEventHandler() { // //fail("Not yet implemented"); } /** * Test method for * {@link fr.inria.atlanmod.neo4emf.drivers.impl.PersistenceService#registerTransactionEventHandler(org.neo4j.graphdb.event.TransactionEventHandler)} * . */ // @Test public void testRegisterTransactionEventHandler() { // //fail("Not yet implemented"); } /** * Test method for * {@link fr.inria.atlanmod.neo4emf.drivers.impl.PersistenceService#shutdown()} * . */ // @Test public void testShutdown() { // //fail("Not yet implemented"); } /** * Test method for * {@link fr.inria.atlanmod.neo4emf.drivers.impl.PersistenceService#unregisterKernelEventHandler(org.neo4j.graphdb.event.KernelEventHandler)} * . */ // @Test public void testUnregisterKernelEventHandler() { // //fail("Not yet implemented"); } /** * Test method for * {@link fr.inria.atlanmod.neo4emf.drivers.impl.PersistenceService#unregisterTransactionEventHandler(org.neo4j.graphdb.event.TransactionEventHandler)} * . */ // @Test public void testUnregisterTransactionEventHandler() { // //fail("Not yet implemented"); } private static enum RelTypes implements RelationshipType { LINK } }