Search in sources :

Example 1 with FailOnScheduledProcessor

use of org.apache.nifi.controller.scheduling.processors.FailOnScheduledProcessor in project nifi by apache.

the class TestStandardProcessScheduler method testProcessorThrowsExceptionOnScheduledRetry.

// Test that if processor throws Exception in @OnScheduled, it keeps getting scheduled
@Test(timeout = 10000)
public void testProcessorThrowsExceptionOnScheduledRetry() throws InterruptedException {
    final FailOnScheduledProcessor proc = new FailOnScheduledProcessor();
    proc.setDesiredFailureCount(3);
    proc.initialize(new StandardProcessorInitializationContext(UUID.randomUUID().toString(), null, null, null, nifiProperties));
    final ReloadComponent reloadComponent = Mockito.mock(ReloadComponent.class);
    final LoggableComponent<Processor> loggableComponent = new LoggableComponent<>(proc, systemBundle.getBundleDetails().getCoordinate(), null);
    final ProcessorNode procNode = new StandardProcessorNode(loggableComponent, UUID.randomUUID().toString(), new StandardValidationContextFactory(controller, variableRegistry), scheduler, controller, nifiProperties, new StandardComponentVariableRegistry(VariableRegistry.EMPTY_REGISTRY), reloadComponent);
    rootGroup.addProcessor(procNode);
    scheduler.startProcessor(procNode, true);
    while (!proc.isSucceess()) {
        Thread.sleep(5L);
    }
    assertEquals(3, proc.getOnScheduledInvocationCount());
}
Also used : FailOnScheduledProcessor(org.apache.nifi.controller.scheduling.processors.FailOnScheduledProcessor) Processor(org.apache.nifi.processor.Processor) FailOnScheduledProcessor(org.apache.nifi.controller.scheduling.processors.FailOnScheduledProcessor) AbstractProcessor(org.apache.nifi.processor.AbstractProcessor) StandardProcessorNode(org.apache.nifi.controller.StandardProcessorNode) ProcessorNode(org.apache.nifi.controller.ProcessorNode) StandardComponentVariableRegistry(org.apache.nifi.registry.variable.StandardComponentVariableRegistry) StandardProcessorInitializationContext(org.apache.nifi.processor.StandardProcessorInitializationContext) ReloadComponent(org.apache.nifi.controller.ReloadComponent) StandardValidationContextFactory(org.apache.nifi.processor.StandardValidationContextFactory) LoggableComponent(org.apache.nifi.controller.LoggableComponent) StandardProcessorNode(org.apache.nifi.controller.StandardProcessorNode) Test(org.junit.Test)

Example 2 with FailOnScheduledProcessor

use of org.apache.nifi.controller.scheduling.processors.FailOnScheduledProcessor in project nifi by apache.

the class TestStandardProcessScheduler method testProcessorTimeOutNoResponseToInterrupt.

// Test that if processor times out in the @OnScheduled and does not respond to interrupt, it is not scheduled again
@Test(timeout = 10000)
public void testProcessorTimeOutNoResponseToInterrupt() throws InterruptedException {
    final FailOnScheduledProcessor proc = new FailOnScheduledProcessor();
    proc.setDesiredFailureCount(0);
    proc.setOnScheduledSleepDuration(20, TimeUnit.MINUTES, false, 1);
    proc.initialize(new StandardProcessorInitializationContext(UUID.randomUUID().toString(), null, null, null, nifiProperties));
    final ReloadComponent reloadComponent = Mockito.mock(ReloadComponent.class);
    final LoggableComponent<Processor> loggableComponent = new LoggableComponent<>(proc, systemBundle.getBundleDetails().getCoordinate(), null);
    final ProcessorNode procNode = new StandardProcessorNode(loggableComponent, UUID.randomUUID().toString(), new StandardValidationContextFactory(controller, variableRegistry), scheduler, controller, nifiProperties, new StandardComponentVariableRegistry(VariableRegistry.EMPTY_REGISTRY), reloadComponent);
    rootGroup.addProcessor(procNode);
    scheduler.startProcessor(procNode, true);
    Thread.sleep(100L);
    assertEquals(1, proc.getOnScheduledInvocationCount());
    Thread.sleep(100L);
    assertEquals(1, proc.getOnScheduledInvocationCount());
    // Allow test to complete.
    proc.setAllowSleepInterrupt(true);
}
Also used : FailOnScheduledProcessor(org.apache.nifi.controller.scheduling.processors.FailOnScheduledProcessor) Processor(org.apache.nifi.processor.Processor) FailOnScheduledProcessor(org.apache.nifi.controller.scheduling.processors.FailOnScheduledProcessor) AbstractProcessor(org.apache.nifi.processor.AbstractProcessor) StandardProcessorNode(org.apache.nifi.controller.StandardProcessorNode) ProcessorNode(org.apache.nifi.controller.ProcessorNode) StandardComponentVariableRegistry(org.apache.nifi.registry.variable.StandardComponentVariableRegistry) StandardProcessorInitializationContext(org.apache.nifi.processor.StandardProcessorInitializationContext) ReloadComponent(org.apache.nifi.controller.ReloadComponent) StandardValidationContextFactory(org.apache.nifi.processor.StandardValidationContextFactory) LoggableComponent(org.apache.nifi.controller.LoggableComponent) StandardProcessorNode(org.apache.nifi.controller.StandardProcessorNode) Test(org.junit.Test)

