package com.tinkerpop.blueprints.impls.orient;
import com.orientechnologies.orient.client.remote.OServerAdmin;
import com.orientechnologies.orient.core.Orient;
import com.orientechnologies.orient.core.annotation.OId;
import com.orientechnologies.orient.core.command.script.OCommandScript;
import com.orientechnologies.orient.core.db.record.OIdentifiable;
import com.orientechnologies.orient.server.OServer;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import javax.management.InstanceAlreadyExistsException;
import javax.management.MBeanRegistrationException;
import javax.management.MalformedObjectNameException;
import javax.management.NotCompliantMBeanException;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import static org.junit.Assert.assertTrue;
/**
* Created by tglman on 24/05/16.
*/
public class TestBatchRemoteResultSet {
private OServer server;
@Before
public void before()
throws ClassNotFoundException, MalformedObjectNameException, InstanceAlreadyExistsException, NotCompliantMBeanException,
MBeanRegistrationException, InvocationTargetException, NoSuchMethodException, InstantiationException, IOException,
IllegalAccessException {
server = new OServer(false);
server.startup(OrientGraphRemoteTest.class.getResourceAsStream("/embedded-server-config-single-run.xml"));
server.activate();
OServerAdmin admin = new OServerAdmin("remote:localhost:3064");
admin.connect("root", "root");
admin.createDatabase(OrientGraphRemoteTest.class.getSimpleName(), "graph", "memory");
admin.close();
}
@Test
public void runBatchQuery() {
String batchQuery = "begin; LET t0 = CREATE VERTEX V set mame=\"a\" ;\n LET t1 = CREATE VERTEX V set name=\"b\" ;\n"
+ "LET t2 = CREATE EDGE E FROM $t0 TO $t1 ;\n commit retry 100\n" + "return [$t0,$t1,$t2]";
OrientGraph graph = new OrientGraph("remote:localhost:3064/" + OrientGraphRemoteTest.class.getSimpleName(), "root", "root");
Iterable<OIdentifiable> res = graph.getRawGraph().command(new OCommandScript("sql", batchQuery)).execute();
Iterator iter = res.iterator();
assertTrue(iter.next() instanceof OIdentifiable);
assertTrue(iter.next() instanceof OIdentifiable);
Object edges = iter.next();
assertTrue(edges instanceof Collection);
assertTrue(((Collection) edges).iterator().next() instanceof OIdentifiable);
}
@After
public void after() {
server.shutdown();
Orient.instance().startup();
}
}