Search in sources :

Example 21 with MockProcessContext

use of org.apache.nifi.util.MockProcessContext in project nifi by apache.

the class ExecuteFlumeSinkTest method testValidators.

@Test
public void testValidators() {
    TestRunner runner = TestRunners.newTestRunner(ExecuteFlumeSink.class);
    Collection<ValidationResult> results;
    ProcessContext pc;
    results = new HashSet<>();
    runner.enqueue(new byte[0]);
    pc = runner.getProcessContext();
    if (pc instanceof MockProcessContext) {
        results = ((MockProcessContext) pc).validate();
    }
    Assert.assertEquals(1, results.size());
    for (ValidationResult vr : results) {
        logger.debug(vr.toString());
        Assert.assertTrue(vr.toString().contains("is invalid because Sink Type is required"));
    }
    // non-existent class
    results = new HashSet<>();
    runner.setProperty(ExecuteFlumeSink.SINK_TYPE, "invalid.class.name");
    runner.enqueue(new byte[0]);
    pc = runner.getProcessContext();
    if (pc instanceof MockProcessContext) {
        results = ((MockProcessContext) pc).validate();
    }
    Assert.assertEquals(1, results.size());
    for (ValidationResult vr : results) {
        logger.debug(vr.toString());
        Assert.assertTrue(vr.toString().contains("is invalid because unable to load sink"));
    }
    // class doesn't implement Sink
    results = new HashSet<>();
    runner.setProperty(ExecuteFlumeSink.SINK_TYPE, AvroSource.class.getName());
    runner.enqueue(new byte[0]);
    pc = runner.getProcessContext();
    if (pc instanceof MockProcessContext) {
        results = ((MockProcessContext) pc).validate();
    }
    Assert.assertEquals(1, results.size());
    for (ValidationResult vr : results) {
        logger.debug(vr.toString());
        Assert.assertTrue(vr.toString().contains("is invalid because unable to create sink"));
    }
    results = new HashSet<>();
    runner.setProperty(ExecuteFlumeSink.SINK_TYPE, NullSink.class.getName());
    runner.enqueue(new byte[0]);
    pc = runner.getProcessContext();
    if (pc instanceof MockProcessContext) {
        results = ((MockProcessContext) pc).validate();
    }
    Assert.assertEquals(0, results.size());
}
Also used : AvroSource(org.apache.flume.source.AvroSource) NullSink(org.apache.flume.sink.NullSink) TestRunner(org.apache.nifi.util.TestRunner) ValidationResult(org.apache.nifi.components.ValidationResult) MockProcessContext(org.apache.nifi.util.MockProcessContext) ProcessContext(org.apache.nifi.processor.ProcessContext) MockProcessContext(org.apache.nifi.util.MockProcessContext) Test(org.junit.Test)

Example 22 with MockProcessContext

use of org.apache.nifi.util.MockProcessContext in project nifi by apache.

the class ExecuteFlumeSourceTest method testValidators.

@Test
public void testValidators() {
    TestRunner runner = TestRunners.newTestRunner(ExecuteFlumeSource.class);
    Collection<ValidationResult> results;
    ProcessContext pc;
    results = new HashSet<>();
    runner.enqueue(new byte[0]);
    pc = runner.getProcessContext();
    if (pc instanceof MockProcessContext) {
        results = ((MockProcessContext) pc).validate();
    }
    Assert.assertEquals(1, results.size());
    for (ValidationResult vr : results) {
        logger.debug(vr.toString());
        Assert.assertTrue(vr.toString().contains("is invalid because Source Type is required"));
    }
    // non-existent class
    results = new HashSet<>();
    runner.setProperty(ExecuteFlumeSource.SOURCE_TYPE, "invalid.class.name");
    runner.enqueue(new byte[0]);
    pc = runner.getProcessContext();
    if (pc instanceof MockProcessContext) {
        results = ((MockProcessContext) pc).validate();
    }
    Assert.assertEquals(1, results.size());
    for (ValidationResult vr : results) {
        logger.debug(vr.toString());
        Assert.assertTrue(vr.toString().contains("is invalid because unable to load source"));
    }
    // class doesn't implement Source
    results = new HashSet<>();
    runner.setProperty(ExecuteFlumeSource.SOURCE_TYPE, NullSink.class.getName());
    runner.enqueue(new byte[0]);
    pc = runner.getProcessContext();
    if (pc instanceof MockProcessContext) {
        results = ((MockProcessContext) pc).validate();
    }
    Assert.assertEquals(1, results.size());
    for (ValidationResult vr : results) {
        logger.debug(vr.toString());
        Assert.assertTrue(vr.toString().contains("is invalid because unable to create source"));
    }
    results = new HashSet<>();
    runner.setProperty(ExecuteFlumeSource.SOURCE_TYPE, AvroSource.class.getName());
    runner.enqueue(new byte[0]);
    pc = runner.getProcessContext();
    if (pc instanceof MockProcessContext) {
        results = ((MockProcessContext) pc).validate();
    }
    Assert.assertEquals(0, results.size());
}
Also used : AvroSource(org.apache.flume.source.AvroSource) NullSink(org.apache.flume.sink.NullSink) TestRunner(org.apache.nifi.util.TestRunner) ValidationResult(org.apache.nifi.components.ValidationResult) ProcessContext(org.apache.nifi.processor.ProcessContext) MockProcessContext(org.apache.nifi.util.MockProcessContext) MockProcessContext(org.apache.nifi.util.MockProcessContext) Test(org.junit.Test)

