Search in sources :

Example 11 with EventExecution

use of com.netflix.conductor.common.metadata.events.EventExecution in project conductor by Netflix.

the class ExecutionDAOFacadeTest method testAddEventExecution.

@Test
public void testAddEventExecution() {
    when(executionDAO.addEventExecution(any())).thenReturn(false);
    boolean added = executionDAOFacade.addEventExecution(new EventExecution());
    assertFalse(added);
    verify(indexDAO, never()).addEventExecution(any());
    when(executionDAO.addEventExecution(any())).thenReturn(true);
    added = executionDAOFacade.addEventExecution(new EventExecution());
    assertTrue(added);
    verify(indexDAO, times(1)).asyncAddEventExecution(any());
}
Also used : EventExecution(com.netflix.conductor.common.metadata.events.EventExecution) Test(org.junit.Test)

Example 12 with EventExecution

use of com.netflix.conductor.common.metadata.events.EventExecution in project conductor by Netflix.

the class PostgresExecutionDAO method getEventExecutions.

public List<EventExecution> getEventExecutions(String eventHandlerName, String eventName, String messageId, int max) {
    try {
        List<EventExecution> executions = Lists.newLinkedList();
        withTransaction(tx -> {
            for (int i = 0; i < max; i++) {
                // see SimpleEventProcessor.handle to understand how the
                String executionId = messageId + "_" + i;
                // execution id is set
                EventExecution ee = readEventExecution(tx, eventHandlerName, eventName, messageId, executionId);
                if (ee == null) {
                    break;
                }
                executions.add(ee);
            }
        });
        return executions;
    } catch (Exception e) {
        String message = String.format("Unable to get event executions for eventHandlerName=%s, eventName=%s, messageId=%s", eventHandlerName, eventName, messageId);
        throw new ApplicationException(ApplicationException.Code.BACKEND_ERROR, message, e);
    }
}
Also used : ApplicationException(com.netflix.conductor.core.execution.ApplicationException) EventExecution(com.netflix.conductor.common.metadata.events.EventExecution) SQLException(java.sql.SQLException) ApplicationException(com.netflix.conductor.core.execution.ApplicationException)

Example 13 with EventExecution

use of com.netflix.conductor.common.metadata.events.EventExecution in project conductor by Netflix.

the class MySQLExecutionDAO method getEventExecutions.

public List<EventExecution> getEventExecutions(String eventHandlerName, String eventName, String messageId, int max) {
    try {
        List<EventExecution> executions = Lists.newLinkedList();
        withTransaction(tx -> {
            for (int i = 0; i < max; i++) {
                // see SimpleEventProcessor.handle to understand how the
                String executionId = messageId + "_" + i;
                // execution id is set
                EventExecution ee = readEventExecution(tx, eventHandlerName, eventName, messageId, executionId);
                if (ee == null) {
                    break;
                }
                executions.add(ee);
            }
        });
        return executions;
    } catch (Exception e) {
        String message = String.format("Unable to get event executions for eventHandlerName=%s, eventName=%s, messageId=%s", eventHandlerName, eventName, messageId);
        throw new ApplicationException(ApplicationException.Code.BACKEND_ERROR, message, e);
    }
}
Also used : ApplicationException(com.netflix.conductor.core.execution.ApplicationException) EventExecution(com.netflix.conductor.common.metadata.events.EventExecution) SQLException(java.sql.SQLException) ApplicationException(com.netflix.conductor.core.execution.ApplicationException)

Example 14 with EventExecution

use of com.netflix.conductor.common.metadata.events.EventExecution in project conductor by Netflix.

the class TestSimpleEventProcessor method testExecuteRetriableApplicationException.

