http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/execute-script-bundle/execute-script-processors/src/test/java/org/apache/nifi/processors/script/TestExecuteScript.java ---------------------------------------------------------------------- diff --git a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/java/org/apache/nifi/processors/script/TestExecuteScript.java b/nar-bundles/execute-script-bundle/execute-script-processors/src/test/java/org/apache/nifi/processors/script/TestExecuteScript.java deleted file mode 100644 index 3a34769..0000000 --- a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/java/org/apache/nifi/processors/script/TestExecuteScript.java +++ /dev/null @@ -1,939 +0,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. - */ -package org.apache.nifi.processors.script; - -import org.apache.nifi.processors.script.ExecuteScript; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -import java.io.File; -import java.io.IOException; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import org.apache.nifi.processor.Relationship; -import org.apache.nifi.util.MockFlowFile; -import org.apache.nifi.util.TestRunner; -import org.apache.nifi.util.TestRunners; - -import org.apache.commons.io.FileUtils; -import org.junit.Before; -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author unattributed - * - */ -public class TestExecuteScript { - - static Logger LOG; - - static { - System.setProperty("org.slf4j.simpleLogger.defaultLogLevel", "info"); - System.setProperty("org.slf4j.simpleLogger.showDateTime", "true"); - System.setProperty("org.slf4j.simpleLogger.log.nifi.processors.script.ExecuteScript", "trace"); - System.setProperty("org.slf4j.simpleLogger.log.nifi.processors.script.TestExecuteScript", "debug"); - System.setProperty("org.slf4j.simpleLogger.log.nifi.processors.AbstractProcessor", "debug"); - LOG = LoggerFactory.getLogger(TestExecuteScript.class); - } - - private TestRunner controller; - - private final String multiline = "Lorem ipsum dolor sit amet,\n" - + "consectetur adipisicing elit,\n" - + "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n" - + "Ut enim ad minim veniam,\n" - + "quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n" - + "Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n" - + "Excepteur sint occaecat cupidatat non proident,\n" - + "sunt in culpa qui officia deserunt mollit anim id est laborum."; - - /** - * Create a mock SingleProcessorController using our processor and pass data - * to it via byte array. Returns the Sink that provides access to any files - * that pass out of the processor - */ - @Before - public void setupEach() throws IOException { - controller = TestRunners.newTestRunner(ExecuteScript.class); - controller.setValidateExpressionUsage(false); - - // copy all scripts to target directory and run from there. some python - // scripts create .class files that end up in src/test/resources. - FileUtils.copyDirectory(new File("src/test/resources"), new File("target/test-scripts")); - } - - // Fail if the specified relationship does not contain exactly one file - // with the expected value - private void assertRelationshipContents(String expected, String relationship) { - controller.assertTransferCount(relationship, 1); - MockFlowFile ff = controller.getFlowFilesForRelationship(relationship).get(0); - ff.assertContentEquals(expected); - } - - // Fail if the specified relationship does not contain specified number of files - // with the expected value - private void assertRelationshipContents(String expected, String relationship, int count) { - controller.assertTransferCount(relationship, count); - MockFlowFile ff = controller.getFlowFilesForRelationship(relationship).get(count - 1); - ff.assertContentEquals(expected); - } - - // //////////////////////////////////// - // General tests - @Test(expected = IllegalArgumentException.class) - public void failOnBadName() { - LOG.info("Supplying bad script file names"); - - // None of these should result in actually setting the property, because they're non-existent / bad files - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "not/really.rb"); - controller.assertNotValid(); - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "fakey/fake.js"); - controller.assertNotValid(); - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "pom.xml"); - controller.assertNotValid(); - } - - // //////////////////////////////////// - // Ruby script tests - @Test - public void testSimpleReadR() { - LOG.info("Ruby script: fail file based on reading contents"); - - controller.enqueue("This stuff is fine".getBytes()); - controller.enqueue(multiline.getBytes()); - - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "target/test-scripts/readTest.rb"); - controller.setThreadCount(2); - controller.run(2); - - assertRelationshipContents(multiline, "failure"); - assertRelationshipContents("This stuff is fine", "success"); - - controller.getFlowFilesForRelationship("success").get(0).assertAttributeEquals("filename", "NewFileNameFromReadTest"); - } - - @Test - public void testParamReadR() { - LOG.info("Ruby script: Failing file based on reading contents"); - - Map<String, String> attrs1 = new HashMap<>(); - attrs1.put("filename", "StuffIsFine.txt"); - Map<String, String> attrs2 = new HashMap<>(); - attrs2.put("filename", "multiline.txt"); - controller.enqueue("This stuff is fine".getBytes(), attrs1); - controller.enqueue(multiline.getBytes(), attrs2); - - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "target/test-scripts/readWithParams.rb"); - controller.setProperty("expr", "rehenderit"); - controller.run(2); - - assertRelationshipContents(multiline, "failure"); - assertRelationshipContents("This stuff is fine", "success"); - } - - @Test - public void testWriteLastLineR() { - LOG.info("Running Ruby script to output last line of file"); - - controller.enqueue(multiline.getBytes()); - - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "target/test-scripts/writeTest.rb"); - controller.run(); - - List<MockFlowFile> files = controller.getFlowFilesForRelationship("success"); - - assertEquals("Process did not generate an output file", 1, files.size()); - - byte[] blob = files.get(0).toByteArray(); - String[] lines = new String(blob).split("\n"); - - assertEquals("File had more than one line", 1, lines.length); - assertEquals("sunt in culpa qui officia deserunt mollit anim id est laborum.", lines[0]); - } - - @Test - public void testWriteOptionalParametersR() { - LOG.info("Ruby script that uses optional parameters"); - - controller.enqueue(multiline.getBytes()); - - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "target/test-scripts/paramTest.rb"); - controller.setProperty("repeat", "3"); - controller.run(); - - List<MockFlowFile> files = controller.getFlowFilesForRelationship("success"); - - assertEquals("Process did not generate an output file", 1, files.size()); - - byte[] blob = files.get(0).toByteArray(); - String[] lines = new String(blob).split("\n"); - - assertEquals("File did not have 3 lines", 3, lines.length); - assertEquals("sunt in culpa qui officia deserunt mollit anim id est laborum.", lines[0]); - } - - @Test - public void testSetupOptionalValidationR() { - LOG.info("Ruby script creating validators for optional properties"); - - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "target/test-scripts/optionalValidators.rb"); - controller.assertNotValid(); - controller.setProperty("int", "abc"); - controller.assertNotValid(); - controller.setProperty("url", "not@valid"); - controller.assertNotValid(); - controller.setProperty("nonEmpty", ""); - controller.assertNotValid(); - - controller.setProperty("int", "123"); - controller.setProperty("url", "http://localhost"); - controller.setProperty("nonEmpty", "abc123"); - controller.assertValid(); - } - - @Test - public void testTwoScriptsSameThreadSameClassName() { - LOG.info("Test 2 different scripts with the same ruby class name"); - - Map<String, String> attrs1 = new HashMap<>(); - attrs1.put("filename", "StuffIsFine.txt"); - Map<String, String> attrs2 = new HashMap<>(); - attrs2.put("filename", "multiline.txt"); - - controller.enqueue("This stuff is fine".getBytes(), attrs1); - controller.enqueue(multiline.getBytes(), attrs2); - - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "target/test-scripts/readWithParams.rb"); - controller.setProperty("expr", "rehenderit"); - controller.run(2); - - assertRelationshipContents(multiline, "failure"); - assertRelationshipContents("This stuff is fine", "success"); - - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "target/test-scripts/optionalValidators.rb"); - controller.assertNotValid(); - controller.setProperty("int", "abc"); - controller.assertNotValid(); - controller.setProperty("url", "not@valid"); - controller.assertNotValid(); - controller.setProperty("nonEmpty", ""); - controller.assertNotValid(); - - controller.setProperty("int", "123"); - controller.setProperty("url", "http://localhost"); - controller.setProperty("nonEmpty", "abc123"); - controller.assertValid(); - } - - @Test - public void testUpdateScriptR() throws Exception { - LOG.info("Test one script with updated class"); - - File testFile = File.createTempFile("script", ".rb"); - File original = new File("target/test-scripts/readWithParams.rb"); - FileUtils.copyFile(original, testFile); - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, testFile.getPath()); - controller.assertValid(); - original = new File("target/test-scripts/optionalValidators.rb"); - FileUtils.copyFile(original, testFile); - controller.setProperty(ExecuteScript.SCRIPT_CHECK_INTERVAL, "5 secs"); - Thread.sleep(6000); - - controller.assertNotValid(); - controller.setProperty("int", "abc"); - controller.assertNotValid(); - controller.setProperty("url", "not@valid"); - controller.assertNotValid(); - controller.setProperty("nonEmpty", ""); - controller.assertNotValid(); - - controller.setProperty("int", "123"); - controller.setProperty("url", "http://localhost"); - controller.setProperty("nonEmpty", "abc123"); - controller.assertValid(); - FileUtils.deleteQuietly(testFile); - } - - @Test - public void testMultiThreadExecR() { - LOG.info("Ruby script 20 threads: Failing file based on reading contents"); - - Map<String, String> attrs1 = new HashMap<>(); - attrs1.put("filename", "StuffIsFine.txt"); - Map<String, String> attrs2 = new HashMap<>(); - attrs2.put("filename", "multiline.txt"); - controller.setThreadCount(20); - for (int i = 0; i < 10; i++) { - controller.enqueue("This stuff is fine".getBytes(), attrs1); - controller.enqueue(multiline.getBytes(), attrs2); - } - - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "target/test-scripts/readWithParams.rb"); - controller.setProperty("expr", "rehenderit"); - controller.run(20); - - controller.assertTransferCount("failure", 10); - controller.assertTransferCount("success", 10); - for (int i = 0; i < 10; i++) { - MockFlowFile ff = controller.getFlowFilesForRelationship("failure").get(i); - ff.assertContentEquals(multiline); - assertTrue(ff.getAttribute("filename").endsWith("modified")); - ff = controller.getFlowFilesForRelationship("success").get(i); - ff.assertContentEquals("This stuff is fine"); - assertTrue(ff.getAttribute("filename").endsWith("modified")); - } - - } - - @Test - public void testManualValidationR() { - LOG.info("Ruby script defining manual validator"); - - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "target/test-scripts/alwaysFail.rb"); - controller.assertNotValid(); - } - - @Test - public void testGetRelationshipsR() { - LOG.info("Ruby script: getRelationships"); - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "target/test-scripts/routeTest.rb"); - // at this point, the script has not been instantiated so the processor simply returns an empty set - Set<Relationship> rels = controller.getProcessor().getRelationships(); - assertEquals(0, rels.size()); - // this will instantiate the script - controller.assertValid(); - // this will call the script - rels = controller.getProcessor().getRelationships(); - assertEquals(3, rels.size()); - } - - @Test - public void testGetExceptionRouteR() { - LOG.info("Ruby script defining route taken in event of exception"); - - controller.enqueue("This stuff is fine".getBytes()); - controller.enqueue("Bad things go to 'b'.".getBytes()); - controller.enqueue(multiline.getBytes()); - - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "target/test-scripts/routeTest.rb"); - - controller.run(3); - - assertRelationshipContents("This stuff is fine", "a"); - assertRelationshipContents("Bad things go to 'b'.", "b"); - assertRelationshipContents(multiline, "c"); - - } - - @Test - public void testSimpleConverterR() { - LOG.info("Running Ruby converter script"); - - for (int i = 0; i < 20; i++) { - controller.enqueue(multiline.getBytes()); - } - - controller.setThreadCount(20); - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "target/test-scripts/simpleConverter.rb"); - controller.run(20); - - List<MockFlowFile> successFiles = controller.getFlowFilesForRelationship("success"); - List<MockFlowFile> failFiles = controller.getFlowFilesForRelationship("failure"); - - assertEquals("Process did not generate 20 SUCCESS files", 20, successFiles.size()); - assertEquals("Process did not generate 20 FAILURE files", 20, failFiles.size()); - - MockFlowFile sFile = successFiles.get(19); - MockFlowFile fFile = failFiles.get(19); - - byte[] blob = fFile.toByteArray(); - String[] lines = new String(blob).split("\n"); - - assertEquals("File had more than one line", 1, lines.length); - assertEquals("Lorem ipsum dolor sit amet,", lines[0]); - - blob = sFile.toByteArray(); - lines = new String(blob).split("\n"); - - assertEquals("SUCCESS had wrong number of lines", 7, lines.length); - assertEquals("consectetur adipisicing elit,", lines[0]); - } - - @Test - public void testLoadLocalR() { - LOG.info("Ruby: load another script file"); - - controller.enqueue("This stuff is fine".getBytes()); - controller.enqueue(multiline.getBytes()); - - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "target/test-scripts/loadLocal.rb"); - controller.run(2); - - assertRelationshipContents(multiline, "failure"); - assertRelationshipContents("This stuff is fine", "success"); - } - - @Test - public void testFlowFileR() { - LOG.info("Ruby: get FlowFile properties"); - - controller.enqueue(multiline.getBytes()); - HashMap<String, String> meta = new HashMap<String, String>(); - meta.put("evict", "yup"); - controller.enqueue("This would be plenty long but it's also evicted.".getBytes(), meta); - controller.enqueue("This is too short".getBytes()); - - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "target/test-scripts/ffTest.rb"); - controller.run(3); - - assertRelationshipContents(multiline, "success"); - assertRelationshipContents("This is too short", "failure"); - assertRelationshipContents("This would be plenty long but it's also evicted.", "evict"); - } - - // //////////////////////////////////// // JS tests - @Test - public void testSimpleReadJS() { - LOG.info("Javascript: fail file based on reading contents"); - - controller.enqueue("This stuff is fine".getBytes()); - controller.enqueue(multiline.getBytes()); - - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "target/test-scripts/readTest.js"); - controller.run(2); - - assertRelationshipContents(multiline, "failure"); - assertRelationshipContents("This stuff is fine", "success"); - } - - @Test - public void testParamReadJS() { - LOG.info("Javascript: read contents and fail based on parameter"); - - controller.enqueue("This stuff is fine".getBytes()); - controller.enqueue(multiline.getBytes()); - - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "target/test-scripts/readWithParams.js"); - controller.setProperty("expr", "sed do"); - controller.run(2); - - assertRelationshipContents(multiline, "failure"); - assertRelationshipContents("This stuff is fine", "success"); - } - - @Test - public void testWriteLastLineJS() { - LOG.info("Running Javascript to output last line of file"); - - controller.enqueue(multiline.getBytes()); - - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "target/test-scripts/writeTest.js"); - controller.run(); - - List<MockFlowFile> sunkFiles = controller.getFlowFilesForRelationship("success"); - - assertEquals("Process did not generate an output file", 1, sunkFiles.size()); - - MockFlowFile sunkFile = sunkFiles.iterator().next(); - byte[] blob = sunkFile.toByteArray(); - String[] lines = new String(blob).split("\n"); - - assertEquals("File had more than one line", 1, lines.length); - assertEquals("sunt in culpa qui officia deserunt mollit anim id est laborum.", lines[0]); - } - - @Test - public void testWriteOptionalParametersJS() { - LOG.info("Javascript processCallback that uses optional parameters"); - - controller.enqueue(multiline.getBytes()); - - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "target/test-scripts/paramTest.js"); - controller.setProperty("repeat", "3"); - controller.run(); - - List<MockFlowFile> sunkFiles = controller.getFlowFilesForRelationship("success"); - - assertEquals("Process did not generate an output file", 1, sunkFiles.size()); - - MockFlowFile sunkFile = sunkFiles.iterator().next(); - byte[] blob = sunkFile.toByteArray(); - String[] lines = new String(blob).split("\n"); - - assertEquals("File did not have 3 lines", 3, lines.length); - assertEquals("sunt in culpa qui officia deserunt mollit anim id est laborum.", lines[0]); - } - - @Test - public void testSetupOptionalValidationJS() { - LOG.info("Javascript creating validators for optional properties"); - - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "target/test-scripts/optionalValidators.js"); - controller.setProperty("int", "abc"); - controller.setProperty("url", "not@valid"); - controller.setProperty("nonEmpty", ""); - assertEquals(2, controller.getProcessor().getPropertyDescriptors().size()); - controller.assertNotValid(); // due to invalid values above - assertEquals(5, controller.getProcessor().getPropertyDescriptors().size()); - - controller.setProperty("int", "123"); - controller.setProperty("url", "http://localhost"); - controller.setProperty("nonEmpty", "abc123"); - assertEquals(5, controller.getProcessor().getPropertyDescriptors().size()); - controller.assertValid(); - } - - @Test - public void testManualValidationJS() { - LOG.info("Javascript defining manual validator"); - - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "target/test-scripts/alwaysFail.js"); - controller.assertNotValid(); - } - - @Test - public void testGetExceptionRouteJS() { - LOG.info("Javascript defining route taken in event of exception"); - - controller.enqueue("This stuff is fine".getBytes()); - controller.enqueue("Bad things go to 'b'.".getBytes()); - controller.enqueue(multiline.getBytes()); - - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "target/test-scripts/routeTest.js"); - - controller.run(3); - - assertRelationshipContents("This stuff is fine", "a"); - assertRelationshipContents("Bad things go to 'b'.", "b"); - assertRelationshipContents(multiline, "c"); - - } - - @Test - public void testSimpleConverterJS() { - LOG.info("Running Javascript converter script"); - - for (int i = 0; i < 20; i++) { - controller.enqueue(multiline.getBytes()); - } - - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "target/test-scripts/simpleConverter.js"); - controller.run(20); - - List<MockFlowFile> successFiles = controller.getFlowFilesForRelationship("success"); - List<MockFlowFile> failFiles = controller.getFlowFilesForRelationship("failure"); - - assertEquals("Process did not generate 20 SUCCESS files", 20, successFiles.size()); - assertEquals("Process did not generate 20 FAILURE file", 20, failFiles.size()); - - MockFlowFile sFile = successFiles.get(19); - MockFlowFile fFile = failFiles.get(0); - - byte[] blob = sFile.toByteArray(); - String[] lines = new String(blob).split("\n"); - - assertEquals("SUCCESS had wrong number of lines", 7, lines.length); - assertTrue(lines[0].startsWith("consectetur adipisicing elit,")); - - blob = fFile.toByteArray(); - lines = new String(blob).split("\n"); - - assertEquals("File had more than one line", 1, lines.length); - assertTrue(lines[0].startsWith("Lorem ipsum dolor sit amet,")); - } - - @Test - public void testLoadLocalJS() { - LOG.info("Javascript: load another script file"); - - controller.enqueue("This stuff is fine".getBytes()); - controller.enqueue(multiline.getBytes()); - - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "target/test-scripts/loadLocal.js"); - controller.run(2); - - assertRelationshipContents(multiline, "failure"); - assertRelationshipContents("This stuff is fine", "success"); - } - - @Test - public void testXMLJS() { - LOG.info("Javascript: native XML parser"); - - controller.enqueue("<a><b foo='bar'>Bad</b><b good='true'>Good</b><b good='false'>Bad</b></a>".getBytes()); - controller.enqueue("<a><b>Hello</b><b>world</b></a>".getBytes()); - - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "target/test-scripts/parseXml.js"); - controller.run(2); - - assertRelationshipContents("Good", "success"); - assertRelationshipContents("<a><b>Hello</b><b>world</b></a>", "failure"); - } - - @Test - public void testFlowFileJS() { - LOG.info("JavaScript: get FlowFile properties"); - - controller.enqueue("This is too short".getBytes()); - controller.enqueue(multiline.getBytes()); - - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "target/test-scripts/ffTest.js"); - controller.run(2); - - assertRelationshipContents(multiline, "success"); - assertRelationshipContents("This is too short", "failure"); - } - - @Test - public void testMultiThreadExecJS() { - LOG.info("JavaScript script 20 threads: Failing file based on reading contents"); - - Map<String, String> attrs1 = new HashMap<>(); - attrs1.put("filename", "StuffIsFine.txt"); - Map<String, String> attrs2 = new HashMap<>(); - attrs2.put("filename", "multiline.txt"); - controller.setThreadCount(20); - for (int i = 0; i < 10; i++) { - controller.enqueue("This stuff is fine".getBytes(), attrs1); - controller.enqueue(multiline.getBytes(), attrs2); - } - - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "target/test-scripts/readWithParams.js"); - controller.setProperty("expr", "rehenderit"); - controller.run(20); - - controller.assertTransferCount("failure", 10); - controller.assertTransferCount("success", 10); - for (int i = 0; i < 10; i++) { - MockFlowFile ff = controller.getFlowFilesForRelationship("failure").get(i); - ff.assertContentEquals(multiline); - assertTrue(ff.getAttribute("filename").endsWith("modified")); - ff = controller.getFlowFilesForRelationship("success").get(i); - ff.assertContentEquals("This stuff is fine"); - assertTrue(ff.getAttribute("filename").endsWith("modified")); - } - } - - @Test - public void testUpdateScriptJS() throws Exception { - LOG.info("Test one script with updated class"); - - File testFile = File.createTempFile("script", ".js"); - File original = new File("target/test-scripts/readWithParams.js"); - FileUtils.copyFile(original, testFile); - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, testFile.getPath()); - controller.assertValid(); - original = new File("target/test-scripts/optionalValidators.js"); - FileUtils.copyFile(original, testFile); - controller.setProperty(ExecuteScript.SCRIPT_CHECK_INTERVAL, "5 secs"); - Thread.sleep(6000); - - controller.assertNotValid(); - controller.setProperty("int", "abc"); - controller.assertNotValid(); - controller.setProperty("url", "not@valid"); - controller.assertNotValid(); - controller.setProperty("nonEmpty", ""); - controller.assertNotValid(); - - controller.setProperty("int", "123"); - controller.setProperty("url", "http://localhost"); - controller.setProperty("nonEmpty", "abc123"); - controller.assertValid(); - FileUtils.deleteQuietly(testFile); - } - - // ////////////////////////////////// // Python script tests - @Test - public void testSimpleReadP() { - LOG.info("Python script: fail file based on reading contents"); - - for (int i = 0; i < 20; i++) { - Map<String, String> attr1 = new HashMap<>(); - attr1.put("filename", "FineStuff"); - attr1.put("counter", Integer.toString(i)); - Map<String, String> attr2 = new HashMap<>(); - attr2.put("filename", "MultiLine"); - attr2.put("counter", Integer.toString(i)); - controller.enqueue("This stuff is fine".getBytes(), attr1); - controller.enqueue(multiline.getBytes(), attr2); - } - - controller.setThreadCount(40); - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "target/test-scripts/readTest.py"); - controller.run(40); - - assertRelationshipContents(multiline, "failure", 20); - assertRelationshipContents("This stuff is fine", "success", 20); - - List<MockFlowFile> fails = controller.getFlowFilesForRelationship("failure"); - List<MockFlowFile> successes = controller.getFlowFilesForRelationship("success"); - for (int i = 0; i < 20; i++) { - assertTrue(fails.get(i).getAttribute("filename").matches("^.*\\d+$")); - assertTrue(successes.get(i).getAttribute("filename").matches("^.*\\d+$")); - } - } - - @Test - public void testParamReadP() { - LOG.info("Python script: read contents and fail based on parameter"); - - controller.enqueue("This stuff is fine".getBytes()); - controller.enqueue(multiline.getBytes()); - - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "target/test-scripts/readWithParams.py"); - controller.setProperty("expr", "sed do"); - controller.run(2); - - assertRelationshipContents(multiline, "failure"); - assertRelationshipContents("This stuff is fine", "success"); - } - - @Test - public void testWriteLastLineP() { - LOG.info("Running Python script to output last line of file"); - - controller.enqueue(multiline.getBytes()); - - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "target/test-scripts/writeTest.py"); - controller.run(); - - List<MockFlowFile> sunkFiles = controller.getFlowFilesForRelationship("success"); - - assertEquals("Process did not generate an output file", 1, sunkFiles.size()); - - MockFlowFile sunkFile = sunkFiles.iterator().next(); - byte[] blob = sunkFile.toByteArray(); - String[] lines = new String(blob).split("\n"); - - assertEquals("File had more than one line", 1, lines.length); - assertEquals("sunt in culpa qui officia deserunt mollit anim id est laborum.", lines[0]); - } - - @Test - public void testWriteOptionalParametersP() { - LOG.info("Python script processCallback that uses optional parameters"); - - controller.enqueue(multiline.getBytes()); - - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "target/test-scripts/paramTest.py"); - controller.setProperty("repeat", "3"); - controller.run(); - - List<MockFlowFile> sunkFiles = controller.getFlowFilesForRelationship("success"); - - assertEquals("Process did not generate an output file", 1, sunkFiles.size()); - - MockFlowFile sunkFile = sunkFiles.iterator().next(); - byte[] blob = sunkFile.toByteArray(); - String[] lines = new String(blob).split("\n"); - - assertEquals("File did not have 3 lines", 3, lines.length); - assertTrue(lines[2].startsWith("sunt in culpa qui officia deserunt mollit anim id est laborum.")); - } - - @Test - public void testManualValidationP() { - LOG.info("Python defining manual validator"); - - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "target/test-scripts/alwaysFail.py"); - controller.assertNotValid(); - } - - @Test - public void testSetupOptionalValidationP() { - LOG.info("Python script creating validators for optional properties"); - - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "target/test-scripts/optionalValidators.py"); - controller.setProperty("int", "abc"); - controller.setProperty("url", "not@valid"); - controller.setProperty("nonEmpty", ""); - assertEquals(2, controller.getProcessor().getPropertyDescriptors().size()); - controller.assertNotValid(); - - controller.setProperty("int", "123"); - controller.setProperty("url", "http://localhost"); - controller.setProperty("nonEmpty", "abc123"); - assertEquals(5, controller.getProcessor().getPropertyDescriptors().size()); - controller.assertValid(); - } - - @Test - public void testGetExceptionRouteP() { - LOG.info("Python script defining route taken in event of exception"); - - controller.enqueue("This stuff is fine".getBytes()); - controller.enqueue("Bad things go to 'b'.".getBytes()); - controller.enqueue(multiline.getBytes()); - - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "target/test-scripts/routeTest.py"); - - // Don't put the error in the logs - // TestableAppender ta = new TestableAppender(); - // ta.attach(Logger.getLogger(ExecuteScript.class)); - controller.run(3); - // ta.detach(); - - assertRelationshipContents("This stuff is fine", "a"); - assertRelationshipContents("Bad things go to 'b'.", "b"); - assertRelationshipContents(multiline, "c"); - - // ta.assertFound("threw exception"); - } - - @Test - public void testLoadLocalP() throws Exception { - - final Thread t = new Thread(new Runnable() { - @Override - public void run() { - try { - testGetExceptionRouteP(); - setupEach(); - } catch (Exception e) { - - } - } - }); - - t.start(); - t.join(); - - LOG.info("Python: load another script file"); - - controller.enqueue("This stuff is fine".getBytes()); - controller.enqueue(multiline.getBytes()); - - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "target/test-scripts/loadLocal.py"); - controller.run(2); - - assertRelationshipContents(multiline, "failure"); - assertRelationshipContents("This stuff is fine", "success"); - } - - @Test - public void testSimpleConverterP() { - LOG.info("Running Python converter script"); - - for (int i = 0; i < 20; i++) { - controller.enqueue(multiline.getBytes()); - } - - controller.setThreadCount(20); - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "target/test-scripts/simpleConverter.py"); - controller.run(20); - - List<MockFlowFile> successFiles = controller.getFlowFilesForRelationship("success"); - List<MockFlowFile> failFiles = controller.getFlowFilesForRelationship("failure"); - - assertEquals("Process did not generate 20 SUCCESS files", 20, successFiles.size()); - assertEquals("Process did not generate 20 FAILURE files", 20, failFiles.size()); - - MockFlowFile sFile = successFiles.iterator().next(); - MockFlowFile fFile = failFiles.iterator().next(); - - byte[] blob = sFile.toByteArray(); - String[] lines = new String(blob).split("\n"); - - assertEquals("SUCCESS had wrong number of lines", 7, lines.length); - assertTrue(lines[0].startsWith("consectetur adipisicing elit,")); - - blob = fFile.toByteArray(); - lines = new String(blob).split("\n"); - - assertEquals("File had more than one line", 1, lines.length); - assertTrue(lines[0].startsWith("Lorem ipsum dolor sit amet,")); - } - - @Test - public void testFlowFileP() { - LOG.info("Python: get FlowFile properties"); - - controller.enqueue("This is too short".getBytes()); - controller.enqueue(multiline.getBytes()); - - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "target/test-scripts/ffTest.py"); - controller.run(2); - - assertRelationshipContents(multiline, "success"); - assertRelationshipContents("This is too short", "failure"); - } - - @Test - public void testMultiThreadExecP() { - LOG.info("Pthon script 20 threads: Failing file based on reading contents"); - - Map<String, String> attrs1 = new HashMap<>(); - attrs1.put("filename", "StuffIsFine.txt"); - Map<String, String> attrs2 = new HashMap<>(); - attrs2.put("filename", "multiline.txt"); - for (int i = 0; i < 10; i++) { - controller.enqueue("This stuff is fine".getBytes(), attrs1); - controller.enqueue(multiline.getBytes(), attrs2); - } - - controller.setThreadCount(20); - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, "target/test-scripts/readWithParams.py"); - controller.setProperty("expr", "sed do"); - controller.run(20); - - controller.assertTransferCount("failure", 10); - controller.assertTransferCount("success", 10); - for (int i = 0; i < 10; i++) { - MockFlowFile ff = controller.getFlowFilesForRelationship("failure").get(i); - ff.assertContentEquals(multiline); - assertTrue(ff.getAttribute("filename").endsWith("modified")); - ff = controller.getFlowFilesForRelationship("success").get(i); - ff.assertContentEquals("This stuff is fine"); - assertTrue(ff.getAttribute("filename").endsWith("modified")); - } - } - - @Test - public void testUpdateScriptP() throws Exception { - LOG.info("Test one script with updated class"); - - File testFile = File.createTempFile("script", ".py"); - File original = new File("target/test-scripts/readTest.py"); - FileUtils.copyFile(original, testFile); - controller.setProperty(ExecuteScript.SCRIPT_FILE_NAME, testFile.getPath()); - controller.assertValid(); - original = new File("target/test-scripts/readWithParams.py"); - FileUtils.copyFile(original, testFile); - controller.setProperty(ExecuteScript.SCRIPT_CHECK_INTERVAL, "5 secs"); - Thread.sleep(6000); - - controller.assertNotValid(); // need to set 'expr' - controller.setProperty("int", "abc"); - controller.assertNotValid(); - controller.setProperty("url", "not@valid"); - controller.assertNotValid(); - controller.setProperty("nonEmpty", ""); - controller.assertNotValid(); - - controller.setProperty("expr", "sed do"); - controller.assertValid(); - assertEquals(6, controller.getProcessContext().getProperties().size()); - FileUtils.deleteQuietly(testFile); - } - -}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/alwaysFail.js ---------------------------------------------------------------------- diff --git a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/alwaysFail.js b/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/alwaysFail.js deleted file mode 100644 index 40f038d..0000000 --- a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/alwaysFail.js +++ /dev/null @@ -1,24 +0,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. - */ -with (Scripting) { - var instance = new ReaderScript({ - validate: function () { - return ["This will never work."]; - } - }); -} - http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/alwaysFail.py ---------------------------------------------------------------------- diff --git a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/alwaysFail.py b/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/alwaysFail.py deleted file mode 100644 index 4b744ab..0000000 --- a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/alwaysFail.py +++ /dev/null @@ -1,19 +0,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. -# type(name, superclass_tuple, member_dict) is a shorthand for defining an -# anonymous class. Note the trailing parens (), because scriptBuilder must -# return an *instance* of the class. -instance = type("FailingReader", (ReaderScript, object),\ - {"validate": lambda self : ["I am broken"]})() \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/alwaysFail.rb ---------------------------------------------------------------------- diff --git a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/alwaysFail.rb b/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/alwaysFail.rb deleted file mode 100644 index 076cdfa..0000000 --- a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/alwaysFail.rb +++ /dev/null @@ -1,21 +0,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. -class NeverSatisfied < ReaderScript - def validate - return ["This is supposed to fail"] - end -end - -NeverSatisfied.new http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/ffTest.js ---------------------------------------------------------------------- diff --git a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/ffTest.js b/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/ffTest.js deleted file mode 100644 index d40623e..0000000 --- a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/ffTest.js +++ /dev/null @@ -1,28 +0,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. - */ -with (Scripting) { - var instance = new ReaderScript({ - route: function (input) { - if (instance.getFlowFileSize() < 20) { - return Script.FAIL_RELATIONSHIP; - } else { - return Script.SUCCESS_RELATIONSHIP; - } - } - }); - -} http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/ffTest.py ---------------------------------------------------------------------- diff --git a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/ffTest.py b/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/ffTest.py deleted file mode 100644 index f4deb22..0000000 --- a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/ffTest.py +++ /dev/null @@ -1,22 +0,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. -class SimpleJythonReader(ReaderScript): - def route(self, input): - if self.getFlowFileSize() < 20 : return self.FAIL_RELATIONSHIP - - return self.SUCCESS_RELATIONSHIP - - -instance = SimpleJythonReader() http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/ffTest.rb ---------------------------------------------------------------------- diff --git a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/ffTest.rb b/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/ffTest.rb deleted file mode 100644 index 0435ea7..0000000 --- a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/ffTest.rb +++ /dev/null @@ -1,30 +0,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. -class SimpleJRubyReader < ReaderScript - field_reader :FAIL_RELATIONSHIP, :SUCCESS_RELATIONSHIP - - def getRelationships - @@evict = Relationship::Builder.new.name("evict").description("some evicted stuff").build() - [FAIL_RELATIONSHIP, SUCCESS_RELATIONSHIP, @@evict] - end - - def route( input ) - return FAIL_RELATIONSHIP if getFlowFileSize < 20 - return @@evict if !getAttribute("evict").nil? - return SUCCESS_RELATIONSHIP - end -end - -SimpleJRubyReader.new http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/lib/Sub.py ---------------------------------------------------------------------- diff --git a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/lib/Sub.py b/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/lib/Sub.py deleted file mode 100644 index 827816c..0000000 --- a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/lib/Sub.py +++ /dev/null @@ -1,18 +0,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. -class TestFilter: - def notAllowed(self): - return "^sed" - \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/lib/sub.js ---------------------------------------------------------------------- diff --git a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/lib/sub.js b/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/lib/sub.js deleted file mode 100644 index 489036a..0000000 --- a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/lib/sub.js +++ /dev/null @@ -1,22 +0,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. - */ -function notAllowed() { // Works for eval(readFile(...)) - return /sed do/i; -} - -exports.notAllowed = notAllowed; // Works for require(...) - http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/lib/sub.rb ---------------------------------------------------------------------- diff --git a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/lib/sub.rb b/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/lib/sub.rb deleted file mode 100644 index 775aad4..0000000 --- a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/lib/sub.rb +++ /dev/null @@ -1,17 +0,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. -def notAllowed - return /^sed/i -end \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/loadLocal.js ---------------------------------------------------------------------- diff --git a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/loadLocal.js b/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/loadLocal.js deleted file mode 100644 index 39396ab..0000000 --- a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/loadLocal.js +++ /dev/null @@ -1,30 +0,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. - */ -var sub = require("lib/sub.js"); - -with (Scripting) { - var instance = new ReaderScript({ - route: function (input) { - var str = IOUtils.toString(input); - if (str.match(sub.notAllowed())) { - return Script.FAIL_RELATIONSHIP; - } else { - return Script.SUCCESS_RELATIONSHIP; - } - } - }); -} http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/loadLocal.py ---------------------------------------------------------------------- diff --git a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/loadLocal.py b/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/loadLocal.py deleted file mode 100644 index 2429ea2..0000000 --- a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/loadLocal.py +++ /dev/null @@ -1,26 +0,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. -import re -from Sub import TestFilter -class SimpleJythonReader(ReaderScript): - def route(self, input): - tf = TestFilter() - for line in FileUtil.wrap(input): - if re.match(tf.notAllowed(),line): return self.FAIL_RELATIONSHIP - - return self.SUCCESS_RELATIONSHIP - - -instance = SimpleJythonReader() http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/loadLocal.rb ---------------------------------------------------------------------- diff --git a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/loadLocal.rb b/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/loadLocal.rb deleted file mode 100644 index f1b3ec5..0000000 --- a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/loadLocal.rb +++ /dev/null @@ -1,29 +0,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. -require 'sub' - -class SimpleJRubyReader < ReaderScript - field_reader :FAIL_RELATIONSHIP, :SUCCESS_RELATIONSHIP - - def route( input ) - input.to_io.each_line do |line| - return FAIL_RELATIONSHIP if line.match notAllowed - end - - return SUCCESS_RELATIONSHIP - end -end - -SimpleJRubyReader.new http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/log4j.xml ---------------------------------------------------------------------- diff --git a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/log4j.xml b/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/log4j.xml deleted file mode 100644 index d984dff..0000000 --- a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/log4j.xml +++ /dev/null @@ -1,54 +0,0 @@ -<?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. ---> -<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> - -<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> - <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"> - <param name="Target" value="System.out"/> - <param name="Threshold" value="DEBUG"/> - - <layout class="org.apache.log4j.PatternLayout"> - <param name="ConversionPattern" value="%d{MM-dd-yy HH:mm:ss.SSS} %-5p %c{2} %x - %m%n"/> - </layout> - - </appender> - - <logger name="org.nifi.model.processor.FlowFileProcessor" additivity="false"> - <level value="INFO"/> - <appender-ref ref="CONSOLE"/> - </logger> - - <logger name="junit.TestableAppender" additivity="false"> - <level value="TRACE"/> - <appender-ref ref="CONSOLE"/> - </logger> - - <logger name="org.nifi.model.processor.impl.ScriptRunnerProcessor" additivity="false"> - <level value="WARN"/> - <appender-ref ref="CONSOLE"/> - </logger> - - <logger name="org.nifi.model.processor.impl.ScriptRunnerProcessorTest" additivity="false"> - <level value="INFO"/> - <appender-ref ref="CONSOLE"/> - </logger> - - <root> - <level value="INFO"/> - <appender-ref ref="CONSOLE" /> - </root> - -</log4j:configuration> http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/optionalValidators.js ---------------------------------------------------------------------- diff --git a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/optionalValidators.js b/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/optionalValidators.js deleted file mode 100644 index cf7c551..0000000 --- a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/optionalValidators.js +++ /dev/null @@ -1,28 +0,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. - */ -with (Scripting) { - var instance = new WriterScript({ - getPropertyDescriptors: function () { - i = new PropertyDescriptor.Builder().name("int").description("an int").required(true).addValidator(StandardValidators.POSITIVE_INTEGER_VALIDATOR).build(); - u = new PropertyDescriptor.Builder().name("url").description("a url").required(true).addValidator(StandardValidators.URL_VALIDATOR).build(); - s = new PropertyDescriptor.Builder().name("nonEmpty").description("a non empty property").required(true).addValidator(StandardValidators.NON_EMPTY_VALIDATOR).build(); - return [i, u, s]; - } - }); - -} - http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/optionalValidators.py ---------------------------------------------------------------------- diff --git a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/optionalValidators.py b/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/optionalValidators.py deleted file mode 100644 index 9f1a43d..0000000 --- a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/optionalValidators.py +++ /dev/null @@ -1,22 +0,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. -class SimpleJythonReader(ReaderScript): - def getPropertyDescriptors( self ): - nev = PropertyDescriptor.Builder().name("nonEmpty").required(1).addValidator(StandardValidators.NON_EMPTY_VALIDATOR).build() - iv = PropertyDescriptor.Builder().name("int").required(1).addValidator(StandardValidators.POSITIVE_INTEGER_VALIDATOR).build() - uv = PropertyDescriptor.Builder().name("url").required(1).addValidator(StandardValidators.URL_VALIDATOR).build() - return [nev, iv, uv] - -instance = SimpleJythonReader() http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/optionalValidators.rb ---------------------------------------------------------------------- diff --git a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/optionalValidators.rb b/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/optionalValidators.rb deleted file mode 100644 index 3fa53b4..0000000 --- a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/optionalValidators.rb +++ /dev/null @@ -1,39 +0,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. -class SimpleJRubyReader < ReaderScript - field_reader :FAIL_RELATIONSHIP, :SUCCESS_RELATIONSHIP, :logger - - def getPropertyDescriptors - logger.debug("Defining descriptors"); - i = StandardValidators::INTEGER_VALIDATOR - u = StandardValidators::URL_VALIDATOR - s = StandardValidators::NON_EMPTY_VALIDATOR - intPropDesc = PropertyDescriptor::Builder.new().name("int").required(true).addValidator(i).build() - urlPropDesc = PropertyDescriptor::Builder.new().name("url").required(true).addValidator(u).build() - nonEmptyPropDesc = PropertyDescriptor::Builder.new().name("nonEmpty").addValidator(s).build() - return [intPropDesc, urlPropDesc, nonEmptyPropDesc] - end - - def route( input ) - logger.debug("Routing input"); - input.to_io.each_line do |line| - return FAIL_RELATIONSHIP if line.match /^sed/i - end - - return SUCCESS_RELATIONSHIP - end -end -$logger.debug("Creating SimpleJRubyReader with props" + @properties.to_s) -SimpleJRubyReader.new \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/paramTest.js ---------------------------------------------------------------------- diff --git a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/paramTest.js b/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/paramTest.js deleted file mode 100644 index c00537a..0000000 --- a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/paramTest.js +++ /dev/null @@ -1,28 +0,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. - */ -with (Scripting) { - var instance = new WriterScript({ - process: function (input, output) { - var str = IOUtils.toString(input); - var last = str.split("\n").pop() + "\n"; - for (var i = 0; i < instance.getProperty("repeat"); i++) { - IOUtils.write(last, output); - } - output.flush(); - } - }); -} http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/paramTest.py ---------------------------------------------------------------------- diff --git a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/paramTest.py b/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/paramTest.py deleted file mode 100644 index 3495e4a..0000000 --- a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/paramTest.py +++ /dev/null @@ -1,26 +0,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. -class ParamUsingWriter(WriterScript): - def process ( self, input, output ): - last = FileUtil.wrap(input).readlines()[-1] + '\n' - writer = FileUtil.wrap(output) - times = int(self.getProperty("repeat")) - lines = [last] * times - - writer.writelines(lines) - - writer.close() - -instance = ParamUsingWriter() http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/paramTest.rb ---------------------------------------------------------------------- diff --git a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/paramTest.rb b/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/paramTest.rb deleted file mode 100644 index 7c2eb23..0000000 --- a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/paramTest.rb +++ /dev/null @@ -1,31 +0,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. -class ParamUsingWriter < WriterScript - def process ( input, output ) - reader = input.to_io - writer = output.to_io - - last = reader.readlines.last - - getProperty("repeat").to_i.times do - writer << last + "\n" - end - - writer.close - reader.close - end -end - -ParamUsingWriter.new http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/parseXml.js ---------------------------------------------------------------------- diff --git a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/parseXml.js b/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/parseXml.js deleted file mode 100644 index 901e158..0000000 --- a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/parseXml.js +++ /dev/null @@ -1,36 +0,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. - */ -with (Scripting) { - var instance = new WriterScript({ - process: function (istream, ostream) { - var str = IOUtils.toString(istream); - var obj = new XML(str); - print(obj) - var good = obj.b.(@good == "true"); - if (good.length() == 0) { - instance.setRoute(Script.FAIL_RELATIONSHIP); - IOUtils.write(str, ostream); - } else { - instance.setRoute(Script.SUCCESS_RELATIONSHIP); - for each (var goodStr in good) { - IOUtils.write(goodStr, ostream); - } - } - ostream.flush(); - } - }); -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/readTest.js ---------------------------------------------------------------------- diff --git a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/readTest.js b/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/readTest.js deleted file mode 100644 index f5d3ecc..0000000 --- a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/readTest.js +++ /dev/null @@ -1,30 +0,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. - */ -with (Scripting) { - - var instance = new ReaderScript({ - route: function (input) { - str = IOUtils.toString(input); - if (str.match(/sed do/i)) { - return Script.FAIL_RELATIONSHIP; - } else { - return Script.SUCCESS_RELATIONSHIP; - } - } - }); - logger.debug("Got a logger and properties" + properties); -} http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/readTest.py ---------------------------------------------------------------------- diff --git a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/readTest.py b/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/readTest.py deleted file mode 100644 index 91e6ca7..0000000 --- a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/readTest.py +++ /dev/null @@ -1,32 +0,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. -import os, re, subprocess - -class SimpleJythonReader(ReaderScript): - def route(self, input): - logger.info("In route") - returnid = os.system("c:\\cygwin\\bin\\echo GOOD") - fname = self.getAttribute("filename") - counter = self.getAttribute("counter") - fname = fname + '.' + counter - self.setAttribute("filename", fname) - for line in FileUtil.wrap(input): - if re.match("^sed",line): return self.FAIL_RELATIONSHIP - - return self.SUCCESS_RELATIONSHIP - - - -instance = SimpleJythonReader() http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/readTest.rb ---------------------------------------------------------------------- diff --git a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/readTest.rb b/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/readTest.rb deleted file mode 100644 index c10765d..0000000 --- a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/readTest.rb +++ /dev/null @@ -1,30 +0,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. -class SimpleJRubyReader < ReaderScript - field_reader :FAIL_RELATIONSHIP, :SUCCESS_RELATIONSHIP, :logger, :attributes - - def route( input ) - logger.info("Route Input") - input.to_io.each_line do |line| - return FAIL_RELATIONSHIP if line.match /^sed/i - end - - attributes.put("filename", "NewFileNameFromReadTest") - return SUCCESS_RELATIONSHIP - end -end -$logger.info("Logger is made available in shared variables...however, the SimpleJRubyReader.logger is not set till after this script returns") - -SimpleJRubyReader.new http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/readWithParams.js ---------------------------------------------------------------------- diff --git a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/readWithParams.js b/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/readWithParams.js deleted file mode 100644 index e34ad5f..0000000 --- a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/readWithParams.js +++ /dev/null @@ -1,32 +0,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. - */ -with (Scripting) { - var instance = new ReaderScript({ - route: function (input) { - var str = IOUtils.toString(input); - var expr = instance.getProperty("expr"); - filename = instance.attributes.get("filename"); - instance.setAttribute("filename", filename + ".modified"); - if (str.match(expr)) { - return Script.FAIL_RELATIONSHIP; - } else { - return Script.SUCCESS_RELATIONSHIP; - } - } - }); -} - http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/readWithParams.py ---------------------------------------------------------------------- diff --git a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/readWithParams.py b/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/readWithParams.py deleted file mode 100644 index 23e55af..0000000 --- a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/readWithParams.py +++ /dev/null @@ -1,32 +0,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. -import re - -class SimpleJythonReader(ReaderScript): - def getPropertyDescriptors( self ): - nev = StandardValidators.NON_EMPTY_VALIDATOR - return [PropertyDescriptor.Builder().name("expr").required(1).addValidator(nev).build()] - - def route( self, input ): - expr = self.getProperty("expr") - filename = self.getAttribute("filename") - self.setAttribute("filename", filename + ".modified") - for line in FileUtil.wrap(input): - if re.match(expr, line): return self.FAIL_RELATIONSHIP - - return self.SUCCESS_RELATIONSHIP - -instance = SimpleJythonReader() - http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/readWithParams.rb ---------------------------------------------------------------------- diff --git a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/readWithParams.rb b/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/readWithParams.rb deleted file mode 100644 index 308b652..0000000 --- a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/readWithParams.rb +++ /dev/null @@ -1,33 +0,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. -class SimpleJRubyReader < ReaderScript - field_reader :FAIL_RELATIONSHIP, :SUCCESS_RELATIONSHIP, :properties, :attributes - - def route( input ) - expr = properties.get "expr" - raise "Must specify the 'expr' property!" if expr.nil? - filename = attributes.get "filename" - setAttribute("filename", filename + ".modified") - input.to_io.each_line do |line| - return FAIL_RELATIONSHIP if line.match expr - end - - return SUCCESS_RELATIONSHIP - end -end - -$logger.debug("Can access logger and properties via shared instance variables...props = " + @properties.to_s) -SimpleJRubyReader.new - http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/routeTest.js ---------------------------------------------------------------------- diff --git a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/routeTest.js b/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/routeTest.js deleted file mode 100644 index 47ef546..0000000 --- a/nar-bundles/execute-script-bundle/execute-script-processors/src/test/resources/routeTest.js +++ /dev/null @@ -1,41 +0,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. - */ -with (Scripting) { - var a = new Relationship.Builder().name("a").description("some good stuff").build() - var b = new Relationship.Builder().name("b").description("some other stuff").build() - var c = new Relationship.Builder().name("c").description("some bad stuff").build() - var instance = new ReaderScript({ - getExceptionRoute: function () { - return c; - }, - getRelationships: function () { - return [a, b, c]; - }, - route: function (input) { - var str = IOUtils.toString(input); - var lines = str.split("\n"); - for (var line in lines) { - if (lines[line].match(/^bad/i)) { - return b; - } else if (lines[line].match(/^sed/i)) { - throw "That's no good!"; - } - } - return a; - } - }); -}