Example 23 with MockProcessContext

use of org.apache.nifi.util.MockProcessContext in project nifi by apache.

the class TestInvokeJavascript method testScriptDefinedRelationship.

/**
 * Tests a scripted processor written in Javascript reads the first line of text from the flowfiles content and
 * stores the value in an attribute of the outgoing flowfile.
 * Confirms that the scripted processor can return relationships defined in it.
 *
 * @throws Exception Any error encountered while testing
 */
@Test
public void testScriptDefinedRelationship() throws Exception {
    InvokeScriptedProcessor processor = new InvokeScriptedProcessor();
    MockProcessContext context = new MockProcessContext(processor);
    MockProcessorInitializationContext initContext = new MockProcessorInitializationContext(processor, context);
    processor.initialize(initContext);
    context.setProperty(scriptingComponent.getScriptingComponentHelper().SCRIPT_ENGINE, "ECMAScript");
    context.setProperty(ScriptingComponentUtils.SCRIPT_FILE, "target/test/resources/javascript/test_reader.js");
    context.setProperty(ScriptingComponentUtils.MODULES, "target/test/resources/javascript");
    // State Manger is unused, and a null reference is specified
    processor.customValidate(new MockValidationContext(context));
    processor.setup(context);
    Set<Relationship> relationships = processor.getRelationships();
    assertNotNull(relationships);
    assertTrue(relationships.size() > 0);
    boolean found = false;
    for (Relationship relationship : relationships) {
        if (relationship.getName().equals("test")) {
            found = true;
            break;
        }
    }
    assertTrue(found);
}
Also used : MockProcessorInitializationContext(org.apache.nifi.util.MockProcessorInitializationContext) Relationship(org.apache.nifi.processor.Relationship) MockValidationContext(org.apache.nifi.util.MockValidationContext) MockProcessContext(org.apache.nifi.util.MockProcessContext) Test(org.junit.Test)

Example 24 with MockProcessContext

use of org.apache.nifi.util.MockProcessContext in project nifi by apache.

the class TestInvokeJython method testAlwaysInvalid.

/**
 * Tests a script that has a Jython processor that is always invalid.
 *
 * @throws Exception Any error encountered while testing
 */
@Test
public void testAlwaysInvalid() throws Exception {
    final TestRunner runner = TestRunners.newTestRunner(new InvokeScriptedProcessor());
    runner.setValidateExpressionUsage(false);
    runner.setProperty(scriptingComponent.getScriptingComponentHelper().SCRIPT_ENGINE, "python");
    runner.setProperty(ScriptingComponentUtils.SCRIPT_FILE, "target/test/resources/jython/test_invalid.py");
    final Collection<ValidationResult> results = ((MockProcessContext) runner.getProcessContext()).validate();
    Assert.assertEquals(1L, results.size());
    Assert.assertEquals("Never valid.", results.iterator().next().getExplanation());
}
Also used : TestRunner(org.apache.nifi.util.TestRunner) ValidationResult(org.apache.nifi.components.ValidationResult) MockProcessContext(org.apache.nifi.util.MockProcessContext) Test(org.junit.Test)

Example 25 with MockProcessContext

use of org.apache.nifi.util.MockProcessContext in project nifi by apache.

the class GetMongoIT method testValidators.

