Skip to content

Commit 9cb17d8

Browse files
author
DvirDukhan
committed
closable objects in examples and tests
1 parent 1925927 commit 9cb17d8

File tree

2 files changed

+156
-147
lines changed

2 files changed

+156
-147
lines changed

README.md

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ import com.redislabs.redisgraph.graph_entities.Edge;
8989
import com.redislabs.redisgraph.graph_entities.Node;
9090
import com.redislabs.redisgraph.impl.api.RedisGraph;
9191

92+
import java.io.IOException;
9293
import java.util.List;
9394

9495
public class RedisGraphExample {
@@ -115,24 +116,29 @@ public class RedisGraphExample {
115116
// delete graph
116117
graph.deleteGraph("social");
117118

118-
// get connection context
119-
RedisGraphContext context = graph.getContext();
120-
context.query("contextSocial","CREATE (:person{name:'roi',age:32})");
121-
context.query("contextSocial","CREATE (:person{name:%s,age:%d})", "amit", 30);
122-
context.query("contextSocial", "MATCH (a:person), (b:person) WHERE (a.name = 'roi' AND b.name='amit') CREATE (a)-[:knows]->(b)");
123-
// WATCH/MULTI/EXEC
124-
context.watch("contextSocial");
125-
RedisGraphTransaction t = context.multi();
126-
t.query("contextSocial", "MATCH (a:person)-[r:knows]->(b:person) RETURN a, r, b");
127-
// support for Redis/Jedis native commands in transaction
128-
t.set("x", "1");
129-
t.get("x");
130-
// get multi/exec results
131-
List<Object> execResults = t.exec();
132-
System.out.println(execResults.toString());
133-
134-
context.deleteGraph("contextSocial");
119+
// get connection context - closable object
120+
try(RedisGraphContext context = graph.getContext()) {
121+
context.query("contextSocial","CREATE (:person{name:'roi',age:32})");
122+
context.query("contextSocial","CREATE (:person{name:%s,age:%d})", "amit", 30);
123+
context.query("contextSocial", "MATCH (a:person), (b:person) WHERE (a.name = 'roi' AND b.name='amit') CREATE (a)-[:knows]->(b)");
124+
// WATCH/MULTI/EXEC
125+
context.watch("contextSocial");
126+
RedisGraphTransaction t = context.multi();
127+
t.query("contextSocial", "MATCH (a:person)-[r:knows]->(b:person) RETURN a, r, b");
128+
// support for Redis/Jedis native commands in transaction
129+
t.set("x", "1");
130+
t.get("x");
131+
// get multi/exec results
132+
List<Object> execResults = t.exec();
133+
System.out.println(execResults.toString());
134+
135+
context.deleteGraph("contextSocial");
136+
} catch (IOException e) {
137+
138+
}
139+
135140
}
136141
}
137142

