use of org.apache.nifi.serialization.SimpleRecordSchema in project nifi by apache.
the class TestSchemaNameAsAttribute method testValidateSchemaWhenValid.
@Test
public void testValidateSchemaWhenValid() throws SchemaNotFoundException {
final SchemaIdentifier schemaIdentifier = SchemaIdentifier.builder().name("person").id(1L).build();
final RecordSchema schema = new SimpleRecordSchema(fields, schemaIdentifier);
schemaAccessWriter.validateSchema(schema);
}
use of org.apache.nifi.serialization.SimpleRecordSchema in project nifi by apache.
the class TestSchemaNameAsAttribute method testWriteOnlyName.
@Test
public void testWriteOnlyName() {
final SchemaIdentifier schemaIdentifier = SchemaIdentifier.builder().name("person").id(1L).build();
final RecordSchema schema = new SimpleRecordSchema(fields, schemaIdentifier);
final Map<String, String> attributes = schemaAccessWriter.getAttributes(schema);
Assert.assertEquals(1, attributes.size());
Assert.assertEquals(schemaIdentifier.getName().get(), attributes.get(SchemaNameAsAttribute.SCHEMA_NAME_ATTRIBUTE));
}
use of org.apache.nifi.serialization.SimpleRecordSchema in project nifi by apache.
the class TestSchemaNameAsAttribute method testValidateSchemaWhenNoName.
@Test(expected = SchemaNotFoundException.class)
public void testValidateSchemaWhenNoName() throws SchemaNotFoundException {
final SchemaIdentifier schemaIdentifier = SchemaIdentifier.builder().id(1L).build();
final RecordSchema schema = new SimpleRecordSchema(fields, schemaIdentifier);
schemaAccessWriter.validateSchema(schema);
}
use of org.apache.nifi.serialization.SimpleRecordSchema in project nifi by apache.
the class TestStandardSchemaValidator method testMissingNullableField.
@Test
public void testMissingNullableField() {
final List<RecordField> fields = new ArrayList<>();
fields.add(new RecordField("id", RecordFieldType.INT.getDataType()));
fields.add(new RecordField("name", RecordFieldType.STRING.getDataType()));
final RecordSchema schema = new SimpleRecordSchema(fields);
final Map<String, Object> valueMap = new LinkedHashMap<>();
valueMap.put("id", 1);
Record record = new MapRecord(schema, valueMap, false, false);
final SchemaValidationContext allowExtraFieldsContext = new SchemaValidationContext(schema, true, true);
StandardSchemaValidator validator = new StandardSchemaValidator(allowExtraFieldsContext);
SchemaValidationResult result = validator.validate(record);
assertTrue(result.isValid());
assertNotNull(result.getValidationErrors());
assertTrue(result.getValidationErrors().isEmpty());
}
use of org.apache.nifi.serialization.SimpleRecordSchema in project nifi by apache.
the class TestStandardSchemaValidator method testValidateWrongButCoerceableType.
@Test
public void testValidateWrongButCoerceableType() throws ParseException {
final List<RecordField> fields = new ArrayList<>();
fields.add(new RecordField("id", RecordFieldType.INT.getDataType()));
final RecordSchema schema = new SimpleRecordSchema(fields);
final Map<String, Object> valueMap = new LinkedHashMap<>();
valueMap.put("id", 1);
Record record = new MapRecord(schema, valueMap);
final SchemaValidationContext strictValidationContext = new SchemaValidationContext(schema, false, true);
final SchemaValidationContext lenientValidationContext = new SchemaValidationContext(schema, false, false);
// Validate with correct type of int and a strict validation
StandardSchemaValidator validator = new StandardSchemaValidator(strictValidationContext);
SchemaValidationResult result = validator.validate(record);
assertTrue(result.isValid());
assertNotNull(result.getValidationErrors());
assertTrue(result.getValidationErrors().isEmpty());
// Validate with correct type of int and a lenient validation
validator = new StandardSchemaValidator(lenientValidationContext);
result = validator.validate(record);
assertTrue(result.isValid());
assertNotNull(result.getValidationErrors());
assertTrue(result.getValidationErrors().isEmpty());
// Update Map to set value to a String that is coerceable to an int
valueMap.put("id", "1");
record = new MapRecord(schema, valueMap);
// Validate with incorrect type of string and a strict validation
validator = new StandardSchemaValidator(strictValidationContext);
result = validator.validate(record);
assertFalse(result.isValid());
final Collection<ValidationError> validationErrors = result.getValidationErrors();
assertEquals(1, validationErrors.size());
final ValidationError validationError = validationErrors.iterator().next();
assertEquals("/id", validationError.getFieldName().get());
// Validate with incorrect type of string and a lenient validation
validator = new StandardSchemaValidator(lenientValidationContext);
result = validator.validate(record);
assertTrue(result.isValid());
assertNotNull(result.getValidationErrors());
assertTrue(result.getValidationErrors().isEmpty());
}
Aggregations