Search in sources :

Example 21 with SubscribedEvent

use of io.zeebe.test.broker.protocol.clientapi.SubscribedEvent in project zeebe by zeebe-io.

the class TaskUpdateRetriesTest method shouldRejectUpdateRetriesIfRetriesZero.

@Test
public void shouldRejectUpdateRetriesIfRetriesZero() {
    // given
    client.createTask(TASK_TYPE);
    apiRule.openTaskSubscription(TASK_TYPE).await();
    final SubscribedEvent subscribedEvent = receiveSingleSubscribedEvent();
    Map<String, Object> event = subscribedEvent.event();
    event.put("retries", 0);
    final ExecuteCommandResponse failResponse = client.failTask(subscribedEvent.key(), event);
    event = failResponse.getEvent();
    event.put("retries", 0);
    // when
    final ExecuteCommandResponse response = client.updateTaskRetries(subscribedEvent.key(), event);
    // then
    assertThat(response.getEvent()).containsEntry("state", "UPDATE_RETRIES_REJECTED");
}
Also used : ExecuteCommandResponse(io.zeebe.test.broker.protocol.clientapi.ExecuteCommandResponse) SubscribedEvent(io.zeebe.test.broker.protocol.clientapi.SubscribedEvent) Test(org.junit.Test)

Example 22 with SubscribedEvent

use of io.zeebe.test.broker.protocol.clientapi.SubscribedEvent in project zeebe by zeebe-io.

the class TaskUpdateRetriesTest method shouldUpdateRetries.

@Test
public void shouldUpdateRetries() {
    // given
    client.createTask(TASK_TYPE);
    apiRule.openTaskSubscription(TASK_TYPE).await();
    final SubscribedEvent subscribedEvent = receiveSingleSubscribedEvent();
    Map<String, Object> event = subscribedEvent.event();
    event.put("retries", 0);
    final ExecuteCommandResponse failResponse = client.failTask(subscribedEvent.key(), event);
    event = failResponse.getEvent();
    event.put("retries", NEW_RETRIES);
    // when
    final ExecuteCommandResponse response = client.updateTaskRetries(subscribedEvent.key(), event);
    // then
    final Map<String, Object> expectedEvent = new HashMap<>(event);
    expectedEvent.put("state", "RETRIES_UPDATED");
    assertThat(response.getEvent()).containsAllEntriesOf(expectedEvent);
    // and the task is published again
    final SubscribedEvent republishedEvent = receiveSingleSubscribedEvent();
    assertThat(republishedEvent.key()).isEqualTo(subscribedEvent.key());
    assertThat(republishedEvent.position()).isNotEqualTo(subscribedEvent.position());
    // and the task lifecycle is correct
    apiRule.openTopicSubscription("foo", 0).await();
    final int expectedTopicEvents = 10;
    final List<SubscribedEvent> taskEvents = doRepeatedly(() -> apiRule.moveMessageStreamToHead().subscribedEvents().filter(e -> e.subscriptionType() == SubscriptionType.TOPIC_SUBSCRIPTION && e.eventType() == EventType.TASK_EVENT).limit(expectedTopicEvents).collect(Collectors.toList())).until(e -> e.size() == expectedTopicEvents);
    assertThat(taskEvents).extracting(e -> e.event().get("state")).containsExactly("CREATE", "CREATED", "LOCK", "LOCKED", "FAIL", "FAILED", "UPDATE_RETRIES", "RETRIES_UPDATED", "LOCK", "LOCKED");
}
Also used : ExecuteCommandResponse(io.zeebe.test.broker.protocol.clientapi.ExecuteCommandResponse) TestUtil.waitUntil(io.zeebe.test.util.TestUtil.waitUntil) TestTopicClient(io.zeebe.test.broker.protocol.clientapi.TestTopicClient) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) SubscribedEvent(io.zeebe.test.broker.protocol.clientapi.SubscribedEvent) HashMap(java.util.HashMap) Test(org.junit.Test) EmbeddedBrokerRule(io.zeebe.broker.test.EmbeddedBrokerRule) TestUtil.doRepeatedly(io.zeebe.test.util.TestUtil.doRepeatedly) Collectors(java.util.stream.Collectors) SubscriptionType(io.zeebe.protocol.clientapi.SubscriptionType) RuleChain(org.junit.rules.RuleChain) List(java.util.List) Rule(org.junit.Rule) EventType(io.zeebe.protocol.clientapi.EventType) Map(java.util.Map) Before(org.junit.Before) ClientApiRule(io.zeebe.test.broker.protocol.clientapi.ClientApiRule) ExecuteCommandResponse(io.zeebe.test.broker.protocol.clientapi.ExecuteCommandResponse) HashMap(java.util.HashMap) SubscribedEvent(io.zeebe.test.broker.protocol.clientapi.SubscribedEvent) Test(org.junit.Test)

