Skip to content

Commit 36cf626

Browse files
author
DvirDukhan
committed
added connection closing and added multi threaded test
1 parent 06059bf commit 36cf626

File tree

2 files changed

+66
-1
lines changed

2 files changed

+66
-1
lines changed

src/main/java/com/redislabs/redisgraph/RedisGraph.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,9 @@ public ResultSet query(String graphId, String query, Object ...args) {
9191
graphCaches.putIfAbsent(graphId, new GraphCache(graphId, this));
9292

9393
try (Jedis conn = getConnection()) {
94-
return new ResultSetImpl(sendCompactCommand(conn, Command.QUERY, graphId, query).getObjectMultiBulkReply(), graphCaches.get(graphId));
94+
List<Object> rawResponsw = sendCompactCommand(conn, Command.QUERY, graphId, query).getObjectMultiBulkReply();
95+
conn.close();
96+
return new ResultSetImpl(rawResponsw, graphCaches.get(graphId));
9597
}
9698
}
9799

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

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import java.util.Arrays;
55
import java.util.List;
66
import java.util.NoSuchElementException;
7+
import java.util.stream.Collectors;
8+
import java.util.stream.IntStream;
79

810
import com.redislabs.redisgraph.impl.Edge;
911
import com.redislabs.redisgraph.impl.Node;
@@ -287,6 +289,67 @@ public void testRecord(){
287289
}
288290

289291

292+
@Test
293+
public void testMultiThread(){
294+
295+
Assert.assertNotNull(api.query("social", "CREATE (:person{name:'roi',age:32})"));
296+
Assert.assertNotNull(api.query("social", "CREATE (:person{name:'amit',age:30})"));
297+
Assert.assertNotNull(api.query("social", "MATCH (a:person), (b:person) WHERE (a.name = 'roi' AND b.name='amit') CREATE (a)-[:knows]->(b)"));
298+
299+
300+
List<ResultSet> resultSets = IntStream.range(0,16).parallel().
301+
mapToObj(i-> api.query("social", "MATCH (a:person)-[r:knows]->(b:person) RETURN a,r, a.age")).
302+
collect(Collectors.toList());
303+
304+
Property nameProperty = new Property("name", ResultSet.ResultSetScalarTypes.PROPERTY_STRING, "roi");
305+
Property ageProperty = new Property("age", ResultSet.ResultSetScalarTypes.PROPERTY_INTEGER, 32);
306+
307+
Node expectedNode = new Node();
308+
expectedNode.setId(0);
309+
expectedNode.addLabel("person");
310+
expectedNode.addProperty(nameProperty);
311+
expectedNode.addProperty(ageProperty);
312+
313+
314+
Edge expectedEdge = new Edge();
315+
expectedEdge.setId(0);
316+
expectedEdge.setSource(0);
317+
expectedEdge.setDestination(1);
318+
expectedEdge.setRelationshipType("knows");
319+
320+
321+
for (ResultSet resultSet : resultSets){
322+
Assert.assertNotNull(resultSet.getHeader());
323+
Header header = resultSet.getHeader();
324+
325+
List<String> schemaNames = header.getSchemaNames();
326+
List<Header.ResultSetColumnTypes> schemaTypes = header.getSchemaTypes();
327+
328+
Assert.assertNotNull(schemaNames);
329+
Assert.assertNotNull(schemaTypes);
330+
331+
Assert.assertEquals(3, schemaNames.size());
332+
Assert.assertEquals(3, schemaTypes.size());
333+
334+
Assert.assertEquals("a", schemaNames.get(0));
335+
Assert.assertEquals("r", schemaNames.get(1));
336+
Assert.assertEquals("a.age", schemaNames.get(2));
337+
338+
Assert.assertEquals(COLUMN_NODE, schemaTypes.get(0));
339+
Assert.assertEquals(COLUMN_RELATION, schemaTypes.get(1));
340+
Assert.assertEquals(COLUMN_SCALAR, schemaTypes.get(2));
341+
342+
Assert.assertEquals(1, resultSet.size());
343+
Assert.assertTrue(resultSet.hasNext());
344+
Record record = resultSet.next();
345+
Assert.assertFalse(resultSet.hasNext());
346+
347+
348+
Assert.assertEquals(Arrays.asList("a", "r", "a.age"), record.keys());
349+
350+
Assert.assertEquals(Arrays.asList(expectedNode, expectedEdge, 32), record.values());
351+
}
352+
}
290353

291354
@Test
292355
public void testEscapedQuery() {

0 commit comments

Comments
 (0)