|
4 | 4 | import java.util.Arrays; |
5 | 5 | import java.util.List; |
6 | 6 | import java.util.NoSuchElementException; |
| 7 | +import java.util.stream.Collectors; |
| 8 | +import java.util.stream.IntStream; |
7 | 9 |
|
8 | 10 | import com.redislabs.redisgraph.impl.Edge; |
9 | 11 | import com.redislabs.redisgraph.impl.Node; |
@@ -287,6 +289,67 @@ public void testRecord(){ |
287 | 289 | } |
288 | 290 |
|
289 | 291 |
|
| 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 | + } |
290 | 353 |
|
291 | 354 | @Test |
292 | 355 | public void testEscapedQuery() { |
|
0 commit comments