Example 23 with SubscribedEvent

use of io.zeebe.test.broker.protocol.clientapi.SubscribedEvent in project zeebe by zeebe-io.

the class CreateDeploymentTest method shouldCreateWorkflowOnAllPartitions.

@Test
public void shouldCreateWorkflowOnAllPartitions() {
    // given
    final int partitions = 3;
    apiRule.createTopic("test", partitions);
    final List<Integer> partitionIds = apiRule.getPartitionIds("test");
    // when
    apiRule.topic().deploy("test", WORKFLOW);
    // then
    final List<Long> workflowKeys = new ArrayList<>();
    partitionIds.forEach(partitionId -> {
        final SubscribedEvent event = apiRule.topic(partitionId).receiveSingleEvent(workflowEvents("CREATED"));
        workflowKeys.add(event.key());
    });
    assertThat(workflowKeys).hasSize(partitions).containsOnly(workflowKeys.get(0));
}
Also used : ArrayList(java.util.ArrayList) SubscribedEvent(io.zeebe.test.broker.protocol.clientapi.SubscribedEvent) Test(org.junit.Test)

Example 24 with SubscribedEvent

use of io.zeebe.test.broker.protocol.clientapi.SubscribedEvent in project zeebe by zeebe-io.

the class CreateDeploymentTest method shouldAssignWorkflowVersionsPerTopic.

@Test
public void shouldAssignWorkflowVersionsPerTopic() {
    // given
    apiRule.createTopic("foo", 1);
    apiRule.createTopic("bar", 1);
    // when
    apiRule.topic().deploy("foo", WORKFLOW);
    apiRule.topic().deploy("bar", WORKFLOW);
    // then
    final SubscribedEvent eventFoo = apiRule.topic(apiRule.getSinglePartitionId("foo")).receiveSingleEvent(workflowEvents("CREATED"));
    final SubscribedEvent eventBar = apiRule.topic(apiRule.getSinglePartitionId("bar")).receiveSingleEvent(workflowEvents("CREATED"));
    assertThat(eventFoo.event().get("version")).isEqualTo(1);
    assertThat(eventBar.event().get("version")).isEqualTo(1);
}
Also used : SubscribedEvent(io.zeebe.test.broker.protocol.clientapi.SubscribedEvent) Test(org.junit.Test)

Example 25 with SubscribedEvent

use of io.zeebe.test.broker.protocol.clientapi.SubscribedEvent in project zeebe by zeebe-io.

the class CreateDeploymentTest method shouldCreateDeploymentResourceWithMultipleWorkflows.

