use of org.neo4j.kernel.impl.store.record.ConstraintRule in project neo4j by neo4j.
the class IntegrityValidatorTest method shouldValidateUniquenessIndexes.
@Test
public void shouldValidateUniquenessIndexes() throws Exception {
// Given
NeoStores store = mock(NeoStores.class);
IndexingService indexes = mock(IndexingService.class);
IntegrityValidator validator = new IntegrityValidator(store, indexes);
UniquenessConstraintDescriptor constraint = ConstraintDescriptorFactory.uniqueForLabel(1, 1);
doThrow(new UniquePropertyValueValidationException(constraint, ConstraintValidationException.Phase.VERIFICATION, new RuntimeException())).when(indexes).validateIndex(2L);
ConstraintRule record = ConstraintRule.constraintRule(1L, constraint, 2L);
// When
try {
validator.validateSchemaRule(record);
fail("Should have thrown integrity error.");
} catch (Exception e) {
// good
}
}
use of org.neo4j.kernel.impl.store.record.ConstraintRule in project neo4j by neo4j.
the class SchemaCache method addSchemaRule.
public void addSchemaRule(SchemaRule rule) {
if (rule instanceof ConstraintRule) {
ConstraintRule constraintRule = (ConstraintRule) rule;
constraintRuleById.put(constraintRule.getId(), constraintRule);
constraints.add(constraintSemantics.readConstraint(constraintRule));
} else if (rule instanceof IndexRule) {
IndexRule indexRule = (IndexRule) rule;
indexRuleById.put(indexRule.getId(), indexRule);
indexDescriptors.put(indexRule.schema(), indexRule.getIndexDescriptor());
}
}
use of org.neo4j.kernel.impl.store.record.ConstraintRule in project neo4j by neo4j.
the class SchemaCache method removeSchemaRule.
public void removeSchemaRule(long id) {
if (constraintRuleById.containsKey(id)) {
ConstraintRule rule = constraintRuleById.remove(id);
constraints.remove(constraintSemantics.readConstraint(rule));
} else if (indexRuleById.containsKey(id)) {
IndexRule rule = indexRuleById.remove(id);
indexDescriptors.remove(rule.schema());
}
}
use of org.neo4j.kernel.impl.store.record.ConstraintRule in project neo4j by neo4j.
the class SchemaRecordCheckTest method shouldReportUniquenessConstraintNotReferencingBack.
@Test
public void shouldReportUniquenessConstraintNotReferencingBack() throws Exception {
// given
int ruleId1 = 0;
int ruleId2 = 1;
DynamicRecord record1 = inUse(dynamicRecord(ruleId1));
DynamicRecord record2 = inUse(dynamicRecord(ruleId2));
SchemaIndexProvider.Descriptor providerDescriptor = new SchemaIndexProvider.Descriptor("in-memory", "1.0");
IndexRule rule1 = constraintIndexRule(ruleId1, labelId, propertyKeyId, providerDescriptor, (long) ruleId2);
ConstraintRule rule2 = uniquenessConstraintRule(ruleId2, labelId, propertyKeyId, ruleId2);
when(checker().ruleAccess.loadSingleSchemaRule(ruleId1)).thenReturn(rule1);
when(checker().ruleAccess.loadSingleSchemaRule(ruleId2)).thenReturn(rule2);
add(inUse(new LabelTokenRecord(labelId)));
add(inUse(new PropertyKeyTokenRecord(propertyKeyId)));
// when
check(record1);
check(record2);
SchemaRecordCheck obligationChecker = checker().forObligationChecking();
check(obligationChecker, record1);
ConsistencyReport.SchemaConsistencyReport report = check(obligationChecker, record2);
// then
verify(report).uniquenessConstraintNotReferencingBack(record1);
}
use of org.neo4j.kernel.impl.store.record.ConstraintRule in project neo4j by neo4j.
the class SchemaRecordCheckTest method shouldReportInvalidPropertyReferenceFromUniquenessConstraintRule.
@Test
public void shouldReportInvalidPropertyReferenceFromUniquenessConstraintRule() throws Exception {
// given
int schemaRuleId = 0;
int indexRuleId = 1;
DynamicRecord record = inUse(dynamicRecord(schemaRuleId));
ConstraintRule rule = uniquenessConstraintRule(schemaRuleId, labelId, propertyKeyId, indexRuleId);
when(checker().ruleAccess.loadSingleSchemaRule(schemaRuleId)).thenReturn(rule);
add(inUse(new LabelTokenRecord(labelId)));
PropertyKeyTokenRecord propertyKeyToken = add(notInUse(new PropertyKeyTokenRecord(propertyKeyId)));
// when
ConsistencyReport.SchemaConsistencyReport report = check(record);
// then
verify(report).propertyKeyNotInUse(propertyKeyToken);
}
Aggregations