@Test
public void testExecuteRetriableApplicationException() {
    AtomicInteger executeInvoked = new AtomicInteger(0);
    doAnswer((Answer<Map<String, Object>>) invocation -> {
        executeInvoked.incrementAndGet();
        throw new ApplicationException(ApplicationException.Code.BACKEND_ERROR, "some retriable error");
    }).when(actionProcessor).execute(any(), any(), any(), any());
    SimpleEventProcessor eventProcessor = new SimpleEventProcessor(executionService, metadataService, actionProcessor, eventQueues, jsonUtils, new TestConfiguration(), objectMapper);
    EventExecution eventExecution = new EventExecution("id", "messageId");
    eventExecution.setStatus(EventExecution.Status.IN_PROGRESS);
    eventExecution.setEvent("event");
    Action action = new Action();
    action.setAction(Type.start_workflow);
    eventProcessor.execute(eventExecution, action, "payload");
    assertEquals(3, executeInvoked.get());
    assertNull(eventExecution.getOutput().get("exception"));
}
Also used : ArgumentMatchers.any(org.mockito.ArgumentMatchers.any) MetadataService(com.netflix.conductor.service.MetadataService) TestConfiguration(com.netflix.conductor.core.execution.TestConfiguration) ArgumentMatchers.eq(org.mockito.ArgumentMatchers.eq) Action(com.netflix.conductor.common.metadata.events.EventHandler.Action) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) ArgumentMatchers.anyMap(org.mockito.ArgumentMatchers.anyMap) HashMap(java.util.HashMap) Task(com.netflix.conductor.common.metadata.tasks.Task) StartWorkflow(com.netflix.conductor.common.metadata.events.EventHandler.StartWorkflow) Observable(rx.Observable) ParametersUtils(com.netflix.conductor.core.execution.ParametersUtils) JsonUtils(com.netflix.conductor.core.utils.JsonUtils) LinkedHashMap(java.util.LinkedHashMap) Answer(org.mockito.stubbing.Answer) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Workflow(com.netflix.conductor.common.run.Workflow) Mockito.doAnswer(org.mockito.Mockito.doAnswer) Map(java.util.Map) WorkflowExecutor(com.netflix.conductor.core.execution.WorkflowExecutor) EventExecution(com.netflix.conductor.common.metadata.events.EventExecution) Before(org.junit.Before) ApplicationException(com.netflix.conductor.core.execution.ApplicationException) Message(com.netflix.conductor.core.events.queue.Message) Uninterruptibles(com.google.common.util.concurrent.Uninterruptibles) Assert.assertNotNull(org.junit.Assert.assertNotNull) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) Assert.assertTrue(org.junit.Assert.assertTrue) WorkflowDef(com.netflix.conductor.common.metadata.workflow.WorkflowDef) Test(org.junit.Test) Mockito.when(org.mockito.Mockito.when) EventHandler(com.netflix.conductor.common.metadata.events.EventHandler) UUID(java.util.UUID) Type(com.netflix.conductor.common.metadata.events.EventHandler.Action.Type) Mockito.verify(org.mockito.Mockito.verify) TimeUnit(java.util.concurrent.TimeUnit) Mockito.never(org.mockito.Mockito.never) Assert.assertNull(org.junit.Assert.assertNull) Mockito.atMost(org.mockito.Mockito.atMost) TaskDetails(com.netflix.conductor.common.metadata.events.EventHandler.TaskDetails) ExecutionService(com.netflix.conductor.service.ExecutionService) JsonMapperProvider(com.netflix.conductor.common.utils.JsonMapperProvider) ObservableQueue(com.netflix.conductor.core.events.queue.ObservableQueue) Collections(java.util.Collections) Assert.assertEquals(org.junit.Assert.assertEquals) Mockito.mock(org.mockito.Mockito.mock) Action(com.netflix.conductor.common.metadata.events.EventHandler.Action) ApplicationException(com.netflix.conductor.core.execution.ApplicationException) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) EventExecution(com.netflix.conductor.common.metadata.events.EventExecution) TestConfiguration(com.netflix.conductor.core.execution.TestConfiguration) ArgumentMatchers.anyMap(org.mockito.ArgumentMatchers.anyMap) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map) Test(org.junit.Test)

Example 15 with EventExecution

use of com.netflix.conductor.common.metadata.events.EventExecution in project conductor by Netflix.

the class TestSimpleEventProcessor method testExecuteInvalidAction.

