Search in sources :

Example 1 with ErrorResponse

use of io.camunda.zeebe.protocol.impl.encoding.ErrorResponse in project zeebe by camunda.

the class CommandApiRequestHandlerTest method handleRequest.

private CompletableFuture<Either<ErrorResponse, ExecuteCommandResponse>> handleRequest(final BufferWriter request) {
    final var future = new CompletableFuture<Either<ErrorResponse, ExecuteCommandResponse>>();
    final ServerOutput serverOutput = createServerOutput(future);
    final var requestBuffer = new UnsafeBuffer(new byte[request.getLength()]);
    request.write(requestBuffer, 0);
    handler.onRequest(serverOutput, 0, 0, requestBuffer, 0, request.getLength());
    scheduler.workUntilDone();
    return future;
}
Also used : ServerOutput(io.camunda.zeebe.transport.ServerOutput) CompletableFuture(java.util.concurrent.CompletableFuture) ExecuteCommandResponse(io.camunda.zeebe.protocol.impl.encoding.ExecuteCommandResponse) UnsafeBuffer(org.agrona.concurrent.UnsafeBuffer) ErrorResponse(io.camunda.zeebe.protocol.impl.encoding.ErrorResponse)

Example 2 with ErrorResponse

use of io.camunda.zeebe.protocol.impl.encoding.ErrorResponse in project zeebe by camunda.

the class QueryApiRequestHandlerTest method processFound.

@DisplayName("should respond with bpmnProcessId when process found")
@Test
void processFound() throws ClosedServiceException {
    // given
    final QueryApiRequestHandler sut = createQueryApiRequestHandler(true);
    final var bpmnProcessId = BufferUtil.wrapString("OneProcessToFindThem");
    final var queryService = mock(QueryService.class);
    sut.addPartition(1, queryService);
    when(queryService.getBpmnProcessIdForProcess(1)).thenReturn(Optional.of(bpmnProcessId));
    // when
    final Either<ErrorResponse, ExecuteQueryResponse> response = new AsyncExecuteQueryRequestSender(sut).sendRequest(new ExecuteQueryRequest().setPartitionId(1).setKey(1).setValueType(ValueType.PROCESS)).join();
    // then
    EitherAssert.assertThat(response).isRight().extracting(Either::get).extracting(ExecuteQueryResponse::getBpmnProcessId).isEqualTo("OneProcessToFindThem");
}
Also used : ExecuteQueryRequest(io.camunda.zeebe.protocol.impl.encoding.ExecuteQueryRequest) ExecuteQueryResponse(io.camunda.zeebe.protocol.impl.encoding.ExecuteQueryResponse) Either(io.camunda.zeebe.util.Either) ErrorResponse(io.camunda.zeebe.protocol.impl.encoding.ErrorResponse) Test(org.junit.jupiter.api.Test) DisplayName(org.junit.jupiter.api.DisplayName)

Example 3 with ErrorResponse

use of io.camunda.zeebe.protocol.impl.encoding.ErrorResponse in project zeebe by camunda.

the class QueryApiRequestHandlerTest method processNotFound.

@DisplayName("should respond with PROCESS_NOT_FOUND when no process with key exists")
@Test
void processNotFound() {
    // given
    final QueryApiRequestHandler sut = createQueryApiRequestHandler(true);
    sut.addPartition(1, mock(QueryService.class));
    // when
    final Either<ErrorResponse, ExecuteQueryResponse> response = new AsyncExecuteQueryRequestSender(sut).sendRequest(new ExecuteQueryRequest().setPartitionId(1).setKey(1).setValueType(ValueType.PROCESS)).join();
    // then
    EitherAssert.assertThat(response).isLeft().extracting(Either::getLeft).extracting(ErrorResponse::getErrorCode, error -> BufferUtil.bufferAsString(error.getErrorData())).containsExactly(ErrorCode.PROCESS_NOT_FOUND, "Expected to find the process ID for resource of type PROCESS with key 1, but no such " + "resource was found");
}
Also used : BeforeEach(org.junit.jupiter.api.BeforeEach) ErrorCode(io.camunda.zeebe.protocol.record.ErrorCode) ClosedServiceException(io.camunda.zeebe.engine.state.QueryService.ClosedServiceException) UnsafeBuffer(org.agrona.concurrent.UnsafeBuffer) ValueType(io.camunda.zeebe.protocol.record.ValueType) CompletableFuture(java.util.concurrent.CompletableFuture) ErrorResponse(io.camunda.zeebe.protocol.impl.encoding.ErrorResponse) ExecuteQueryResponse(io.camunda.zeebe.protocol.impl.encoding.ExecuteQueryResponse) ServerOutput(io.camunda.zeebe.transport.ServerOutput) Either(io.camunda.zeebe.util.Either) QueryApiCfg(io.camunda.zeebe.broker.system.configuration.QueryApiCfg) ExecutionMode(org.junit.jupiter.api.parallel.ExecutionMode) Mockito.when(org.mockito.Mockito.when) ExpandableArrayBuffer(org.agrona.ExpandableArrayBuffer) DisplayName(org.junit.jupiter.api.DisplayName) ExecuteQueryRequest(io.camunda.zeebe.protocol.impl.encoding.ExecuteQueryRequest) EitherAssert(io.camunda.zeebe.test.util.asserts.EitherAssert) Test(org.junit.jupiter.api.Test) AfterEach(org.junit.jupiter.api.AfterEach) QueryService(io.camunda.zeebe.engine.state.QueryService) Optional(java.util.Optional) Execution(org.junit.jupiter.api.parallel.Execution) BufferUtil(io.camunda.zeebe.util.buffer.BufferUtil) Mockito.mock(org.mockito.Mockito.mock) ActorScheduler(io.camunda.zeebe.util.sched.ActorScheduler) ExecuteQueryRequest(io.camunda.zeebe.protocol.impl.encoding.ExecuteQueryRequest) QueryService(io.camunda.zeebe.engine.state.QueryService) ExecuteQueryResponse(io.camunda.zeebe.protocol.impl.encoding.ExecuteQueryResponse) Either(io.camunda.zeebe.util.Either) ErrorResponse(io.camunda.zeebe.protocol.impl.encoding.ErrorResponse) Test(org.junit.jupiter.api.Test) DisplayName(org.junit.jupiter.api.DisplayName)

