Search in sources :

Example 6 with ControlMessageResponse

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

the class TaskSubscriptionTest method shouldNoLongerLockTasksAfterRemoval.

@Test
public void shouldNoLongerLockTasksAfterRemoval() throws InterruptedException {
    // given
    final String taskType = "foo";
    final ControlMessageResponse openResponse = apiRule.openTaskSubscription(taskType).await();
    final int subscriberKey = (int) openResponse.getData().get("subscriberKey");
    apiRule.closeTaskSubscription(subscriberKey).await();
    // when
    testClient.createTask(taskType);
    // then
    apiRule.openTopicSubscription("test", 0).await();
    Thread.sleep(500L);
    final int eventsAvailable = apiRule.numSubscribedEventsAvailable();
    final List<SubscribedEvent> receivedEvents = apiRule.subscribedEvents().limit(eventsAvailable).collect(Collectors.toList());
    assertThat(receivedEvents).hasSize(2);
    assertThat(receivedEvents).allMatch(e -> e.subscriptionType() == SubscriptionType.TOPIC_SUBSCRIPTION);
    assertThat(receivedEvents).extracting("event").extracting("state").containsExactly("CREATE", // no more LOCK etc.
    "CREATED");
}
Also used : ControlMessageResponse(io.zeebe.test.broker.protocol.clientapi.ControlMessageResponse) SubscribedEvent(io.zeebe.test.broker.protocol.clientapi.SubscribedEvent) Test(org.junit.Test)

Example 7 with ControlMessageResponse

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

the class TaskSubscriptionTest method shouldCloseSubscriptionOnTransportChannelClose.

@Test
public void shouldCloseSubscriptionOnTransportChannelClose() throws InterruptedException {
    // given
    apiRule.openTaskSubscription("foo").await();
    // when the transport channel is closed
    apiRule.interruptAllChannels();
    // then the subscription has been closed, so we can create a new task and lock it for a new subscription
    // closing subscriptions happens asynchronously
    Thread.sleep(1000L);
    final ExecuteCommandResponse response = testClient.createTask("foo");
    final ControlMessageResponse subscriptionResponse = apiRule.openTaskSubscription("foo").await();
    final int secondSubscriberKey = (int) subscriptionResponse.getData().get("subscriberKey");
    final Optional<SubscribedEvent> taskEvent = apiRule.subscribedEvents().filter((s) -> s.subscriptionType() == SubscriptionType.TASK_SUBSCRIPTION && s.key() == response.key()).findFirst();
    assertThat(taskEvent).isPresent();
    assertThat(taskEvent.get().subscriberKey()).isEqualTo(secondSubscriberKey);
}
Also used : ExecuteCommandResponse(io.zeebe.test.broker.protocol.clientapi.ExecuteCommandResponse) TaskSubscription(io.zeebe.broker.task.processor.TaskSubscription) TestTopicClient(io.zeebe.test.broker.protocol.clientapi.TestTopicClient) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) ControlMessageType(io.zeebe.protocol.clientapi.ControlMessageType) HashMap(java.util.HashMap) EmbeddedBrokerRule(io.zeebe.broker.test.EmbeddedBrokerRule) ControlMessageRequestBuilder(io.zeebe.test.broker.protocol.clientapi.ControlMessageRequestBuilder) TestTopicClient.taskEvents(io.zeebe.test.broker.protocol.clientapi.TestTopicClient.taskEvents) ErrorCode(io.zeebe.protocol.clientapi.ErrorCode) SocketAddress(io.zeebe.transport.SocketAddress) SocketChannel(java.nio.channels.SocketChannel) Map(java.util.Map) Before(org.junit.Before) StandardSocketOptions(java.net.StandardSocketOptions) ControlMessageResponse(io.zeebe.test.broker.protocol.clientapi.ControlMessageResponse) TestUtil.waitUntil(io.zeebe.test.util.TestUtil.waitUntil) SubscribedEvent(io.zeebe.test.broker.protocol.clientapi.SubscribedEvent) IOException(java.io.IOException) Test(org.junit.Test) Collectors(java.util.stream.Collectors) SubscriptionType(io.zeebe.protocol.clientapi.SubscriptionType) ErrorResponse(io.zeebe.test.broker.protocol.clientapi.ErrorResponse) RuleChain(org.junit.rules.RuleChain) List(java.util.List) StringUtil(io.zeebe.util.StringUtil) Rule(org.junit.Rule) Optional(java.util.Optional) ClientApiRule(io.zeebe.test.broker.protocol.clientapi.ClientApiRule) ExecuteCommandResponse(io.zeebe.test.broker.protocol.clientapi.ExecuteCommandResponse) ControlMessageResponse(io.zeebe.test.broker.protocol.clientapi.ControlMessageResponse) SubscribedEvent(io.zeebe.test.broker.protocol.clientapi.SubscribedEvent) Test(org.junit.Test)

Example 8 with ControlMessageResponse

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

the class TaskSubscriptionTest method shouldIncreaseSubscriptionCredits.