Example 3 with FailOnScheduledProcessor

use of org.apache.nifi.controller.scheduling.processors.FailOnScheduledProcessor in project nifi by apache.

the class TestStandardProcessScheduler method testProcessorTimeOutRespondsToInterrupt.

// Test that if processor times out in the @OnScheduled but responds to interrupt, it keeps getting scheduled
@Test(timeout = 1000000)
public void testProcessorTimeOutRespondsToInterrupt() throws InterruptedException {
    final FailOnScheduledProcessor proc = new FailOnScheduledProcessor();
    proc.setDesiredFailureCount(0);
    proc.setOnScheduledSleepDuration(20, TimeUnit.MINUTES, true, 1);
    proc.initialize(new StandardProcessorInitializationContext(UUID.randomUUID().toString(), null, null, null, nifiProperties));
    final ReloadComponent reloadComponent = Mockito.mock(ReloadComponent.class);
    final LoggableComponent<Processor> loggableComponent = new LoggableComponent<>(proc, systemBundle.getBundleDetails().getCoordinate(), null);
    final ProcessorNode procNode = new StandardProcessorNode(loggableComponent, UUID.randomUUID().toString(), new StandardValidationContextFactory(controller, variableRegistry), scheduler, controller, nifiProperties, new StandardComponentVariableRegistry(VariableRegistry.EMPTY_REGISTRY), reloadComponent);
    rootGroup.addProcessor(procNode);
    scheduler.startProcessor(procNode, true);
    while (!proc.isSucceess()) {
        Thread.sleep(5L);
    }
    // The first time that the processor's @OnScheduled method is called, it will sleep for 20 minutes. The scheduler should interrupt
    // that thread and then try again. The second time, the Processor will not sleep because setOnScheduledSleepDuration was called
    // above with iterations = 1
    assertEquals(2, proc.getOnScheduledInvocationCount());
}
Also used : FailOnScheduledProcessor(org.apache.nifi.controller.scheduling.processors.FailOnScheduledProcessor) Processor(org.apache.nifi.processor.Processor) FailOnScheduledProcessor(org.apache.nifi.controller.scheduling.processors.FailOnScheduledProcessor) AbstractProcessor(org.apache.nifi.processor.AbstractProcessor) StandardProcessorNode(org.apache.nifi.controller.StandardProcessorNode) ProcessorNode(org.apache.nifi.controller.ProcessorNode) StandardComponentVariableRegistry(org.apache.nifi.registry.variable.StandardComponentVariableRegistry) StandardProcessorInitializationContext(org.apache.nifi.processor.StandardProcessorInitializationContext) ReloadComponent(org.apache.nifi.controller.ReloadComponent) StandardValidationContextFactory(org.apache.nifi.processor.StandardValidationContextFactory) LoggableComponent(org.apache.nifi.controller.LoggableComponent) StandardProcessorNode(org.apache.nifi.controller.StandardProcessorNode) Test(org.junit.Test)

Aggregations

LoggableComponent (org.apache.nifi.controller.LoggableComponent)3 ProcessorNode (org.apache.nifi.controller.ProcessorNode)3 ReloadComponent (org.apache.nifi.controller.ReloadComponent)3 StandardProcessorNode (org.apache.nifi.controller.StandardProcessorNode)3 FailOnScheduledProcessor (org.apache.nifi.controller.scheduling.processors.FailOnScheduledProcessor)3 AbstractProcessor (org.apache.nifi.processor.AbstractProcessor)3 Processor (org.apache.nifi.processor.Processor)3 StandardProcessorInitializationContext (org.apache.nifi.processor.StandardProcessorInitializationContext)3 StandardValidationContextFactory (org.apache.nifi.processor.StandardValidationContextFactory)3 StandardComponentVariableRegistry (org.apache.nifi.registry.variable.StandardComponentVariableRegistry)3 Test (org.junit.Test)3