Search in sources :

Example 1 with Header

use of redis.clients.jedis.graph.Header in project jedis by xetorthio.

the class GraphAPITest method testHeader.

@Test
public void testHeader() {
    assertNotNull(client.graphQuery("social", "CREATE (:person{name:'roi',age:32})"));
    assertNotNull(client.graphQuery("social", "CREATE (:person{name:'amit',age:30})"));
    assertNotNull(client.graphQuery("social", "MATCH (a:person), (b:person) WHERE (a.name = 'roi' AND b.name='amit')  CREATE (a)-[:knows]->(a)"));
    ResultSet queryResult = client.graphQuery("social", "MATCH (a:person)-[r:knows]->(b:person) RETURN a,r, a.age");
    Header header = queryResult.getHeader();
    assertNotNull(header);
    assertEquals("HeaderImpl{" + // + "schemaTypes=[COLUMN_SCALAR, COLUMN_SCALAR, COLUMN_SCALAR], "
    "schemaTypes=[SCALAR, SCALAR, SCALAR], " + "schemaNames=[a, r, a.age]}", header.toString());
    // Assert.assertEquals(-1901778507, header.hashCode());
    List<String> schemaNames = header.getSchemaNames();
    assertNotNull(schemaNames);
    assertEquals(3, schemaNames.size());
    assertEquals("a", schemaNames.get(0));
    assertEquals("r", schemaNames.get(1));
    assertEquals("a.age", schemaNames.get(2));
}
Also used : Header(redis.clients.jedis.graph.Header) ResultSet(redis.clients.jedis.graph.ResultSet) Test(org.junit.Test)

Example 2 with Header

use of redis.clients.jedis.graph.Header in project jedis by xetorthio.

the class GraphAPITest method testAdditionToProcedures.

@Test
public void testAdditionToProcedures() {
    assertNotNull(client.graphQuery("social", "CREATE (:person{name:'roi',age:32})"));
    assertNotNull(client.graphQuery("social", "CREATE (:person{name:'amit',age:30})"));
    assertNotNull(client.graphQuery("social", "MATCH (a:person), (b:person) WHERE (a.name = 'roi' AND b.name='amit')  CREATE (a)-[:knows]->(b)"));
    // expected objects init
    Property<String> nameProperty = new Property<>("name", "roi");
    Property<Integer> ageProperty = new Property<>("age", 32);
    Property<String> lastNameProperty = new Property<>("lastName", "a");
    Node expectedNode = new Node();
    expectedNode.setId(0);
    expectedNode.addLabel("person");
    expectedNode.addProperty(nameProperty);
    expectedNode.addProperty(ageProperty);
    Edge expectedEdge = new Edge();
    expectedEdge.setId(0);
    expectedEdge.setSource(0);
    expectedEdge.setDestination(1);
    expectedEdge.setRelationshipType("knows");
    ResultSet resultSet = client.graphQuery("social", "MATCH (a:person)-[r:knows]->(b:person) RETURN a,r");
    assertNotNull(resultSet.getHeader());
    Header header = resultSet.getHeader();
    List<String> schemaNames = header.getSchemaNames();
    assertNotNull(schemaNames);
    assertEquals(2, schemaNames.size());
    assertEquals("a", schemaNames.get(0));
    assertEquals("r", schemaNames.get(1));
    assertEquals(1, resultSet.size());
    Iterator<Record> iterator = resultSet.iterator();
    assertTrue(iterator.hasNext());
    Record record = iterator.next();
    assertFalse(iterator.hasNext());
    assertEquals(Arrays.asList("a", "r"), record.keys());
    assertEquals(Arrays.asList(expectedNode, expectedEdge), record.values());
    // test for local cache updates
    expectedNode.removeProperty("name");
    expectedNode.removeProperty("age");
    expectedNode.addProperty(lastNameProperty);
    expectedNode.removeLabel("person");
    expectedNode.addLabel("worker");
    expectedNode.setId(2);
    expectedEdge.setRelationshipType("worksWith");
    expectedEdge.setSource(2);
    expectedEdge.setDestination(3);
    expectedEdge.setId(1);
    assertNotNull(client.graphQuery("social", "CREATE (:worker{lastName:'a'})"));
    assertNotNull(client.graphQuery("social", "CREATE (:worker{lastName:'b'})"));
    assertNotNull(client.graphQuery("social", "MATCH (a:worker), (b:worker) WHERE (a.lastName = 'a' AND b.lastName='b')  CREATE (a)-[:worksWith]->(b)"));
    resultSet = client.graphQuery("social", "MATCH (a:worker)-[r:worksWith]->(b:worker) RETURN a,r");
    assertNotNull(resultSet.getHeader());
    header = resultSet.getHeader();
    schemaNames = header.getSchemaNames();
    assertNotNull(schemaNames);
    assertEquals(2, schemaNames.size());
    assertEquals("a", schemaNames.get(0));
    assertEquals("r", schemaNames.get(1));
    assertEquals(1, resultSet.size());
    iterator = resultSet.iterator();
    assertTrue(iterator.hasNext());
    record = iterator.next();
    assertFalse(iterator.hasNext());
    assertEquals(Arrays.asList("a", "r"), record.keys());
    assertEquals(Arrays.asList(expectedNode, expectedEdge), record.values());
}
Also used : Header(redis.clients.jedis.graph.Header) ResultSet(redis.clients.jedis.graph.ResultSet) Record(redis.clients.jedis.graph.Record) Test(org.junit.Test)

