@Override public String userDescription( TokenNameLookup tokenNameLookup ) { return String.format( ":%s(%s)", tokenNameLookup.labelGetName( labelId ), SchemaUtil.niceProperties( tokenNameLookup, propertyIds ) ); }
@Override public String prettyPrint( TokenNameLookup tokenNameLookup ) { String labelName = escapeLabelOrRelTyp( tokenNameLookup.labelGetName( schema.getLabelId() ) ); String nodeName = labelName.toLowerCase(); String properties = SchemaUtil.niceProperties( tokenNameLookup, schema.getPropertyIds(), nodeName + ".", false ); return String.format( "CONSTRAINT ON ( %s:%s ) ASSERT exists(%s)", nodeName, labelName, properties ); } }
@Override public String getUserMessage( TokenNameLookup tokenNameLookup ) { String propertyNoun = (schema.getPropertyIds().length > 1) ? "properties" : "property"; return format( "Node(%d) with label `%s` must have the %s `%s`", nodeId, tokenNameLookup.labelGetName( schema.getLabelId() ), propertyNoun, SchemaUtil.niceProperties( tokenNameLookup, schema.getPropertyIds() ) ); } }
@Override public String prettyPrint( TokenNameLookup tokenNameLookup ) { String labelName = escapeLabelOrRelTyp( tokenNameLookup.labelGetName( schema.getLabelId() ) ); String nodeName = labelName.toLowerCase(); return String.format( "CONSTRAINT ON ( %s:%s ) ASSERT %s IS %s", nodeName, labelName, formatProperties( schema.getPropertyIds(), tokenNameLookup, nodeName ), constraintTypeText() ); }
public String evidenceMessage( TokenNameLookup tokenNameLookup, SchemaDescriptor schema ) { assert schema.getPropertyIds().length == propertyValues.size(); String labelName = tokenNameLookup.labelGetName( schema.keyId() ); if ( addedNodeId == NO_SUCH_NODE ) { return format( "Node(%d) already exists with label `%s` and %s", existingNodeId, labelName, propertyString( tokenNameLookup, schema.getPropertyIds() ) ); } else { return format( "Both Node(%d) and Node(%d) have the label `%s` and %s", existingNodeId, addedNodeId, labelName, propertyString( tokenNameLookup, schema.getPropertyIds() ) ); } }
private TokenNameLookup getDefaultTokenNameLookup() { TokenNameLookup tokenNameLookup = mock( TokenNameLookup.class ); Mockito.when( tokenNameLookup.labelGetName( labelId( LABEL1 ) ) ).thenReturn( LABEL1 ); Mockito.when( tokenNameLookup.propertyKeyGetName( propId( PROP1 ) ) ).thenReturn( PROP1 ); Mockito.when( tokenNameLookup.relationshipTypeGetName( typeId( TYPE1 ) ) ).thenReturn( TYPE1 ); return tokenNameLookup; }
.thenReturn( StoreMigrationParticipant.NOT_PARTICIPATING ); when( nameLookup.labelGetName( anyInt() ) ).thenAnswer( new NameLookupAnswer( "label" ) ); when( nameLookup.propertyKeyGetName( anyInt() ) ).thenAnswer( new NameLookupAnswer( "property" ) );
.thenReturn( InternalIndexState.FAILED ); when(mockLookup.labelGetName( 1 )).thenReturn( "LabelOne" ); when( mockLookup.labelGetName( 2 ) ).thenReturn( "LabelTwo" ); when( mockLookup.propertyKeyGetName( 1 ) ).thenReturn( "propertyOne" ); when( mockLookup.propertyKeyGetName( 2 ) ).thenReturn( "propertyTwo" );
@Test public void shouldStoreIndexFailureWhenFailingToCreateOnlineAccessorAfterRecoveringPopulatingIndex() throws Exception { // given long indexId = 1; StoreIndexDescriptor indexRule = index.withId( indexId ); IndexingService indexing = newIndexingServiceWithMockedDependencies( populator, accessor, withData(), indexRule ); IOException exception = new IOException( "Expected failure" ); when( nameLookup.labelGetName( labelId ) ).thenReturn( "TheLabel" ); when( nameLookup.propertyKeyGetName( propertyKeyId ) ).thenReturn( "propertyKey" ); when( indexProvider.getInitialState( indexRule ) ).thenReturn( POPULATING ); when( indexProvider.getOnlineAccessor( any( StoreIndexDescriptor.class ), any( IndexSamplingConfig.class ) ) ) .thenThrow( exception ); life.start(); ArgumentCaptor<Boolean> closeArgs = ArgumentCaptor.forClass( Boolean.class ); // when waitForIndexesToGetIntoState( indexing, InternalIndexState.FAILED, indexId ); verify( populator, timeout( 10000 ).times( 2 ) ).close( closeArgs.capture() ); // then assertEquals( FAILED, indexing.getIndexProxy( 1 ).getState() ); assertEquals( asList( true, false ), closeArgs.getAllValues() ); assertThat( storedFailure(), containsString( format( "java.io.IOException: Expected failure%n\tat " ) ) ); internalLogProvider.assertAtLeastOnce( inLog( IndexPopulationJob.class ).error( equalTo( "Failed to populate index: [:TheLabel(propertyKey) [provider: {key=quantum-dex, version=25.0}]]" ), causedBy( exception ) ) ); internalLogProvider.assertNone( inLog( IndexPopulationJob.class ).info( "Index population completed. Index is now online: [%s]", ":TheLabel(propertyKey) [provider: {key=quantum-dex, version=25.0}]" ) ); }
when(mockLookup.labelGetName( 1 )).thenReturn( "LabelOne" ); when(mockLookup.labelGetName( 2 )).thenReturn( "LabelTwo" ); when(mockLookup.propertyKeyGetName( 1 )).thenReturn( "propertyOne" ); when(mockLookup.propertyKeyGetName( 2 )).thenReturn( "propertyTwo" );
@Test public void shouldStoreIndexFailureWhenFailingToCreateOnlineAccessorAfterPopulating() throws Exception { // given long indexId = 1; IndexingService indexing = newIndexingServiceWithMockedDependencies( populator, accessor, withData() ); IOException exception = new IOException( "Expected failure" ); when( nameLookup.labelGetName( labelId ) ).thenReturn( "TheLabel" ); when( nameLookup.propertyKeyGetName( propertyKeyId ) ).thenReturn( "propertyKey" ); when( indexProvider.getOnlineAccessor( any( StoreIndexDescriptor.class ), any( IndexSamplingConfig.class ) ) ) .thenThrow( exception ); life.start(); ArgumentCaptor<Boolean> closeArgs = ArgumentCaptor.forClass( Boolean.class ); // when indexing.createIndexes( index.withId( indexId ) ); waitForIndexesToGetIntoState( indexing, InternalIndexState.FAILED, indexId ); verify( populator, timeout( 10000 ).times( 2 ) ).close( closeArgs.capture() ); // then assertEquals( FAILED, indexing.getIndexProxy( 1 ).getState() ); assertEquals( asList( true, false ), closeArgs.getAllValues() ); assertThat( storedFailure(), containsString( format( "java.io.IOException: Expected failure%n\tat " ) ) ); internalLogProvider.assertAtLeastOnce( inLog( IndexPopulationJob.class ).error( equalTo( "Failed to populate index: [:TheLabel(propertyKey) [provider: {key=quantum-dex, version=25.0}]]" ), causedBy( exception ) ) ); internalLogProvider.assertNone( inLog( IndexPopulationJob.class ).info( "Index population completed. Index is now online: [%s]", ":TheLabel(propertyKey) [provider: {key=quantum-dex, version=25.0}]" ) ); }
when( mockLookup.labelGetName( i ) ).thenReturn( "Label" + i );
when( mockLookup.labelGetName( i ) ).thenReturn( "Label" + i );
/** * ConstraintInfo info from ConstraintDescriptor * * @param constraintDescriptor * @param tokens * @return */ private IndexConstraintNodeInfo nodeInfoFromConstraintDescriptor(ConstraintDescriptor constraintDescriptor, TokenNameLookup tokens) { String labelName = tokens.labelGetName(constraintDescriptor.schema().keyId()); List<String> properties = new ArrayList<>(); Arrays.stream(constraintDescriptor.schema().getPropertyIds()).forEach((i) -> properties.add(tokens.propertyKeyGetName(i))); return new IndexConstraintNodeInfo( // Pretty print for index name String.format(":%s(%s)", labelName, StringUtils.join(properties, ",")), labelName, properties, StringUtils.EMPTY, ConstraintType.NODE_PROPERTY_EXISTENCE.toString(), "NO FAILURE", 0, 0, 0, constraintDescriptor.userDescription(tokens) ); }
String labelName = tokens.labelGetName(indexReference.label()); List<String> properties = new ArrayList<>(); Arrays.stream(indexReference.properties()).forEach((i) -> properties.add(tokens.propertyKeyGetName(i)));
@Override public String userDescription( TokenNameLookup tokenNameLookup ) { return String.format( ":%s(%s)", tokenNameLookup.labelGetName( labelId ), SchemaUtil.niceProperties( tokenNameLookup, propertyIds ) ); }
@Override public String prettyPrint( TokenNameLookup tokenNameLookup ) { String labelName = escapeLabelOrRelTyp( tokenNameLookup.labelGetName( schema.getLabelId() ) ); String nodeName = labelName.toLowerCase(); String properties = SchemaUtil.niceProperties( tokenNameLookup, schema.getPropertyIds(), nodeName + ".", false ); return String.format( "CONSTRAINT ON ( %s:%s ) ASSERT exists(%s)", nodeName, labelName, properties ); } }
@Override public String getUserMessage( TokenNameLookup tokenNameLookup ) { String propertyNoun = (schema.getPropertyIds().length > 1) ? "properties" : "property"; return format( "Node(%d) with label `%s` must have the %s `%s`", nodeId, tokenNameLookup.labelGetName( schema.getLabelId() ), propertyNoun, SchemaUtil.niceProperties( tokenNameLookup, schema.getPropertyIds() ) ); } }
@Override public String prettyPrint( TokenNameLookup tokenNameLookup ) { String labelName = escapeLabelOrRelTyp( tokenNameLookup.labelGetName( schema.getLabelId() ) ); String nodeName = labelName.toLowerCase(); return String.format( "CONSTRAINT ON ( %s:%s ) ASSERT %s IS %s", nodeName, labelName, formatProperties( schema.getPropertyIds(), tokenNameLookup, nodeName ), constraintTypeText() ); }
public String evidenceMessage( TokenNameLookup tokenNameLookup, SchemaDescriptor schema ) { assert schema.getPropertyIds().length == propertyValues.size(); String labelName = tokenNameLookup.labelGetName( schema.keyId() ); if ( addedNodeId == NO_SUCH_NODE ) { return format( "Node(%d) already exists with label `%s` and %s", existingNodeId, labelName, propertyString( tokenNameLookup, schema.getPropertyIds() ) ); } else { return format( "Both Node(%d) and Node(%d) have the label `%s` and %s", existingNodeId, addedNodeId, labelName, propertyString( tokenNameLookup, schema.getPropertyIds() ) ); } }