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));
}
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());
}
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"));
}
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"));
}
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"));
}
Aggregations