use of org.apache.avro.generic.GenericData.Record in project crunch by cloudera.
the class AvroTypeTest method testGetDetachedValue_GenericAvroType.
@Test
public void testGetDetachedValue_GenericAvroType() {
AvroType<Record> genericType = Avros.generics(Person.SCHEMA$);
GenericData.Record record = new GenericData.Record(Person.SCHEMA$);
record.put("name", "name value");
record.put("age", 42);
record.put("siblingnames", Lists.newArrayList());
Record detachedRecord = genericType.getDetachedValue(record);
assertEquals(record, detachedRecord);
assertNotSame(record, detachedRecord);
}
use of org.apache.avro.generic.GenericData.Record in project nifi by apache.
the class TestAvroTypeUtil method testDefaultArrayValuesInRecordsCase1.
/**
* The issue consists on having an Avro's schema with a default value in an
* array. See
* <a href="https://issues.apache.org/jira/browse/NIFI-4893">NIFI-4893</a>.
* @throws IOException
* schema not found.
*/
@Test
public void testDefaultArrayValuesInRecordsCase1() throws IOException {
Schema avroSchema = new Schema.Parser().parse(getClass().getResourceAsStream("defaultArrayInRecords1.json"));
GenericRecordBuilder builder = new GenericRecordBuilder(avroSchema);
Record field1Record = new GenericRecordBuilder(avroSchema.getField("field1").schema()).build();
builder.set("field1", field1Record);
Record r = builder.build();
@SuppressWarnings("unchecked") GenericData.Array<Integer> values = (GenericData.Array<Integer>) ((GenericRecord) r.get("field1")).get("listOfInt");
assertArrayEquals(new Object[] {}, values.toArray());
RecordSchema record = AvroTypeUtil.createSchema(avroSchema);
RecordField field = record.getField("field1").get();
assertEquals(RecordFieldType.RECORD, field.getDataType().getFieldType());
RecordDataType data = (RecordDataType) field.getDataType();
RecordSchema childSchema = data.getChildSchema();
RecordField childField = childSchema.getField("listOfInt").get();
assertEquals(RecordFieldType.ARRAY, childField.getDataType().getFieldType());
assertTrue(childField.getDefaultValue() instanceof Object[]);
assertArrayEquals(new Object[] {}, ((Object[]) childField.getDefaultValue()));
}
use of org.apache.avro.generic.GenericData.Record in project nifi by apache.
the class TestAvroTypeUtil method testDefaultArrayValue2.
/**
* The issue consists on having an Avro's schema with a default value in an
* array. See
* <a href="https://issues.apache.org/jira/browse/NIFI-4893">NIFI-4893</a>.
* @throws IOException
* schema not found.
*/
@Test
public void testDefaultArrayValue2() throws IOException {
Schema avroSchema = new Schema.Parser().parse(getClass().getResourceAsStream("defaultArrayValue2.json"));
GenericRecordBuilder builder = new GenericRecordBuilder(avroSchema);
Record r = builder.build();
@SuppressWarnings("unchecked") GenericData.Array<Integer> values = (GenericData.Array<Integer>) r.get("listOfInt");
assertArrayEquals(new Object[] { 1, 2 }, values.toArray());
RecordSchema record = AvroTypeUtil.createSchema(avroSchema);
RecordField field = record.getField("listOfInt").get();
assertEquals(RecordFieldType.ARRAY, field.getDataType().getFieldType());
assertTrue(field.getDefaultValue() instanceof Object[]);
assertArrayEquals(new Object[] { 1, 2 }, ((Object[]) field.getDefaultValue()));
}
use of org.apache.avro.generic.GenericData.Record in project nifi by apache.
the class TestKiteStorageProcessor method testBasicStore.
@Test
public void testBasicStore() throws IOException {
TestRunner runner = TestRunners.newTestRunner(StoreInKiteDataset.class);
runner.assertNotValid();
runner.setProperty(StoreInKiteDataset.KITE_DATASET_URI, datasetUri);
runner.assertValid();
List<Record> users = Lists.newArrayList(user("a", "a@example.com"), user("b", "b@example.com"), user("c", "c@example.com"));
runner.enqueue(streamFor(users));
runner.run();
runner.assertAllFlowFilesTransferred("success", 1);
runner.assertQueueEmpty();
Assert.assertEquals("Should store 3 values", 3, (long) runner.getCounterValue("Stored records"));
List<Record> stored = Lists.newArrayList((Iterable<Record>) dataset.newReader());
Assert.assertEquals("Records should match", users, stored);
}
use of org.apache.avro.generic.GenericData.Record in project nifi by apache.
the class TestKiteStorageProcessor method testCorruptedBlocks.
@Test
public void testCorruptedBlocks() throws IOException {
TestRunner runner = TestRunners.newTestRunner(StoreInKiteDataset.class);
runner.setProperty(StoreInKiteDataset.KITE_DATASET_URI, datasetUri);
runner.assertValid();
List<Record> records = Lists.newArrayList();
for (int i = 0; i < 10000; i += 1) {
String num = String.valueOf(i);
records.add(user(num, num + "@example.com"));
}
runner.enqueue(invalidStreamFor(records));
runner.run();
long stored = runner.getCounterValue("Stored records");
Assert.assertTrue("Should store some readable values", 0 < stored && stored < 10000);
runner.assertAllFlowFilesTransferred("success", 1);
}
Aggregations