Example 3 with Header

use of redis.clients.jedis.graph.Header in project jedis by xetorthio.

the class GraphPipelineTest method testSync.

@Test
public void testSync() {
    Pipeline pipeline = new Pipeline(c);
    pipeline.set("x", "1");
    pipeline.graphQuery("social", "CREATE (:Person {name:'a'})");
    pipeline.graphQuery("g", "CREATE (:Person {name:'a'})");
    pipeline.incr("x");
    pipeline.get("x");
    pipeline.graphQuery("social", "MATCH (n:Person) RETURN n");
    pipeline.graphDelete("g");
    // pipeline.callProcedure("social", "db.labels");
    pipeline.graphQuery("social", "CALL db.labels()");
    List<Object> results = pipeline.syncAndReturnAll();
    // Redis set command
    assertEquals(String.class, results.get(0).getClass());
    assertEquals("OK", results.get(0));
    // Redis graph command
    // assertEquals(ResultSetImpl.class, results.get(1).getClass());
    ResultSet resultSet = (ResultSet) results.get(1);
    assertEquals(1, resultSet.getStatistics().nodesCreated());
    assertEquals(1, resultSet.getStatistics().propertiesSet());
    // assertEquals(ResultSetImpl.class, results.get(2).getClass());
    resultSet = (ResultSet) results.get(2);
    assertEquals(1, resultSet.getStatistics().nodesCreated());
    assertEquals(1, resultSet.getStatistics().propertiesSet());
    // Redis incr command
    assertEquals(Long.class, results.get(3).getClass());
    assertEquals(2L, results.get(3));
    // Redis get command
    assertEquals(String.class, results.get(4).getClass());
    assertEquals("2", results.get(4));
    // Graph query result
    // assertEquals(ResultSetImpl.class, results.get(5).getClass());
    resultSet = (ResultSet) results.get(5);
    assertNotNull(resultSet.getHeader());
    Header header = resultSet.getHeader();
    List<String> schemaNames = header.getSchemaNames();
    assertNotNull(schemaNames);
    assertEquals(1, schemaNames.size());
    assertEquals("n", schemaNames.get(0));
    Property<String> nameProperty = new Property<>("name", "a");
    Node expectedNode = new Node();
    expectedNode.setId(0);
    expectedNode.addLabel("Person");
    expectedNode.addProperty(nameProperty);
    // see that the result were pulled from the right graph
    assertEquals(1, resultSet.size());
    Iterator<Record> iterator = resultSet.iterator();
    assertTrue(iterator.hasNext());
    Record record = iterator.next();
    assertFalse(iterator.hasNext());
    assertEquals(Arrays.asList("n"), record.keys());
    assertEquals(expectedNode, record.getValue("n"));
    // assertEquals(ResultSetImpl.class, results.get(7).getClass());
    resultSet = (ResultSet) results.get(7);
    assertNotNull(resultSet.getHeader());
    header = resultSet.getHeader();
    schemaNames = header.getSchemaNames();
    assertNotNull(schemaNames);
    assertEquals(1, schemaNames.size());
    assertEquals("label", schemaNames.get(0));
    assertEquals(1, resultSet.size());
    iterator = resultSet.iterator();
    assertTrue(iterator.hasNext());
    record = iterator.next();
    assertFalse(iterator.hasNext());
    assertEquals(Arrays.asList("label"), record.keys());
    assertEquals("Person", record.getValue("label"));
}
Also used : Header(redis.clients.jedis.graph.Header) Node(redis.clients.jedis.graph.entities.Node) ResultSet(redis.clients.jedis.graph.ResultSet) Record(redis.clients.jedis.graph.Record) Property(redis.clients.jedis.graph.entities.Property) Pipeline(redis.clients.jedis.Pipeline) Test(org.junit.Test)

