@Override public long createNode( Map<String,Object> properties, Label... labels ) { return delegate.createNode( properties, labels ); }
@Override public void createNode( long id, Map<String,Object> properties, Label... labels ) { delegate.createNode( id, properties, labels ); }
@Test public void shouldIgnoreRemovingNonExistentRelationshipProperty() { // given BatchInserter inserter = globalInserter; Map<String,Object> noProperties = Collections.emptyMap(); long nodeId1 = inserter.createNode( noProperties ); long nodeId2 = inserter.createNode( noProperties ); long id = inserter.createRelationship( nodeId1, nodeId2, MyRelTypes.TEST, noProperties ); // when inserter.removeRelationshipProperty( id, "non-existent" ); // then no exception should be thrown, this mimics GraphDatabaseService behaviour }
@Test public void shouldIgnoreRemovingNonExistentNodeProperty() { // given BatchInserter inserter = globalInserter; long id = inserter.createNode( Collections.emptyMap() ); // when inserter.removeNodeProperty( id, "non-existent" ); // then no exception should be thrown, this mimics GraphDatabaseService behaviour }
private void createRelationships( BatchInserter inserter, long node, RelationshipType relType, int out ) { for ( int i = 0; i < out; i++ ) { inserter.createRelationship( node, inserter.createNode( null ), relType, null ); } for ( int i = 0; i < out; i++ ) { inserter.createRelationship( inserter.createNode( null ), node, relType, null ); } for ( int i = 0; i < out; i++ ) { inserter.createRelationship( node, node, relType, null ); } }
private void setAndGet( BatchInserter inserter, Object value ) { long nodeId = inserter.createNode( map( "key", value ) ); Object readValue = inserter.getNodeProperties( nodeId ).get( "key" ); if ( readValue.getClass().isArray() ) { assertTrue( Arrays.equals( (int[])value, (int[])readValue ) ); } else { assertEquals( value, readValue ); } }
@Test public void propertiesCanBeReSetUsingBatchInserter2() { // GIVEN BatchInserter batchInserter = globalInserter; long id = batchInserter.createNode( new HashMap<>() ); // WHEN batchInserter.setNodeProperty( id, "test", "looooooooooong test" ); batchInserter.setNodeProperty( id, "test", "small test" ); // THEN assertEquals( "small test", batchInserter.getNodeProperties( id ).get( "test" ) ); }
@Test public void createEntitiesWithEmptyPropertiesMap() { BatchInserter inserter = globalInserter; // Assert for node long nodeId = inserter.createNode( map() ); getNodeProperties( inserter, nodeId ); //cp=N U http://www.w3.org/1999/02/22-rdf-syntax-ns#type, c=N // Assert for relationship long anotherNodeId = inserter.createNode( null ); long relId = inserter.createRelationship( nodeId, anotherNodeId, RelTypes.BATCH_TEST, map() ); inserter.getRelationshipProperties( relId ); }
@Test public void shouldChangePropertiesInCurrentBatch() { // GIVEN BatchInserter inserter = globalInserter; Map<String,Object> properties = map( "key1", "value1" ); long node = inserter.createNode( properties ); // WHEN properties.put( "additionalKey", "Additional value" ); inserter.setNodeProperties( node, properties ); // THEN assertEquals( properties, getNodeProperties( inserter, node ) ); }
@Test public void shouldBeAbleToRemoveDynamicProperty() { // Only triggered if assertions are enabled // GIVEN BatchInserter batchInserter = globalInserter; String key = "tags"; long nodeId = batchInserter.createNode( MapUtil.map( key, new String[] { "one", "two", "three" } ) ); // WHEN batchInserter.removeNodeProperty( nodeId, key ); // THEN assertFalse( batchInserter.getNodeProperties( nodeId ).containsKey( key ) ); }
@Test public void testSetAndAddNodeProperties() { BatchInserter inserter = globalInserter; long tehNode = inserter.createNode( MapUtil.map( "one", "one" ,"two","two","three","three") ); inserter.setNodeProperty( tehNode, "four", "four" ); inserter.setNodeProperty( tehNode, "five", "five" ); Map<String, Object> props = getNodeProperties( inserter, tehNode ); assertEquals( 5, props.size() ); assertEquals( "one", props.get( "one" ) ); assertEquals( "five", props.get( "five" ) ); }
@Test public void shouldGetRelationships() { // GIVEN BatchInserter inserter = globalInserter; long node = inserter.createNode( null ); createRelationships( inserter, node, RelTypes.REL_TYPE1, 3 ); createRelationships( inserter, node, RelTypes.REL_TYPE2, 4 ); // WHEN Set<Long> gottenRelationships = Iterables.asSet( inserter.getRelationshipIds( node ) ); // THEN assertEquals( 21, gottenRelationships.size() ); }
@Test public void givenBatchInserterWhenArrayPropertyUpdated4TimesThenShouldNotFail() throws IOException { BatchInserter batchInserter = BatchInserters.inserter( testDirectory.databaseDir(), fileSystemRule.get() ); long nodeId = batchInserter.createNode( Collections.emptyMap() ); for ( int i = 0; i < 4; i++ ) { batchInserter.setNodeProperty( nodeId, "array", new byte[]{2, 3, 98, 1, 43, 50, 3, 33, 51, 55, 116, 16, 23, 56, 9, -10, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1} ); } batchInserter.getNodeProperties( nodeId ); //fails here batchInserter.shutdown(); } }
@Test public void testSimple() { BatchInserter graphDb = globalInserter; long node1 = graphDb.createNode( null ); long node2 = graphDb.createNode( null ); long rel1 = graphDb.createRelationship( node1, node2, RelTypes.BATCH_TEST, null ); BatchRelationship rel = graphDb.getRelationshipById( rel1 ); assertEquals( rel.getStartNode(), node1 ); assertEquals( rel.getEndNode(), node2 ); assertEquals( RelTypes.BATCH_TEST.name(), rel.getType().name() ); }
@Test public void shouldAddInitialLabelsToCreatedNode() { // GIVEN BatchInserter inserter = globalInserter; // WHEN long node = inserter.createNode( map(), Labels.FIRST, Labels.SECOND ); // THEN assertTrue( inserter.nodeHasLabel( node, Labels.FIRST ) ); assertTrue( inserter.nodeHasLabel( node, Labels.SECOND ) ); assertFalse( inserter.nodeHasLabel( node, Labels.THIRD ) ); }
@Test public void shouldGetNodeLabels() { // GIVEN BatchInserter inserter = globalInserter; long node = inserter.createNode( map(), Labels.FIRST, Labels.THIRD ); // WHEN Iterable<String> labelNames = asNames( inserter.getNodeLabels( node ) ); // THEN assertEquals( asSet( Labels.FIRST.name(), Labels.THIRD.name() ), Iterables.asSet( labelNames ) ); }
@Test public void setSingleProperty() throws Exception { BatchInserter inserter = newBatchInserter(); long node = inserter.createNode( null ); String value = "Something"; String key = "name"; inserter.setNodeProperty( node, key, value ); GraphDatabaseService db = switchToEmbeddedGraphDatabaseService( inserter ); assertThat( getNodeInTx( node, db ), inTx( db, hasProperty( key ).withValue( value ) ) ); db.shutdown(); }
@Test public void shouldAddManyInitialLabelsAsDynamicRecords() { // GIVEN BatchInserter inserter = globalInserter; Pair<Label[], Set<String>> labels = manyLabels( 200 ); long node = inserter.createNode( map(), labels.first() ); forceFlush( inserter ); // WHEN Iterable<String> labelNames = asNames( inserter.getNodeLabels( node ) ); // THEN assertEquals( labels.other(), Iterables.asSet( labelNames ) ); }
@Test public void shouldReplaceExistingInlinedLabelsWithDynamic() { // GIVEN BatchInserter inserter = globalInserter; long node = inserter.createNode( map(), Labels.FIRST ); // WHEN Pair<Label[], Set<String>> labels = manyLabels( 100 ); inserter.setNodeLabels( node, labels.first() ); // THEN Iterable<String> labelNames = asNames( inserter.getNodeLabels( node ) ); assertEquals( labels.other(), Iterables.asSet( labelNames ) ); }
@Test public void shouldReplaceExistingDynamicLabelsWithInlined() { // GIVEN BatchInserter inserter = globalInserter; long node = inserter.createNode( map(), manyLabels( 150 ).first() ); // WHEN inserter.setNodeLabels( node, Labels.FIRST ); // THEN Iterable<String> labelNames = asNames( inserter.getNodeLabels( node ) ); assertEquals( asSet( Labels.FIRST.name() ), Iterables.asSet( labelNames ) ); }