@@ -303,6 +303,7 @@ public void testMultiThread(){
303303
304304 Property nameProperty = new Property ("name" , ResultSet .ResultSetScalarTypes .PROPERTY_STRING , "roi" );
305305 Property ageProperty = new Property ("age" , ResultSet .ResultSetScalarTypes .PROPERTY_INTEGER , 32 );
306+ Property lastNameProperty =new Property ("lastName" , ResultSet .ResultSetScalarTypes .PROPERTY_STRING , "a" );
306307
307308 Node expectedNode = new Node ();
308309 expectedNode .setId (0 );
@@ -321,36 +322,160 @@ public void testMultiThread(){
321322 for (ResultSet resultSet : resultSets ){
322323 Assert .assertNotNull (resultSet .getHeader ());
323324 Header header = resultSet .getHeader ();
324-
325325 List <String > schemaNames = header .getSchemaNames ();
326326 List <Header .ResultSetColumnTypes > schemaTypes = header .getSchemaTypes ();
327-
328327 Assert .assertNotNull (schemaNames );
329328 Assert .assertNotNull (schemaTypes );
330-
331329 Assert .assertEquals (3 , schemaNames .size ());
332330 Assert .assertEquals (3 , schemaTypes .size ());
333-
334331 Assert .assertEquals ("a" , schemaNames .get (0 ));
335332 Assert .assertEquals ("r" , schemaNames .get (1 ));
336333 Assert .assertEquals ("a.age" , schemaNames .get (2 ));
337-
338334 Assert .assertEquals (COLUMN_NODE , schemaTypes .get (0 ));
339335 Assert .assertEquals (COLUMN_RELATION , schemaTypes .get (1 ));
340336 Assert .assertEquals (COLUMN_SCALAR , schemaTypes .get (2 ));
341-
342337 Assert .assertEquals (1 , resultSet .size ());
343338 Assert .assertTrue (resultSet .hasNext ());
344339 Record record = resultSet .next ();
345340 Assert .assertFalse (resultSet .hasNext ());
341+ Assert .assertEquals (Arrays .asList ("a" , "r" , "a.age" ), record .keys ());
342+ Assert .assertEquals (Arrays .asList (expectedNode , expectedEdge , 32 ), record .values ());
343+ }
346344
345+ //test for update in local cache
346+ expectedNode .removeProperty ("name" );
347+ expectedNode .removeProperty ("age" );
348+ expectedNode .addProperty (lastNameProperty );
349+ expectedNode .removeLabel ("person" );
350+ expectedNode .addLabel ("worker" );
351+ expectedNode .setId (2 );
347352
348- Assert .assertEquals (Arrays .asList ("a" , "r" , "a.age" ), record .keys ());
349353
350- Assert .assertEquals (Arrays .asList (expectedNode , expectedEdge , 32 ), record .values ());
354+ expectedEdge .setRelationshipType ("worksWith" );
355+ expectedEdge .setSource (2 );
356+ expectedEdge .setDestination (3 );
357+ expectedEdge .setId (1 );
358+
359+ Assert .assertNotNull (api .query ("social" , "CREATE (:worker{lastName:'a'})" ));
360+ Assert .assertNotNull (api .query ("social" , "CREATE (:worker{lastName:'b'})" ));
361+ Assert .assertNotNull (api .query ("social" , "MATCH (a:worker), (b:worker) WHERE (a.lastName = 'a' AND b.lastName='b') CREATE (a)-[:worksWith]->(b)" ));
362+
363+ resultSets = IntStream .range (0 ,16 ).parallel ().
364+ mapToObj (i -> api .query ("social" , "MATCH (a:worker)-[r:worksWith]->(b:worker) RETURN a,r" )).
365+ collect (Collectors .toList ());
366+
367+ for (ResultSet resultSet : resultSets ){
368+ Assert .assertNotNull (resultSet .getHeader ());
369+ Header header = resultSet .getHeader ();
370+ List <String > schemaNames = header .getSchemaNames ();
371+ List <Header .ResultSetColumnTypes > schemaTypes = header .getSchemaTypes ();
372+ Assert .assertNotNull (schemaNames );
373+ Assert .assertNotNull (schemaTypes );
374+ Assert .assertEquals (2 , schemaNames .size ());
375+ Assert .assertEquals (2 , schemaTypes .size ());
376+ Assert .assertEquals ("a" , schemaNames .get (0 ));
377+ Assert .assertEquals ("r" , schemaNames .get (1 ));
378+ Assert .assertEquals (COLUMN_NODE , schemaTypes .get (0 ));
379+ Assert .assertEquals (COLUMN_RELATION , schemaTypes .get (1 ));
380+ Assert .assertEquals (1 , resultSet .size ());
381+ Assert .assertTrue (resultSet .hasNext ());
382+ Record record = resultSet .next ();
383+ Assert .assertFalse (resultSet .hasNext ());
384+ Assert .assertEquals (Arrays .asList ("a" , "r" ), record .keys ());
385+ Assert .assertEquals (Arrays .asList (expectedNode , expectedEdge ), record .values ());
351386 }
352387 }
353388
389+
390+ @ Test
391+ public void testAdditionToProcedures (){
392+
393+ Assert .assertNotNull (api .query ("social" , "CREATE (:person{name:'roi',age:32})" ));
394+ Assert .assertNotNull (api .query ("social" , "CREATE (:person{name:'amit',age:30})" ));
395+ Assert .assertNotNull (api .query ("social" , "MATCH (a:person), (b:person) WHERE (a.name = 'roi' AND b.name='amit') CREATE (a)-[:knows]->(b)" ));
396+
397+
398+ List <ResultSet > resultSets = IntStream .range (0 ,16 ).parallel ().
399+ mapToObj (i -> api .query ("social" , "MATCH (a:person)-[r:knows]->(b:person) RETURN a,r" )).
400+ collect (Collectors .toList ());
401+
402+ //expected objects init
403+ Property nameProperty = new Property ("name" , ResultSet .ResultSetScalarTypes .PROPERTY_STRING , "roi" );
404+ Property ageProperty = new Property ("age" , ResultSet .ResultSetScalarTypes .PROPERTY_INTEGER , 32 );
405+ Property lastNameProperty =new Property ("lastName" , ResultSet .ResultSetScalarTypes .PROPERTY_STRING , "a" );
406+
407+ Node expectedNode = new Node ();
408+ expectedNode .setId (0 );
409+ expectedNode .addLabel ("person" );
410+ expectedNode .addProperty (nameProperty );
411+ expectedNode .addProperty (ageProperty );
412+
413+
414+ Edge expectedEdge = new Edge ();
415+ expectedEdge .setId (0 );
416+ expectedEdge .setSource (0 );
417+ expectedEdge .setDestination (1 );
418+ expectedEdge .setRelationshipType ("knows" );
419+
420+
421+ ResultSet resultSet = api .query ("social" , "MATCH (a:person)-[r:knows]->(b:person) RETURN a,r" );
422+ Assert .assertNotNull (resultSet .getHeader ());
423+ Header header = resultSet .getHeader ();
424+ List <String > schemaNames = header .getSchemaNames ();
425+ List <Header .ResultSetColumnTypes > schemaTypes = header .getSchemaTypes ();
426+ Assert .assertNotNull (schemaNames );
427+ Assert .assertNotNull (schemaTypes );
428+ Assert .assertEquals (2 , schemaNames .size ());
429+ Assert .assertEquals (2 , schemaTypes .size ());
430+ Assert .assertEquals ("a" , schemaNames .get (0 ));
431+ Assert .assertEquals ("r" , schemaNames .get (1 ));
432+ Assert .assertEquals (COLUMN_NODE , schemaTypes .get (0 ));
433+ Assert .assertEquals (COLUMN_RELATION , schemaTypes .get (1 ));
434+ Assert .assertEquals (1 , resultSet .size ());
435+ Assert .assertTrue (resultSet .hasNext ());
436+ Record record = resultSet .next ();
437+ Assert .assertFalse (resultSet .hasNext ());
438+ Assert .assertEquals (Arrays .asList ("a" , "r" ), record .keys ());
439+ Assert .assertEquals (Arrays .asList (expectedNode , expectedEdge ), record .values ());
440+
441+ //test for local cache updates
442+
443+ expectedNode .removeProperty ("name" );
444+ expectedNode .removeProperty ("age" );
445+ expectedNode .addProperty (lastNameProperty );
446+ expectedNode .removeLabel ("person" );
447+ expectedNode .addLabel ("worker" );
448+ expectedNode .setId (2 );
449+ expectedEdge .setRelationshipType ("worksWith" );
450+ expectedEdge .setSource (2 );
451+ expectedEdge .setDestination (3 );
452+ expectedEdge .setId (1 );
453+ Assert .assertNotNull (api .query ("social" , "CREATE (:worker{lastName:'a'})" ));
454+ Assert .assertNotNull (api .query ("social" , "CREATE (:worker{lastName:'b'})" ));
455+ Assert .assertNotNull (api .query ("social" , "MATCH (a:worker), (b:worker) WHERE (a.lastName = 'a' AND b.lastName='b') CREATE (a)-[:worksWith]->(b)" ));
456+ resultSet = api .query ("social" , "MATCH (a:worker)-[r:worksWith]->(b:worker) RETURN a,r" );
457+ Assert .assertNotNull (resultSet .getHeader ());
458+ header = resultSet .getHeader ();
459+ schemaNames = header .getSchemaNames ();
460+ schemaTypes = header .getSchemaTypes ();
461+ Assert .assertNotNull (schemaNames );
462+ Assert .assertNotNull (schemaTypes );
463+ Assert .assertEquals (2 , schemaNames .size ());
464+ Assert .assertEquals (2 , schemaTypes .size ());
465+ Assert .assertEquals ("a" , schemaNames .get (0 ));
466+ Assert .assertEquals ("r" , schemaNames .get (1 ));
467+ Assert .assertEquals (COLUMN_NODE , schemaTypes .get (0 ));
468+ Assert .assertEquals (COLUMN_RELATION , schemaTypes .get (1 ));
469+ Assert .assertEquals (1 , resultSet .size ());
470+ Assert .assertTrue (resultSet .hasNext ());
471+ record = resultSet .next ();
472+ Assert .assertFalse (resultSet .hasNext ());
473+ Assert .assertEquals (Arrays .asList ("a" , "r" ), record .keys ());
474+ Assert .assertEquals (Arrays .asList (expectedNode , expectedEdge ), record .values ());
475+
476+ }
477+
478+
354479 @ Test
355480 public void testEscapedQuery () {
356481 Assert .assertNotNull (api .query ("social" , "CREATE (:escaped{s1:%s,s2:%s})" , "S\" \' " , "S\\ '\\ \" " ));
0 commit comments