Example 4 with Header

use of redis.clients.jedis.graph.Header in project jedis by xetorthio.

the class GraphTransactionTest method testMultiExecWithReadOnlyQueries.

// 
// @Test
// public void testWriteTransactionWatch() {
// 
// RedisGraphContext c1 = api.getContext();
// RedisGraphContext c2 = api.getContext();
// 
// c1.watch("social");
// RedisGraphTransaction t1 = c1.multi();
// 
// t1.graphQuery("social", "CREATE (:Person {name:'a'})");
// c2.graphQuery("social", "CREATE (:Person {name:'b'})");
// List<Object> returnValue = t1.exec();
// assertNull(returnValue);
// c1.close();
// c2.close();
// }
// 
// @Test
// public void testReadTransactionWatch() {
// 
// RedisGraphContext c1 = api.getContext();
// RedisGraphContext c2 = api.getContext();
// assertNotEquals(c1.getConnectionContext(), c2.getConnectionContext());
// c1.graphQuery("social", "CREATE (:Person {name:'a'})");
// c1.watch("social");
// RedisGraphTransaction t1 = c1.multi();
// 
// Map<String, Object> params = new HashMap<>();
// params.put("name", 'b');
// t1.graphQuery("social", "CREATE (:Person {name:$name})", params);
// c2.graphQuery("social", "MATCH (n) return n");
// List<Object> returnValue = t1.exec();
// 
// assertNotNull(returnValue);
// c1.close();
// c2.close();
// }
@Test
public void testMultiExecWithReadOnlyQueries() {
    Transaction transaction = new Transaction(c);
    transaction.set("x", "1");
    transaction.graphQuery("social", "CREATE (:Person {name:'a'})");
    transaction.graphQuery("g", "CREATE (:Person {name:'a'})");
    transaction.graphReadonlyQuery("social", "MATCH (n:Person) RETURN n");
    transaction.graphDelete("g");
    // transaction.callProcedure("social", "db.labels");
    transaction.graphQuery("social", "CALL db.labels()");
    List<Object> results = transaction.exec();
    // Redis set command
    assertEquals(String.class, results.get(0).getClass());
    assertEquals("OK", results.get(0));
    // Redis graph command
    // assertEquals(ResultSetImpl.class, results.get(1).getClass());
    ResultSet resultSet = (ResultSet) results.get(1);
    assertEquals(1, resultSet.getStatistics().nodesCreated());
    assertEquals(1, resultSet.getStatistics().propertiesSet());
    // assertEquals(ResultSetImpl.class, results.get(2).getClass());
    resultSet = (ResultSet) results.get(2);
    assertEquals(1, resultSet.getStatistics().nodesCreated());
    assertEquals(1, resultSet.getStatistics().propertiesSet());
    // Graph read-only query result
    // assertEquals(ResultSetImpl.class, results.get(5).getClass());
    resultSet = (ResultSet) results.get(3);
    assertNotNull(resultSet.getHeader());
    Header header = resultSet.getHeader();
    List<String> schemaNames = header.getSchemaNames();
    assertNotNull(schemaNames);
    assertEquals(1, schemaNames.size());
    assertEquals("n", schemaNames.get(0));
    Property<String> nameProperty = new Property<>("name", "a");
    Node expectedNode = new Node();
    expectedNode.setId(0);
    expectedNode.addLabel("Person");
    expectedNode.addProperty(nameProperty);
    // see that the result were pulled from the right graph
    assertEquals(1, resultSet.size());
    Iterator<Record> iterator = resultSet.iterator();
    assertTrue(iterator.hasNext());
    Record record = iterator.next();
    assertFalse(iterator.hasNext());
    assertEquals(Arrays.asList("n"), record.keys());
    assertEquals(expectedNode, record.getValue("n"));
    // assertEquals(ResultSetImpl.class, results.get(5).getClass());
    resultSet = (ResultSet) results.get(5);
    assertNotNull(resultSet.getHeader());
    header = resultSet.getHeader();
    schemaNames = header.getSchemaNames();
    assertNotNull(schemaNames);
    assertEquals(1, schemaNames.size());
    assertEquals("label", schemaNames.get(0));
    assertEquals(1, resultSet.size());
    iterator = resultSet.iterator();
    assertTrue(iterator.hasNext());
    record = iterator.next();
    assertFalse(iterator.hasNext());
    assertEquals(Arrays.asList("label"), record.keys());
    assertEquals("Person", record.getValue("label"));
}
Also used : Transaction(redis.clients.jedis.Transaction) Header(redis.clients.jedis.graph.Header) Node(redis.clients.jedis.graph.entities.Node) ResultSet(redis.clients.jedis.graph.ResultSet) Record(redis.clients.jedis.graph.Record) Property(redis.clients.jedis.graph.entities.Property) Test(org.junit.Test)

