Repository: nifi Updated Branches: refs/heads/master a915534e2 -> 236a2b72b
NIFI-1335: Allow UnpackContent to Handle application/x-tar mime.type - Add additinal `mime.type` for tar archives (application/x-tar) - Update `UnpackContent` tests to verify auto-detect format property Project: http://git-wip-us.apache.org/repos/asf/nifi/repo Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/236a2b72 Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/236a2b72 Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/236a2b72 Branch: refs/heads/master Commit: 236a2b72b6f1074040b3800377216af2bcba65af Parents: a915534 Author: ricky <[email protected]> Authored: Mon Dec 28 14:43:55 2015 -0500 Committer: ricky <[email protected]> Committed: Sun Jan 3 11:42:18 2016 -0500 ---------------------------------------------------------------------- .../nifi/processors/standard/UnpackContent.java | 3 ++ .../processors/standard/TestUnpackContent.java | 55 ++++++++++++++------ 2 files changed, 42 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/nifi/blob/236a2b72/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/UnpackContent.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/UnpackContent.java b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/UnpackContent.java index e94853b..3443aea 100644 --- a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/UnpackContent.java +++ b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/UnpackContent.java @@ -175,6 +175,9 @@ public class UnpackContent extends AbstractProcessor { case "application/tar": packagingFormat = TAR_FORMAT; break; + case "application/x-tar": + packagingFormat = TAR_FORMAT; + break; case "application/zip": packagingFormat = ZIP_FORMAT; break; http://git-wip-us.apache.org/repos/asf/nifi/blob/236a2b72/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestUnpackContent.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestUnpackContent.java b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestUnpackContent.java index 04fe05a..0b0cc43 100644 --- a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestUnpackContent.java +++ b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestUnpackContent.java @@ -23,7 +23,9 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.HashMap; import java.util.List; +import java.util.Map; import org.apache.nifi.flowfile.attributes.CoreAttributes; import org.apache.nifi.util.MockFlowFile; @@ -38,17 +40,29 @@ public class TestUnpackContent { @Test public void testTar() throws IOException { - final TestRunner runner = TestRunners.newTestRunner(new UnpackContent()); - runner.setProperty(UnpackContent.PACKAGING_FORMAT, UnpackContent.TAR_FORMAT); + final TestRunner unpackRunner = TestRunners.newTestRunner(new UnpackContent()); + final TestRunner autoUnpackRunner = TestRunners.newTestRunner(new UnpackContent()); + unpackRunner.setProperty(UnpackContent.PACKAGING_FORMAT, UnpackContent.TAR_FORMAT); + autoUnpackRunner.setProperty(UnpackContent.PACKAGING_FORMAT, UnpackContent.AUTO_DETECT_FORMAT); + unpackRunner.enqueue(dataPath.resolve("data.tar")); + Map<String, String> attributes = new HashMap<>(1); + Map<String, String> attributes2 = new HashMap<>(1); + attributes.put("mime.type", "application/x-tar"); + attributes2.put("mime.type", "application/tar"); + autoUnpackRunner.enqueue(dataPath.resolve("data.tar"), attributes); + autoUnpackRunner.enqueue(dataPath.resolve("data.tar"), attributes2); + unpackRunner.run(); + autoUnpackRunner.run(2); - runner.enqueue(dataPath.resolve("data.tar")); - runner.run(); + unpackRunner.assertTransferCount(UnpackContent.REL_SUCCESS, 2); + unpackRunner.assertTransferCount(UnpackContent.REL_ORIGINAL, 1); + unpackRunner.assertTransferCount(UnpackContent.REL_FAILURE, 0); - runner.assertTransferCount(UnpackContent.REL_SUCCESS, 2); - runner.assertTransferCount(UnpackContent.REL_ORIGINAL, 1); - runner.assertTransferCount(UnpackContent.REL_FAILURE, 0); + autoUnpackRunner.assertTransferCount(UnpackContent.REL_SUCCESS, 4); + autoUnpackRunner.assertTransferCount(UnpackContent.REL_ORIGINAL, 2); + autoUnpackRunner.assertTransferCount(UnpackContent.REL_FAILURE, 0); - final List<MockFlowFile> unpacked = runner.getFlowFilesForRelationship(UnpackContent.REL_SUCCESS); + final List<MockFlowFile> unpacked = unpackRunner.getFlowFilesForRelationship(UnpackContent.REL_SUCCESS); for (final MockFlowFile flowFile : unpacked) { final String filename = flowFile.getAttribute(CoreAttributes.FILENAME.key()); final String folder = flowFile.getAttribute(CoreAttributes.PATH.key()); @@ -61,17 +75,26 @@ public class TestUnpackContent { @Test public void testZip() throws IOException { - final TestRunner runner = TestRunners.newTestRunner(new UnpackContent()); - runner.setProperty(UnpackContent.PACKAGING_FORMAT, UnpackContent.ZIP_FORMAT); - runner.enqueue(dataPath.resolve("data.zip")); + final TestRunner unpackRunner = TestRunners.newTestRunner(new UnpackContent()); + final TestRunner autoUnpackRunner = TestRunners.newTestRunner(new UnpackContent()); + unpackRunner.setProperty(UnpackContent.PACKAGING_FORMAT, UnpackContent.ZIP_FORMAT); + autoUnpackRunner.setProperty(UnpackContent.PACKAGING_FORMAT, UnpackContent.AUTO_DETECT_FORMAT); + unpackRunner.enqueue(dataPath.resolve("data.zip")); + Map<String, String> attributes = new HashMap<>(1); + attributes.put("mime.type", "application/zip"); + autoUnpackRunner.enqueue(dataPath.resolve("data.zip"), attributes); + unpackRunner.run(); + autoUnpackRunner.run(); - runner.run(); + unpackRunner.assertTransferCount(UnpackContent.REL_SUCCESS, 2); + unpackRunner.assertTransferCount(UnpackContent.REL_ORIGINAL, 1); + unpackRunner.assertTransferCount(UnpackContent.REL_FAILURE, 0); - runner.assertTransferCount(UnpackContent.REL_SUCCESS, 2); - runner.assertTransferCount(UnpackContent.REL_ORIGINAL, 1); - runner.assertTransferCount(UnpackContent.REL_FAILURE, 0); + autoUnpackRunner.assertTransferCount(UnpackContent.REL_SUCCESS, 2); + autoUnpackRunner.assertTransferCount(UnpackContent.REL_ORIGINAL, 1); + autoUnpackRunner.assertTransferCount(UnpackContent.REL_FAILURE, 0); - final List<MockFlowFile> unpacked = runner.getFlowFilesForRelationship(UnpackContent.REL_SUCCESS); + final List<MockFlowFile> unpacked = unpackRunner.getFlowFilesForRelationship(UnpackContent.REL_SUCCESS); for (final MockFlowFile flowFile : unpacked) { final String filename = flowFile.getAttribute(CoreAttributes.FILENAME.key()); final String folder = flowFile.getAttribute(CoreAttributes.PATH.key());