143+
138144
```

src/test/java/com/redislabs/redisgraph/RedisGraphAPITest.java

Lines changed: 133 additions & 130 deletions
Original file line numberDiff line numberDiff line change
@@ -504,108 +504,111 @@ public void testEscapedQuery() {
504504

505505
@Test
506506
public void testMultiExec(){
507-
RedisGraphTransaction transaction = api.getContext().multi();
508-
509-
transaction.set("x", "1");
510-
transaction.query("social", "CREATE (:Person {name:'a'})");
511-
transaction.query("g", "CREATE (:Person {name:'a'})");
512-
transaction.incr("x");
513-
transaction.get("x");
514-
transaction.query("social", "MATCH (n:Person) RETURN n");
515-
transaction.deleteGraph("g");
516-
transaction.callProcedure("social", "db.labels");
517-
List<Object> results = transaction.exec();
518-
519-
// Redis set command
520-
Assert.assertEquals(String.class, results.get(0).getClass());
521-
Assert.assertEquals("OK", results.get(0));
522-
523-
// Redis graph command
524-
Assert.assertEquals(ResultSetImpl.class, results.get(1).getClass());
525-
ResultSet resultSet = (ResultSet) results.get(1);
526-
Assert.assertEquals(1, resultSet.getStatistics().nodesCreated());
527-
Assert.assertEquals(1, resultSet.getStatistics().propertiesSet());
528-
529-
530-
Assert.assertEquals(ResultSetImpl.class, results.get(2).getClass());
531-
resultSet = (ResultSet) results.get(2);
532-
Assert.assertEquals(1, resultSet.getStatistics().nodesCreated());
533-
Assert.assertEquals(1, resultSet.getStatistics().propertiesSet());
534-
535-
// Redis incr command
536-
Assert.assertEquals(Long.class, results.get(3).getClass());
537-
Assert.assertEquals((long)2, results.get(3));
538-
539-
// Redis get command
540-
Assert.assertEquals(String.class, results.get(4).getClass());
541-
Assert.assertEquals("2", results.get(4));
542-
543-
// Graph query result
544-
Assert.assertEquals(ResultSetImpl.class, results.get(5).getClass());
545-
resultSet = (ResultSet) results.get(5);
507+
try (RedisGraphContext c = api.getContext()) {
508+
RedisGraphTransaction transaction = api.getContext().multi();
509+
510+
transaction.set("x", "1");
511+
transaction.query("social", "CREATE (:Person {name:'a'})");
512+
transaction.query("g", "CREATE (:Person {name:'a'})");
513+
transaction.incr("x");
514+
transaction.get("x");
515+
transaction.query("social", "MATCH (n:Person) RETURN n");
516+
transaction.deleteGraph("g");
517+
transaction.callProcedure("social", "db.labels");
518+
List<Object> results = transaction.exec();
519+
520+
// Redis set command
521+
Assert.assertEquals(String.class, results.get(0).getClass());
522+
Assert.assertEquals("OK", results.get(0));
523+
524+
// Redis graph command
525+
Assert.assertEquals(ResultSetImpl.class, results.get(1).getClass());
526+
ResultSet resultSet = (ResultSet) results.get(1);
527+
Assert.assertEquals(1, resultSet.getStatistics().nodesCreated());
528+
Assert.assertEquals(1, resultSet.getStatistics().propertiesSet());
529+
530+
531+
Assert.assertEquals(ResultSetImpl.class, results.get(2).getClass());
532+
resultSet = (ResultSet) results.get(2);
533+
Assert.assertEquals(1, resultSet.getStatistics().nodesCreated());
534+
Assert.assertEquals(1, resultSet.getStatistics().propertiesSet());
535+
536+
// Redis incr command
537+
Assert.assertEquals(Long.class, results.get(3).getClass());
538+
Assert.assertEquals((long)2, results.get(3));
539+
540+
// Redis get command
541+
Assert.assertEquals(String.class, results.get(4).getClass());
542+
Assert.assertEquals("2", results.get(4));
543+
544+
// Graph query result
545+
Assert.assertEquals(ResultSetImpl.class, results.get(5).getClass());
546+
resultSet = (ResultSet) results.get(5);
546547

547-
Assert.assertNotNull(resultSet.getHeader());
548-
Header header = resultSet.getHeader();
548+
Assert.assertNotNull(resultSet.getHeader());
549+
Header header = resultSet.getHeader();
549550

550551

551-
List<String> schemaNames = header.getSchemaNames();
552-
List<Header.ResultSetColumnTypes> schemaTypes = header.getSchemaTypes();
552+
List<String> schemaNames = header.getSchemaNames();
553+
List<Header.ResultSetColumnTypes> schemaTypes = header.getSchemaTypes();
553554

554-
Assert.assertNotNull(schemaNames);
555-
Assert.assertNotNull(schemaTypes);
555+
Assert.assertNotNull(schemaNames);
556+
Assert.assertNotNull(schemaTypes);
556557

557-
Assert.assertEquals(1, schemaNames.size());
558-
Assert.assertEquals(1, schemaTypes.size());
558+
Assert.assertEquals(1, schemaNames.size());
559+
Assert.assertEquals(1, schemaTypes.size());
559560

560-
Assert.assertEquals("n", schemaNames.get(0));
561+
Assert.assertEquals("n", schemaNames.get(0));
561562

562-
Assert.assertEquals(COLUMN_NODE, schemaTypes.get(0));
563+
Assert.assertEquals(COLUMN_NODE, schemaTypes.get(0));
563564

564-
Property nameProperty = new Property("name", ResultSet.ResultSetScalarTypes.PROPERTY_STRING, "a");
565+
Property nameProperty = new Property("name", ResultSet.ResultSetScalarTypes.PROPERTY_STRING, "a");
565566

566-
Node expectedNode = new Node();
567-
expectedNode.setId(0);
568-
expectedNode.addLabel("Person");
569-
expectedNode.addProperty(nameProperty);
570-
// see that the result were pulled from the right graph
571-
Assert.assertEquals(1, resultSet.size());
572-
Assert.assertTrue(resultSet.hasNext());
573-
Record record = resultSet.next();
574-
Assert.assertFalse(resultSet.hasNext());
575-
Assert.assertEquals(Arrays.asList("n"), record.keys());
576-
Assert.assertEquals(expectedNode, record.getValue("n"));
577-
578-
// Graph delete
579-
Assert.assertTrue(((String)results.get(6)).startsWith("Graph removed"));
567+
Node expectedNode = new Node();
568+
expectedNode.setId(0);
569+
expectedNode.addLabel("Person");
570+
expectedNode.addProperty(nameProperty);
571+
// see that the result were pulled from the right graph
572+
Assert.assertEquals(1, resultSet.size());
573+
Assert.assertTrue(resultSet.hasNext());
574+
Record record = resultSet.next();
575+
Assert.assertFalse(resultSet.hasNext());
576+
Assert.assertEquals(Arrays.asList("n"), record.keys());
577+
Assert.assertEquals(expectedNode, record.getValue("n"));
580578

579+
// Graph delete
580+
Assert.assertTrue(((String)results.get(6)).startsWith("Graph removed"));
581581

582-
Assert.assertEquals(ResultSetImpl.class, results.get(7).getClass());
583-
resultSet = (ResultSet) results.get(7);
584582

585-
Assert.assertNotNull(resultSet.getHeader());
586-
header = resultSet.getHeader();
583+
Assert.assertEquals(ResultSetImpl.class, results.get(7).getClass());
584+
resultSet = (ResultSet) results.get(7);
587585

586+
Assert.assertNotNull(resultSet.getHeader());
587+
header = resultSet.getHeader();
588588

589-
schemaNames = header.getSchemaNames();
590-
schemaTypes = header.getSchemaTypes();
591589

592-
Assert.assertNotNull(schemaNames);
593-
Assert.assertNotNull(schemaTypes);
590+
schemaNames = header.getSchemaNames();
591+
schemaTypes = header.getSchemaTypes();
594592

595-
Assert.assertEquals(1, schemaNames.size());
596-
Assert.assertEquals(1, schemaTypes.size());
593+
Assert.assertNotNull(schemaNames);
594+
Assert.assertNotNull(schemaTypes);
597595

598-
Assert.assertEquals("label", schemaNames.get(0));
596+
Assert.assertEquals(1, schemaNames.size());
597+
Assert.assertEquals(1, schemaTypes.size());
599598

600-
Assert.assertEquals(COLUMN_SCALAR, schemaTypes.get(0));
599+
Assert.assertEquals("label", schemaNames.get(0));
601600

602-
Assert.assertEquals(1, resultSet.size());
603-
Assert.assertTrue(resultSet.hasNext());
604-
record = resultSet.next();
605-
Assert.assertFalse(resultSet.hasNext());
606-
Assert.assertEquals(Arrays.asList("label"), record.keys());
607-
Assert.assertEquals("Person", record.getValue("label"));
601+
Assert.assertEquals(COLUMN_SCALAR, schemaTypes.get(0));
608602

603+
Assert.assertEquals(1, resultSet.size());
604+
Assert.assertTrue(resultSet.hasNext());
605+
record = resultSet.next();
606+
Assert.assertFalse(resultSet.hasNext());
607+
Assert.assertEquals(Arrays.asList("label"), record.keys());
608+
Assert.assertEquals("Person", record.getValue("label"));
609+
} catch (IOException e) {
610+
e.printStackTrace();
611+
}
609612
}
610613

611614
@Test
@@ -651,69 +654,69 @@ public void testContextedAPI(){
651654
expectedEdge.addProperty(falseBooleanProperty);
652655
expectedEdge.addProperty(nullProperty);
653656

654-
RedisGraphContext c = api.getContext();
657+
try(RedisGraphContext c = api.getContext()) {
658+
Assert.assertNotNull(c.query("social", "CREATE (:person{name:%s',age:%d, doubleValue:%f, boolValue:%b, nullValue:null})", name, age, doubleValue, boolValue));
659+
Assert.assertNotNull(c.query("social", "CREATE (:person{name:'amit',age:30})"));
660+
Assert.assertNotNull(c.query("social", "MATCH (a:person), (b:person) WHERE (a.name = 'roi' AND b.name='amit') " +
661+
"CREATE (a)-[:knows{place:'TLV', since:2000,doubleValue:3.14, boolValue:false, nullValue:null}]->(b)"));
655662

656-
Assert.assertNotNull(c.query("social", "CREATE (:person{name:%s',age:%d, doubleValue:%f, boolValue:%b, nullValue:null})", name, age, doubleValue, boolValue));
657-
Assert.assertNotNull(c.query("social", "CREATE (:person{name:'amit',age:30})"));
658-
Assert.assertNotNull(c.query("social", "MATCH (a:person), (b:person) WHERE (a.name = 'roi' AND b.name='amit') " +
659-
"CREATE (a)-[:knows{place:'TLV', since:2000,doubleValue:3.14, boolValue:false, nullValue:null}]->(b)"));
663+
ResultSet resultSet = c.query("social", "MATCH (a:person)-[r:knows]->(b:person) RETURN a,r, " +
664+
"a.name, a.age, a.doubleValue, a.boolValue, a.nullValue, " +
665+
"r.place, r.since, r.doubleValue, r.boolValue, r.nullValue");
666+
Assert.assertNotNull(resultSet);
660667

661-
ResultSet resultSet = c.query("social", "MATCH (a:person)-[r:knows]->(b:person) RETURN a,r, " +
662-
"a.name, a.age, a.doubleValue, a.boolValue, a.nullValue, " +
663-
"r.place, r.since, r.doubleValue, r.boolValue, r.nullValue");
664-
Assert.assertNotNull(resultSet);
665668

669+
Assert.assertEquals(0, resultSet.getStatistics().nodesCreated());
670+
Assert.assertEquals(0, resultSet.getStatistics().nodesDeleted());
671+
Assert.assertEquals(0, resultSet.getStatistics().labelsAdded());
672+
Assert.assertEquals(0, resultSet.getStatistics().propertiesSet());
673+
Assert.assertEquals(0, resultSet.getStatistics().relationshipsCreated());
674+
Assert.assertEquals(0, resultSet.getStatistics().relationshipsDeleted());
675+
Assert.assertNotNull(resultSet.getStatistics().getStringValue(Label.QUERY_INTERNAL_EXECUTION_TIME));
666676

667-
Assert.assertEquals(0, resultSet.getStatistics().nodesCreated());
668-
Assert.assertEquals(0, resultSet.getStatistics().nodesDeleted());
669-
Assert.assertEquals(0, resultSet.getStatistics().labelsAdded());
670-
Assert.assertEquals(0, resultSet.getStatistics().propertiesSet());
671-
Assert.assertEquals(0, resultSet.getStatistics().relationshipsCreated());
672-
Assert.assertEquals(0, resultSet.getStatistics().relationshipsDeleted());
673-
Assert.assertNotNull(resultSet.getStatistics().getStringValue(Label.QUERY_INTERNAL_EXECUTION_TIME));
674677

678+
Assert.assertEquals(1, resultSet.size());
679+
Assert.assertTrue(resultSet.hasNext());
680+
Record record = resultSet.next();
681+
Assert.assertFalse(resultSet.hasNext());
675682

676-
Assert.assertEquals(1, resultSet.size());
677-
Assert.assertTrue(resultSet.hasNext());
678-
Record record = resultSet.next();
679-
Assert.assertFalse(resultSet.hasNext());
683+
Node node = record.getValue(0);
684+
Assert.assertNotNull(node);
680685

681-
Node node = record.getValue(0);
682-
Assert.assertNotNull(node);
686+
Assert.assertEquals(expectedNode, node);
683687

684-
Assert.assertEquals(expectedNode, node);
688+
node = record.getValue("a");
689+
Assert.assertEquals(expectedNode, node);
685690

686-
node = record.getValue("a");
687-
Assert.assertEquals(expectedNode, node);
691+
Edge edge = record.getValue(1);
692+
Assert.assertNotNull(edge);
693+
Assert.assertEquals(expectedEdge, edge);
688694

689-
Edge edge = record.getValue(1);
690-
Assert.assertNotNull(edge);
691-
Assert.assertEquals(expectedEdge, edge);
695+
edge = record.getValue("r");
696+
Assert.assertEquals(expectedEdge, edge);
692697

693-
edge = record.getValue("r");
694-
Assert.assertEquals(expectedEdge, edge);
698+
Assert.assertEquals(Arrays.asList("a", "r", "a.name", "a.age", "a.doubleValue", "a.boolValue", "a.nullValue",
699+
"r.place", "r.since", "r.doubleValue", "r.boolValue", "r.nullValue"), record.keys());
695700

696-
Assert.assertEquals(Arrays.asList("a", "r", "a.name", "a.age", "a.doubleValue", "a.boolValue", "a.nullValue",
697-
"r.place", "r.since", "r.doubleValue", "r.boolValue", "r.nullValue"), record.keys());
701+
Assert.assertEquals(Arrays.asList(expectedNode, expectedEdge,
702+
name, age, doubleValue, true, null,
703+
place, since, doubleValue, false, null),
704+
record.values());
698705

699-
Assert.assertEquals(Arrays.asList(expectedNode, expectedEdge,
700-
name, age, doubleValue, true, null,
701-
place, since, doubleValue, false, null),
702-
record.values());
706+
Node a = record.getValue("a");
707+
for (String propertyName : expectedNode.getEntityPropertyNames()){
708+
Assert.assertEquals(expectedNode.getProperty(propertyName) ,a.getProperty(propertyName));
709+
}
703710

704-
Node a = record.getValue("a");
705-
for (String propertyName : expectedNode.getEntityPropertyNames()){
706-
Assert.assertEquals(expectedNode.getProperty(propertyName) ,a.getProperty(propertyName));
711+
Assert.assertEquals( "roi", record.getString(2));
712+
Assert.assertEquals( "32", record.getString(3));
713+
Assert.assertEquals( 32L, ((Integer)(record.getValue(3))).longValue());
714+
Assert.assertEquals( 32L, ((Integer)record.getValue("a.age")).longValue());
715+
Assert.assertEquals( "roi", record.getString("a.name"));
716+
Assert.assertEquals( "32", record.getString("a.age"));
717+
} catch (IOException e) {
718+
e.printStackTrace();
707719
}
708-
709-
Assert.assertEquals( "roi", record.getString(2));
710-
Assert.assertEquals( "32", record.getString(3));
711-
Assert.assertEquals( 32L, ((Integer)(record.getValue(3))).longValue());
712-
Assert.assertEquals( 32L, ((Integer)record.getValue("a.age")).longValue());
713-
Assert.assertEquals( "roi", record.getString("a.name"));
714-
Assert.assertEquals( "32", record.getString("a.age"));
715-
716-
717720
}
718721

719722
@Test

0 commit comments

Comments
 (0)