Search in sources :

Example 51 with Record

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);
}
Also used : Record(org.apache.avro.generic.GenericData.Record) Record(org.apache.avro.generic.GenericData.Record) GenericData(org.apache.avro.generic.GenericData) Test(org.junit.Test)

Example 52 with Record

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()));
}
Also used : RecordField(org.apache.nifi.serialization.record.RecordField) RecordSchema(org.apache.nifi.serialization.record.RecordSchema) Schema(org.apache.avro.Schema) SimpleRecordSchema(org.apache.nifi.serialization.SimpleRecordSchema) GenericData(org.apache.avro.generic.GenericData) RecordDataType(org.apache.nifi.serialization.record.type.RecordDataType) GenericRecordBuilder(org.apache.avro.generic.GenericRecordBuilder) Record(org.apache.avro.generic.GenericData.Record) GenericRecord(org.apache.avro.generic.GenericRecord) RecordSchema(org.apache.nifi.serialization.record.RecordSchema) SimpleRecordSchema(org.apache.nifi.serialization.SimpleRecordSchema) Test(org.junit.Test)

Example 53 with Record

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()));
}
Also used : RecordField(org.apache.nifi.serialization.record.RecordField) RecordSchema(org.apache.nifi.serialization.record.RecordSchema) Schema(org.apache.avro.Schema) SimpleRecordSchema(org.apache.nifi.serialization.SimpleRecordSchema) GenericData(org.apache.avro.generic.GenericData) GenericRecordBuilder(org.apache.avro.generic.GenericRecordBuilder) Record(org.apache.avro.generic.GenericData.Record) GenericRecord(org.apache.avro.generic.GenericRecord) RecordSchema(org.apache.nifi.serialization.record.RecordSchema) SimpleRecordSchema(org.apache.nifi.serialization.SimpleRecordSchema) Test(org.junit.Test)

Example 54 with Record

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);
}
Also used : TestRunner(org.apache.nifi.util.TestRunner) Record(org.apache.avro.generic.GenericData.Record) Test(org.junit.Test)

Example 55 with Record

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);
}
Also used : TestRunner(org.apache.nifi.util.TestRunner) Record(org.apache.avro.generic.GenericData.Record) Test(org.junit.Test)

Aggregations

Record (org.apache.avro.generic.GenericData.Record)96 Test (org.junit.Test)44 IndexedRecord (org.apache.avro.generic.IndexedRecord)43 Schema (org.apache.avro.Schema)33 ArrayList (java.util.ArrayList)24 GenericRecord (org.apache.avro.generic.GenericRecord)14 Field (org.apache.avro.Schema.Field)11 List (java.util.List)10 GenericData (org.apache.avro.generic.GenericData)10 TestRunner (org.apache.nifi.util.TestRunner)8 GenericRecordBuilder (org.apache.avro.generic.GenericRecordBuilder)7 JsonObject (com.google.gson.JsonObject)6 DataFileStream (org.apache.avro.file.DataFileStream)6 DataFileWriter (org.apache.avro.file.DataFileWriter)6 GenericDatumReader (org.apache.avro.generic.GenericDatumReader)6 Utf8 (org.apache.avro.util.Utf8)6 TMarketoOutputProperties (org.talend.components.marketo.tmarketooutput.TMarketoOutputProperties)6 ActivityRecord (com.marketo.mktows.ActivityRecord)5 ArrayOfLeadRecord (com.marketo.mktows.ArrayOfLeadRecord)5 LeadChangeRecord (com.marketo.mktows.LeadChangeRecord)5