@Test
public void shouldIncreaseSubscriptionCredits() throws InterruptedException {
    // given
    final ControlMessageResponse response = apiRule.createControlMessageRequest().messageType(ControlMessageType.ADD_TASK_SUBSCRIPTION).partitionId(apiRule.getDefaultPartitionId()).data().put("taskType", "foo").put("lockDuration", 1000L).put("lockOwner", "bar").put("credits", 2).done().sendAndAwait();
    assertThat(response.getData().get("subscriberKey")).isEqualTo(0);
    testClient.createTask("foo");
    testClient.createTask("foo");
    waitUntil(() -> apiRule.numSubscribedEventsAvailable() == 2);
    testClient.createTask("foo");
    testClient.createTask("foo");
    // when
    apiRule.createControlMessageRequest().messageType(ControlMessageType.INCREASE_TASK_SUBSCRIPTION_CREDITS).partitionId(apiRule.getDefaultPartitionId()).data().put("subscriberKey", 0).put("credits", 2).put("partitionId", apiRule.getDefaultPartitionId()).done().send();
    // then
    waitUntil(() -> apiRule.numSubscribedEventsAvailable() == 4);
}
Also used : ControlMessageResponse(io.zeebe.test.broker.protocol.clientapi.ControlMessageResponse) Test(org.junit.Test)

Example 9 with ControlMessageResponse

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

the class TaskSubscriptionTest method shouldRemoveTaskSubscription.

@Test
public void shouldRemoveTaskSubscription() {
    // given
    final ControlMessageResponse openResponse = apiRule.openTaskSubscription("foo").await();
    final int subscriberKey = (int) openResponse.getData().get("subscriberKey");
    // when
    final ControlMessageResponse closeResponse = apiRule.createControlMessageRequest().messageType(ControlMessageType.REMOVE_TASK_SUBSCRIPTION).partitionId(apiRule.getDefaultPartitionId()).data().put("subscriberKey", subscriberKey).done().send().await();
    assertThat(closeResponse.getData()).containsEntry("subscriberKey", subscriberKey);
}
Also used : ControlMessageResponse(io.zeebe.test.broker.protocol.clientapi.ControlMessageResponse) Test(org.junit.Test)

Example 10 with ControlMessageResponse

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

the class FailTaskTest method shouldRejectFailIfTaskAlreadyFailed.

@Test
public void shouldRejectFailIfTaskAlreadyFailed() {
    // given
    client.createTask(TASK_TYPE);
    final ControlMessageResponse subscriptionResponse = apiRule.openTaskSubscription(TASK_TYPE).await();
    final int subscriberKey = (int) subscriptionResponse.getData().get("subscriberKey");
    final SubscribedEvent subscribedEvent = receiveSingleSubscribedEvent();
    apiRule.closeTaskSubscription(subscriberKey).await();
    client.failTask(subscribedEvent.key(), subscribedEvent.event());
    // when
    final ExecuteCommandResponse response = client.failTask(subscribedEvent.key(), subscribedEvent.event());
    // then
    assertThat(response.getEvent()).containsEntry("state", "FAIL_REJECTED");
}
Also used : ExecuteCommandResponse(io.zeebe.test.broker.protocol.clientapi.ExecuteCommandResponse) ControlMessageResponse(io.zeebe.test.broker.protocol.clientapi.ControlMessageResponse) SubscribedEvent(io.zeebe.test.broker.protocol.clientapi.SubscribedEvent) Test(org.junit.Test)

Aggregations

ControlMessageResponse (io.zeebe.test.broker.protocol.clientapi.ControlMessageResponse)10 Test (org.junit.Test)9 SubscribedEvent (io.zeebe.test.broker.protocol.clientapi.SubscribedEvent)3 ControlMessageRequestBuilder (io.zeebe.test.broker.protocol.clientapi.ControlMessageRequestBuilder)2 ExecuteCommandResponse (io.zeebe.test.broker.protocol.clientapi.ExecuteCommandResponse)2 List (java.util.List)2 Map (java.util.Map)2 TaskSubscription (io.zeebe.broker.task.processor.TaskSubscription)1 EmbeddedBrokerRule (io.zeebe.broker.test.EmbeddedBrokerRule)1 ControlMessageType (io.zeebe.protocol.clientapi.ControlMessageType)1 ErrorCode (io.zeebe.protocol.clientapi.ErrorCode)1 SubscriptionType (io.zeebe.protocol.clientapi.SubscriptionType)1 ClientApiRule (io.zeebe.test.broker.protocol.clientapi.ClientApiRule)1 ErrorResponse (io.zeebe.test.broker.protocol.clientapi.ErrorResponse)1 TestTopicClient (io.zeebe.test.broker.protocol.clientapi.TestTopicClient)1 TestTopicClient.taskEvents (io.zeebe.test.broker.protocol.clientapi.TestTopicClient.taskEvents)1 TestUtil.waitUntil (io.zeebe.test.util.TestUtil.waitUntil)1 SocketAddress (io.zeebe.transport.SocketAddress)1 StringUtil (io.zeebe.util.StringUtil)1 IOException (java.io.IOException)1