Example 4 with ErrorResponse

use of io.camunda.zeebe.protocol.impl.encoding.ErrorResponse in project zeebe by camunda.

the class QueryApiRequestHandlerTest method jobNotFound.

@DisplayName("should respond with PROCESS_NOT_FOUND when no job with key exists")
@Test
void jobNotFound() {
    // given
    final QueryApiRequestHandler sut = createQueryApiRequestHandler(true);
    sut.addPartition(1, mock(QueryService.class));
    // when
    final Either<ErrorResponse, ExecuteQueryResponse> response = new AsyncExecuteQueryRequestSender(sut).sendRequest(new ExecuteQueryRequest().setPartitionId(1).setKey(1).setValueType(ValueType.JOB)).join();
    // then
    EitherAssert.assertThat(response).isLeft().extracting(Either::getLeft).extracting(ErrorResponse::getErrorCode, error -> BufferUtil.bufferAsString(error.getErrorData())).containsExactly(ErrorCode.PROCESS_NOT_FOUND, "Expected to find the process ID for resource of type JOB with key 1, but no such " + "resource was found");
}
Also used : BeforeEach(org.junit.jupiter.api.BeforeEach) ErrorCode(io.camunda.zeebe.protocol.record.ErrorCode) ClosedServiceException(io.camunda.zeebe.engine.state.QueryService.ClosedServiceException) UnsafeBuffer(org.agrona.concurrent.UnsafeBuffer) ValueType(io.camunda.zeebe.protocol.record.ValueType) CompletableFuture(java.util.concurrent.CompletableFuture) ErrorResponse(io.camunda.zeebe.protocol.impl.encoding.ErrorResponse) ExecuteQueryResponse(io.camunda.zeebe.protocol.impl.encoding.ExecuteQueryResponse) ServerOutput(io.camunda.zeebe.transport.ServerOutput) Either(io.camunda.zeebe.util.Either) QueryApiCfg(io.camunda.zeebe.broker.system.configuration.QueryApiCfg) ExecutionMode(org.junit.jupiter.api.parallel.ExecutionMode) Mockito.when(org.mockito.Mockito.when) ExpandableArrayBuffer(org.agrona.ExpandableArrayBuffer) DisplayName(org.junit.jupiter.api.DisplayName) ExecuteQueryRequest(io.camunda.zeebe.protocol.impl.encoding.ExecuteQueryRequest) EitherAssert(io.camunda.zeebe.test.util.asserts.EitherAssert) Test(org.junit.jupiter.api.Test) AfterEach(org.junit.jupiter.api.AfterEach) QueryService(io.camunda.zeebe.engine.state.QueryService) Optional(java.util.Optional) Execution(org.junit.jupiter.api.parallel.Execution) BufferUtil(io.camunda.zeebe.util.buffer.BufferUtil) Mockito.mock(org.mockito.Mockito.mock) ActorScheduler(io.camunda.zeebe.util.sched.ActorScheduler) ExecuteQueryRequest(io.camunda.zeebe.protocol.impl.encoding.ExecuteQueryRequest) QueryService(io.camunda.zeebe.engine.state.QueryService) ExecuteQueryResponse(io.camunda.zeebe.protocol.impl.encoding.ExecuteQueryResponse) Either(io.camunda.zeebe.util.Either) ErrorResponse(io.camunda.zeebe.protocol.impl.encoding.ErrorResponse) Test(org.junit.jupiter.api.Test) DisplayName(org.junit.jupiter.api.DisplayName)

Example 5 with ErrorResponse

use of io.camunda.zeebe.protocol.impl.encoding.ErrorResponse in project zeebe by camunda.