@Test
public void testValidators() {
    TestRunner runner = TestRunners.newTestRunner(GetMongo.class);
    Collection<ValidationResult> results;
    ProcessContext pc;
    // missing uri, db, collection
    runner.enqueue(new byte[0]);
    pc = runner.getProcessContext();
    results = new HashSet<>();
    if (pc instanceof MockProcessContext) {
        results = ((MockProcessContext) pc).validate();
    }
    Assert.assertEquals(3, results.size());
    Iterator<ValidationResult> it = results.iterator();
    Assert.assertTrue(it.next().toString().contains("is invalid because Mongo URI is required"));
    Assert.assertTrue(it.next().toString().contains("is invalid because Mongo Database Name is required"));
    Assert.assertTrue(it.next().toString().contains("is invalid because Mongo Collection Name is required"));
    // missing query - is ok
    runner.setProperty(AbstractMongoProcessor.URI, MONGO_URI);
    runner.setProperty(AbstractMongoProcessor.DATABASE_NAME, DB_NAME);
    runner.setProperty(AbstractMongoProcessor.COLLECTION_NAME, COLLECTION_NAME);
    runner.enqueue(new byte[0]);
    pc = runner.getProcessContext();
    results = new HashSet<>();
    if (pc instanceof MockProcessContext) {
        results = ((MockProcessContext) pc).validate();
    }
    Assert.assertEquals(0, results.size());
    // invalid query
    runner.setProperty(GetMongo.QUERY, "{a: x,y,z}");
    runner.enqueue(new byte[0]);
    pc = runner.getProcessContext();
    results = new HashSet<>();
    if (pc instanceof MockProcessContext) {
        results = ((MockProcessContext) pc).validate();
    }
    Assert.assertEquals(1, results.size());
    Assert.assertTrue(results.iterator().next().toString().contains("is invalid because"));
    // invalid projection
    runner.setVariable("projection", "{a: x,y,z}");
    runner.setProperty(GetMongo.QUERY, "{a: 1}");
    runner.setProperty(GetMongo.PROJECTION, "{a: z}");
    runner.enqueue(new byte[0]);
    pc = runner.getProcessContext();
    results = new HashSet<>();
    if (pc instanceof MockProcessContext) {
        results = ((MockProcessContext) pc).validate();
    }
    Assert.assertEquals(1, results.size());
    Assert.assertTrue(results.iterator().next().toString().contains("is invalid"));
    // invalid sort
    runner.removeProperty(GetMongo.PROJECTION);
    runner.setProperty(GetMongo.SORT, "{a: x,y,z}");
    runner.enqueue(new byte[0]);
    pc = runner.getProcessContext();
    results = new HashSet<>();
    if (pc instanceof MockProcessContext) {
        results = ((MockProcessContext) pc).validate();
    }
    Assert.assertEquals(1, results.size());
    Assert.assertTrue(results.iterator().next().toString().contains("is invalid"));
}
Also used : TestRunner(org.apache.nifi.util.TestRunner) ValidationResult(org.apache.nifi.components.ValidationResult) MockProcessContext(org.apache.nifi.util.MockProcessContext) ProcessContext(org.apache.nifi.processor.ProcessContext) MockProcessContext(org.apache.nifi.util.MockProcessContext) Test(org.junit.Test)

Aggregations

MockProcessContext (org.apache.nifi.util.MockProcessContext)39 Test (org.junit.Test)35 ValidationResult (org.apache.nifi.components.ValidationResult)25 TestRunner (org.apache.nifi.util.TestRunner)24 ProcessContext (org.apache.nifi.processor.ProcessContext)16 MockProcessorInitializationContext (org.apache.nifi.util.MockProcessorInitializationContext)10 MockValidationContext (org.apache.nifi.util.MockValidationContext)6 HashSet (java.util.HashSet)4 ProcessorInitializationContext (org.apache.nifi.processor.ProcessorInitializationContext)4 Relationship (org.apache.nifi.processor.Relationship)4 ProcessSession (org.apache.nifi.processor.ProcessSession)3 JmsProcessingSummary (org.apache.nifi.processors.standard.util.JmsProcessingSummary)3 Matchers.anyString (org.mockito.Matchers.anyString)3 File (java.io.File)2 IOException (java.io.IOException)2 InputStream (java.io.InputStream)2 MalformedURLException (java.net.MalformedURLException)2 AtomicLong (java.util.concurrent.atomic.AtomicLong)2 NullSink (org.apache.flume.sink.NullSink)2 AvroSource (org.apache.flume.source.AvroSource)2