@SuppressWarnings("unchecked")
@Test
public void testExecuteInvalidAction() {
    AtomicInteger executeInvoked = new AtomicInteger(0);
    doAnswer((Answer<Map<String, Object>>) invocation -> {
        executeInvoked.incrementAndGet();
        throw new UnsupportedOperationException("error");
    }).when(actionProcessor).execute(any(), any(), any(), any());
    SimpleEventProcessor eventProcessor = new SimpleEventProcessor(executionService, metadataService, actionProcessor, eventQueues, jsonUtils, new TestConfiguration(), objectMapper);
    EventExecution eventExecution = new EventExecution("id", "messageId");
    eventExecution.setName("handler");
    eventExecution.setStatus(EventExecution.Status.IN_PROGRESS);
    eventExecution.setEvent("event");
    Action action = new Action();
    eventExecution.setAction(Type.start_workflow);
    eventProcessor.execute(eventExecution, action, "payload");
    assertEquals(1, executeInvoked.get());
    assertEquals(EventExecution.Status.FAILED, eventExecution.getStatus());
    assertNotNull(eventExecution.getOutput().get("exception"));
}
Also used : ArgumentMatchers.any(org.mockito.ArgumentMatchers.any) MetadataService(com.netflix.conductor.service.MetadataService) TestConfiguration(com.netflix.conductor.core.execution.TestConfiguration) ArgumentMatchers.eq(org.mockito.ArgumentMatchers.eq) Action(com.netflix.conductor.common.metadata.events.EventHandler.Action) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) ArgumentMatchers.anyMap(org.mockito.ArgumentMatchers.anyMap) HashMap(java.util.HashMap) Task(com.netflix.conductor.common.metadata.tasks.Task) StartWorkflow(com.netflix.conductor.common.metadata.events.EventHandler.StartWorkflow) Observable(rx.Observable) ParametersUtils(com.netflix.conductor.core.execution.ParametersUtils) JsonUtils(com.netflix.conductor.core.utils.JsonUtils) LinkedHashMap(java.util.LinkedHashMap) Answer(org.mockito.stubbing.Answer) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Workflow(com.netflix.conductor.common.run.Workflow) Mockito.doAnswer(org.mockito.Mockito.doAnswer) Map(java.util.Map) WorkflowExecutor(com.netflix.conductor.core.execution.WorkflowExecutor) EventExecution(com.netflix.conductor.common.metadata.events.EventExecution) Before(org.junit.Before) ApplicationException(com.netflix.conductor.core.execution.ApplicationException) Message(com.netflix.conductor.core.events.queue.Message) Uninterruptibles(com.google.common.util.concurrent.Uninterruptibles) Assert.assertNotNull(org.junit.Assert.assertNotNull) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) Assert.assertTrue(org.junit.Assert.assertTrue) WorkflowDef(com.netflix.conductor.common.metadata.workflow.WorkflowDef) Test(org.junit.Test) Mockito.when(org.mockito.Mockito.when) EventHandler(com.netflix.conductor.common.metadata.events.EventHandler) UUID(java.util.UUID) Type(com.netflix.conductor.common.metadata.events.EventHandler.Action.Type) Mockito.verify(org.mockito.Mockito.verify) TimeUnit(java.util.concurrent.TimeUnit) Mockito.never(org.mockito.Mockito.never) Assert.assertNull(org.junit.Assert.assertNull) Mockito.atMost(org.mockito.Mockito.atMost) TaskDetails(com.netflix.conductor.common.metadata.events.EventHandler.TaskDetails) ExecutionService(com.netflix.conductor.service.ExecutionService) JsonMapperProvider(com.netflix.conductor.common.utils.JsonMapperProvider) ObservableQueue(com.netflix.conductor.core.events.queue.ObservableQueue) Collections(java.util.Collections) Assert.assertEquals(org.junit.Assert.assertEquals) Mockito.mock(org.mockito.Mockito.mock) Action(com.netflix.conductor.common.metadata.events.EventHandler.Action) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) EventExecution(com.netflix.conductor.common.metadata.events.EventExecution) TestConfiguration(com.netflix.conductor.core.execution.TestConfiguration) ArgumentMatchers.anyMap(org.mockito.ArgumentMatchers.anyMap) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map) Test(org.junit.Test)

Aggregations

EventExecution (com.netflix.conductor.common.metadata.events.EventExecution)28 Test (org.junit.Test)13 ApplicationException (com.netflix.conductor.core.execution.ApplicationException)7 ArrayList (java.util.ArrayList)7 SearchHit (org.elasticsearch.search.SearchHit)7 HashMap (java.util.HashMap)6 Map (java.util.Map)6 Action (com.netflix.conductor.common.metadata.events.EventHandler.Action)5 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)4 EventHandler (com.netflix.conductor.common.metadata.events.EventHandler)4 Message (com.netflix.conductor.core.events.queue.Message)4 ObservableQueue (com.netflix.conductor.core.events.queue.ObservableQueue)4 JsonUtils (com.netflix.conductor.core.utils.JsonUtils)4 ExecutionService (com.netflix.conductor.service.ExecutionService)4 MetadataService (com.netflix.conductor.service.MetadataService)4 Collections (java.util.Collections)4 TimeUnit (java.util.concurrent.TimeUnit)4 Uninterruptibles (com.google.common.util.concurrent.Uninterruptibles)3 Type (com.netflix.conductor.common.metadata.events.EventHandler.Action.Type)3 StartWorkflow (com.netflix.conductor.common.metadata.events.EventHandler.StartWorkflow)3