Example 5 with Header

use of redis.clients.jedis.graph.Header in project jedis by xetorthio.

the class GraphTransactionTest method testMultiExec.

@Test
public void testMultiExec() {
    Transaction transaction = new Transaction(c);
    transaction.set("x", "1");
    transaction.graphQuery("social", "CREATE (:Person {name:'a'})");
    transaction.graphQuery("g", "CREATE (:Person {name:'a'})");
    transaction.incr("x");
    transaction.get("x");
    transaction.graphQuery("social", "MATCH (n:Person) RETURN n");
    transaction.graphDelete("g");
    // transaction.callProcedure("social", "db.labels");
    transaction.graphQuery("social", "CALL db.labels()");
    List<Object> results = transaction.exec();
    // Redis set command
    assertEquals(String.class, results.get(0).getClass());
    assertEquals("OK", results.get(0));
    // Redis graph command
    // assertEquals(ResultSetImpl.class, results.get(1).getClass());
    ResultSet resultSet = (ResultSet) results.get(1);
    assertEquals(1, resultSet.getStatistics().nodesCreated());
    assertEquals(1, resultSet.getStatistics().propertiesSet());
    // assertEquals(ResultSetImpl.class, results.get(2).getClass());
    resultSet = (ResultSet) results.get(2);
    assertEquals(1, resultSet.getStatistics().nodesCreated());
    assertEquals(1, resultSet.getStatistics().propertiesSet());
    // Redis incr command
    assertEquals(Long.class, results.get(3).getClass());
    assertEquals(2L, results.get(3));
    // Redis get command
    assertEquals(String.class, results.get(4).getClass());
    assertEquals("2", results.get(4));
    // Graph query result
    // assertEquals(ResultSetImpl.class, results.get(5).getClass());
    resultSet = (ResultSet) results.get(5);
    assertNotNull(resultSet.getHeader());
    Header header = resultSet.getHeader();
    List<String> schemaNames = header.getSchemaNames();
    assertNotNull(schemaNames);
    assertEquals(1, schemaNames.size());
    assertEquals("n", schemaNames.get(0));
    Property<String> nameProperty = new Property<>("name", "a");
    Node expectedNode = new Node();
    expectedNode.setId(0);
    expectedNode.addLabel("Person");
    expectedNode.addProperty(nameProperty);
    // see that the result were pulled from the right graph
    assertEquals(1, resultSet.size());
    Iterator<Record> iterator = resultSet.iterator();
    assertTrue(iterator.hasNext());
    Record record = iterator.next();
    assertFalse(iterator.hasNext());
    assertEquals(Arrays.asList("n"), record.keys());
    assertEquals(expectedNode, record.getValue("n"));
    // assertEquals(ResultSetImpl.class, results.get(7).getClass());
    resultSet = (ResultSet) results.get(7);
    assertNotNull(resultSet.getHeader());
    header = resultSet.getHeader();
    schemaNames = header.getSchemaNames();
    assertNotNull(schemaNames);
    assertEquals(1, schemaNames.size());
    assertEquals("label", schemaNames.get(0));
    assertEquals(1, resultSet.size());
    iterator = resultSet.iterator();
    assertTrue(iterator.hasNext());
    record = iterator.next();
    assertFalse(iterator.hasNext());
    assertEquals(Arrays.asList("label"), record.keys());
    assertEquals("Person", record.getValue("label"));
}
Also used : Transaction(redis.clients.jedis.Transaction) Header(redis.clients.jedis.graph.Header) Node(redis.clients.jedis.graph.entities.Node) ResultSet(redis.clients.jedis.graph.ResultSet) Record(redis.clients.jedis.graph.Record) Property(redis.clients.jedis.graph.entities.Property) Test(org.junit.Test)

Aggregations

Test (org.junit.Test)14 Header (redis.clients.jedis.graph.Header)14 ResultSet (redis.clients.jedis.graph.ResultSet)14 Record (redis.clients.jedis.graph.Record)12 Node (redis.clients.jedis.graph.entities.Node)8 Property (redis.clients.jedis.graph.entities.Property)8 Pipeline (redis.clients.jedis.Pipeline)4 Transaction (redis.clients.jedis.Transaction)4