package com.orientechnologies.orient.graph;
import com.orientechnologies.orient.core.record.impl.ODocument;
import com.orientechnologies.orient.core.sql.query.OSQLSynchQuery;
import com.tinkerpop.blueprints.impls.orient.OrientGraph;
import com.tinkerpop.blueprints.impls.orient.OrientGraphFactory;
import com.tinkerpop.blueprints.impls.orient.OrientVertex;
import org.junit.BeforeClass;
import org.junit.Test;
import java.util.List;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
public class ODatabaseFailDueCloseTest {
private static OrientGraphFactory pool;
@BeforeClass
public static void setup() {
createGraph();
pool = new OrientGraphFactory("memory:temp", "admin", "admin").setupPool(1, 10);
OrientGraph graph = pool.getTx();
try {
fillTheGraph(graph);
} finally {
graph.shutdown();
}
}
private static void createGraph() {
OrientGraph g = new OrientGraph("memory:temp", "admin", "admin");
g.shutdown();
}
private static void fillTheGraph(OrientGraph graph) {
OrientVertex riccardo = createPerson(graph, "riccardo", 32);
OrientVertex luca = createPerson(graph, "luca", 40);
OrientVertex luigi = createPerson(graph, "luigi", 30);
OrientVertex milano = createCity(graph, "milano", 1332516);
OrientVertex roma = createCity(graph, "roma", 1332516);
OrientVertex unknown = createCity(graph, "unknown", -1);
riccardo.addEdge("lives", milano);
luca.addEdge("lives", roma);
luigi.addEdge("lives", unknown);
}
private static OrientVertex createPerson(OrientGraph graph, String localName, int age) {
OrientVertex a = graph.addVertex("class:Person");
a.setProperties("localName", localName, "age", age);
return a;
}
private static OrientVertex createCity(OrientGraph graph, String localName, int population) {
OrientVertex a = graph.addVertex("class:City");
a.setProperties("localName", localName, "population", population);
return a;
}
@Test()
public void test1() {
final OrientGraph graph = pool.getTx();
try {
String queryText = "SELECT @rid as rid, localName FROM Person WHERE ( 'milano' IN out('lives').localName OR 'roma' IN out('lives').localName ) ORDER BY age ASC";
OSQLSynchQuery<ODocument> query = new OSQLSynchQuery<ODocument>(queryText);
List<ODocument> results = graph.getRawGraph().query(query);
assertNotNull(results);
assertTrue(results.size() > 0);
} finally {
graph.shutdown();
}
}
@Test
public void test2() {
final OrientGraph graph = pool.getTx();
try {
String queryText = "SELECT @rid as rid, localName FROM Person WHERE age > 30";
OSQLSynchQuery<ODocument> query = new OSQLSynchQuery<ODocument>(queryText);
List<ODocument> results = graph.getRawGraph().query(query);
assertNotNull(results);
assertTrue(results.size() > 0);
} finally {
graph.shutdown();
}
}
}