MINIFI-242 - Initial integration tests focused around backwards compatibility
This closes #76.
Signed-off-by: Aldrin Piri <aldrin@apache.org>
diff --git a/README.md b/README.md
index ec6916f..ad29baa 100644
--- a/README.md
+++ b/README.md
@@ -21,6 +21,7 @@
- [Features](#features)
- [Requirements](#requirements)
- [Getting Started](#getting-started)
+- [Docker Build](#docker-build)
- [Getting Help](#getting-help)
- [Documentation](#documentation)
- [License](#license)
@@ -97,6 +98,14 @@
$ cd ~/example-minifi-deploy/minifi-*
$ ./bin/minifi.sh stop
+## Docker Build
+
+To build:
+- Execute mvn -P docker clean install. This will run the full build, create a docker image based on it, and run docker-compose integration tests. After it completes successfully, you should have an apacheminifi:${minifi.version} image that can be started with the following command (replacing ${minifi.version} with the current maven version of your branch):
+```
+docker run -d -v YOUR_CONFIG.YML:/opt/minifi/minifi-${minifi.version}/conf/config.yml apacheminifi:${minifi.version}
+```
+
## Getting Help
If you have questions, you can reach out to our mailing list: dev@nifi.apache.org
([archive](https://mail-archives.apache.org/mod_mbox/nifi-dev)).
diff --git a/minifi-integration-tests/pom.xml b/minifi-integration-tests/pom.xml
new file mode 100644
index 0000000..6356434
--- /dev/null
+++ b/minifi-integration-tests/pom.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>minifi</artifactId>
+ <groupId>org.apache.nifi.minifi</groupId>
+ <version>0.2.0-SNAPSHOT</version>
+ </parent>
+ <artifactId>minifi-integration-tests</artifactId>
+ <packaging>jar</packaging>
+
+ <properties>
+ <minifi.version>${project.version}</minifi.version>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.nifi.minifi</groupId>
+ <artifactId>minifi-commons-schema</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.palantir.docker.compose</groupId>
+ <artifactId>docker-compose-rule-junit4</artifactId>
+ <version>0.31.1</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.nifi.minifi</groupId>
+ <artifactId>minifi-toolkit-configuration</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-classic</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-databind</artifactId>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <testResources>
+ <testResource>
+ <directory>src/test/resources</directory>
+ <filtering>true</filtering>
+ </testResource>
+ </testResources>
+
+ <plugins>
+ <plugin>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <skip>true</skip>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.rat</groupId>
+ <artifactId>apache-rat-plugin</artifactId>
+ <configuration>
+ <excludes combine.children="append">
+ <exclude>**/expected.json</exclude>
+ </excludes>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+ <profiles>
+ <profile>
+ <id>docker</id>
+ <properties>
+ <name>docker</name>
+ </properties>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <skip>false</skip>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
+ <repositories>
+ <repository>
+ <id>palantir.bintray</id>
+ <name>Palantir Bintray</name>
+ <url>https://dl.bintray.com/palantir/releases</url>
+ </repository>
+ </repositories>
+</project>
diff --git a/minifi-integration-tests/src/test/java/org/apache/nifi/minifi/integration/standalone/test/StandaloneXmlTest.java b/minifi-integration-tests/src/test/java/org/apache/nifi/minifi/integration/standalone/test/StandaloneXmlTest.java
new file mode 100644
index 0000000..9672928
--- /dev/null
+++ b/minifi-integration-tests/src/test/java/org/apache/nifi/minifi/integration/standalone/test/StandaloneXmlTest.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nifi.minifi.integration.standalone.test;
+
+import org.apache.nifi.minifi.commons.schema.ConfigSchema;
+import org.apache.nifi.minifi.commons.schema.serialization.SchemaSaver;
+import org.apache.nifi.minifi.toolkit.configuration.ConfigMain;
+
+import javax.xml.bind.JAXBException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+
+public class StandaloneXmlTest extends StandaloneYamlTest {
+ public StandaloneXmlTest(String version, String name) throws IOException, JAXBException {
+ super(version, name);
+ ConfigSchema configSchema;
+ try (InputStream inputStream = StandaloneXmlTest.class.getClassLoader().getResourceAsStream("./standalone/" + version + "/" + name + "/xml/" + name + ".xml")) {
+ configSchema = ConfigMain.transformTemplateToSchema(inputStream);
+ }
+ try (OutputStream outputStream = Files.newOutputStream(Paths.get(StandaloneXmlTest.class.getClassLoader().getResource("docker-compose-v1-standalone.yml").getFile())
+ .getParent().toAbsolutePath().resolve(getConfigYml()))) {
+ SchemaSaver.saveConfigSchema(configSchema, outputStream);
+ }
+ }
+
+ @Override
+ protected String getConfigYml() {
+ return "./standalone/" + version + "/" + name + "/xml/" + name + ".yml";
+ }
+
+ @Override
+ protected String getExpectedJson() {
+ return "standalone/" + version + "/" + name + "/xml/expected.json";
+ }
+}
diff --git a/minifi-integration-tests/src/test/java/org/apache/nifi/minifi/integration/standalone/test/StandaloneYamlTest.java b/minifi-integration-tests/src/test/java/org/apache/nifi/minifi/integration/standalone/test/StandaloneYamlTest.java
new file mode 100644
index 0000000..bf9cd96
--- /dev/null
+++ b/minifi-integration-tests/src/test/java/org/apache/nifi/minifi/integration/standalone/test/StandaloneYamlTest.java
@@ -0,0 +1,131 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nifi.minifi.integration.standalone.test;
+
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.palantir.docker.compose.DockerComposeRule;
+import com.palantir.docker.compose.connection.DockerPort;
+import com.palantir.docker.compose.connection.waiting.HealthChecks;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Map;
+import java.util.concurrent.ExecutionException;
+import java.util.regex.Pattern;
+
+import static org.junit.Assert.fail;
+
+@RunWith(Parameterized.class)
+public class StandaloneYamlTest {
+ private static final Logger logger = LoggerFactory.getLogger(StandaloneYamlTest.class);
+
+ protected final String version;
+ protected final String name;
+
+ @Parameterized.Parameters(name = "{index}: Schema Version: {0} Name: {1}")
+ public static Collection<Object[]> data() {
+ return Arrays.asList(new Object[][]{
+ {"v1", "CsvToJson"},
+ {"v1", "DecompressionCircularFlow"},
+ {"v1", "MiNiFiTailLogAttribute"},
+ {"v1", "ReplaceTextExpressionLanguageCSVReformatting"},
+ {"v2", "MultipleRelationships"},
+ {"v2", "ProcessGroups"},
+ {"v2", "StressTestFramework"}
+ });
+ }
+
+ @Rule
+ public DockerComposeRule dockerComposeRule;
+
+ public StandaloneYamlTest(String version, String name) throws IOException {
+ this.version = version;
+ this.name = name;
+ String dockerComposeYmlFile = "target/test-classes/docker-compose-" + version + "-" + name + "Test-yml.yml";
+ try (InputStream inputStream = StandaloneYamlTest.class.getClassLoader().getResourceAsStream("docker-compose-v1-standalone.yml");
+ InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
+ BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
+ FileWriter fileWriter = new FileWriter(dockerComposeYmlFile);
+ BufferedWriter bufferedWriter = new BufferedWriter(fileWriter)) {
+ String line;
+ while ((line = bufferedReader.readLine()) != null) {
+ bufferedWriter.write(line.replace("REPLACED_WITH_CONFIG_FILE", getConfigYml()));
+ bufferedWriter.newLine();
+ }
+ }
+ dockerComposeRule = DockerComposeRule.builder()
+ .file(dockerComposeYmlFile)
+ .waitingForService("minifi", HealthChecks.toRespond2xxOverHttp(8000, dockerPort -> "http://" + dockerPort.getIp() + ":" + dockerPort.getExternalPort()))
+ .build();
+ }
+
+ protected String getConfigYml() {
+ return "./standalone/" + version + "/" + name + "/yml/" + name + ".yml";
+ }
+
+ protected String getExpectedJson() {
+ return "standalone/" + version + "/" + name + "/yml/expected.json";
+ }
+
+ @Test(timeout = 60_000)
+ public void verifyLogEntries() throws IOException, InterruptedException, ExecutionException {
+ Pattern expectedLine;
+ int expectedOccurences;
+ try (InputStream inputStream = StandaloneYamlTest.class.getClassLoader().getResourceAsStream(getExpectedJson())) {
+ Map<String, Object> map = new ObjectMapper().readValue(inputStream, Map.class);
+ expectedLine = Pattern.compile((String) map.get("pattern"));
+ expectedOccurences = (int) map.getOrDefault("occurrences", 1);
+ }
+ DockerPort dockerPort = dockerComposeRule.containers().container("minifi").port(8000);
+ URL url = new URL("http://" + dockerPort.getIp() + ":" + dockerPort.getExternalPort());
+ HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
+ try (InputStream inputStream = urlConnection.getInputStream();
+ InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
+ BufferedReader bufferedReader = new BufferedReader(inputStreamReader)) {
+ String line;
+ int occurrences = 0;
+ while ((line = bufferedReader.readLine()) != null) {
+ if (expectedLine.matcher(line).find()) {
+ logger.info("Found expected: " + line);
+ if (++occurrences >= expectedOccurences) {
+ logger.info("Found target " + occurrences + " times");
+ return;
+ }
+ }
+ }
+ fail("End of log reached without " + expectedOccurences + " match(es)");
+ } finally {
+ urlConnection.disconnect();
+ }
+ }
+}
\ No newline at end of file
diff --git a/minifi-integration-tests/src/test/resources/bootstrap.conf b/minifi-integration-tests/src/test/resources/bootstrap.conf
new file mode 100644
index 0000000..28e9d1b
--- /dev/null
+++ b/minifi-integration-tests/src/test/resources/bootstrap.conf
@@ -0,0 +1,99 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# Java command to use when running MiNiFi
+java=java
+
+# Username to use when running MiNiFi. This value will be ignored on Windows.
+run.as=
+
+# Configure where MiNiFi's lib and conf directories live
+lib.dir=./lib
+conf.dir=./conf
+
+# How long to wait after telling MiNiFi to shutdown before explicitly killing the Process
+graceful.shutdown.seconds=20
+
+# The location for the configuration file
+nifi.minifi.config=./conf/config.yml
+
+# Notifiers to use for the associated agent, comma separated list of class names
+#nifi.minifi.notifier.ingestors=org.apache.nifi.minifi.bootstrap.configuration.ingestors.FileChangeIngestor
+#nifi.minifi.notifier.ingestors=org.apache.nifi.minifi.bootstrap.configuration.ingestors.RestChangeIngestor
+#nifi.minifi.notifier.ingestors=org.apache.nifi.minifi.bootstrap.configuration.ingestors.PullHttpChangeIngestor
+
+# File change notifier configuration
+
+# Path of the file to monitor for changes. When these occur, the FileChangeNotifier, if configured, will begin the configuration reloading process
+#nifi.minifi.notifier.ingestors.file.config.path=
+# How frequently the file specified by 'nifi.minifi.notifier.file.config.path' should be evaluated for changes.
+#nifi.minifi.notifier.ingestors.file.polling.period.seconds=5
+
+# Rest change notifier configuration
+
+# Port on which the Jetty server will bind to, keep commented for a random open port
+#nifi.minifi.notifier.ingestors.receive.http.port=8338
+
+#Pull HTTP change notifier configuration
+
+# Hostname on which to pull configurations from
+#nifi.minifi.notifier.ingestors.pull.http.hostname=localhost
+# Port on which to pull configurations from
+#nifi.minifi.notifier.ingestors.pull.http.port=4567
+# Path to pull configurations from
+#nifi.minifi.notifier.ingestors.pull.http.path=/c2/config
+# Query string to pull configurations with
+#nifi.minifi.notifier.ingestors.pull.http.query=class=raspi3
+# Period on which to pull configurations from, defaults to 5 minutes if commented out
+#nifi.minifi.notifier.ingestors.pull.http.period.ms=300000
+
+# Periodic Status Reporters to use for the associated agent, comma separated list of class names
+#nifi.minifi.status.reporter.components=org.apache.nifi.minifi.bootstrap.status.reporters.StatusLogger
+
+# Periodic Status Logger configuration
+
+# The FlowStatus query to submit to the MiNiFi instance
+#nifi.minifi.status.reporter.log.query=instance:health,bulletins
+# The log level at which the status will be logged
+#nifi.minifi.status.reporter.log.level=INFO
+# The period (in milliseconds) at which to log the status
+#nifi.minifi.status.reporter.log.period=60000
+
+# Disable JSR 199 so that we can use JSP's without running a JDK
+java.arg.1=-Dorg.apache.jasper.compiler.disablejsr199=true
+
+# JVM memory settings
+java.arg.2=-Xms256m
+java.arg.3=-Xmx256m
+
+# Enable Remote Debugging
+#java.arg.debug=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000
+
+java.arg.4=-Djava.net.preferIPv4Stack=true
+
+# allowRestrictedHeaders is required for Cluster/Node communications to work properly
+java.arg.5=-Dsun.net.http.allowRestrictedHeaders=true
+java.arg.6=-Djava.protocol.handler.pkgs=sun.net.www.protocol
+
+# The G1GC is still considered experimental but has proven to be very advantageous in providing great
+# performance without significant "stop-the-world" delays.
+#java.arg.13=-XX:+UseG1GC
+
+#Set headless mode by default
+java.arg.14=-Djava.awt.headless=true
+
+java.arg.15=-Djava.security.egd=file:/dev/./urandom
\ No newline at end of file
diff --git a/minifi-integration-tests/src/test/resources/docker-compose-v1-standalone.yml b/minifi-integration-tests/src/test/resources/docker-compose-v1-standalone.yml
new file mode 100644
index 0000000..1cd18ae
--- /dev/null
+++ b/minifi-integration-tests/src/test/resources/docker-compose-v1-standalone.yml
@@ -0,0 +1,33 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the \"License\"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an \"AS IS\" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+version: "2"
+
+services:
+ minifi:
+ image: apacheminifi:${minifi.version}
+ ports:
+ - "8000"
+ hostname: minifi
+ volumes:
+ - ./tailFileServer.py:/home/minifi/tailFileServer.py
+
+ - ./bootstrap.conf:/opt/minifi/minifi-${minifi.version}/conf/bootstrap.conf
+ - ./logback.xml:/opt/minifi/minifi-${minifi.version}/conf/logback.xml
+ - REPLACED_WITH_CONFIG_FILE:/opt/minifi/minifi-${minifi.version}/conf/config.yml
+ entrypoint:
+ - bash
+ - -c
+ - /opt/minifi/minifi-${minifi.version}/bin/minifi.sh start && python /home/minifi/tailFileServer.py --file /opt/minifi/minifi-${minifi.version}/logs/minifi-app.log
\ No newline at end of file
diff --git a/minifi-integration-tests/src/test/resources/logback.xml b/minifi-integration-tests/src/test/resources/logback.xml
new file mode 100644
index 0000000..168ff9e
--- /dev/null
+++ b/minifi-integration-tests/src/test/resources/logback.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to You under the Apache License, Version 2.0
+ ~ (the "License"); you may not use this file except in compliance with
+ ~ the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<configuration scan="true" scanPeriod="30 seconds">
+ <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
+ <resetJUL>true</resetJUL>
+ </contextListener>
+
+ <appender name="APP_FILE" class="ch.qos.logback.core.FileAppender">
+ <file>${org.apache.nifi.minifi.bootstrap.config.log.dir}/minifi-app.log</file>
+ <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+ <pattern>%date %level [%thread] %logger{40} %msg%n</pattern>
+ <immediateFlush>true</immediateFlush>
+ </encoder>
+ </appender>
+
+ <appender name="BOOTSTRAP_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${org.apache.nifi.minifi.bootstrap.config.log.dir}/minifi-bootstrap.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <!--
+ For daily rollover, use 'user_%d.log'.
+ For hourly rollover, use 'user_%d{yyyy-MM-dd_HH}.log'.
+ To GZIP rolled files, replace '.log' with '.log.gz'.
+ To ZIP rolled files, replace '.log' with '.log.zip'.
+ -->
+ <fileNamePattern>${org.apache.nifi.minifi.bootstrap.config.log.dir}/minifi-bootstrap_%d.log.gz</fileNamePattern>
+ <!-- Keep 5 rolling periods worth of logs-->
+ <maxHistory>5</maxHistory>
+ </rollingPolicy>
+ <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+ <pattern>%date %level [%thread] %logger{40} %msg%n</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+ <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+ <pattern>%date %level [%thread] %logger{40} %msg%n</pattern>
+ </encoder>
+ </appender>
+
+ <!-- valid logging levels: TRACE, DEBUG, INFO, WARN, ERROR -->
+
+ <logger name="org.apache.nifi" level="INFO"/>
+ <logger name="org.apache.nifi.processors" level="WARN"/>
+ <logger name="org.apache.nifi.processors.standard.LogAttribute" level="INFO"/>
+ <logger name="org.apache.nifi.controller.repository.StandardProcessSession" level="INFO" />
+
+ <!-- Logger for managing logging statements for jetty -->
+ <logger name="org.eclipse.jetty" level="INFO"/>
+
+ <!-- Suppress non-error messages due to excessive logging by class or library -->
+ <logger name="com.sun.jersey.spi.container.servlet.WebComponent" level="ERROR"/>
+ <logger name="com.sun.jersey.spi.spring" level="ERROR"/>
+ <logger name="org.springframework" level="ERROR"/>
+
+ <!-- Suppress non-error messages due to known warning about redundant path annotation (NIFI-574) -->
+ <logger name="com.sun.jersey.spi.inject.Errors" level="ERROR"/>
+
+ <!--
+ Logger for capturing Bootstrap logs and MiNiFi's standard error and standard out.
+ -->
+ <logger name="org.apache.nifi.minifi.bootstrap" level="INFO" additivity="false">
+ <appender-ref ref="BOOTSTRAP_FILE" />
+ </logger>
+ <logger name="org.apache.nifi.minifi.bootstrap.Command" level="INFO" additivity="false">
+ <appender-ref ref="CONSOLE" />
+ <appender-ref ref="BOOTSTRAP_FILE" />
+ </logger>
+
+ <!-- Everything written to MiNiFi's Standard Out will be logged with the logger org.apache.nifi.minifi.StdOut at INFO level -->
+ <logger name="org.apache.nifi.minifi.StdOut" level="INFO" additivity="false">
+ <appender-ref ref="BOOTSTRAP_FILE" />
+ </logger>
+
+ <!-- Everything written to MiNiFi's Standard Error will be logged with the logger org.apache.nifi.minifi.StdErr at ERROR level -->
+ <logger name="org.apache.nifi.minifi.StdErr" level="ERROR" additivity="false">
+ <appender-ref ref="BOOTSTRAP_FILE" />
+ </logger>
+
+
+ <root level="INFO">
+ <appender-ref ref="APP_FILE"/>
+ </root>
+
+</configuration>
diff --git a/minifi-integration-tests/src/test/resources/standalone/v1/CsvToJson/xml/CsvToJson.xml b/minifi-integration-tests/src/test/resources/standalone/v1/CsvToJson/xml/CsvToJson.xml
new file mode 100644
index 0000000..60f5296
--- /dev/null
+++ b/minifi-integration-tests/src/test/resources/standalone/v1/CsvToJson/xml/CsvToJson.xml
@@ -0,0 +1,400 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to You under the Apache License, Version 2.0
+ ~ (the "License"); you may not use this file except in compliance with
+ ~ the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+<template encoding-version="1.0">
+ <description></description>
+ <groupId>3d665027-7897-4322-96a1-cabef6b2bcf7</groupId>
+ <name>CsvToJsonWorking</name>
+ <snippet>
+ <connections>
+ <id>0cc34e0a-0ae9-44ba-838f-792ed393a301</id>
+ <parentGroupId>3d665027-7897-4322-96a1-cabef6b2bcf7</parentGroupId>
+ <backPressureDataSizeThreshold>0 MB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>0</backPressureObjectThreshold>
+ <destination>
+ <groupId>3d665027-7897-4322-96a1-cabef6b2bcf7</groupId>
+ <id>cdcc2028-238b-42b7-bf95-dd4f301b91fc</id>
+ <type>PROCESSOR</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <name></name>
+ <prioritizers>org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer</prioritizers>
+ <selectedRelationships>success</selectedRelationships>
+ <source>
+ <groupId>3d665027-7897-4322-96a1-cabef6b2bcf7</groupId>
+ <id>ffb6d4e9-9d6c-4fbe-ab8a-52bad90ce2e5</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <connections>
+ <id>e32e19cb-6c4c-4c6c-a8db-408447ba2ca2</id>
+ <parentGroupId>3d665027-7897-4322-96a1-cabef6b2bcf7</parentGroupId>
+ <backPressureDataSizeThreshold>0 MB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>0</backPressureObjectThreshold>
+ <destination>
+ <groupId>3d665027-7897-4322-96a1-cabef6b2bcf7</groupId>
+ <id>5f0ec33c-0a07-4305-a3a9-9a3ba0548ac6</id>
+ <type>PROCESSOR</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <name></name>
+ <prioritizers>org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer</prioritizers>
+ <selectedRelationships>success</selectedRelationships>
+ <source>
+ <groupId>3d665027-7897-4322-96a1-cabef6b2bcf7</groupId>
+ <id>cdcc2028-238b-42b7-bf95-dd4f301b91fc</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <connections>
+ <id>b061c170-19da-4e84-9709-327303fef579</id>
+ <parentGroupId>3d665027-7897-4322-96a1-cabef6b2bcf7</parentGroupId>
+ <backPressureDataSizeThreshold>0 MB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>0</backPressureObjectThreshold>
+ <destination>
+ <groupId>3d665027-7897-4322-96a1-cabef6b2bcf7</groupId>
+ <id>1d00089c-78cd-467f-9aa6-31e3bdf90cb0</id>
+ <type>PROCESSOR</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <name></name>
+ <prioritizers>org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer</prioritizers>
+ <selectedRelationships>success</selectedRelationships>
+ <source>
+ <groupId>3d665027-7897-4322-96a1-cabef6b2bcf7</groupId>
+ <id>8db2ebc8-12c8-4396-89b6-479d907fbc6b</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <connections>
+ <id>56ef3e2e-ee35-4598-9fbe-ae86050960b0</id>
+ <parentGroupId>3d665027-7897-4322-96a1-cabef6b2bcf7</parentGroupId>
+ <backPressureDataSizeThreshold>0 MB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>0</backPressureObjectThreshold>
+ <destination>
+ <groupId>3d665027-7897-4322-96a1-cabef6b2bcf7</groupId>
+ <id>8db2ebc8-12c8-4396-89b6-479d907fbc6b</id>
+ <type>PROCESSOR</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <name></name>
+ <prioritizers>org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer</prioritizers>
+ <selectedRelationships>matched</selectedRelationships>
+ <source>
+ <groupId>3d665027-7897-4322-96a1-cabef6b2bcf7</groupId>
+ <id>5f0ec33c-0a07-4305-a3a9-9a3ba0548ac6</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <labels>
+ <id>a1854f35-469c-41fa-80a2-70ae90cf1ed9</id>
+ <parentGroupId>3d665027-7897-4322-96a1-cabef6b2bcf7</parentGroupId>
+ <position>
+ <x>514.0</x>
+ <y>431.6599933547974</y>
+ </position>
+ <height>281.4172668457031</height>
+ <label></label>
+ <style/>
+ <width>388.0479431152344</width>
+ </labels>
+ <processors>
+ <id>cdcc2028-238b-42b7-bf95-dd4f301b91fc</id>
+ <parentGroupId>3d665027-7897-4322-96a1-cabef6b2bcf7</parentGroupId>
+ <position>
+ <x>569.3500686645507</x>
+ <y>239.77198108673096</y>
+ </position>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+ <concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>Regular Expression</key>
+ <value>(?s:^.*$)</value>
+ </entry>
+ <entry>
+ <key>Replacement Value</key>
+ <value>a,b,c,d</value>
+ </entry>
+ <entry>
+ <key>Character Set</key>
+ <value>UTF-8</value>
+ </entry>
+ <entry>
+ <key>Maximum Buffer Size</key>
+ <value>1 MB</value>
+ </entry>
+ <entry>
+ <key>Replacement Strategy</key>
+ </entry>
+ <entry>
+ <key>Evaluation Mode</key>
+ <value>Entire text</value>
+ </entry>
+ </properties>
+ <runDurationMillis>0</runDurationMillis>
+ <schedulingPeriod>0 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <name>ReplaceText</name>
+ <relationships>
+ <autoTerminate>true</autoTerminate>
+ <name>failure</name>
+ </relationships>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>success</name>
+ </relationships>
+ <style/>
+ <type>org.apache.nifi.processors.standard.ReplaceText</type>
+ </processors>
+ <processors>
+ <id>ffb6d4e9-9d6c-4fbe-ab8a-52bad90ce2e5</id>
+ <parentGroupId>3d665027-7897-4322-96a1-cabef6b2bcf7</parentGroupId>
+ <position>
+ <x>558.2500778198241</x>
+ <y>31.0</y>
+ </position>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+ <concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>File Size</key>
+ <value>1 b</value>
+ </entry>
+ <entry>
+ <key>Batch Size</key>
+ <value>1</value>
+ </entry>
+ <entry>
+ <key>Data Format</key>
+ <value>Binary</value>
+ </entry>
+ <entry>
+ <key>Unique FlowFiles</key>
+ <value>false</value>
+ </entry>
+ </properties>
+ <runDurationMillis>0</runDurationMillis>
+ <schedulingPeriod>1 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <name>GenerateFlowFile</name>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>success</name>
+ </relationships>
+ <style/>
+ <type>org.apache.nifi.processors.standard.GenerateFlowFile</type>
+ </processors>
+ <processors>
+ <id>1d00089c-78cd-467f-9aa6-31e3bdf90cb0</id>
+ <parentGroupId>3d665027-7897-4322-96a1-cabef6b2bcf7</parentGroupId>
+ <position>
+ <x>585.2500320434569</x>
+ <y>866.0879933547974</y>
+ </position>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+ <concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>Delete Attributes Expression</key>
+ </entry>
+ </properties>
+ <runDurationMillis>0</runDurationMillis>
+ <schedulingPeriod>0 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <name>UpdateAttribute</name>
+ <relationships>
+ <autoTerminate>true</autoTerminate>
+ <name>success</name>
+ </relationships>
+ <style/>
+ <type>org.apache.nifi.processors.attributes.UpdateAttribute</type>
+ </processors>
+ <processors>
+ <id>8db2ebc8-12c8-4396-89b6-479d907fbc6b</id>
+ <parentGroupId>3d665027-7897-4322-96a1-cabef6b2bcf7</parentGroupId>
+ <position>
+ <x>590.3500228881835</x>
+ <y>658.9239851760865</y>
+ </position>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+ <concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>Regular Expression</key>
+ <value>(?s:^.*$)</value>
+ </entry>
+ <entry>
+ <key>Replacement Value</key>
+ <value>{ "field1" : "${csv.1}", "field2" : "${csv.2}",
+ "field3" : "${csv.3}", "field4" : "${csv.4}" }
+ </value>
+ </entry>
+ <entry>
+ <key>Character Set</key>
+ <value>UTF-8</value>
+ </entry>
+ <entry>
+ <key>Maximum Buffer Size</key>
+ <value>1 MB</value>
+ </entry>
+ <entry>
+ <key>Replacement Strategy</key>
+ </entry>
+ <entry>
+ <key>Evaluation Mode</key>
+ <value>Entire text</value>
+ </entry>
+ </properties>
+ <runDurationMillis>0</runDurationMillis>
+ <schedulingPeriod>0 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <name>ReplaceText2</name>
+ <relationships>
+ <autoTerminate>true</autoTerminate>
+ <name>failure</name>
+ </relationships>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>success</name>
+ </relationships>
+ <style/>
+ <type>org.apache.nifi.processors.standard.ReplaceText</type>
+ </processors>
+ <processors>
+ <id>5f0ec33c-0a07-4305-a3a9-9a3ba0548ac6</id>
+ <parentGroupId>3d665027-7897-4322-96a1-cabef6b2bcf7</parentGroupId>
+ <position>
+ <x>580.7500320434569</x>
+ <y>450.15196063995364</y>
+ </position>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+ <concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>Character Set</key>
+ <value>UTF-8</value>
+ </entry>
+ <entry>
+ <key>Maximum Buffer Size</key>
+ <value>1 MB</value>
+ </entry>
+ <entry>
+ <key>Maximum Capture Group Length</key>
+ <value>1024</value>
+ </entry>
+ <entry>
+ <key>Enable Canonical Equivalence</key>
+ <value>false</value>
+ </entry>
+ <entry>
+ <key>Enable Case-insensitive Matching</key>
+ <value>false</value>
+ </entry>
+ <entry>
+ <key>Permit Whitespace and Comments in Pattern</key>
+ <value>false</value>
+ </entry>
+ <entry>
+ <key>Enable DOTALL Mode</key>
+ <value>false</value>
+ </entry>
+ <entry>
+ <key>Enable Literal Parsing of the Pattern</key>
+ <value>false</value>
+ </entry>
+ <entry>
+ <key>Enable Multiline Mode</key>
+ <value>false</value>
+ </entry>
+ <entry>
+ <key>Enable Unicode-aware Case Folding</key>
+ <value>false</value>
+ </entry>
+ <entry>
+ <key>Enable Unicode Predefined Character Classes</key>
+ <value>false</value>
+ </entry>
+ <entry>
+ <key>Enable Unix Lines Mode</key>
+ <value>false</value>
+ </entry>
+ <entry>
+ <key>Include Capture Group 0</key>
+ <value>false</value>
+ </entry>
+ <entry>
+ <key>csv</key>
+ <value>(.+),(.+),(.+),(.+)</value>
+ </entry>
+ </properties>
+ <runDurationMillis>0</runDurationMillis>
+ <schedulingPeriod>0 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <name>ExtractText</name>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>matched</name>
+ </relationships>
+ <relationships>
+ <autoTerminate>true</autoTerminate>
+ <name>unmatched</name>
+ </relationships>
+ <style/>
+ <type>org.apache.nifi.processors.standard.ExtractText</type>
+ </processors>
+ </snippet>
+ <timestamp>07/04/2016 20:20:45 UTC</timestamp>
+</template>
diff --git a/minifi-integration-tests/src/test/resources/standalone/v1/CsvToJson/xml/expected.json b/minifi-integration-tests/src/test/resources/standalone/v1/CsvToJson/xml/expected.json
new file mode 100644
index 0000000..ebc43fc
--- /dev/null
+++ b/minifi-integration-tests/src/test/resources/standalone/v1/CsvToJson/xml/expected.json
@@ -0,0 +1,4 @@
+{
+ "pattern": "o.a.n.c.r.StandardProcessSession StandardProcessSession\\[id=.*\\] for UpdateAttribute\\[id=1d00089c-78cd-467f-9aa6-31e3bdf90cb0\\], committed the following events: Transferred FlowFiles \\[.*\\] to 'success'",
+ "occurrences": 2
+}
diff --git a/minifi-integration-tests/src/test/resources/standalone/v1/CsvToJson/yml/CsvToJson.yml b/minifi-integration-tests/src/test/resources/standalone/v1/CsvToJson/yml/CsvToJson.yml
new file mode 100644
index 0000000..1237ac8
--- /dev/null
+++ b/minifi-integration-tests/src/test/resources/standalone/v1/CsvToJson/yml/CsvToJson.yml
@@ -0,0 +1,178 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the \"License\"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an \"AS IS\" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+Flow Controller:
+ name: CsvToJsonWorking
+ comment: ''
+Core Properties:
+ flow controller graceful shutdown period: 10 sec
+ flow service write delay interval: 500 ms
+ administrative yield duration: 30 sec
+ bored yield duration: 10 millis
+ max concurrent threads: 1
+FlowFile Repository:
+ partitions: 256
+ checkpoint interval: 2 mins
+ always sync: false
+ Swap:
+ threshold: 20000
+ in period: 5 sec
+ in threads: 1
+ out period: 5 sec
+ out threads: 4
+Content Repository:
+ content claim max appendable size: 10 MB
+ content claim max flow files: 100
+ always sync: false
+Provenance Repository:
+ provenance rollover time: 1 min
+Component Status Repository:
+ buffer size: 1440
+ snapshot frequency: 1 min
+Security Properties:
+ keystore: ''
+ keystore type: ''
+ keystore password: ''
+ key password: ''
+ truststore: ''
+ truststore type: ''
+ truststore password: ''
+ ssl protocol: ''
+ Sensitive Props:
+ key:
+ algorithm: PBEWITHMD5AND256BITAES-CBC-OPENSSL
+ provider: BC
+Processors:
+- name: ExtractText
+ class: org.apache.nifi.processors.standard.ExtractText
+ max concurrent tasks: 1
+ scheduling strategy: TIMER_DRIVEN
+ scheduling period: 0 sec
+ penalization period: 30 sec
+ yield period: 1 sec
+ run duration nanos: 0
+ auto-terminated relationships list:
+ - unmatched
+ Properties:
+ Character Set: UTF-8
+ Enable Canonical Equivalence: 'false'
+ Enable Case-insensitive Matching: 'false'
+ Enable DOTALL Mode: 'false'
+ Enable Literal Parsing of the Pattern: 'false'
+ Enable Multiline Mode: 'false'
+ Enable Unicode Predefined Character Classes: 'false'
+ Enable Unicode-aware Case Folding: 'false'
+ Enable Unix Lines Mode: 'false'
+ Include Capture Group 0: 'false'
+ Maximum Buffer Size: 1 MB
+ Maximum Capture Group Length: '1024'
+ Permit Whitespace and Comments in Pattern: 'false'
+ csv: (.+),(.+),(.+),(.+)
+- name: GenerateFlowFile
+ class: org.apache.nifi.processors.standard.GenerateFlowFile
+ max concurrent tasks: 1
+ scheduling strategy: TIMER_DRIVEN
+ scheduling period: 1 sec
+ penalization period: 30 sec
+ yield period: 1 sec
+ run duration nanos: 0
+ auto-terminated relationships list: []
+ Properties:
+ Batch Size: '1'
+ Data Format: Binary
+ File Size: 1 b
+ Unique FlowFiles: 'false'
+- name: ReplaceText
+ class: org.apache.nifi.processors.standard.ReplaceText
+ max concurrent tasks: 1
+ scheduling strategy: TIMER_DRIVEN
+ scheduling period: 0 sec
+ penalization period: 30 sec
+ yield period: 1 sec
+ run duration nanos: 0
+ auto-terminated relationships list:
+ - failure
+ Properties:
+ Character Set: UTF-8
+ Evaluation Mode: Entire text
+ Maximum Buffer Size: 1 MB
+ Regular Expression: (?s:^.*$)
+ Replacement Strategy:
+ Replacement Value: a,b,c,d
+- name: ReplaceText2
+ class: org.apache.nifi.processors.standard.ReplaceText
+ max concurrent tasks: 1
+ scheduling strategy: TIMER_DRIVEN
+ scheduling period: 0 sec
+ penalization period: 30 sec
+ yield period: 1 sec
+ run duration nanos: 0
+ auto-terminated relationships list:
+ - failure
+ Properties:
+ Character Set: UTF-8
+ Evaluation Mode: Entire text
+ Maximum Buffer Size: 1 MB
+ Regular Expression: (?s:^.*$)
+ Replacement Strategy:
+ Replacement Value: "{ \"field1\" : \"${csv.1}\", \"field2\" : \"${csv.2}\",\n\
+ \ \"field3\" : \"${csv.3}\", \"field4\" : \"${csv.4}\"\
+ \ }\n "
+- name: UpdateAttribute
+ class: org.apache.nifi.processors.attributes.UpdateAttribute
+ max concurrent tasks: 1
+ scheduling strategy: TIMER_DRIVEN
+ scheduling period: 0 sec
+ penalization period: 30 sec
+ yield period: 1 sec
+ run duration nanos: 0
+ auto-terminated relationships list:
+ - success
+ Properties:
+ Delete Attributes Expression:
+Connections:
+- name: ExtractText/matched/ReplaceText2
+ source name: ExtractText
+ source relationship name: matched
+ destination name: ReplaceText2
+ max work queue size: 0
+ max work queue data size: 0 MB
+ flowfile expiration: 0 sec
+ queue prioritizer class: org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer
+- name: GenerateFlowFile/success/ReplaceText
+ source name: GenerateFlowFile
+ source relationship name: success
+ destination name: ReplaceText
+ max work queue size: 0
+ max work queue data size: 0 MB
+ flowfile expiration: 0 sec
+ queue prioritizer class: org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer
+- name: ReplaceText/success/ExtractText
+ source name: ReplaceText
+ source relationship name: success
+ destination name: ExtractText
+ max work queue size: 0
+ max work queue data size: 0 MB
+ flowfile expiration: 0 sec
+ queue prioritizer class: org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer
+- name: ReplaceText2/success/UpdateAttribute
+ source name: ReplaceText2
+ source relationship name: success
+ destination name: UpdateAttribute
+ max work queue size: 0
+ max work queue data size: 0 MB
+ flowfile expiration: 0 sec
+ queue prioritizer class: org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer
+Remote Processing Groups: []
diff --git a/minifi-integration-tests/src/test/resources/standalone/v1/CsvToJson/yml/expected.json b/minifi-integration-tests/src/test/resources/standalone/v1/CsvToJson/yml/expected.json
new file mode 100644
index 0000000..1f89457
--- /dev/null
+++ b/minifi-integration-tests/src/test/resources/standalone/v1/CsvToJson/yml/expected.json
@@ -0,0 +1,4 @@
+{
+ "pattern": "o.a.n.c.r.StandardProcessSession StandardProcessSession\\[id=.*\\] for UpdateAttribute\\[id=2aac227f-e8e9-370f-87c8-4f970e0b260e\\], committed the following events: Transferred FlowFiles \\[.*\\] to 'success'",
+ "occurrences": 2
+}
diff --git a/minifi-integration-tests/src/test/resources/standalone/v1/DecompressionCircularFlow/xml/DecompressionCircularFlow.xml b/minifi-integration-tests/src/test/resources/standalone/v1/DecompressionCircularFlow/xml/DecompressionCircularFlow.xml
new file mode 100644
index 0000000..3a81433
--- /dev/null
+++ b/minifi-integration-tests/src/test/resources/standalone/v1/DecompressionCircularFlow/xml/DecompressionCircularFlow.xml
@@ -0,0 +1,757 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to You under the Apache License, Version 2.0
+ ~ (the "License"); you may not use this file except in compliance with
+ ~ the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+<template encoding-version="1.0">
+ <description></description>
+ <groupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</groupId>
+ <name>DecompressionCircularFlow2</name>
+ <snippet>
+ <connections>
+ <id>645ec08f-3d6d-4255-b4d9-0f6d61708974</id>
+ <parentGroupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</parentGroupId>
+ <backPressureDataSizeThreshold>0 MB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>0</backPressureObjectThreshold>
+ <destination>
+ <groupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</groupId>
+ <id>9d33bbc9-2f51-43c8-aa8a-94dcc367b371</id>
+ <type>PROCESSOR</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <name></name>
+ <prioritizers>org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer</prioritizers>
+ <selectedRelationships>success</selectedRelationships>
+ <source>
+ <groupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</groupId>
+ <id>defa6d98-3e98-41dd-82ac-1bdfd39eacfc</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <connections>
+ <id>bb250fb4-0b15-418f-83f9-83a43bd3de9c</id>
+ <parentGroupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</parentGroupId>
+ <backPressureDataSizeThreshold>0 MB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>0</backPressureObjectThreshold>
+ <bends>
+ <x>2664.3797325791907</x>
+ <y>604.6419422353362</y>
+ </bends>
+ <destination>
+ <groupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</groupId>
+ <id>212097d4-2ea8-497b-b574-b1354fae40f2</id>
+ <type>PROCESSOR</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <name></name>
+ <prioritizers>org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer</prioritizers>
+ <selectedRelationships>success</selectedRelationships>
+ <source>
+ <groupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</groupId>
+ <id>0bdda776-0c7e-4723-b3ce-969b7d10a922</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <connections>
+ <id>bdfdb568-682d-4d3b-b87b-99199c15505c</id>
+ <parentGroupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</parentGroupId>
+ <backPressureDataSizeThreshold>0 MB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>0</backPressureObjectThreshold>
+ <bends>
+ <x>1701.5</x>
+ <y>538.5800204467773</y>
+ </bends>
+ <bends>
+ <x>1701.5</x>
+ <y>605.5800204467773</y>
+ </bends>
+ <destination>
+ <groupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</groupId>
+ <id>defa6d98-3e98-41dd-82ac-1bdfd39eacfc</id>
+ <type>PROCESSOR</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <name></name>
+ <prioritizers>org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer</prioritizers>
+ <selectedRelationships>failure</selectedRelationships>
+ <source>
+ <groupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</groupId>
+ <id>defa6d98-3e98-41dd-82ac-1bdfd39eacfc</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <connections>
+ <id>f6ff74cf-a30b-4916-86b3-e269266666ff</id>
+ <parentGroupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</parentGroupId>
+ <backPressureDataSizeThreshold>0 MB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>0</backPressureObjectThreshold>
+ <bends>
+ <x>1692.5</x>
+ <y>326.86002044677736</y>
+ </bends>
+ <bends>
+ <x>1692.5</x>
+ <y>393.86002044677736</y>
+ </bends>
+ <destination>
+ <groupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</groupId>
+ <id>e227167f-62af-49cc-8fb5-a5b5e5251066</id>
+ <type>PROCESSOR</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <name></name>
+ <prioritizers>org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer</prioritizers>
+ <selectedRelationships>failure</selectedRelationships>
+ <source>
+ <groupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</groupId>
+ <id>e227167f-62af-49cc-8fb5-a5b5e5251066</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <connections>
+ <id>ded9891b-4433-4f56-9fc0-1a240146835f</id>
+ <parentGroupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</parentGroupId>
+ <backPressureDataSizeThreshold>0 MB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>0</backPressureObjectThreshold>
+ <destination>
+ <groupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</groupId>
+ <id>1377e3cc-db4e-4832-8a90-c8dc9e08f603</id>
+ <type>PROCESSOR</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <name></name>
+ <prioritizers>org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer</prioritizers>
+ <selectedRelationships>success</selectedRelationships>
+ <source>
+ <groupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</groupId>
+ <id>212097d4-2ea8-497b-b574-b1354fae40f2</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <connections>
+ <id>5cdc2e79-ec8c-4f7d-a3ab-d284c80e3afe</id>
+ <parentGroupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</parentGroupId>
+ <backPressureDataSizeThreshold>0 MB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>0</backPressureObjectThreshold>
+ <destination>
+ <groupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</groupId>
+ <id>e227167f-62af-49cc-8fb5-a5b5e5251066</id>
+ <type>PROCESSOR</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <name></name>
+ <prioritizers>org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer</prioritizers>
+ <selectedRelationships>success</selectedRelationships>
+ <source>
+ <groupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</groupId>
+ <id>9e28dd28-8116-4199-aeab-bc7a1002aec5</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <connections>
+ <id>42bd2967-d74a-4e22-9b16-9e0a51024658</id>
+ <parentGroupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</parentGroupId>
+ <backPressureDataSizeThreshold>0 MB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>0</backPressureObjectThreshold>
+ <bends>
+ <x>1701.5</x>
+ <y>767.7200204467774</y>
+ </bends>
+ <bends>
+ <x>1701.5</x>
+ <y>834.7200204467774</y>
+ </bends>
+ <destination>
+ <groupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</groupId>
+ <id>9d33bbc9-2f51-43c8-aa8a-94dcc367b371</id>
+ <type>PROCESSOR</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <name></name>
+ <prioritizers>org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer</prioritizers>
+ <selectedRelationships>failure</selectedRelationships>
+ <source>
+ <groupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</groupId>
+ <id>9d33bbc9-2f51-43c8-aa8a-94dcc367b371</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <connections>
+ <id>299f7d1f-e216-43a3-ad0b-7a6d6680dacc</id>
+ <parentGroupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</parentGroupId>
+ <backPressureDataSizeThreshold>0 MB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>0</backPressureObjectThreshold>
+ <destination>
+ <groupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</groupId>
+ <id>9e28dd28-8116-4199-aeab-bc7a1002aec5</id>
+ <type>PROCESSOR</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <name></name>
+ <prioritizers>org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer</prioritizers>
+ <selectedRelationships>success</selectedRelationships>
+ <source>
+ <groupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</groupId>
+ <id>ad8ff6a3-ba60-4b9b-af9e-0773c8afc1c9</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <connections>
+ <id>6eeca4aa-04c7-4774-aee5-bb6340c3a7b6</id>
+ <parentGroupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</parentGroupId>
+ <backPressureDataSizeThreshold>0 MB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>0</backPressureObjectThreshold>
+ <destination>
+ <groupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</groupId>
+ <id>0bdda776-0c7e-4723-b3ce-969b7d10a922</id>
+ <type>PROCESSOR</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <name></name>
+ <prioritizers>org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer</prioritizers>
+ <selectedRelationships>success</selectedRelationships>
+ <source>
+ <groupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</groupId>
+ <id>9d33bbc9-2f51-43c8-aa8a-94dcc367b371</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <connections>
+ <id>4f98618d-2443-465d-9856-bbf7c1ee49e1</id>
+ <parentGroupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</parentGroupId>
+ <backPressureDataSizeThreshold>0 MB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>0</backPressureObjectThreshold>
+ <bends>
+ <x>1695.5</x>
+ <y>120.5</y>
+ </bends>
+ <bends>
+ <x>1695.5</x>
+ <y>187.5</y>
+ </bends>
+ <destination>
+ <groupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</groupId>
+ <id>9e28dd28-8116-4199-aeab-bc7a1002aec5</id>
+ <type>PROCESSOR</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <name></name>
+ <prioritizers>org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer</prioritizers>
+ <selectedRelationships>failure</selectedRelationships>
+ <source>
+ <groupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</groupId>
+ <id>9e28dd28-8116-4199-aeab-bc7a1002aec5</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <connections>
+ <id>37f15fde-d463-41b1-9fe7-28c72cd6c871</id>
+ <parentGroupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</parentGroupId>
+ <backPressureDataSizeThreshold>0 MB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>0</backPressureObjectThreshold>
+ <bends>
+ <x>2647.0997032823157</x>
+ <y>701.1219422353362</y>
+ </bends>
+ <bends>
+ <x>2652.689913243253</x>
+ <y>883.8309913076018</y>
+ </bends>
+ <destination>
+ <groupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</groupId>
+ <id>0bdda776-0c7e-4723-b3ce-969b7d10a922</id>
+ <type>PROCESSOR</type>
+ </destination>
+ <flowFileExpiration>5 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <name></name>
+ <prioritizers>org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer</prioritizers>
+ <selectedRelationships>failure</selectedRelationships>
+ <source>
+ <groupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</groupId>
+ <id>0bdda776-0c7e-4723-b3ce-969b7d10a922</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <connections>
+ <id>ac822b4f-7d0d-462a-8ac0-03e9032ebefb</id>
+ <parentGroupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</parentGroupId>
+ <backPressureDataSizeThreshold>0 MB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>0</backPressureObjectThreshold>
+ <destination>
+ <groupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</groupId>
+ <id>defa6d98-3e98-41dd-82ac-1bdfd39eacfc</id>
+ <type>PROCESSOR</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <name></name>
+ <prioritizers>org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer</prioritizers>
+ <selectedRelationships>success</selectedRelationships>
+ <source>
+ <groupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</groupId>
+ <id>e227167f-62af-49cc-8fb5-a5b5e5251066</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <connections>
+ <id>a72e8727-9a5c-44dd-a4f5-cf94b3422c1a</id>
+ <parentGroupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</parentGroupId>
+ <backPressureDataSizeThreshold>0 MB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>0</backPressureObjectThreshold>
+ <destination>
+ <groupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</groupId>
+ <id>7209cf79-23ba-421c-b1c3-925ed86c302d</id>
+ <type>PROCESSOR</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <name></name>
+ <prioritizers>org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer</prioritizers>
+ <selectedRelationships>unmatched</selectedRelationships>
+ <source>
+ <groupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</groupId>
+ <id>1377e3cc-db4e-4832-8a90-c8dc9e08f603</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <connections>
+ <id>5de215d5-9f7e-414b-98aa-2edaa0514d99</id>
+ <parentGroupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</parentGroupId>
+ <backPressureDataSizeThreshold>0 MB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>0</backPressureObjectThreshold>
+ <bends>
+ <x>2258.299776524503</x>
+ <y>1088.9714637197112</y>
+ </bends>
+ <destination>
+ <groupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</groupId>
+ <id>0bdda776-0c7e-4723-b3ce-969b7d10a922</id>
+ <type>PROCESSOR</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <name></name>
+ <prioritizers>org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer</prioritizers>
+ <selectedRelationships>gzip</selectedRelationships>
+ <source>
+ <groupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</groupId>
+ <id>1377e3cc-db4e-4832-8a90-c8dc9e08f603</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <processors>
+ <id>1377e3cc-db4e-4832-8a90-c8dc9e08f603</id>
+ <parentGroupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</parentGroupId>
+ <position>
+ <x>2864.4202270507812</x>
+ <y>1020.8192269897463</y>
+ </position>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+ <concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>Routing Strategy</key>
+ </entry>
+ <entry>
+ <key>gzip</key>
+ <value>${mime.type:toUpper():contains("GZIP")}</value>
+ </entry>
+ </properties>
+ <runDurationMillis>0</runDurationMillis>
+ <schedulingPeriod>0 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <name>Compressed?</name>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>gzip</name>
+ </relationships>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>unmatched</name>
+ </relationships>
+ <style/>
+ <type>org.apache.nifi.processors.standard.RouteOnAttribute</type>
+ </processors>
+ <processors>
+ <id>212097d4-2ea8-497b-b574-b1354fae40f2</id>
+ <parentGroupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</parentGroupId>
+ <position>
+ <x>2854.459897460938</x>
+ <y>731.99545032959</y>
+ </position>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+ <concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties/>
+ <runDurationMillis>0</runDurationMillis>
+ <schedulingPeriod>0 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <name>IdentifyMimeType</name>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>success</name>
+ </relationships>
+ <style/>
+ <type>org.apache.nifi.processors.standard.IdentifyMimeType</type>
+ </processors>
+ <processors>
+ <id>9e28dd28-8116-4199-aeab-bc7a1002aec5</id>
+ <parentGroupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</parentGroupId>
+ <position>
+ <x>1082.0</x>
+ <y>87.0</y>
+ </position>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+ <concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>Mode</key>
+ </entry>
+ <entry>
+ <key>Compression Format</key>
+ <value>gzip</value>
+ </entry>
+ <entry>
+ <key>Compression Level</key>
+ </entry>
+ <entry>
+ <key>Update Filename</key>
+ </entry>
+ </properties>
+ <runDurationMillis>0</runDurationMillis>
+ <schedulingPeriod>0 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <name>GZIP CompressContent</name>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>failure</name>
+ </relationships>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>success</name>
+ </relationships>
+ <style/>
+ <type>org.apache.nifi.processors.standard.CompressContent</type>
+ </processors>
+ <processors>
+ <id>defa6d98-3e98-41dd-82ac-1bdfd39eacfc</id>
+ <parentGroupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</parentGroupId>
+ <position>
+ <x>1088.0</x>
+ <y>505.0800204467774</y>
+ </position>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+ <concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>Mode</key>
+ </entry>
+ <entry>
+ <key>Compression Format</key>
+ <value>gzip</value>
+ </entry>
+ <entry>
+ <key>Compression Level</key>
+ </entry>
+ <entry>
+ <key>Update Filename</key>
+ </entry>
+ </properties>
+ <runDurationMillis>0</runDurationMillis>
+ <schedulingPeriod>0 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <name>GZIP CompressContent3</name>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>failure</name>
+ </relationships>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>success</name>
+ </relationships>
+ <style/>
+ <type>org.apache.nifi.processors.standard.CompressContent</type>
+ </processors>
+ <processors>
+ <id>0bdda776-0c7e-4723-b3ce-969b7d10a922</id>
+ <parentGroupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</parentGroupId>
+ <position>
+ <x>2025.5</x>
+ <y>732.8800204467774</y>
+ </position>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+ <concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>Mode</key>
+ <value>decompress</value>
+ </entry>
+ <entry>
+ <key>Compression Format</key>
+ <value>gzip</value>
+ </entry>
+ <entry>
+ <key>Compression Level</key>
+ </entry>
+ <entry>
+ <key>Update Filename</key>
+ </entry>
+ </properties>
+ <runDurationMillis>0</runDurationMillis>
+ <schedulingPeriod>0 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <name>Uncompress GZIP</name>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>failure</name>
+ </relationships>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>success</name>
+ </relationships>
+ <style/>
+ <type>org.apache.nifi.processors.standard.CompressContent</type>
+ </processors>
+ <processors>
+ <id>7209cf79-23ba-421c-b1c3-925ed86c302d</id>
+ <parentGroupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</parentGroupId>
+ <position>
+ <x>2858.3004760742188</x>
+ <y>1334.7543026733401</y>
+ </position>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+ <concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>Log Level</key>
+ </entry>
+ <entry>
+ <key>Log Payload</key>
+ </entry>
+ <entry>
+ <key>Attributes to Log</key>
+ </entry>
+ <entry>
+ <key>Attributes to Ignore</key>
+ </entry>
+ <entry>
+ <key>Log prefix</key>
+ </entry>
+ </properties>
+ <runDurationMillis>0</runDurationMillis>
+ <schedulingPeriod>0 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <name>LogAttribute</name>
+ <relationships>
+ <autoTerminate>true</autoTerminate>
+ <name>success</name>
+ </relationships>
+ <style/>
+ <type>org.apache.nifi.processors.standard.LogAttribute</type>
+ </processors>
+ <processors>
+ <id>e227167f-62af-49cc-8fb5-a5b5e5251066</id>
+ <parentGroupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</parentGroupId>
+ <position>
+ <x>1079.0</x>
+ <y>293.36002044677736</y>
+ </position>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+ <concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>Mode</key>
+ </entry>
+ <entry>
+ <key>Compression Format</key>
+ <value>gzip</value>
+ </entry>
+ <entry>
+ <key>Compression Level</key>
+ </entry>
+ <entry>
+ <key>Update Filename</key>
+ </entry>
+ </properties>
+ <runDurationMillis>0</runDurationMillis>
+ <schedulingPeriod>0 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <name>GZIP CompressContent2</name>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>failure</name>
+ </relationships>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>success</name>
+ </relationships>
+ <style/>
+ <type>org.apache.nifi.processors.standard.CompressContent</type>
+ </processors>
+ <processors>
+ <id>ad8ff6a3-ba60-4b9b-af9e-0773c8afc1c9</id>
+ <parentGroupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</parentGroupId>
+ <position>
+ <x>416.0</x>
+ <y>92.36002044677734</y>
+ </position>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+ <concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>File Size</key>
+ <value>10kb</value>
+ </entry>
+ <entry>
+ <key>Batch Size</key>
+ </entry>
+ <entry>
+ <key>Data Format</key>
+ </entry>
+ <entry>
+ <key>Unique FlowFiles</key>
+ </entry>
+ </properties>
+ <runDurationMillis>0</runDurationMillis>
+ <schedulingPeriod>1 min</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <name>GenerateFlowFile</name>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>success</name>
+ </relationships>
+ <style/>
+ <type>org.apache.nifi.processors.standard.GenerateFlowFile</type>
+ </processors>
+ <processors>
+ <id>9d33bbc9-2f51-43c8-aa8a-94dcc367b371</id>
+ <parentGroupId>ff2213e2-b27e-458b-ab3b-1c7a4a50d2e3</parentGroupId>
+ <position>
+ <x>1088.0</x>
+ <y>734.2200204467774</y>
+ </position>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+ <concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>Mode</key>
+ </entry>
+ <entry>
+ <key>Compression Format</key>
+ <value>gzip</value>
+ </entry>
+ <entry>
+ <key>Compression Level</key>
+ </entry>
+ <entry>
+ <key>Update Filename</key>
+ </entry>
+ </properties>
+ <runDurationMillis>0</runDurationMillis>
+ <schedulingPeriod>0 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <name>GZIP CompressContent4</name>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>failure</name>
+ </relationships>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>success</name>
+ </relationships>
+ <style/>
+ <type>org.apache.nifi.processors.standard.CompressContent</type>
+ </processors>
+ </snippet>
+ <timestamp>07/04/2016 20:44:19 UTC</timestamp>
+</template>
diff --git a/minifi-integration-tests/src/test/resources/standalone/v1/DecompressionCircularFlow/xml/expected.json b/minifi-integration-tests/src/test/resources/standalone/v1/DecompressionCircularFlow/xml/expected.json
new file mode 100644
index 0000000..7812559
--- /dev/null
+++ b/minifi-integration-tests/src/test/resources/standalone/v1/DecompressionCircularFlow/xml/expected.json
@@ -0,0 +1,4 @@
+{
+ "pattern": "o.a.n.c.r.StandardProcessSession StandardProcessSession\\[id=.*\\] for LogAttribute\\[id=7209cf79-23ba-421c-b1c3-925ed86c302d\\], committed the following events: Transferred FlowFiles \\[.*\\] to 'success'",
+ "occurrences": 1
+}
diff --git a/minifi-integration-tests/src/test/resources/standalone/v1/DecompressionCircularFlow/yml/DecompressionCircularFlow.yml b/minifi-integration-tests/src/test/resources/standalone/v1/DecompressionCircularFlow/yml/DecompressionCircularFlow.yml
new file mode 100644
index 0000000..743fdf6
--- /dev/null
+++ b/minifi-integration-tests/src/test/resources/standalone/v1/DecompressionCircularFlow/yml/DecompressionCircularFlow.yml
@@ -0,0 +1,293 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the \"License\"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an \"AS IS\" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+Flow Controller:
+ name: DecompressionCircularFlow2
+ comment: ''
+Core Properties:
+ flow controller graceful shutdown period: 10 sec
+ flow service write delay interval: 500 ms
+ administrative yield duration: 30 sec
+ bored yield duration: 10 millis
+ max concurrent threads: 1
+FlowFile Repository:
+ partitions: 256
+ checkpoint interval: 2 mins
+ always sync: false
+ Swap:
+ threshold: 20000
+ in period: 5 sec
+ in threads: 1
+ out period: 5 sec
+ out threads: 4
+Content Repository:
+ content claim max appendable size: 10 MB
+ content claim max flow files: 100
+ always sync: false
+Provenance Repository:
+ provenance rollover time: 1 min
+Component Status Repository:
+ buffer size: 1440
+ snapshot frequency: 1 min
+Security Properties:
+ keystore: ''
+ keystore type: ''
+ keystore password: ''
+ key password: ''
+ truststore: ''
+ truststore type: ''
+ truststore password: ''
+ ssl protocol: ''
+ Sensitive Props:
+ key:
+ algorithm: PBEWITHMD5AND256BITAES-CBC-OPENSSL
+ provider: BC
+Processors:
+- name: Compressed?
+ class: org.apache.nifi.processors.standard.RouteOnAttribute
+ max concurrent tasks: 1
+ scheduling strategy: TIMER_DRIVEN
+ scheduling period: 0 sec
+ penalization period: 30 sec
+ yield period: 1 sec
+ run duration nanos: 0
+ auto-terminated relationships list: []
+ Properties:
+ Routing Strategy:
+ gzip: ${mime.type:toUpper():contains("GZIP")}
+- name: GZIP CompressContent
+ class: org.apache.nifi.processors.standard.CompressContent
+ max concurrent tasks: 1
+ scheduling strategy: TIMER_DRIVEN
+ scheduling period: 0 sec
+ penalization period: 30 sec
+ yield period: 1 sec
+ run duration nanos: 0
+ auto-terminated relationships list: []
+ Properties:
+ Compression Format: gzip
+ Compression Level:
+ Mode:
+ Update Filename:
+- name: GZIP CompressContent2
+ class: org.apache.nifi.processors.standard.CompressContent
+ max concurrent tasks: 1
+ scheduling strategy: TIMER_DRIVEN
+ scheduling period: 0 sec
+ penalization period: 30 sec
+ yield period: 1 sec
+ run duration nanos: 0
+ auto-terminated relationships list: []
+ Properties:
+ Compression Format: gzip
+ Compression Level:
+ Mode:
+ Update Filename:
+- name: GZIP CompressContent3
+ class: org.apache.nifi.processors.standard.CompressContent
+ max concurrent tasks: 1
+ scheduling strategy: TIMER_DRIVEN
+ scheduling period: 0 sec
+ penalization period: 30 sec
+ yield period: 1 sec
+ run duration nanos: 0
+ auto-terminated relationships list: []
+ Properties:
+ Compression Format: gzip
+ Compression Level:
+ Mode:
+ Update Filename:
+- name: GZIP CompressContent4
+ class: org.apache.nifi.processors.standard.CompressContent
+ max concurrent tasks: 1
+ scheduling strategy: TIMER_DRIVEN
+ scheduling period: 0 sec
+ penalization period: 30 sec
+ yield period: 1 sec
+ run duration nanos: 0
+ auto-terminated relationships list: []
+ Properties:
+ Compression Format: gzip
+ Compression Level:
+ Mode:
+ Update Filename:
+- name: GenerateFlowFile
+ class: org.apache.nifi.processors.standard.GenerateFlowFile
+ max concurrent tasks: 1
+ scheduling strategy: TIMER_DRIVEN
+ scheduling period: 1 min
+ penalization period: 30 sec
+ yield period: 1 sec
+ run duration nanos: 0
+ auto-terminated relationships list: []
+ Properties:
+ Batch Size:
+ Data Format:
+ File Size: 10kb
+ Unique FlowFiles:
+- name: IdentifyMimeType
+ class: org.apache.nifi.processors.standard.IdentifyMimeType
+ max concurrent tasks: 1
+ scheduling strategy: TIMER_DRIVEN
+ scheduling period: 0 sec
+ penalization period: 30 sec
+ yield period: 1 sec
+ run duration nanos: 0
+ auto-terminated relationships list: []
+ Properties: {}
+- name: LogAttribute
+ class: org.apache.nifi.processors.standard.LogAttribute
+ max concurrent tasks: 1
+ scheduling strategy: TIMER_DRIVEN
+ scheduling period: 0 sec
+ penalization period: 30 sec
+ yield period: 1 sec
+ run duration nanos: 0
+ auto-terminated relationships list:
+ - success
+ Properties:
+ Attributes to Ignore:
+ Attributes to Log:
+ Log Level:
+ Log Payload:
+ Log prefix:
+- name: Uncompress GZIP
+ class: org.apache.nifi.processors.standard.CompressContent
+ max concurrent tasks: 1
+ scheduling strategy: TIMER_DRIVEN
+ scheduling period: 0 sec
+ penalization period: 30 sec
+ yield period: 1 sec
+ run duration nanos: 0
+ auto-terminated relationships list: []
+ Properties:
+ Compression Format: gzip
+ Compression Level:
+ Mode: decompress
+ Update Filename:
+Connections:
+- name: Compressed?/gzip/Uncompress GZIP
+ source name: Compressed?
+ source relationship name: gzip
+ destination name: Uncompress GZIP
+ max work queue size: 0
+ max work queue data size: 0 MB
+ flowfile expiration: 0 sec
+ queue prioritizer class: org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer
+- name: Compressed?/unmatched/LogAttribute
+ source name: Compressed?
+ source relationship name: unmatched
+ destination name: LogAttribute
+ max work queue size: 0
+ max work queue data size: 0 MB
+ flowfile expiration: 0 sec
+ queue prioritizer class: org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer
+- name: GZIP CompressContent/failure/GZIP CompressContent
+ source name: GZIP CompressContent
+ source relationship name: failure
+ destination name: GZIP CompressContent
+ max work queue size: 0
+ max work queue data size: 0 MB
+ flowfile expiration: 0 sec
+ queue prioritizer class: org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer
+- name: GZIP CompressContent/success/GZIP CompressContent2
+ source name: GZIP CompressContent
+ source relationship name: success
+ destination name: GZIP CompressContent2
+ max work queue size: 0
+ max work queue data size: 0 MB
+ flowfile expiration: 0 sec
+ queue prioritizer class: org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer
+- name: GZIP CompressContent2/failure/GZIP CompressContent2
+ source name: GZIP CompressContent2
+ source relationship name: failure
+ destination name: GZIP CompressContent2
+ max work queue size: 0
+ max work queue data size: 0 MB
+ flowfile expiration: 0 sec
+ queue prioritizer class: org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer
+- name: GZIP CompressContent2/success/GZIP CompressContent3
+ source name: GZIP CompressContent2
+ source relationship name: success
+ destination name: GZIP CompressContent3
+ max work queue size: 0
+ max work queue data size: 0 MB
+ flowfile expiration: 0 sec
+ queue prioritizer class: org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer
+- name: GZIP CompressContent3/failure/GZIP CompressContent3
+ source name: GZIP CompressContent3
+ source relationship name: failure
+ destination name: GZIP CompressContent3
+ max work queue size: 0
+ max work queue data size: 0 MB
+ flowfile expiration: 0 sec
+ queue prioritizer class: org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer
+- name: GZIP CompressContent3/success/GZIP CompressContent4
+ source name: GZIP CompressContent3
+ source relationship name: success
+ destination name: GZIP CompressContent4
+ max work queue size: 0
+ max work queue data size: 0 MB
+ flowfile expiration: 0 sec
+ queue prioritizer class: org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer
+- name: GZIP CompressContent4/failure/GZIP CompressContent4
+ source name: GZIP CompressContent4
+ source relationship name: failure
+ destination name: GZIP CompressContent4
+ max work queue size: 0
+ max work queue data size: 0 MB
+ flowfile expiration: 0 sec
+ queue prioritizer class: org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer
+- name: GZIP CompressContent4/success/Uncompress GZIP
+ source name: GZIP CompressContent4
+ source relationship name: success
+ destination name: Uncompress GZIP
+ max work queue size: 0
+ max work queue data size: 0 MB
+ flowfile expiration: 0 sec
+ queue prioritizer class: org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer
+- name: GenerateFlowFile/success/GZIP CompressContent
+ source name: GenerateFlowFile
+ source relationship name: success
+ destination name: GZIP CompressContent
+ max work queue size: 0
+ max work queue data size: 0 MB
+ flowfile expiration: 0 sec
+ queue prioritizer class: org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer
+- name: IdentifyMimeType/success/Compressed?
+ source name: IdentifyMimeType
+ source relationship name: success
+ destination name: Compressed?
+ max work queue size: 0
+ max work queue data size: 0 MB
+ flowfile expiration: 0 sec
+ queue prioritizer class: org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer
+- name: Uncompress GZIP/failure/Uncompress GZIP
+ source name: Uncompress GZIP
+ source relationship name: failure
+ destination name: Uncompress GZIP
+ max work queue size: 0
+ max work queue data size: 0 MB
+ flowfile expiration: 5 sec
+ queue prioritizer class: org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer
+- name: Uncompress GZIP/success/IdentifyMimeType
+ source name: Uncompress GZIP
+ source relationship name: success
+ destination name: IdentifyMimeType
+ max work queue size: 0
+ max work queue data size: 0 MB
+ flowfile expiration: 0 sec
+ queue prioritizer class: org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer
+Remote Processing Groups: []
diff --git a/minifi-integration-tests/src/test/resources/standalone/v1/DecompressionCircularFlow/yml/expected.json b/minifi-integration-tests/src/test/resources/standalone/v1/DecompressionCircularFlow/yml/expected.json
new file mode 100644
index 0000000..a486289
--- /dev/null
+++ b/minifi-integration-tests/src/test/resources/standalone/v1/DecompressionCircularFlow/yml/expected.json
@@ -0,0 +1,4 @@
+{
+ "pattern": "o.a.n.c.r.StandardProcessSession StandardProcessSession\\[id=.*\\] for LogAttribute\\[id=59198b81-12fc-374f-bead-7fcd1d5d4823\\], committed the following events: Transferred FlowFiles \\[.*\\] to 'success'",
+ "occurrences": 1
+}
diff --git a/minifi-integration-tests/src/test/resources/standalone/v1/MiNiFiTailLogAttribute/xml/MiNiFiTailLogAttribute.xml b/minifi-integration-tests/src/test/resources/standalone/v1/MiNiFiTailLogAttribute/xml/MiNiFiTailLogAttribute.xml
new file mode 100644
index 0000000..a2c0fd5
--- /dev/null
+++ b/minifi-integration-tests/src/test/resources/standalone/v1/MiNiFiTailLogAttribute/xml/MiNiFiTailLogAttribute.xml
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to You under the Apache License, Version 2.0
+ ~ (the "License"); you may not use this file except in compliance with
+ ~ the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<template encoding-version="1.0">
+ <description></description>
+ <groupId>d7261cce-f2bb-4ae9-9e73-199b79137a16</groupId>
+ <name>MiNiFi TailTail LogAttribute</name>
+ <snippet>
+ <connections>
+ <id>aadfc150-660d-4a35-beb0-2dbd351daca9</id>
+ <parentGroupId>d7261cce-f2bb-4ae9-9e73-199b79137a16</parentGroupId>
+ <backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>10000</backPressureObjectThreshold>
+ <destination>
+ <groupId>d7261cce-f2bb-4ae9-9e73-199b79137a16</groupId>
+ <id>5a36371c-4884-41cb-8792-073deb6c256a</id>
+ <type>PROCESSOR</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <name></name>
+ <selectedRelationships>success</selectedRelationships>
+ <source>
+ <groupId>d7261cce-f2bb-4ae9-9e73-199b79137a16</groupId>
+ <id>dd9611ff-7820-4109-b33f-db43d98613d7</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <processors>
+ <id>5a36371c-4884-41cb-8792-073deb6c256a</id>
+ <parentGroupId>d7261cce-f2bb-4ae9-9e73-199b79137a16</parentGroupId>
+ <position>
+ <x>2261.0</x>
+ <y>539.5399780273438</y>
+ </position>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+ <concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>Log Level</key>
+ </entry>
+ <entry>
+ <key>Log Payload</key>
+ </entry>
+ <entry>
+ <key>Attributes to Log</key>
+ </entry>
+ <entry>
+ <key>Attributes to Ignore</key>
+ </entry>
+ <entry>
+ <key>Log prefix</key>
+ </entry>
+ </properties>
+ <runDurationMillis>0</runDurationMillis>
+ <schedulingPeriod>0 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <name>LogAttribute</name>
+ <relationships>
+ <autoTerminate>true</autoTerminate>
+ <name>success</name>
+ </relationships>
+ <style/>
+ <type>org.apache.nifi.processors.standard.LogAttribute</type>
+ </processors>
+ <processors>
+ <id>dd9611ff-7820-4109-b33f-db43d98613d7</id>
+ <parentGroupId>d7261cce-f2bb-4ae9-9e73-199b79137a16</parentGroupId>
+ <position>
+ <x>2281.0</x>
+ <y>291.53997802734375</y>
+ </position>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+ <concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>File to Tail</key>
+ <value>./logs/minifi-app.log</value>
+ </entry>
+ <entry>
+ <key>Rolling Filename Pattern</key>
+ </entry>
+ <entry>
+ <key>State File</key>
+ </entry>
+ <entry>
+ <key>Initial Start Position</key>
+ </entry>
+ <entry>
+ <key>File Location</key>
+ </entry>
+ </properties>
+ <runDurationMillis>0</runDurationMillis>
+ <schedulingPeriod>0 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <name>TailFile</name>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>success</name>
+ </relationships>
+ <style/>
+ <type>org.apache.nifi.processors.standard.TailFile</type>
+ </processors>
+ </snippet>
+ <timestamp>07/03/2016 21:16:16 EDT</timestamp>
+</template>
\ No newline at end of file
diff --git a/minifi-integration-tests/src/test/resources/standalone/v1/MiNiFiTailLogAttribute/xml/expected.json b/minifi-integration-tests/src/test/resources/standalone/v1/MiNiFiTailLogAttribute/xml/expected.json
new file mode 100644
index 0000000..57ad2d1
--- /dev/null
+++ b/minifi-integration-tests/src/test/resources/standalone/v1/MiNiFiTailLogAttribute/xml/expected.json
@@ -0,0 +1,4 @@
+{
+ "pattern": "o.a.n.c.r.StandardProcessSession StandardProcessSession\\[id=.*\\] for LogAttribute\\[id=5a36371c-4884-41cb-8792-073deb6c256a\\], committed the following events: Transferred FlowFiles \\[.*\\] to 'success'",
+ "occurrences": 20
+}
diff --git a/minifi-integration-tests/src/test/resources/standalone/v1/MiNiFiTailLogAttribute/yml/MiNiFiTailLogAttribute.yml b/minifi-integration-tests/src/test/resources/standalone/v1/MiNiFiTailLogAttribute/yml/MiNiFiTailLogAttribute.yml
new file mode 100644
index 0000000..88f5c6d
--- /dev/null
+++ b/minifi-integration-tests/src/test/resources/standalone/v1/MiNiFiTailLogAttribute/yml/MiNiFiTailLogAttribute.yml
@@ -0,0 +1,98 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the \"License\"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an \"AS IS\" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+Flow Controller:
+ name: MiNiFi TailTail LogAttribute
+ comment: ''
+Core Properties:
+ flow controller graceful shutdown period: 10 sec
+ flow service write delay interval: 500 ms
+ administrative yield duration: 30 sec
+ bored yield duration: 10 millis
+ max concurrent threads: 1
+FlowFile Repository:
+ partitions: 256
+ checkpoint interval: 2 mins
+ always sync: false
+ Swap:
+ threshold: 20000
+ in period: 5 sec
+ in threads: 1
+ out period: 5 sec
+ out threads: 4
+Content Repository:
+ content claim max appendable size: 10 MB
+ content claim max flow files: 100
+ always sync: false
+Provenance Repository:
+ provenance rollover time: 1 min
+Component Status Repository:
+ buffer size: 1440
+ snapshot frequency: 1 min
+Security Properties:
+ keystore: ''
+ keystore type: ''
+ keystore password: ''
+ key password: ''
+ truststore: ''
+ truststore type: ''
+ truststore password: ''
+ ssl protocol: ''
+ Sensitive Props:
+ key:
+ algorithm: PBEWITHMD5AND256BITAES-CBC-OPENSSL
+ provider: BC
+Processors:
+- name: LogAttribute
+ class: org.apache.nifi.processors.standard.LogAttribute
+ max concurrent tasks: 1
+ scheduling strategy: TIMER_DRIVEN
+ scheduling period: 0 sec
+ penalization period: 30 sec
+ yield period: 1 sec
+ run duration nanos: 0
+ auto-terminated relationships list:
+ - success
+ Properties:
+ Attributes to Ignore:
+ Attributes to Log:
+ Log Level:
+ Log Payload:
+ Log prefix:
+- name: TailFile
+ class: org.apache.nifi.processors.standard.TailFile
+ max concurrent tasks: 1
+ scheduling strategy: TIMER_DRIVEN
+ scheduling period: 0 sec
+ penalization period: 30 sec
+ yield period: 1 sec
+ run duration nanos: 0
+ auto-terminated relationships list: []
+ Properties:
+ File Location:
+ File to Tail: ./logs/minifi-app.log
+ Initial Start Position:
+ Rolling Filename Pattern:
+ State File:
+Connections:
+- name: TailFile/success/LogAttribute
+ source name: TailFile
+ source relationship name: success
+ destination name: LogAttribute
+ max work queue size: 10000
+ max work queue data size: 1 GB
+ flowfile expiration: 0 sec
+ queue prioritizer class: ''
+Remote Processing Groups: []
diff --git a/minifi-integration-tests/src/test/resources/standalone/v1/MiNiFiTailLogAttribute/yml/expected.json b/minifi-integration-tests/src/test/resources/standalone/v1/MiNiFiTailLogAttribute/yml/expected.json
new file mode 100644
index 0000000..f98095b
--- /dev/null
+++ b/minifi-integration-tests/src/test/resources/standalone/v1/MiNiFiTailLogAttribute/yml/expected.json
@@ -0,0 +1,4 @@
+{
+ "pattern": "o.a.n.c.r.StandardProcessSession StandardProcessSession\\[id=.*\\] for LogAttribute\\[id=59198b81-12fc-374f-bead-7fcd1d5d4823\\], committed the following events: Transferred FlowFiles \\[.*\\] to 'success'",
+ "occurrences": 20
+}
diff --git a/minifi-integration-tests/src/test/resources/standalone/v1/ReplaceTextExpressionLanguageCSVReformatting/xml/ReplaceTextExpressionLanguageCSVReformatting.xml b/minifi-integration-tests/src/test/resources/standalone/v1/ReplaceTextExpressionLanguageCSVReformatting/xml/ReplaceTextExpressionLanguageCSVReformatting.xml
new file mode 100644
index 0000000..b84c571
--- /dev/null
+++ b/minifi-integration-tests/src/test/resources/standalone/v1/ReplaceTextExpressionLanguageCSVReformatting/xml/ReplaceTextExpressionLanguageCSVReformatting.xml
@@ -0,0 +1,270 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to You under the Apache License, Version 2.0
+ ~ (the "License"); you may not use this file except in compliance with
+ ~ the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+<template encoding-version="1.0">
+ <description></description>
+ <groupId>d140e36d-3d80-449c-8a5b-c43a7ade1ed5</groupId>
+ <name>ReplaceTextExpressionLanguageCSVReformatting</name>
+ <snippet>
+ <connections>
+ <id>1b327d4e-918f-43bc-97cf-043efed7ffbc</id>
+ <parentGroupId>d140e36d-3d80-449c-8a5b-c43a7ade1ed5</parentGroupId>
+ <backPressureDataSizeThreshold>0 MB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>0</backPressureObjectThreshold>
+ <destination>
+ <groupId>d140e36d-3d80-449c-8a5b-c43a7ade1ed5</groupId>
+ <id>a25f67cb-029c-466f-b040-9339ba64a4b5</id>
+ <type>PROCESSOR</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <name></name>
+ <prioritizers>org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer</prioritizers>
+ <selectedRelationships>success</selectedRelationships>
+ <source>
+ <groupId>d140e36d-3d80-449c-8a5b-c43a7ade1ed5</groupId>
+ <id>7ba79381-4317-4c99-bcc0-256ee7ad44e9</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <connections>
+ <id>ca71a875-0ff5-41ef-bbe0-da5de0ca1e08</id>
+ <parentGroupId>d140e36d-3d80-449c-8a5b-c43a7ade1ed5</parentGroupId>
+ <backPressureDataSizeThreshold>0 MB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>0</backPressureObjectThreshold>
+ <destination>
+ <groupId>d140e36d-3d80-449c-8a5b-c43a7ade1ed5</groupId>
+ <id>7ba79381-4317-4c99-bcc0-256ee7ad44e9</id>
+ <type>PROCESSOR</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <name></name>
+ <prioritizers>org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer</prioritizers>
+ <selectedRelationships>success</selectedRelationships>
+ <source>
+ <groupId>d140e36d-3d80-449c-8a5b-c43a7ade1ed5</groupId>
+ <id>e626f756-f018-4670-8802-c8f8e459e15d</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <connections>
+ <id>7fe8e5c6-6d9b-4b8f-af89-5d543bcc0199</id>
+ <parentGroupId>d140e36d-3d80-449c-8a5b-c43a7ade1ed5</parentGroupId>
+ <backPressureDataSizeThreshold>0 MB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>0</backPressureObjectThreshold>
+ <destination>
+ <groupId>d140e36d-3d80-449c-8a5b-c43a7ade1ed5</groupId>
+ <id>bfa4fb38-096b-455d-a10f-2a1ed044bd49</id>
+ <type>PROCESSOR</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <name></name>
+ <prioritizers>org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer</prioritizers>
+ <selectedRelationships>success</selectedRelationships>
+ <source>
+ <groupId>d140e36d-3d80-449c-8a5b-c43a7ade1ed5</groupId>
+ <id>a25f67cb-029c-466f-b040-9339ba64a4b5</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <processors>
+ <id>bfa4fb38-096b-455d-a10f-2a1ed044bd49</id>
+ <parentGroupId>d140e36d-3d80-449c-8a5b-c43a7ade1ed5</parentGroupId>
+ <position>
+ <x>1922.6538720444464</x>
+ <y>336.0769270573644</y>
+ </position>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+ <concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>Delete Attributes Expression</key>
+ </entry>
+ </properties>
+ <runDurationMillis>0</runDurationMillis>
+ <schedulingPeriod>0 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <name>No-Op Termination</name>
+ <relationships>
+ <autoTerminate>true</autoTerminate>
+ <name>success</name>
+ </relationships>
+ <style/>
+ <type>org.apache.nifi.processors.attributes.UpdateAttribute</type>
+ </processors>
+ <processors>
+ <id>a25f67cb-029c-466f-b040-9339ba64a4b5</id>
+ <parentGroupId>d140e36d-3d80-449c-8a5b-c43a7ade1ed5</parentGroupId>
+ <position>
+ <x>1916.6538720444464</x>
+ <y>645.6169270573644</y>
+ </position>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+ <concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>Regular Expression</key>
+ <value>(.*?),(.*?),(\d+.*)</value>
+ </entry>
+ <entry>
+ <key>Replacement Value</key>
+ <value>$1,$2,${ '$3':toDate('ddMMMyyyy'):format('yyyy/MM/dd') }</value>
+ </entry>
+ <entry>
+ <key>Character Set</key>
+ </entry>
+ <entry>
+ <key>Maximum Buffer Size</key>
+ </entry>
+ <entry>
+ <key>Replacement Strategy</key>
+ </entry>
+ <entry>
+ <key>Evaluation Mode</key>
+ <value>Line-by-Line</value>
+ </entry>
+ </properties>
+ <runDurationMillis>0</runDurationMillis>
+ <schedulingPeriod>0 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <name>Reformat Date Column</name>
+ <relationships>
+ <autoTerminate>true</autoTerminate>
+ <name>failure</name>
+ </relationships>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>success</name>
+ </relationships>
+ <style/>
+ <type>org.apache.nifi.processors.standard.ReplaceText</type>
+ </processors>
+ <processors>
+ <id>7ba79381-4317-4c99-bcc0-256ee7ad44e9</id>
+ <parentGroupId>d140e36d-3d80-449c-8a5b-c43a7ade1ed5</parentGroupId>
+ <position>
+ <x>1012.1538720444463</x>
+ <y>646.9569270573643</y>
+ </position>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+ <concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>Regular Expression</key>
+ </entry>
+ <entry>
+ <key>Replacement Value</key>
+ <value>2006,10-01-2004,10may2004
+ 2007,15-05-2006,10jun2005
+ 2009,8-8-2008,10aug2008
+ </value>
+ </entry>
+ <entry>
+ <key>Character Set</key>
+ </entry>
+ <entry>
+ <key>Maximum Buffer Size</key>
+ </entry>
+ <entry>
+ <key>Replacement Strategy</key>
+ </entry>
+ <entry>
+ <key>Evaluation Mode</key>
+ </entry>
+ </properties>
+ <runDurationMillis>0</runDurationMillis>
+ <schedulingPeriod>0 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <name>Set CSV Content</name>
+ <relationships>
+ <autoTerminate>true</autoTerminate>
+ <name>failure</name>
+ </relationships>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>success</name>
+ </relationships>
+ <style/>
+ <type>org.apache.nifi.processors.standard.ReplaceText</type>
+ </processors>
+ <processors>
+ <id>e626f756-f018-4670-8802-c8f8e459e15d</id>
+ <parentGroupId>d140e36d-3d80-449c-8a5b-c43a7ade1ed5</parentGroupId>
+ <position>
+ <x>1013.6538720444463</x>
+ <y>311.9569270573644</y>
+ </position>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+ <concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>File Size</key>
+ <value>0b</value>
+ </entry>
+ <entry>
+ <key>Batch Size</key>
+ </entry>
+ <entry>
+ <key>Data Format</key>
+ </entry>
+ <entry>
+ <key>Unique FlowFiles</key>
+ </entry>
+ </properties>
+ <runDurationMillis>0</runDurationMillis>
+ <schedulingPeriod>1 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <name>Generate Empty File</name>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>success</name>
+ </relationships>
+ <style/>
+ <type>org.apache.nifi.processors.standard.GenerateFlowFile</type>
+ </processors>
+ </snippet>
+ <timestamp>07/04/2016 21:04:46 UTC</timestamp>
+</template>
diff --git a/minifi-integration-tests/src/test/resources/standalone/v1/ReplaceTextExpressionLanguageCSVReformatting/xml/expected.json b/minifi-integration-tests/src/test/resources/standalone/v1/ReplaceTextExpressionLanguageCSVReformatting/xml/expected.json
new file mode 100644
index 0000000..70303df
--- /dev/null
+++ b/minifi-integration-tests/src/test/resources/standalone/v1/ReplaceTextExpressionLanguageCSVReformatting/xml/expected.json
@@ -0,0 +1,4 @@
+{
+ "pattern": "o.a.n.c.r.StandardProcessSession StandardProcessSession\\[id=.*\\] for UpdateAttribute\\[id=bfa4fb38-096b-455d-a10f-2a1ed044bd49\\], committed the following events: Transferred FlowFiles \\[.*\\] to 'success'",
+ "occurrences": 2
+}
diff --git a/minifi-integration-tests/src/test/resources/standalone/v1/ReplaceTextExpressionLanguageCSVReformatting/yml/ReplaceTextExpressionLanguageCSVReformatting.yml b/minifi-integration-tests/src/test/resources/standalone/v1/ReplaceTextExpressionLanguageCSVReformatting/yml/ReplaceTextExpressionLanguageCSVReformatting.yml
new file mode 100644
index 0000000..8c280c8
--- /dev/null
+++ b/minifi-integration-tests/src/test/resources/standalone/v1/ReplaceTextExpressionLanguageCSVReformatting/yml/ReplaceTextExpressionLanguageCSVReformatting.yml
@@ -0,0 +1,146 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the \"License\"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an \"AS IS\" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+Flow Controller:
+ name: ReplaceTextExpressionLanguageCSVReformatting
+ comment: ''
+Core Properties:
+ flow controller graceful shutdown period: 10 sec
+ flow service write delay interval: 500 ms
+ administrative yield duration: 30 sec
+ bored yield duration: 10 millis
+ max concurrent threads: 1
+FlowFile Repository:
+ partitions: 256
+ checkpoint interval: 2 mins
+ always sync: false
+ Swap:
+ threshold: 20000
+ in period: 5 sec
+ in threads: 1
+ out period: 5 sec
+ out threads: 4
+Content Repository:
+ content claim max appendable size: 10 MB
+ content claim max flow files: 100
+ always sync: false
+Provenance Repository:
+ provenance rollover time: 1 min
+Component Status Repository:
+ buffer size: 1440
+ snapshot frequency: 1 min
+Security Properties:
+ keystore: ''
+ keystore type: ''
+ keystore password: ''
+ key password: ''
+ truststore: ''
+ truststore type: ''
+ truststore password: ''
+ ssl protocol: ''
+ Sensitive Props:
+ key:
+ algorithm: PBEWITHMD5AND256BITAES-CBC-OPENSSL
+ provider: BC
+Processors:
+- name: Generate Empty File
+ class: org.apache.nifi.processors.standard.GenerateFlowFile
+ max concurrent tasks: 1
+ scheduling strategy: TIMER_DRIVEN
+ scheduling period: 1 sec
+ penalization period: 30 sec
+ yield period: 1 sec
+ run duration nanos: 0
+ auto-terminated relationships list: []
+ Properties:
+ Batch Size:
+ Data Format:
+ File Size: 0b
+ Unique FlowFiles:
+- name: No-Op Termination
+ class: org.apache.nifi.processors.attributes.UpdateAttribute
+ max concurrent tasks: 1
+ scheduling strategy: TIMER_DRIVEN
+ scheduling period: 0 sec
+ penalization period: 30 sec
+ yield period: 1 sec
+ run duration nanos: 0
+ auto-terminated relationships list:
+ - success
+ Properties:
+ Delete Attributes Expression:
+- name: Reformat Date Column
+ class: org.apache.nifi.processors.standard.ReplaceText
+ max concurrent tasks: 1
+ scheduling strategy: TIMER_DRIVEN
+ scheduling period: 0 sec
+ penalization period: 30 sec
+ yield period: 1 sec
+ run duration nanos: 0
+ auto-terminated relationships list:
+ - failure
+ Properties:
+ Character Set:
+ Evaluation Mode: Line-by-Line
+ Maximum Buffer Size:
+ Regular Expression: (.*?),(.*?),(\d+.*)
+ Replacement Strategy:
+ Replacement Value: $1,$2,${ '$3':toDate('ddMMMyyyy'):format('yyyy/MM/dd') }
+- name: Set CSV Content
+ class: org.apache.nifi.processors.standard.ReplaceText
+ max concurrent tasks: 1
+ scheduling strategy: TIMER_DRIVEN
+ scheduling period: 0 sec
+ penalization period: 30 sec
+ yield period: 1 sec
+ run duration nanos: 0
+ auto-terminated relationships list:
+ - failure
+ Properties:
+ Character Set:
+ Evaluation Mode:
+ Maximum Buffer Size:
+ Regular Expression:
+ Replacement Strategy:
+ Replacement Value: |-
+ 2006,10-01-2004,10may2004
+ 2007,15-05-2006,10jun2005
+ 2009,8-8-2008,10aug2008
+Connections:
+- name: Generate Empty File/success/Set CSV Content
+ source name: Generate Empty File
+ source relationship name: success
+ destination name: Set CSV Content
+ max work queue size: 0
+ max work queue data size: 0 MB
+ flowfile expiration: 0 sec
+ queue prioritizer class: org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer
+- name: Reformat Date Column/success/No-Op Termination
+ source name: Reformat Date Column
+ source relationship name: success
+ destination name: No-Op Termination
+ max work queue size: 0
+ max work queue data size: 0 MB
+ flowfile expiration: 0 sec
+ queue prioritizer class: org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer
+- name: Set CSV Content/success/Reformat Date Column
+ source name: Set CSV Content
+ source relationship name: success
+ destination name: Reformat Date Column
+ max work queue size: 0
+ max work queue data size: 0 MB
+ flowfile expiration: 0 sec
+ queue prioritizer class: org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer
+Remote Processing Groups: []
diff --git a/minifi-integration-tests/src/test/resources/standalone/v1/ReplaceTextExpressionLanguageCSVReformatting/yml/expected.json b/minifi-integration-tests/src/test/resources/standalone/v1/ReplaceTextExpressionLanguageCSVReformatting/yml/expected.json
new file mode 100644
index 0000000..30eb6c7
--- /dev/null
+++ b/minifi-integration-tests/src/test/resources/standalone/v1/ReplaceTextExpressionLanguageCSVReformatting/yml/expected.json
@@ -0,0 +1,4 @@
+{
+ "pattern": "o.a.n.c.r.StandardProcessSession StandardProcessSession\\[id=.*\\] for UpdateAttribute\\[id=8c6c54be-7db6-333f-8c3b-d6e7b02411ff\\], committed the following events: Transferred FlowFiles \\[.*\\] to 'success'",
+ "occurrences": 2
+}
diff --git a/minifi-integration-tests/src/test/resources/standalone/v2/MultipleRelationships/xml/MultipleRelationships.xml b/minifi-integration-tests/src/test/resources/standalone/v2/MultipleRelationships/xml/MultipleRelationships.xml
new file mode 100644
index 0000000..af2dd1c
--- /dev/null
+++ b/minifi-integration-tests/src/test/resources/standalone/v2/MultipleRelationships/xml/MultipleRelationships.xml
@@ -0,0 +1,340 @@
+<?xml version="1.0" ?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to You under the Apache License, Version 2.0
+ ~ (the "License"); you may not use this file except in compliance with
+ ~ the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<template encoding-version="1.0">
+ <description></description>
+ <groupId>7c73bce2-0157-1000-1ea7-07d5d9c57c74</groupId>
+ <name>MultipleRelationships</name>
+ <snippet>
+ <connections>
+ <id>7c798ca3-0157-1000-0000-000000000000</id>
+ <parentGroupId>7c73bce2-0157-1000-0000-000000000000</parentGroupId>
+ <backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>10000</backPressureObjectThreshold>
+ <destination>
+ <groupId>7c73bce2-0157-1000-0000-000000000000</groupId>
+ <id>7c75ab71-0157-1000-0000-000000000000</id>
+ <type>PROCESSOR</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <name></name>
+ <selectedRelationships>abc</selectedRelationships>
+ <selectedRelationships>unmatched</selectedRelationships>
+ <source>
+ <groupId>7c73bce2-0157-1000-0000-000000000000</groupId>
+ <id>7c768622-0157-1000-0000-000000000000</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <connections>
+ <id>7c79cce3-0157-1000-0000-000000000000</id>
+ <parentGroupId>7c73bce2-0157-1000-0000-000000000000</parentGroupId>
+ <backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>10000</backPressureObjectThreshold>
+ <destination>
+ <groupId>7c73bce2-0157-1000-0000-000000000000</groupId>
+ <id>7c79ba25-0157-1000-0000-000000000000</id>
+ <type>PROCESSOR</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <name></name>
+ <selectedRelationships>success</selectedRelationships>
+ <source>
+ <groupId>7c73bce2-0157-1000-0000-000000000000</groupId>
+ <id>7c755ed6-0157-1000-0000-000000000000</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <connections>
+ <id>7c79d576-0157-1000-0000-000000000000</id>
+ <parentGroupId>7c73bce2-0157-1000-0000-000000000000</parentGroupId>
+ <backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>10000</backPressureObjectThreshold>
+ <destination>
+ <groupId>7c73bce2-0157-1000-0000-000000000000</groupId>
+ <id>7c768622-0157-1000-0000-000000000000</id>
+ <type>PROCESSOR</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <name></name>
+ <selectedRelationships>success</selectedRelationships>
+ <source>
+ <groupId>7c73bce2-0157-1000-0000-000000000000</groupId>
+ <id>7c79ba25-0157-1000-0000-000000000000</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <processors>
+ <id>7c755ed6-0157-1000-0000-000000000000</id>
+ <parentGroupId>7c73bce2-0157-1000-0000-000000000000</parentGroupId>
+ <position>
+ <x>0.0</x>
+ <y>0.0</y>
+ </position>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+ <concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <descriptors>
+ <entry>
+ <key>File Size</key>
+ <value>
+ <name>File Size</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Batch Size</key>
+ <value>
+ <name>Batch Size</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Data Format</key>
+ <value>
+ <name>Data Format</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Unique FlowFiles</key>
+ <value>
+ <name>Unique FlowFiles</name>
+ </value>
+ </entry>
+ </descriptors>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>File Size</key>
+ <value>0 B</value>
+ </entry>
+ <entry>
+ <key>Batch Size</key>
+ <value>1</value>
+ </entry>
+ <entry>
+ <key>Data Format</key>
+ <value>Binary</value>
+ </entry>
+ <entry>
+ <key>Unique FlowFiles</key>
+ <value>false</value>
+ </entry>
+ </properties>
+ <runDurationMillis>0</runDurationMillis>
+ <schedulingPeriod>0 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <name>GenerateFlowFile</name>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>success</name>
+ </relationships>
+ <style></style>
+ <type>org.apache.nifi.processors.standard.GenerateFlowFile</type>
+ </processors>
+ <processors>
+ <id>7c75ab71-0157-1000-0000-000000000000</id>
+ <parentGroupId>7c73bce2-0157-1000-0000-000000000000</parentGroupId>
+ <position>
+ <x>3.10443115234375</x>
+ <y>580.1210327148438</y>
+ </position>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+ <concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <descriptors>
+ <entry>
+ <key>Log Level</key>
+ <value>
+ <name>Log Level</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Log Payload</key>
+ <value>
+ <name>Log Payload</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Attributes to Log</key>
+ <value>
+ <name>Attributes to Log</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Attributes to Ignore</key>
+ <value>
+ <name>Attributes to Ignore</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Log prefix</key>
+ <value>
+ <name>Log prefix</name>
+ </value>
+ </entry>
+ </descriptors>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>Log Level</key>
+ <value>info</value>
+ </entry>
+ <entry>
+ <key>Log Payload</key>
+ <value>false</value>
+ </entry>
+ <entry>
+ <key>Attributes to Log</key>
+ </entry>
+ <entry>
+ <key>Attributes to Ignore</key>
+ </entry>
+ <entry>
+ <key>Log prefix</key>
+ </entry>
+ </properties>
+ <runDurationMillis>0</runDurationMillis>
+ <schedulingPeriod>0 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <name>LogAttribute</name>
+ <relationships>
+ <autoTerminate>true</autoTerminate>
+ <name>success</name>
+ </relationships>
+ <style></style>
+ <type>org.apache.nifi.processors.standard.LogAttribute</type>
+ </processors>
+ <processors>
+ <id>7c768622-0157-1000-0000-000000000000</id>
+ <parentGroupId>7c73bce2-0157-1000-0000-000000000000</parentGroupId>
+ <position>
+ <x>3.89630126953125</x>
+ <y>386.68919372558594</y>
+ </position>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+ <concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <descriptors>
+ <entry>
+ <key>Routing Strategy</key>
+ <value>
+ <name>Routing Strategy</name>
+ </value>
+ </entry>
+ <entry>
+ <key>abc</key>
+ <value>
+ <name>abc</name>
+ </value>
+ </entry>
+ </descriptors>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>Routing Strategy</key>
+ <value>Route to Property name</value>
+ </entry>
+ <entry>
+ <key>abc</key>
+ <value>${filename:equals('abc')}</value>
+ </entry>
+ </properties>
+ <runDurationMillis>0</runDurationMillis>
+ <schedulingPeriod>0 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <name>RouteOnAttribute</name>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>abc</name>
+ </relationships>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>unmatched</name>
+ </relationships>
+ <style></style>
+ <type>org.apache.nifi.processors.standard.RouteOnAttribute</type>
+ </processors>
+ <processors>
+ <id>7c79ba25-0157-1000-0000-000000000000</id>
+ <parentGroupId>7c73bce2-0157-1000-0000-000000000000</parentGroupId>
+ <position>
+ <x>15.0</x>
+ <y>199.0</y>
+ </position>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+ <concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <descriptors>
+ <entry>
+ <key>Delete Attributes Expression</key>
+ <value>
+ <name>Delete Attributes Expression</name>
+ </value>
+ </entry>
+ <entry>
+ <key>filename</key>
+ <value>
+ <name>filename</name>
+ </value>
+ </entry>
+ </descriptors>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>Delete Attributes Expression</key>
+ </entry>
+ <entry>
+ <key>filename</key>
+ <value>abc</value>
+ </entry>
+ </properties>
+ <runDurationMillis>0</runDurationMillis>
+ <schedulingPeriod>0 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <name>UpdateAttribute</name>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>success</name>
+ </relationships>
+ <style></style>
+ <type>org.apache.nifi.processors.attributes.UpdateAttribute</type>
+ </processors>
+ </snippet>
+ <timestamp>09/30/2016 15:03:09 EDT</timestamp>
+</template>
\ No newline at end of file
diff --git a/minifi-integration-tests/src/test/resources/standalone/v2/MultipleRelationships/xml/expected.json b/minifi-integration-tests/src/test/resources/standalone/v2/MultipleRelationships/xml/expected.json
new file mode 100644
index 0000000..6110f19
--- /dev/null
+++ b/minifi-integration-tests/src/test/resources/standalone/v2/MultipleRelationships/xml/expected.json
@@ -0,0 +1,4 @@
+{
+ "pattern": "o.a.n.c.r.StandardProcessSession StandardProcessSession\\[.*\\] for LogAttribute\\[id=7c75ab71-0157-1000-0000-000000000000\\], committed the following events: Transferred FlowFiles \\[.*\\] to 'success'",
+ "occurrences": 20
+}
diff --git a/minifi-integration-tests/src/test/resources/standalone/v2/MultipleRelationships/yml/MultipleRelationships.yml b/minifi-integration-tests/src/test/resources/standalone/v2/MultipleRelationships/yml/MultipleRelationships.yml
new file mode 100644
index 0000000..71dce07
--- /dev/null
+++ b/minifi-integration-tests/src/test/resources/standalone/v2/MultipleRelationships/yml/MultipleRelationships.yml
@@ -0,0 +1,153 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the \"License\"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an \"AS IS\" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+MiNiFi Config Version: 2
+Flow Controller:
+ name: MultipleRelationships
+ comment: ''
+Core Properties:
+ flow controller graceful shutdown period: 10 sec
+ flow service write delay interval: 500 ms
+ administrative yield duration: 30 sec
+ bored yield duration: 10 millis
+ max concurrent threads: 1
+FlowFile Repository:
+ partitions: 256
+ checkpoint interval: 2 mins
+ always sync: false
+ Swap:
+ threshold: 20000
+ in period: 5 sec
+ in threads: 1
+ out period: 5 sec
+ out threads: 4
+Content Repository:
+ content claim max appendable size: 10 MB
+ content claim max flow files: 100
+ always sync: false
+Provenance Repository:
+ provenance rollover time: 1 min
+Component Status Repository:
+ buffer size: 1440
+ snapshot frequency: 1 min
+Security Properties:
+ keystore: ''
+ keystore type: ''
+ keystore password: ''
+ key password: ''
+ truststore: ''
+ truststore type: ''
+ truststore password: ''
+ ssl protocol: ''
+ Sensitive Props:
+ key:
+ algorithm: PBEWITHMD5AND256BITAES-CBC-OPENSSL
+ provider: BC
+Processors:
+- id: 7c755ed6-0157-1000-0000-000000000000
+ name: GenerateFlowFile
+ class: org.apache.nifi.processors.standard.GenerateFlowFile
+ max concurrent tasks: 1
+ scheduling strategy: TIMER_DRIVEN
+ scheduling period: 0 sec
+ penalization period: 30 sec
+ yield period: 1 sec
+ run duration nanos: 0
+ auto-terminated relationships list: []
+ Properties:
+ Batch Size: '1'
+ Data Format: Binary
+ File Size: 0 B
+ Unique FlowFiles: 'false'
+- id: 7c75ab71-0157-1000-0000-000000000000
+ name: LogAttribute
+ class: org.apache.nifi.processors.standard.LogAttribute
+ max concurrent tasks: 1
+ scheduling strategy: TIMER_DRIVEN
+ scheduling period: 0 sec
+ penalization period: 30 sec
+ yield period: 1 sec
+ run duration nanos: 0
+ auto-terminated relationships list:
+ - success
+ Properties:
+ Attributes to Ignore:
+ Attributes to Log:
+ Log Level: info
+ Log Payload: 'false'
+ Log prefix:
+- id: 7c768622-0157-1000-0000-000000000000
+ name: RouteOnAttribute
+ class: org.apache.nifi.processors.standard.RouteOnAttribute
+ max concurrent tasks: 1
+ scheduling strategy: TIMER_DRIVEN
+ scheduling period: 0 sec
+ penalization period: 30 sec
+ yield period: 1 sec
+ run duration nanos: 0
+ auto-terminated relationships list: []
+ Properties:
+ Routing Strategy: Route to Property name
+ abc: ${filename:equals('abc')}
+- id: 7c79ba25-0157-1000-0000-000000000000
+ name: UpdateAttribute
+ class: org.apache.nifi.processors.attributes.UpdateAttribute
+ max concurrent tasks: 1
+ scheduling strategy: TIMER_DRIVEN
+ scheduling period: 0 sec
+ penalization period: 30 sec
+ yield period: 1 sec
+ run duration nanos: 0
+ auto-terminated relationships list: []
+ Properties:
+ Delete Attributes Expression:
+ filename: abc
+Process Groups: []
+Input Ports: []
+Output Ports: []
+Funnels: []
+Connections:
+- id: 7c79cce3-0157-1000-0000-000000000000
+ name: GenerateFlowFile/success/UpdateAttribute
+ source id: 7c755ed6-0157-1000-0000-000000000000
+ source relationship names:
+ - success
+ destination id: 7c79ba25-0157-1000-0000-000000000000
+ max work queue size: 10000
+ max work queue data size: 1 GB
+ flowfile expiration: 0 sec
+ queue prioritizer class: ''
+- id: 7c798ca3-0157-1000-0000-000000000000
+ name: RouteOnAttribute/abc/LogAttribute
+ source id: 7c768622-0157-1000-0000-000000000000
+ source relationship names:
+ - abc
+ - unmatched
+ destination id: 7c75ab71-0157-1000-0000-000000000000
+ max work queue size: 10000
+ max work queue data size: 1 GB
+ flowfile expiration: 0 sec
+ queue prioritizer class: ''
+- id: 7c79d576-0157-1000-0000-000000000000
+ name: UpdateAttribute/success/RouteOnAttribute
+ source id: 7c79ba25-0157-1000-0000-000000000000
+ source relationship names:
+ - success
+ destination id: 7c768622-0157-1000-0000-000000000000
+ max work queue size: 10000
+ max work queue data size: 1 GB
+ flowfile expiration: 0 sec
+ queue prioritizer class: ''
+Remote Process Groups: []
diff --git a/minifi-integration-tests/src/test/resources/standalone/v2/MultipleRelationships/yml/expected.json b/minifi-integration-tests/src/test/resources/standalone/v2/MultipleRelationships/yml/expected.json
new file mode 100644
index 0000000..6110f19
--- /dev/null
+++ b/minifi-integration-tests/src/test/resources/standalone/v2/MultipleRelationships/yml/expected.json
@@ -0,0 +1,4 @@
+{
+ "pattern": "o.a.n.c.r.StandardProcessSession StandardProcessSession\\[.*\\] for LogAttribute\\[id=7c75ab71-0157-1000-0000-000000000000\\], committed the following events: Transferred FlowFiles \\[.*\\] to 'success'",
+ "occurrences": 20
+}
diff --git a/minifi-integration-tests/src/test/resources/standalone/v2/ProcessGroups/xml/ProcessGroups.xml b/minifi-integration-tests/src/test/resources/standalone/v2/ProcessGroups/xml/ProcessGroups.xml
new file mode 100644
index 0000000..c5d5812
--- /dev/null
+++ b/minifi-integration-tests/src/test/resources/standalone/v2/ProcessGroups/xml/ProcessGroups.xml
@@ -0,0 +1,370 @@
+<?xml version="1.0" ?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to You under the Apache License, Version 2.0
+ ~ (the "License"); you may not use this file except in compliance with
+ ~ the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<template encoding-version="1.0">
+ <description></description>
+ <groupId>e25c3a84-0157-1000-b0cb-8ebdb45e8945</groupId>
+ <name>pgtest</name>
+ <snippet>
+ <connections>
+ <id>e25dbff3-0157-1000-0000-000000000000</id>
+ <parentGroupId>e25c3a84-0157-1000-0000-000000000000</parentGroupId>
+ <backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>10000</backPressureObjectThreshold>
+ <destination>
+ <groupId>e25cbc20-0157-1000-0000-000000000000</groupId>
+ <id>e25d0cef-0157-1000-0000-000000000000</id>
+ <type>INPUT_PORT</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <name></name>
+ <selectedRelationships>success</selectedRelationships>
+ <source>
+ <groupId>e25c3a84-0157-1000-0000-000000000000</groupId>
+ <id>e25cd92a-0157-1000-0000-000000000000</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <connections>
+ <id>e25e22b1-0157-1000-0000-000000000000</id>
+ <parentGroupId>e25c3a84-0157-1000-0000-000000000000</parentGroupId>
+ <backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>10000</backPressureObjectThreshold>
+ <destination>
+ <groupId>e25c3a84-0157-1000-0000-000000000000</groupId>
+ <id>e25e0e6e-0157-1000-0000-000000000000</id>
+ <type>PROCESSOR</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <name></name>
+ <source>
+ <groupId>e25cbc20-0157-1000-0000-000000000000</groupId>
+ <id>e25d578c-0157-1000-0000-000000000000</id>
+ <type>OUTPUT_PORT</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <processGroups>
+ <id>e25cbc20-0157-1000-0000-000000000000</id>
+ <parentGroupId>e25c3a84-0157-1000-0000-000000000000</parentGroupId>
+ <position>
+ <x>0.0</x>
+ <y>230.999990940094</y>
+ </position>
+ <comments></comments>
+ <contents>
+ <connections>
+ <id>e25d35dc-0157-1000-0000-000000000000</id>
+ <parentGroupId>e25cbc20-0157-1000-0000-000000000000</parentGroupId>
+ <backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>10000</backPressureObjectThreshold>
+ <destination>
+ <groupId>e25cbc20-0157-1000-0000-000000000000</groupId>
+ <id>e25d2588-0157-1000-0000-000000000000</id>
+ <type>PROCESSOR</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <name></name>
+ <source>
+ <groupId>e25cbc20-0157-1000-0000-000000000000</groupId>
+ <id>e25d0cef-0157-1000-0000-000000000000</id>
+ <type>INPUT_PORT</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <connections>
+ <id>e25d6bd6-0157-1000-0000-000000000000</id>
+ <parentGroupId>e25cbc20-0157-1000-0000-000000000000</parentGroupId>
+ <backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>10000</backPressureObjectThreshold>
+ <destination>
+ <groupId>e25cbc20-0157-1000-0000-000000000000</groupId>
+ <id>e25d578c-0157-1000-0000-000000000000</id>
+ <type>OUTPUT_PORT</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <name></name>
+ <selectedRelationships>success</selectedRelationships>
+ <source>
+ <groupId>e25cbc20-0157-1000-0000-000000000000</groupId>
+ <id>e25d2588-0157-1000-0000-000000000000</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <inputPorts>
+ <id>e25d0cef-0157-1000-0000-000000000000</id>
+ <parentGroupId>e25cbc20-0157-1000-0000-000000000000</parentGroupId>
+ <position>
+ <x>457.0</x>
+ <y>50.0</y>
+ </position>
+ <concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <name>input</name>
+ <state>STOPPED</state>
+ <type>INPUT_PORT</type>
+ </inputPorts>
+ <outputPorts>
+ <id>e25d578c-0157-1000-0000-000000000000</id>
+ <parentGroupId>e25cbc20-0157-1000-0000-000000000000</parentGroupId>
+ <position>
+ <x>461.0</x>
+ <y>478.0</y>
+ </position>
+ <concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <name>output</name>
+ <state>STOPPED</state>
+ <type>OUTPUT_PORT</type>
+ </outputPorts>
+ <processors>
+ <id>e25d2588-0157-1000-0000-000000000000</id>
+ <parentGroupId>e25cbc20-0157-1000-0000-000000000000</parentGroupId>
+ <position>
+ <x>406.0</x>
+ <y>225.0</y>
+ </position>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+ <concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <descriptors>
+ <entry>
+ <key>Log Level</key>
+ <value>
+ <name>Log Level</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Log Payload</key>
+ <value>
+ <name>Log Payload</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Attributes to Log</key>
+ <value>
+ <name>Attributes to Log</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Attributes to Ignore</key>
+ <value>
+ <name>Attributes to Ignore</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Log prefix</key>
+ <value>
+ <name>Log prefix</name>
+ </value>
+ </entry>
+ </descriptors>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>Log Level</key>
+ <value>info</value>
+ </entry>
+ <entry>
+ <key>Log Payload</key>
+ <value>false</value>
+ </entry>
+ <entry>
+ <key>Attributes to Log</key>
+ </entry>
+ <entry>
+ <key>Attributes to Ignore</key>
+ </entry>
+ <entry>
+ <key>Log prefix</key>
+ <value>INSIDE</value>
+ </entry>
+ </properties>
+ <runDurationMillis>0</runDurationMillis>
+ <schedulingPeriod>0 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <name>LogAttribute</name>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>success</name>
+ </relationships>
+ <style></style>
+ <type>org.apache.nifi.processors.standard.LogAttribute</type>
+ </processors>
+ </contents>
+ <name>black box</name>
+ </processGroups>
+ <processors>
+ <id>e25cd92a-0157-1000-0000-000000000000</id>
+ <parentGroupId>e25c3a84-0157-1000-0000-000000000000</parentGroupId>
+ <position>
+ <x>12.0</x>
+ <y>0.0</y>
+ </position>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+ <concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <descriptors>
+ <entry>
+ <key>File Size</key>
+ <value>
+ <name>File Size</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Batch Size</key>
+ <value>
+ <name>Batch Size</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Data Format</key>
+ <value>
+ <name>Data Format</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Unique FlowFiles</key>
+ <value>
+ <name>Unique FlowFiles</name>
+ </value>
+ </entry>
+ </descriptors>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>File Size</key>
+ <value>1 b</value>
+ </entry>
+ <entry>
+ <key>Batch Size</key>
+ <value>1</value>
+ </entry>
+ <entry>
+ <key>Data Format</key>
+ <value>Binary</value>
+ </entry>
+ <entry>
+ <key>Unique FlowFiles</key>
+ <value>false</value>
+ </entry>
+ </properties>
+ <runDurationMillis>0</runDurationMillis>
+ <schedulingPeriod>0 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <name>GenerateFlowFile</name>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>success</name>
+ </relationships>
+ <style></style>
+ <type>org.apache.nifi.processors.standard.GenerateFlowFile</type>
+ </processors>
+ <processors>
+ <id>e25e0e6e-0157-1000-0000-000000000000</id>
+ <parentGroupId>e25c3a84-0157-1000-0000-000000000000</parentGroupId>
+ <position>
+ <x>21.08323973697111</x>
+ <y>461.2776537085565</y>
+ </position>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+ <concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <descriptors>
+ <entry>
+ <key>Log Level</key>
+ <value>
+ <name>Log Level</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Log Payload</key>
+ <value>
+ <name>Log Payload</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Attributes to Log</key>
+ <value>
+ <name>Attributes to Log</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Attributes to Ignore</key>
+ <value>
+ <name>Attributes to Ignore</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Log prefix</key>
+ <value>
+ <name>Log prefix</name>
+ </value>
+ </entry>
+ </descriptors>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>Log Level</key>
+ <value>info</value>
+ </entry>
+ <entry>
+ <key>Log Payload</key>
+ <value>false</value>
+ </entry>
+ <entry>
+ <key>Attributes to Log</key>
+ </entry>
+ <entry>
+ <key>Attributes to Ignore</key>
+ </entry>
+ <entry>
+ <key>Log prefix</key>
+ <value>OUTSIDE</value>
+ </entry>
+ </properties>
+ <runDurationMillis>0</runDurationMillis>
+ <schedulingPeriod>0 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <name>LogAttribute</name>
+ <relationships>
+ <autoTerminate>true</autoTerminate>
+ <name>success</name>
+ </relationships>
+ <style></style>
+ <type>org.apache.nifi.processors.standard.LogAttribute</type>
+ </processors>
+ </snippet>
+ <timestamp>10/20/2016 09:53:44 EDT</timestamp>
+</template>
diff --git a/minifi-integration-tests/src/test/resources/standalone/v2/ProcessGroups/xml/expected.json b/minifi-integration-tests/src/test/resources/standalone/v2/ProcessGroups/xml/expected.json
new file mode 100644
index 0000000..a1e4e43
--- /dev/null
+++ b/minifi-integration-tests/src/test/resources/standalone/v2/ProcessGroups/xml/expected.json
@@ -0,0 +1,4 @@
+{
+ "pattern": "o.a.n.c.r.StandardProcessSession StandardProcessSession\\[id=.*\\] for LogAttribute\\[id=e25e0e6e-0157-1000-0000-000000000000\\], committed the following events: Transferred FlowFiles \\[.*\\] to 'success'",
+ "occurrences": 20
+}
diff --git a/minifi-integration-tests/src/test/resources/standalone/v2/ProcessGroups/yml/ProcessGroups.yml b/minifi-integration-tests/src/test/resources/standalone/v2/ProcessGroups/yml/ProcessGroups.yml
new file mode 100644
index 0000000..fc837b6
--- /dev/null
+++ b/minifi-integration-tests/src/test/resources/standalone/v2/ProcessGroups/yml/ProcessGroups.yml
@@ -0,0 +1,163 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the \"License\"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an \"AS IS\" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+MiNiFi Config Version: 2
+Flow Controller:
+ name: pgtest
+ comment: ''
+Core Properties:
+ flow controller graceful shutdown period: 10 sec
+ flow service write delay interval: 500 ms
+ administrative yield duration: 30 sec
+ bored yield duration: 10 millis
+ max concurrent threads: 1
+FlowFile Repository:
+ partitions: 256
+ checkpoint interval: 2 mins
+ always sync: false
+ Swap:
+ threshold: 20000
+ in period: 5 sec
+ in threads: 1
+ out period: 5 sec
+ out threads: 4
+Content Repository:
+ content claim max appendable size: 10 MB
+ content claim max flow files: 100
+ always sync: false
+Provenance Repository:
+ provenance rollover time: 1 min
+Component Status Repository:
+ buffer size: 1440
+ snapshot frequency: 1 min
+Security Properties:
+ keystore: ''
+ keystore type: ''
+ keystore password: ''
+ key password: ''
+ truststore: ''
+ truststore type: ''
+ truststore password: ''
+ ssl protocol: ''
+ Sensitive Props:
+ key:
+ algorithm: PBEWITHMD5AND256BITAES-CBC-OPENSSL
+ provider: BC
+Processors:
+- id: e25cd92a-0157-1000-0000-000000000000
+ name: GenerateFlowFile
+ class: org.apache.nifi.processors.standard.GenerateFlowFile
+ max concurrent tasks: 1
+ scheduling strategy: TIMER_DRIVEN
+ scheduling period: 0 sec
+ penalization period: 30 sec
+ yield period: 1 sec
+ run duration nanos: 0
+ auto-terminated relationships list: []
+ Properties:
+ Batch Size: '1'
+ Data Format: Binary
+ File Size: 1 b
+ Unique FlowFiles: 'false'
+- id: e25e0e6e-0157-1000-0000-000000000000
+ name: LogAttribute
+ class: org.apache.nifi.processors.standard.LogAttribute
+ max concurrent tasks: 1
+ scheduling strategy: TIMER_DRIVEN
+ scheduling period: 0 sec
+ penalization period: 30 sec
+ yield period: 1 sec
+ run duration nanos: 0
+ auto-terminated relationships list:
+ - success
+ Properties:
+ Attributes to Ignore:
+ Attributes to Log:
+ Log Level: info
+ Log Payload: 'false'
+ Log prefix: OUTSIDE
+Process Groups:
+- id: e25cbc20-0157-1000-0000-000000000000
+ name: black box
+ Processors:
+ - id: e25d2588-0157-1000-0000-000000000000
+ name: LogAttribute
+ class: org.apache.nifi.processors.standard.LogAttribute
+ max concurrent tasks: 1
+ scheduling strategy: TIMER_DRIVEN
+ scheduling period: 0 sec
+ penalization period: 30 sec
+ yield period: 1 sec
+ run duration nanos: 0
+ auto-terminated relationships list: []
+ Properties:
+ Attributes to Ignore:
+ Attributes to Log:
+ Log Level: info
+ Log Payload: 'false'
+ Log prefix: INSIDE
+ Process Groups: []
+ Input Ports:
+ - id: e25d0cef-0157-1000-0000-000000000000
+ name: input
+ Output Ports:
+ - id: e25d578c-0157-1000-0000-000000000000
+ name: output
+ Funnels: []
+ Connections:
+ - id: e25d6bd6-0157-1000-0000-000000000000
+ name: LogAttribute/success/output
+ source id: e25d2588-0157-1000-0000-000000000000
+ source relationship names:
+ - success
+ destination id: e25d578c-0157-1000-0000-000000000000
+ max work queue size: 10000
+ max work queue data size: 1 GB
+ flowfile expiration: 0 sec
+ queue prioritizer class: ''
+ - id: e25d35dc-0157-1000-0000-000000000000
+ name: input//LogAttribute
+ source id: e25d0cef-0157-1000-0000-000000000000
+ source relationship names: []
+ destination id: e25d2588-0157-1000-0000-000000000000
+ max work queue size: 10000
+ max work queue data size: 1 GB
+ flowfile expiration: 0 sec
+ queue prioritizer class: ''
+ Remote Process Groups: []
+Input Ports: []
+Output Ports: []
+Funnels: []
+Connections:
+- id: e25dbff3-0157-1000-0000-000000000000
+ name: GenerateFlowFile/success/input
+ source id: e25cd92a-0157-1000-0000-000000000000
+ source relationship names:
+ - success
+ destination id: e25d0cef-0157-1000-0000-000000000000
+ max work queue size: 10000
+ max work queue data size: 1 GB
+ flowfile expiration: 0 sec
+ queue prioritizer class: ''
+- id: e25e22b1-0157-1000-0000-000000000000
+ name: output//LogAttribute
+ source id: e25d578c-0157-1000-0000-000000000000
+ source relationship names: []
+ destination id: e25e0e6e-0157-1000-0000-000000000000
+ max work queue size: 10000
+ max work queue data size: 1 GB
+ flowfile expiration: 0 sec
+ queue prioritizer class: ''
+Remote Process Groups: []
diff --git a/minifi-integration-tests/src/test/resources/standalone/v2/ProcessGroups/yml/expected.json b/minifi-integration-tests/src/test/resources/standalone/v2/ProcessGroups/yml/expected.json
new file mode 100644
index 0000000..a1e4e43
--- /dev/null
+++ b/minifi-integration-tests/src/test/resources/standalone/v2/ProcessGroups/yml/expected.json
@@ -0,0 +1,4 @@
+{
+ "pattern": "o.a.n.c.r.StandardProcessSession StandardProcessSession\\[id=.*\\] for LogAttribute\\[id=e25e0e6e-0157-1000-0000-000000000000\\], committed the following events: Transferred FlowFiles \\[.*\\] to 'success'",
+ "occurrences": 20
+}
diff --git a/minifi-integration-tests/src/test/resources/standalone/v2/StressTestFramework/xml/StressTestFramework.xml b/minifi-integration-tests/src/test/resources/standalone/v2/StressTestFramework/xml/StressTestFramework.xml
new file mode 100644
index 0000000..4234170
--- /dev/null
+++ b/minifi-integration-tests/src/test/resources/standalone/v2/StressTestFramework/xml/StressTestFramework.xml
@@ -0,0 +1,539 @@
+<?xml version="1.0" ?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to You under the Apache License, Version 2.0
+ ~ (the "License"); you may not use this file except in compliance with
+ ~ the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<template encoding-version="1.0">
+ <description></description>
+ <groupId>7cba7223-0157-1000-0571-63471fdb84c9</groupId>
+ <name>StressTestFramework</name>
+ <snippet>
+ <connections>
+ <id>4ad21393-16a4-1794-0000-000000000000</id>
+ <parentGroupId>7cba7223-0157-1000-0000-000000000000</parentGroupId>
+ <backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>10000</backPressureObjectThreshold>
+ <destination>
+ <groupId>7cba7223-0157-1000-0000-000000000000</groupId>
+ <id>4ad21392-16a4-1794-0000-000000000000</id>
+ <type>FUNNEL</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <name></name>
+ <selectedRelationships>success</selectedRelationships>
+ <source>
+ <groupId>7cba7223-0157-1000-0000-000000000000</groupId>
+ <id>16a47794-5391-4ad2-0000-000000000000</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <connections>
+ <id>4ad21394-16a4-1794-0000-000000000000</id>
+ <parentGroupId>7cba7223-0157-1000-0000-000000000000</parentGroupId>
+ <backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>10000</backPressureObjectThreshold>
+ <destination>
+ <groupId>7cba7223-0157-1000-0000-000000000000</groupId>
+ <id>4ad21392-16a4-1794-0000-000000000000</id>
+ <type>FUNNEL</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <name></name>
+ <selectedRelationships>success</selectedRelationships>
+ <source>
+ <groupId>7cba7223-0157-1000-0000-000000000000</groupId>
+ <id>53914ad2-7794-16a4-0000-000000000000</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <connections>
+ <id>4ad21395-16a4-1794-0000-000000000000</id>
+ <parentGroupId>7cba7223-0157-1000-0000-000000000000</parentGroupId>
+ <backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>10000</backPressureObjectThreshold>
+ <destination>
+ <groupId>7cba7223-0157-1000-0000-000000000000</groupId>
+ <id>4ad21392-16a4-1794-0000-000000000000</id>
+ <type>FUNNEL</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <name></name>
+ <selectedRelationships>success</selectedRelationships>
+ <source>
+ <groupId>7cba7223-0157-1000-0000-000000000000</groupId>
+ <id>779416a4-4ad2-1391-0000-000000000000</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <connections>
+ <id>4ad21396-16a4-1794-0000-000000000000</id>
+ <parentGroupId>7cba7223-0157-1000-0000-000000000000</parentGroupId>
+ <backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>10000</backPressureObjectThreshold>
+ <destination>
+ <groupId>7cba7223-0157-1000-0000-000000000000</groupId>
+ <id>4ad21392-16a4-1794-0000-000000000000</id>
+ <type>FUNNEL</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <name></name>
+ <selectedRelationships>success</selectedRelationships>
+ <source>
+ <groupId>7cba7223-0157-1000-0000-000000000000</groupId>
+ <id>4ad21391-16a4-1794-0000-000000000000</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <connections>
+ <id>4ad21397-16a4-1794-0000-000000000000</id>
+ <parentGroupId>7cba7223-0157-1000-0000-000000000000</parentGroupId>
+ <backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>10000</backPressureObjectThreshold>
+ <destination>
+ <groupId>7cba7223-0157-1000-0000-000000000000</groupId>
+ <id>92557c76-f251-45a4-0000-000000000000</id>
+ <type>PROCESSOR</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <name></name>
+ <source>
+ <groupId>7cba7223-0157-1000-0000-000000000000</groupId>
+ <id>4ad21392-16a4-1794-0000-000000000000</id>
+ <type>FUNNEL</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <connections>
+ <id>4c53556e-eb46-458c-0000-000000000000</id>
+ <parentGroupId>7cba7223-0157-1000-0000-000000000000</parentGroupId>
+ <backPressureDataSizeThreshold>0 MB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>2000</backPressureObjectThreshold>
+ <destination>
+ <groupId>7cba7223-0157-1000-0000-000000000000</groupId>
+ <id>397a4910-cc01-4c6b-0000-000000000000</id>
+ <type>PROCESSOR</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <name></name>
+ <prioritizers>org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer</prioritizers>
+ <selectedRelationships>success</selectedRelationships>
+ <source>
+ <groupId>7cba7223-0157-1000-0000-000000000000</groupId>
+ <id>92557c76-f251-45a4-0000-000000000000</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <funnels>
+ <id>4ad21392-16a4-1794-0000-000000000000</id>
+ <parentGroupId>7cba7223-0157-1000-0000-000000000000</parentGroupId>
+ <position>
+ <x>593.8762672567133</x>
+ <y>246.40484683047555</y>
+ </position>
+ </funnels>
+ <processors>
+ <id>92557c76-f251-45a4-0000-000000000000</id>
+ <parentGroupId>7cba7223-0157-1000-0000-000000000000</parentGroupId>
+ <position>
+ <x>442.8776092529297</x>
+ <y>345.48790588378904</y>
+ </position>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+ <concurrentlySchedulableTaskCount>2</concurrentlySchedulableTaskCount>
+ <descriptors>
+ <entry>
+ <key>Delete Attributes Expression</key>
+ <value>
+ <name>Delete Attributes Expression</name>
+ </value>
+ </entry>
+ <entry>
+ <key>property 1</key>
+ <value>
+ <name>property 1</name>
+ </value>
+ </entry>
+ <entry>
+ <key>property 2</key>
+ <value>
+ <name>property 2</name>
+ </value>
+ </entry>
+ </descriptors>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>Delete Attributes Expression</key>
+ </entry>
+ <entry>
+ <key>property 1</key>
+ <value>value 1</value>
+ </entry>
+ <entry>
+ <key>property 2</key>
+ <value>value 2 ${nextInt()}</value>
+ </entry>
+ </properties>
+ <runDurationMillis>100</runDurationMillis>
+ <schedulingPeriod>0 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <name>UpdateAttribute</name>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>success</name>
+ </relationships>
+ <style></style>
+ <type>org.apache.nifi.processors.attributes.UpdateAttribute</type>
+ </processors>
+ <processors>
+ <id>16a47794-5391-4ad2-0000-000000000000</id>
+ <parentGroupId>7cba7223-0157-1000-0000-000000000000</parentGroupId>
+ <position>
+ <x>0.0</x>
+ <y>188.24237060546875</y>
+ </position>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+ <concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <descriptors>
+ <entry>
+ <key>File Size</key>
+ <value>
+ <name>File Size</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Batch Size</key>
+ <value>
+ <name>Batch Size</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Data Format</key>
+ <value>
+ <name>Data Format</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Unique FlowFiles</key>
+ <value>
+ <name>Unique FlowFiles</name>
+ </value>
+ </entry>
+ </descriptors>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>File Size</key>
+ <value>0 KB</value>
+ </entry>
+ <entry>
+ <key>Batch Size</key>
+ <value>100</value>
+ </entry>
+ <entry>
+ <key>Data Format</key>
+ <value>Binary</value>
+ </entry>
+ <entry>
+ <key>Unique FlowFiles</key>
+ <value>false</value>
+ </entry>
+ </properties>
+ <runDurationMillis>0</runDurationMillis>
+ <schedulingPeriod>0 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <name>GenerateFlowFile</name>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>success</name>
+ </relationships>
+ <style></style>
+ <type>org.apache.nifi.processors.standard.GenerateFlowFile</type>
+ </processors>
+ <processors>
+ <id>397a4910-cc01-4c6b-0000-000000000000</id>
+ <parentGroupId>7cba7223-0157-1000-0000-000000000000</parentGroupId>
+ <position>
+ <x>444.3776092529297</x>
+ <y>609.6672564697267</y>
+ </position>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+ <concurrentlySchedulableTaskCount>2</concurrentlySchedulableTaskCount>
+ <descriptors>
+ <entry>
+ <key>Routing Strategy</key>
+ <value>
+ <name>Routing Strategy</name>
+ </value>
+ </entry>
+ </descriptors>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>Routing Strategy</key>
+ <value>Route to Property name</value>
+ </entry>
+ </properties>
+ <runDurationMillis>50</runDurationMillis>
+ <schedulingPeriod>0 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <name>RouteOnAttribute</name>
+ <relationships>
+ <autoTerminate>true</autoTerminate>
+ <name>unmatched</name>
+ </relationships>
+ <style></style>
+ <type>org.apache.nifi.processors.standard.RouteOnAttribute</type>
+ </processors>
+ <processors>
+ <id>4ad21391-16a4-1794-0000-000000000000</id>
+ <parentGroupId>7cba7223-0157-1000-0000-000000000000</parentGroupId>
+ <position>
+ <x>975.3996429443359</x>
+ <y>173.76165771484375</y>
+ </position>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+ <concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <descriptors>
+ <entry>
+ <key>File Size</key>
+ <value>
+ <name>File Size</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Batch Size</key>
+ <value>
+ <name>Batch Size</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Data Format</key>
+ <value>
+ <name>Data Format</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Unique FlowFiles</key>
+ <value>
+ <name>Unique FlowFiles</name>
+ </value>
+ </entry>
+ </descriptors>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>File Size</key>
+ <value>0 KB</value>
+ </entry>
+ <entry>
+ <key>Batch Size</key>
+ <value>100</value>
+ </entry>
+ <entry>
+ <key>Data Format</key>
+ <value>Binary</value>
+ </entry>
+ <entry>
+ <key>Unique FlowFiles</key>
+ <value>false</value>
+ </entry>
+ </properties>
+ <runDurationMillis>0</runDurationMillis>
+ <schedulingPeriod>0 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <name>GenerateFlowFile</name>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>success</name>
+ </relationships>
+ <style></style>
+ <type>org.apache.nifi.processors.standard.GenerateFlowFile</type>
+ </processors>
+ <processors>
+ <id>53914ad2-7794-16a4-0000-000000000000</id>
+ <parentGroupId>7cba7223-0157-1000-0000-000000000000</parentGroupId>
+ <position>
+ <x>174.88023376464844</x>
+ <y>9.67376708984375</y>
+ </position>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+ <concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <descriptors>
+ <entry>
+ <key>File Size</key>
+ <value>
+ <name>File Size</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Batch Size</key>
+ <value>
+ <name>Batch Size</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Data Format</key>
+ <value>
+ <name>Data Format</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Unique FlowFiles</key>
+ <value>
+ <name>Unique FlowFiles</name>
+ </value>
+ </entry>
+ </descriptors>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>File Size</key>
+ <value>0 KB</value>
+ </entry>
+ <entry>
+ <key>Batch Size</key>
+ <value>100</value>
+ </entry>
+ <entry>
+ <key>Data Format</key>
+ <value>Binary</value>
+ </entry>
+ <entry>
+ <key>Unique FlowFiles</key>
+ <value>false</value>
+ </entry>
+ </properties>
+ <runDurationMillis>0</runDurationMillis>
+ <schedulingPeriod>0 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <name>GenerateFlowFile</name>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>success</name>
+ </relationships>
+ <style></style>
+ <type>org.apache.nifi.processors.standard.GenerateFlowFile</type>
+ </processors>
+ <processors>
+ <id>779416a4-4ad2-1391-0000-000000000000</id>
+ <parentGroupId>7cba7223-0157-1000-0000-000000000000</parentGroupId>
+ <position>
+ <x>758.0161590576172</x>
+ <y>0.0</y>
+ </position>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+ <concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <descriptors>
+ <entry>
+ <key>File Size</key>
+ <value>
+ <name>File Size</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Batch Size</key>
+ <value>
+ <name>Batch Size</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Data Format</key>
+ <value>
+ <name>Data Format</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Unique FlowFiles</key>
+ <value>
+ <name>Unique FlowFiles</name>
+ </value>
+ </entry>
+ </descriptors>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>File Size</key>
+ <value>0 KB</value>
+ </entry>
+ <entry>
+ <key>Batch Size</key>
+ <value>100</value>
+ </entry>
+ <entry>
+ <key>Data Format</key>
+ <value>Binary</value>
+ </entry>
+ <entry>
+ <key>Unique FlowFiles</key>
+ <value>false</value>
+ </entry>
+ </properties>
+ <runDurationMillis>0</runDurationMillis>
+ <schedulingPeriod>0 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <name>GenerateFlowFile</name>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>success</name>
+ </relationships>
+ <style></style>
+ <type>org.apache.nifi.processors.standard.GenerateFlowFile</type>
+ </processors>
+ </snippet>
+ <timestamp>09/30/2016 16:18:24 EDT</timestamp>
+</template>
\ No newline at end of file
diff --git a/minifi-integration-tests/src/test/resources/standalone/v2/StressTestFramework/xml/expected.json b/minifi-integration-tests/src/test/resources/standalone/v2/StressTestFramework/xml/expected.json
new file mode 100644
index 0000000..5f3740b
--- /dev/null
+++ b/minifi-integration-tests/src/test/resources/standalone/v2/StressTestFramework/xml/expected.json
@@ -0,0 +1,4 @@
+{
+ "pattern": "o.a.n.c.r.StandardProcessSession StandardProcessSession\\[id=.*\\] for RouteOnAttribute\\[id=397a4910-cc01-4c6b-0000-000000000000\\], committed the following events: Transferred FlowFiles \\[.*\\] to 'unmatched'",
+ "occurrences": 20
+}
diff --git a/minifi-integration-tests/src/test/resources/standalone/v2/StressTestFramework/yml/StressTestFramework.yml b/minifi-integration-tests/src/test/resources/standalone/v2/StressTestFramework/yml/StressTestFramework.yml
new file mode 100644
index 0000000..46cd84d
--- /dev/null
+++ b/minifi-integration-tests/src/test/resources/standalone/v2/StressTestFramework/yml/StressTestFramework.yml
@@ -0,0 +1,211 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the \"License\"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an \"AS IS\" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+MiNiFi Config Version: 2
+Flow Controller:
+ name: StressTestFramework
+ comment: ''
+Core Properties:
+ flow controller graceful shutdown period: 10 sec
+ flow service write delay interval: 500 ms
+ administrative yield duration: 30 sec
+ bored yield duration: 10 millis
+ max concurrent threads: 1
+FlowFile Repository:
+ partitions: 256
+ checkpoint interval: 2 mins
+ always sync: false
+ Swap:
+ threshold: 20000
+ in period: 5 sec
+ in threads: 1
+ out period: 5 sec
+ out threads: 4
+Content Repository:
+ content claim max appendable size: 10 MB
+ content claim max flow files: 100
+ always sync: false
+Provenance Repository:
+ provenance rollover time: 1 min
+Component Status Repository:
+ buffer size: 1440
+ snapshot frequency: 1 min
+Security Properties:
+ keystore: ''
+ keystore type: ''
+ keystore password: ''
+ key password: ''
+ truststore: ''
+ truststore type: ''
+ truststore password: ''
+ ssl protocol: ''
+ Sensitive Props:
+ key:
+ algorithm: PBEWITHMD5AND256BITAES-CBC-OPENSSL
+ provider: BC
+Processors:
+- id: 16a47794-5391-4ad2-0000-000000000000
+ name: GenerateFlowFile
+ class: org.apache.nifi.processors.standard.GenerateFlowFile
+ max concurrent tasks: 1
+ scheduling strategy: TIMER_DRIVEN
+ scheduling period: 0 sec
+ penalization period: 30 sec
+ yield period: 1 sec
+ run duration nanos: 0
+ auto-terminated relationships list: []
+ Properties:
+ Batch Size: '100'
+ Data Format: Binary
+ File Size: 0 KB
+ Unique FlowFiles: 'false'
+- id: 4ad21391-16a4-1794-0000-000000000000
+ name: GenerateFlowFile
+ class: org.apache.nifi.processors.standard.GenerateFlowFile
+ max concurrent tasks: 1
+ scheduling strategy: TIMER_DRIVEN
+ scheduling period: 0 sec
+ penalization period: 30 sec
+ yield period: 1 sec
+ run duration nanos: 0
+ auto-terminated relationships list: []
+ Properties:
+ Batch Size: '100'
+ Data Format: Binary
+ File Size: 0 KB
+ Unique FlowFiles: 'false'
+- id: 53914ad2-7794-16a4-0000-000000000000
+ name: GenerateFlowFile
+ class: org.apache.nifi.processors.standard.GenerateFlowFile
+ max concurrent tasks: 1
+ scheduling strategy: TIMER_DRIVEN
+ scheduling period: 0 sec
+ penalization period: 30 sec
+ yield period: 1 sec
+ run duration nanos: 0
+ auto-terminated relationships list: []
+ Properties:
+ Batch Size: '100'
+ Data Format: Binary
+ File Size: 0 KB
+ Unique FlowFiles: 'false'
+- id: 779416a4-4ad2-1391-0000-000000000000
+ name: GenerateFlowFile
+ class: org.apache.nifi.processors.standard.GenerateFlowFile
+ max concurrent tasks: 1
+ scheduling strategy: TIMER_DRIVEN
+ scheduling period: 0 sec
+ penalization period: 30 sec
+ yield period: 1 sec
+ run duration nanos: 0
+ auto-terminated relationships list: []
+ Properties:
+ Batch Size: '100'
+ Data Format: Binary
+ File Size: 0 KB
+ Unique FlowFiles: 'false'
+- id: 397a4910-cc01-4c6b-0000-000000000000
+ name: RouteOnAttribute
+ class: org.apache.nifi.processors.standard.RouteOnAttribute
+ max concurrent tasks: 2
+ scheduling strategy: TIMER_DRIVEN
+ scheduling period: 0 sec
+ penalization period: 30 sec
+ yield period: 1 sec
+ run duration nanos: 50000
+ auto-terminated relationships list:
+ - unmatched
+ Properties:
+ Routing Strategy: Route to Property name
+- id: 92557c76-f251-45a4-0000-000000000000
+ name: UpdateAttribute
+ class: org.apache.nifi.processors.attributes.UpdateAttribute
+ max concurrent tasks: 2
+ scheduling strategy: TIMER_DRIVEN
+ scheduling period: 0 sec
+ penalization period: 30 sec
+ yield period: 1 sec
+ run duration nanos: 100000
+ auto-terminated relationships list: []
+ Properties:
+ Delete Attributes Expression:
+ property 1: value 1
+ property 2: value 2 ${nextInt()}
+Process Groups: []
+Input Ports: []
+Output Ports: []
+Funnels:
+- id: 4ad21392-16a4-1794-0000-000000000000
+Connections:
+- id: 4ad21397-16a4-1794-0000-000000000000
+ name: 4ad21392-16a4-1794-0000-000000000000//UpdateAttribute
+ source id: 4ad21392-16a4-1794-0000-000000000000
+ source relationship names: []
+ destination id: 92557c76-f251-45a4-0000-000000000000
+ max work queue size: 10000
+ max work queue data size: 1 GB
+ flowfile expiration: 0 sec
+ queue prioritizer class: ''
+- id: 4ad21393-16a4-1794-0000-000000000000
+ name: GenerateFlowFile/success/4ad21392-16a4-1794-0000-000000000000
+ source id: 16a47794-5391-4ad2-0000-000000000000
+ source relationship names:
+ - success
+ destination id: 4ad21392-16a4-1794-0000-000000000000
+ max work queue size: 10000
+ max work queue data size: 1 GB
+ flowfile expiration: 0 sec
+ queue prioritizer class: ''
+- id: 4ad21394-16a4-1794-0000-000000000000
+ name: GenerateFlowFile/success/4ad21392-16a4-1794-0000-000000000000
+ source id: 53914ad2-7794-16a4-0000-000000000000
+ source relationship names:
+ - success
+ destination id: 4ad21392-16a4-1794-0000-000000000000
+ max work queue size: 10000
+ max work queue data size: 1 GB
+ flowfile expiration: 0 sec
+ queue prioritizer class: ''
+- id: 4ad21395-16a4-1794-0000-000000000000
+ name: GenerateFlowFile/success/4ad21392-16a4-1794-0000-000000000000
+ source id: 779416a4-4ad2-1391-0000-000000000000
+ source relationship names:
+ - success
+ destination id: 4ad21392-16a4-1794-0000-000000000000
+ max work queue size: 10000
+ max work queue data size: 1 GB
+ flowfile expiration: 0 sec
+ queue prioritizer class: ''
+- id: 4ad21396-16a4-1794-0000-000000000000
+ name: GenerateFlowFile/success/4ad21392-16a4-1794-0000-000000000000
+ source id: 4ad21391-16a4-1794-0000-000000000000
+ source relationship names:
+ - success
+ destination id: 4ad21392-16a4-1794-0000-000000000000
+ max work queue size: 10000
+ max work queue data size: 1 GB
+ flowfile expiration: 0 sec
+ queue prioritizer class: ''
+- id: 4c53556e-eb46-458c-0000-000000000000
+ name: UpdateAttribute/success/RouteOnAttribute
+ source id: 92557c76-f251-45a4-0000-000000000000
+ source relationship names:
+ - success
+ destination id: 397a4910-cc01-4c6b-0000-000000000000
+ max work queue size: 2000
+ max work queue data size: 0 MB
+ flowfile expiration: 0 sec
+ queue prioritizer class: org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer
+Remote Process Groups: []
diff --git a/minifi-integration-tests/src/test/resources/standalone/v2/StressTestFramework/yml/expected.json b/minifi-integration-tests/src/test/resources/standalone/v2/StressTestFramework/yml/expected.json
new file mode 100644
index 0000000..5f3740b
--- /dev/null
+++ b/minifi-integration-tests/src/test/resources/standalone/v2/StressTestFramework/yml/expected.json
@@ -0,0 +1,4 @@
+{
+ "pattern": "o.a.n.c.r.StandardProcessSession StandardProcessSession\\[id=.*\\] for RouteOnAttribute\\[id=397a4910-cc01-4c6b-0000-000000000000\\], committed the following events: Transferred FlowFiles \\[.*\\] to 'unmatched'",
+ "occurrences": 20
+}
diff --git a/minifi-integration-tests/src/test/resources/tailFileServer.py b/minifi-integration-tests/src/test/resources/tailFileServer.py
new file mode 100644
index 0000000..bec2ccf
--- /dev/null
+++ b/minifi-integration-tests/src/test/resources/tailFileServer.py
@@ -0,0 +1,61 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the \"License\"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an \"AS IS\" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+#!/usr/bin/env python
+
+import logging
+
+from argparse import ArgumentParser
+from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
+from SocketServer import ThreadingMixIn
+from subprocess import PIPE, Popen
+
+# Needs to be threaded or health check hangs the server
+class ThreadedHTTPServer(ThreadingMixIn, HTTPServer):
+ pass
+
+class TailHTTPRequestHandler(BaseHTTPRequestHandler):
+ def do_GET(self):
+ self.send_response(200)
+ self.send_header('Content-type','text/plain')
+ self.end_headers()
+ p = Popen(['tail', '-f', '-n', '+1', TAIL_FILE], stdout=PIPE)
+ try:
+ for line in iter(p.stdout.readline, b''):
+ self.wfile.write(line)
+ self.wfile.flush()
+ finally:
+ p.kill()
+ return
+
+if __name__ == '__main__':
+ logging.basicConfig(level=logging.DEBUG)
+ parser = ArgumentParser(description='Tail file over http')
+ parser.add_argument('--file')
+ parser.add_argument('--port', type=int, default=8000)
+
+ logging.debug('About to parse arguments')
+ args = parser.parse_args()
+
+ if not args.file:
+ raise Exception('Must specify --file')
+
+ global TAIL_FILE
+ TAIL_FILE = args.file
+
+ logging.debug('Serving tail of ' + TAIL_FILE + ' via HTTP at port ' + str(args.port))
+
+ server = ThreadedHTTPServer(('', args.port), TailHTTPRequestHandler)
+ server.serve_forever()
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 3fa1f2a..7ea5a2c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -40,6 +40,7 @@
<module>minifi-toolkit</module>
<module>minifi-docker</module>
<module>minifi-c2</module>
+ <module>minifi-integration-tests</module>
</modules>
<url>http://nifi.apache.org/minifi</url>