use of org.apache.bookkeeper.stream.proto.storage.CreateStreamResponse in project bookkeeper by apache.
the class TestRootRangeStoreImpl method createStreamAndVerify.
private CreateStreamResponse createStreamAndVerify(String nsName, String streamName, long expectedStreamId) throws Exception {
CompletableFuture<CreateStreamResponse> createFuture = rootRangeStore.createStream(createCreateStreamRequest(nsName, streamName, streamConf));
CreateStreamResponse response = FutureUtils.result(createFuture);
assertEquals(StatusCode.SUCCESS, response.getCode());
assertEquals(MIN_DATA_STREAM_ID, response.getStreamProps().getStreamId());
assertEquals(streamName, response.getStreamProps().getStreamName());
assertEquals(streamConf, response.getStreamProps().getStreamConf());
assertTrue(response.getStreamProps().getStorageContainerId() >= 0);
return response;
}
use of org.apache.bookkeeper.stream.proto.storage.CreateStreamResponse in project bookkeeper by apache.
the class TestRootRangeStoreImpl method testCreateStreamInvalidName.
//
// Tests for Stream API
//
@Test
public void testCreateStreamInvalidName() throws Exception {
String nsName = name.getMethodName();
String streamName = "";
CompletableFuture<CreateStreamResponse> createFuture = rootRangeStore.createStream(createCreateStreamRequest(nsName, streamName, streamConf));
CreateStreamResponse response = FutureUtils.result(createFuture);
assertEquals(StatusCode.INVALID_STREAM_NAME, response.getCode());
}
use of org.apache.bookkeeper.stream.proto.storage.CreateStreamResponse in project bookkeeper by apache.
the class StorageContainerImplTest method testCreateStream.
@Test
public void testCreateStream() throws Exception {
mockStorageContainer(SCID);
CreateStreamResponse expectedResp = CreateStreamResponse.getDefaultInstance();
when(rrStore.createStream(any(CreateStreamRequest.class))).thenReturn(FutureUtils.value(expectedResp));
CreateStreamRequest expectedReq = CreateStreamRequest.getDefaultInstance();
assertSame(expectedResp, FutureUtils.result(rrStore.createStream(expectedReq)));
verify(rrStore, times(1)).createStream(same(expectedReq));
}
use of org.apache.bookkeeper.stream.proto.storage.CreateStreamResponse in project bookkeeper by apache.
the class RootRangeStoreImpl method executeCreateStreamTxn.
private CompletableFuture<CreateStreamResponse> executeCreateStreamTxn(long nsId, String streamName, StreamConfiguration streamConf, long currentStreamId, long currentStreamIdRev) {
long streamId;
if (currentStreamId < 0) {
streamId = MIN_DATA_STREAM_ID;
} else {
streamId = currentStreamId + 1;
}
long scId = placementPolicy.placeStreamRange(streamId, 0L);
StreamConfiguration newStreamConf = streamConf;
// no backend service url is provided, use the default service url
if (isBlank(streamConf.getBackendServiceUrl())) {
newStreamConf = StreamConfiguration.newBuilder(streamConf).setBackendServiceUrl(defaultServiceUri.toString()).build();
}
StreamProperties streamProps = StreamProperties.newBuilder().setStreamId(streamId).setStreamName(streamName).setStorageContainerId(scId).setStreamConf(newStreamConf).build();
byte[] nsIdKey = getNamespaceIdKey(nsId);
byte[] streamNameKey = getStreamNameKey(nsId, streamName);
byte[] streamNameVal = Bytes.toBytes(streamId);
byte[] streamIdKey = getStreamIdKey(nsId, streamId);
byte[] streamIdVal = streamProps.toByteArray();
TxnOp<byte[], byte[]> txn = store.newTxn().If(store.newCompareValue(CompareResult.NOT_EQUAL, nsIdKey, null), currentStreamIdRev < 0 ? store.newCompareValue(CompareResult.EQUAL, STREAM_ID_KEY, null) : store.newCompareModRevision(CompareResult.EQUAL, STREAM_ID_KEY, currentStreamIdRev), store.newCompareValue(CompareResult.EQUAL, streamNameKey, null)).Then(store.newPut(streamNameKey, streamNameVal), store.newPut(streamIdKey, streamIdVal), store.newPut(STREAM_ID_KEY, Bytes.toBytes(streamId))).build();
return store.txn(txn).thenApply(txnResult -> {
try {
CreateStreamResponse.Builder respBuilder = CreateStreamResponse.newBuilder();
if (txnResult.isSuccess()) {
respBuilder.setCode(StatusCode.SUCCESS);
respBuilder.setStreamProps(streamProps);
} else {
// TODO: differentiate the error codes
respBuilder.setCode(StatusCode.INTERNAL_SERVER_ERROR);
}
return respBuilder.build();
} finally {
txnResult.close();
txn.close();
}
}).exceptionally(cause -> {
txn.close();
return CreateStreamResponse.newBuilder().setCode(StatusCode.INTERNAL_SERVER_ERROR).build();
});
}
use of org.apache.bookkeeper.stream.proto.storage.CreateStreamResponse in project bookkeeper by apache.
the class TestGrpcRootRangeService method testCreateStreamFailure.
@Test
public void testCreateStreamFailure() throws Exception {
RangeStoreImpl rangeService = mock(RangeStoreImpl.class);
GrpcRootRangeService grpcService = new GrpcRootRangeService(rangeService);
CreateStreamResponse createResp = CreateStreamResponse.newBuilder().setCode(StatusCode.INTERNAL_SERVER_ERROR).build();
CreateStreamRequest createReq = createCreateStreamRequest(nsName, streamName, DEFAULT_STREAM_CONF);
when(rangeService.createStream(createReq)).thenReturn(FutureUtils.exception(CAUSE));
AtomicReference<CreateStreamResponse> resultHolder = new AtomicReference<>();
AtomicReference<Throwable> exceptionHolder = new AtomicReference<>();
CountDownLatch latch = new CountDownLatch(1);
StreamObserver<CreateStreamResponse> streamObserver = new StreamObserver<CreateStreamResponse>() {
@Override
public void onNext(CreateStreamResponse resp) {
resultHolder.set(resp);
}
@Override
public void onError(Throwable t) {
exceptionHolder.set(t);
latch.countDown();
}
@Override
public void onCompleted() {
latch.countDown();
}
};
grpcService.createStream(CreateStreamRequest.newBuilder().setColName(nsName).setName(streamName).setStreamConf(DEFAULT_STREAM_CONF).build(), streamObserver);
latch.await();
assertNull(exceptionHolder.get());
assertNotNull(resultHolder.get());
assertEquals(createResp, resultHolder.get());
verify(rangeService, times(1)).createStream(createReq);
}
Aggregations