the class QueryApiRequestHandlerTest method processInstanceNotFound.

@DisplayName("should respond with PROCESS_NOT_FOUND when no process instance with key exists")
@Test
void processInstanceNotFound() {
    // given
    final QueryApiRequestHandler sut = createQueryApiRequestHandler(true);
    sut.addPartition(1, mock(QueryService.class));
    // when
    final Either<ErrorResponse, ExecuteQueryResponse> response = new AsyncExecuteQueryRequestSender(sut).sendRequest(new ExecuteQueryRequest().setPartitionId(1).setKey(1).setValueType(ValueType.PROCESS_INSTANCE)).join();
    // then
    EitherAssert.assertThat(response).isLeft().extracting(Either::getLeft).extracting(ErrorResponse::getErrorCode, error -> BufferUtil.bufferAsString(error.getErrorData())).containsExactly(ErrorCode.PROCESS_NOT_FOUND, "Expected to find the process ID for resource of type PROCESS_INSTANCE with key 1, but " + "no such resource was found");
}
Also used : BeforeEach(org.junit.jupiter.api.BeforeEach) ErrorCode(io.camunda.zeebe.protocol.record.ErrorCode) ClosedServiceException(io.camunda.zeebe.engine.state.QueryService.ClosedServiceException) UnsafeBuffer(org.agrona.concurrent.UnsafeBuffer) ValueType(io.camunda.zeebe.protocol.record.ValueType) CompletableFuture(java.util.concurrent.CompletableFuture) ErrorResponse(io.camunda.zeebe.protocol.impl.encoding.ErrorResponse) ExecuteQueryResponse(io.camunda.zeebe.protocol.impl.encoding.ExecuteQueryResponse) ServerOutput(io.camunda.zeebe.transport.ServerOutput) Either(io.camunda.zeebe.util.Either) QueryApiCfg(io.camunda.zeebe.broker.system.configuration.QueryApiCfg) ExecutionMode(org.junit.jupiter.api.parallel.ExecutionMode) Mockito.when(org.mockito.Mockito.when) ExpandableArrayBuffer(org.agrona.ExpandableArrayBuffer) DisplayName(org.junit.jupiter.api.DisplayName) ExecuteQueryRequest(io.camunda.zeebe.protocol.impl.encoding.ExecuteQueryRequest) EitherAssert(io.camunda.zeebe.test.util.asserts.EitherAssert) Test(org.junit.jupiter.api.Test) AfterEach(org.junit.jupiter.api.AfterEach) QueryService(io.camunda.zeebe.engine.state.QueryService) Optional(java.util.Optional) Execution(org.junit.jupiter.api.parallel.Execution) BufferUtil(io.camunda.zeebe.util.buffer.BufferUtil) Mockito.mock(org.mockito.Mockito.mock) ActorScheduler(io.camunda.zeebe.util.sched.ActorScheduler) ExecuteQueryRequest(io.camunda.zeebe.protocol.impl.encoding.ExecuteQueryRequest) QueryService(io.camunda.zeebe.engine.state.QueryService) ExecuteQueryResponse(io.camunda.zeebe.protocol.impl.encoding.ExecuteQueryResponse) Either(io.camunda.zeebe.util.Either) ErrorResponse(io.camunda.zeebe.protocol.impl.encoding.ErrorResponse) Test(org.junit.jupiter.api.Test) DisplayName(org.junit.jupiter.api.DisplayName)

Aggregations

ErrorResponse (io.camunda.zeebe.protocol.impl.encoding.ErrorResponse)36 ExecuteQueryRequest (io.camunda.zeebe.protocol.impl.encoding.ExecuteQueryRequest)27 ExecuteQueryResponse (io.camunda.zeebe.protocol.impl.encoding.ExecuteQueryResponse)24 Either (io.camunda.zeebe.util.Either)24 DisplayName (org.junit.jupiter.api.DisplayName)24 Test (org.junit.jupiter.api.Test)24 ServerOutput (io.camunda.zeebe.transport.ServerOutput)21 CompletableFuture (java.util.concurrent.CompletableFuture)21 UnsafeBuffer (org.agrona.concurrent.UnsafeBuffer)21 QueryApiCfg (io.camunda.zeebe.broker.system.configuration.QueryApiCfg)15 QueryService (io.camunda.zeebe.engine.state.QueryService)15 ClosedServiceException (io.camunda.zeebe.engine.state.QueryService.ClosedServiceException)15 ErrorCode (io.camunda.zeebe.protocol.record.ErrorCode)15 ValueType (io.camunda.zeebe.protocol.record.ValueType)15 EitherAssert (io.camunda.zeebe.test.util.asserts.EitherAssert)15 BufferUtil (io.camunda.zeebe.util.buffer.BufferUtil)15 ActorScheduler (io.camunda.zeebe.util.sched.ActorScheduler)15 Optional (java.util.Optional)15 ExpandableArrayBuffer (org.agrona.ExpandableArrayBuffer)15 AfterEach (org.junit.jupiter.api.AfterEach)15