@Test
public void shouldCreateDeploymentResourceWithMultipleWorkflows() throws IOException {
    // given
    final InputStream resourceAsStream = getClass().getResourceAsStream("/workflows/collaboration.bpmn");
    // when
    final ExecuteCommandResponse resp = apiRule.topic().deployWithResponse(ClientApiRule.DEFAULT_TOPIC_NAME, StreamUtil.read(resourceAsStream), ResourceType.BPMN_XML.name(), "collaboration.bpmn");
    // then
    assertThat(resp.getEvent()).containsEntry(PROP_STATE, "CREATED");
    final List<SubscribedEvent> workflowEvents = apiRule.topic().receiveEvents(workflowEvents("CREATED")).limit(2).collect(toList());
    assertThat(workflowEvents).extracting(s -> s.event().get(PROP_WORKFLOW_BPMN_PROCESS_ID)).contains("process1", "process2");
}
Also used : TestTopicClient.workflowEvents(io.zeebe.test.broker.protocol.clientapi.TestTopicClient.workflowEvents) ExecuteCommandResponse(io.zeebe.test.broker.protocol.clientapi.ExecuteCommandResponse) Arrays(java.util.Arrays) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) HashMap(java.util.HashMap) EmbeddedBrokerRule(io.zeebe.broker.test.EmbeddedBrokerRule) Bpmn(io.zeebe.model.bpmn.Bpmn) Protocol(io.zeebe.protocol.Protocol) ArrayList(java.util.ArrayList) ResourceType(io.zeebe.broker.workflow.data.ResourceType) Map(java.util.Map) PROP_WORKFLOW_VERSION(io.zeebe.broker.workflow.data.WorkflowInstanceEvent.PROP_WORKFLOW_VERSION) WorkflowDefinition(io.zeebe.model.bpmn.instance.WorkflowDefinition) UTF_8(java.nio.charset.StandardCharsets.UTF_8) SubscribedEvent(io.zeebe.test.broker.protocol.clientapi.SubscribedEvent) IOException(java.io.IOException) Test(org.junit.Test) File(java.io.File) RuleChain(org.junit.rules.RuleChain) Collectors.toList(java.util.stream.Collectors.toList) List(java.util.List) Rule(org.junit.Rule) StreamUtil(io.zeebe.util.StreamUtil) PROP_STATE(io.zeebe.broker.workflow.data.WorkflowInstanceEvent.PROP_STATE) EventType(io.zeebe.protocol.clientapi.EventType) PROP_WORKFLOW_BPMN_PROCESS_ID(io.zeebe.broker.workflow.data.WorkflowInstanceEvent.PROP_WORKFLOW_BPMN_PROCESS_ID) Files(org.assertj.core.util.Files) Collections(java.util.Collections) InputStream(java.io.InputStream) ClientApiRule(io.zeebe.test.broker.protocol.clientapi.ClientApiRule) ExecuteCommandResponse(io.zeebe.test.broker.protocol.clientapi.ExecuteCommandResponse) InputStream(java.io.InputStream) SubscribedEvent(io.zeebe.test.broker.protocol.clientapi.SubscribedEvent) Test(org.junit.Test)

Aggregations

SubscribedEvent (io.zeebe.test.broker.protocol.clientapi.SubscribedEvent)57 Test (org.junit.Test)55 ExecuteCommandResponse (io.zeebe.test.broker.protocol.clientapi.ExecuteCommandResponse)28 EmbeddedBrokerRule (io.zeebe.broker.test.EmbeddedBrokerRule)13 ClientApiRule (io.zeebe.test.broker.protocol.clientapi.ClientApiRule)13 Assertions.assertThat (org.assertj.core.api.Assertions.assertThat)13 Rule (org.junit.Rule)13 RuleChain (org.junit.rules.RuleChain)13 IOException (java.io.IOException)11 EventType (io.zeebe.protocol.clientapi.EventType)10 TestTopicClient (io.zeebe.test.broker.protocol.clientapi.TestTopicClient)10 HashMap (java.util.HashMap)10 Before (org.junit.Before)10 Bpmn (io.zeebe.model.bpmn.Bpmn)9 WorkflowDefinition (io.zeebe.model.bpmn.instance.WorkflowDefinition)9 TestTopicClient.taskEvents (io.zeebe.test.broker.protocol.clientapi.TestTopicClient.taskEvents)8 List (java.util.List)7 Map (java.util.Map)7 ErrorType (io.zeebe.broker.incident.data.ErrorType)6 JSON_MAPPER (io.zeebe.broker.test.MsgPackUtil.JSON_MAPPER)6