[nifi] 01/02: NIFI-6419: Fixed AvroWriter single record with external schema results in data loss

2019-07-12 Thread ijokarumawak
This is an automated email from the ASF dual-hosted git repository.

ijokarumawak pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nifi.git

commit 24e50953a3e2dde4cda0261e4f7dba083d5ed602
Author: Peter Turcsanyi 
AuthorDate: Thu Jul 4 18:48:36 2019 +0200

NIFI-6419: Fixed AvroWriter single record with external schema results in 
data loss

This closes #3573.

Signed-off-by: Koji Kawamura 
---
 .../nifi-record-serialization-services/pom.xml |  1 +
 .../org/apache/nifi/avro/TestWriteAvroResult.java  | 69 ++
 .../nifi/avro/TestWriteAvroResultWithSchema.java   | 18 +-
 .../avro/TestWriteAvroResultWithoutSchema.java | 15 -
 .../src/test/resources/avro/simple.avsc|  8 +++
 5 files changed, 109 insertions(+), 2 deletions(-)

diff --git 
a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/pom.xml
 
b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/pom.xml
index 06fdb6d..e32ec28 100755
--- 
a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/pom.xml
+++ 
b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/pom.xml
@@ -136,6 +136,7 @@
 
src/test/resources/avro/logical-types.avsc
 
src/test/resources/avro/logical-types-nullable.avsc
 
src/test/resources/avro/multiple-types.avsc
+src/test/resources/avro/simple.avsc
 
src/test/resources/csv/extra-white-space.csv
 
src/test/resources/csv/multi-bank-account.csv
 
src/test/resources/csv/single-bank-account.csv
diff --git 
a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/avro/TestWriteAvroResult.java
 
b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/avro/TestWriteAvroResult.java
index 4751f74..d3e5f6c 100644
--- 
a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/avro/TestWriteAvroResult.java
+++ 
b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/avro/TestWriteAvroResult.java
@@ -26,6 +26,7 @@ import org.apache.nifi.serialization.RecordSetWriter;
 import org.apache.nifi.serialization.SimpleRecordSchema;
 import org.apache.nifi.serialization.WriteResult;
 import org.apache.nifi.serialization.record.DataType;
+import org.apache.nifi.serialization.record.ListRecordSet;
 import org.apache.nifi.serialization.record.MapRecord;
 import org.apache.nifi.serialization.record.Record;
 import org.apache.nifi.serialization.record.RecordField;
@@ -66,10 +67,78 @@ public abstract class TestWriteAvroResult {
 
 protected abstract GenericRecord readRecord(InputStream in, Schema schema) 
throws IOException;
 
+protected abstract List readRecords(InputStream in, Schema 
schema, int recordCount) throws IOException;
+
 protected void verify(final WriteResult writeResult) {
 }
 
 @Test
+public void testWriteRecord() throws IOException {
+final Schema schema = new Schema.Parser().parse(new 
File("src/test/resources/avro/simple.avsc"));
+
+final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+final List fields = new ArrayList<>();
+fields.add(new RecordField("msg", 
RecordFieldType.STRING.getDataType()));
+final RecordSchema recordSchema = new SimpleRecordSchema(fields);
+
+final Map values = new HashMap<>();
+values.put("msg", "nifi");
+final Record record = new MapRecord(recordSchema, values);
+
+try (final RecordSetWriter writer = createWriter(schema, baos)) {
+writer.write(record);
+}
+
+final byte[] data = baos.toByteArray();
+
+try (final InputStream in = new ByteArrayInputStream(data)) {
+final GenericRecord avroRecord = readRecord(in, schema);
+
+assertNotNull(avroRecord);
+assertNotNull(avroRecord.get("msg"));
+assertEquals("nifi", avroRecord.get("msg").toString());
+}
+}
+
+@Test
+public void testWriteRecordSet() throws IOException {
+final Schema schema = new Schema.Parser().parse(new 
File("src/test/resources/avro/simple.avsc"));
+
+final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+final List fields = new ArrayList<>();
+fields.add(new RecordField("msg", 
RecordFieldType.STRING.getDataType()));
+

[nifi] branch master updated (4783b12 -> e277545)

2019-07-12 Thread ijokarumawak
This is an automated email from the ASF dual-hosted git repository.

ijokarumawak pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/nifi.git.


from 4783b12  NIFI-5254 Upgraded Groovy to version 2.5.4 Updated pom files 
regarding groovy dependencies.  groovy-all was changed to a pom type dependency 
Added Groovy Bintray as a plugin repository in root pom Upgraded spock-core to 
version 1.3-groovy-2.5 and added exclusion of groovy dependencies to force 
spock to use the version from dependencyManagement Updated groovy-eclipse-batch 
to use the groovy.version property to determine the version Updated 
groovy-eclipse-compiler to 3.4.0 [...]
 new 24e5095  NIFI-6419: Fixed AvroWriter single record with external 
schema results in data loss
 new e277545  NIFI-6419: Flush the buffers on close to ensure all data is 
written.

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../nifi-record-serialization-services/pom.xml |  1 +
 .../avro/WriteAvroResultWithExternalSchema.java|  1 +
 .../org/apache/nifi/avro/TestWriteAvroResult.java  | 69 ++
 .../nifi/avro/TestWriteAvroResultWithSchema.java   | 18 +-
 .../avro/TestWriteAvroResultWithoutSchema.java | 15 -
 .../src/test/resources/avro/simple.avsc|  8 +++
 6 files changed, 110 insertions(+), 2 deletions(-)
 create mode 100644 
nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/resources/avro/simple.avsc