Search in sources :

Example 1 with TxnSegments

use of io.pravega.client.stream.impl.TxnSegments in project pravega by pravega.

the class ControllerImplTest method testDeadline.

@Test
public void testDeadline() {
    @Cleanup final ControllerImpl controller = new ControllerImpl(ControllerImplConfig.builder().clientConfig(ClientConfig.builder().controllerURI(URI.create((testSecure ? "tls://" : "tcp://") + "localhost:" + serverPort)).credentials(new DefaultCredentials("1111_aaaa", "admin")).trustStore(SecurityConfigDefaults.TLS_CA_CERT_PATH).build()).timeoutMillis(200).retryAttempts(1).build(), executor);
    Predicate<Throwable> deadlinePredicate = e -> {
        Throwable unwrapped = Exceptions.unwrap(e);
        if (unwrapped instanceof RetriesExhaustedException) {
            unwrapped = Exceptions.unwrap(unwrapped.getCause());
        }
        StatusRuntimeException exception = (StatusRuntimeException) unwrapped;
        Status.Code code = exception.getStatus().getCode();
        return code.equals(Status.Code.DEADLINE_EXCEEDED);
    };
    String deadline = "deadline";
    // region scope
    CompletableFuture<Boolean> scopeFuture = controller.createScope(deadline);
    AssertExtensions.assertFutureThrows("", scopeFuture, deadlinePredicate);
    CompletableFuture<Boolean> deleteScopeFuture = controller.deleteScope(deadline);
    AssertExtensions.assertFutureThrows("", deleteScopeFuture, deadlinePredicate);
    CompletableFuture<Void> listFuture = controller.listStreams(deadline).collectRemaining(x -> true);
    AssertExtensions.assertFutureThrows("", listFuture, deadlinePredicate);
    CompletableFuture<Void> listWithTagFuture = controller.listStreamsForTag(deadline, "tx").collectRemaining(x -> true);
    AssertExtensions.assertFutureThrows("", listWithTagFuture, deadlinePredicate);
    CompletableFuture<StreamConfiguration> getStreamCfgFuture = controller.getStreamConfiguration(deadline, deadline);
    AssertExtensions.assertFutureThrows("", getStreamCfgFuture, deadlinePredicate);
    // endregion
    CompletableFuture<String> tokenFuture = controller.getOrRefreshDelegationTokenFor(deadline, deadline, AccessOperation.ANY);
    AssertExtensions.assertFutureThrows("", tokenFuture, deadlinePredicate);
    // region stream
    CompletableFuture<Boolean> createStreamFuture = controller.createStream(deadline, deadline, StreamConfiguration.builder().scalingPolicy(ScalingPolicy.fixed(1)).build());
    AssertExtensions.assertFutureThrows("", createStreamFuture, deadlinePredicate);
    Stream stream = Stream.of(deadline, deadline);
    CompletableFuture<PravegaNodeUri> getEndpointFuture = controller.getEndpointForSegment(NameUtils.getQualifiedStreamSegmentName(deadline, deadline, 0L));
    AssertExtensions.assertFutureThrows("", getEndpointFuture, deadlinePredicate);
    CompletableFuture<StreamSegments> getSegmentFuture = controller.getCurrentSegments(deadline, deadline);
    AssertExtensions.assertFutureThrows("", getSegmentFuture, deadlinePredicate);
    CompletableFuture<Map<Segment, Long>> getSegmentsAtTimeFuture = controller.getSegmentsAtTime(stream, 0L);
    AssertExtensions.assertFutureThrows("", getSegmentsAtTimeFuture, deadlinePredicate);
    CompletableFuture<StreamSegments> currentSegmentsFuture = controller.getCurrentSegments(deadline, deadline);
    AssertExtensions.assertFutureThrows("", currentSegmentsFuture, deadlinePredicate);
    Segment segment = new Segment(deadline, deadline, 0L);
    CompletableFuture<Boolean> isSegmentOpenFuture = controller.isSegmentOpen(segment);
    AssertExtensions.assertFutureThrows("", isSegmentOpenFuture, deadlinePredicate);
    CompletableFuture<StreamSegmentsWithPredecessors> successorFuture = controller.getSuccessors(segment);
    AssertExtensions.assertFutureThrows("", successorFuture, deadlinePredicate);
    StreamCut streamCut = new StreamCutImpl(stream, Collections.emptyMap());
    CompletableFuture<StreamSegmentSuccessors> streamCutFuture = controller.getSegments(streamCut, streamCut);
    AssertExtensions.assertFutureThrows("", streamCutFuture, deadlinePredicate);
    CompletableFuture<StreamSegmentSuccessors> streamcutSuccessorsFuture = controller.getSuccessors(streamCut);
    AssertExtensions.assertFutureThrows("", streamcutSuccessorsFuture, deadlinePredicate);
    CompletableFuture<Boolean> updateFuture = controller.updateStream(deadline, deadline, StreamConfiguration.builder().build());
    AssertExtensions.assertFutureThrows("", updateFuture, deadlinePredicate);
    CompletableFuture<Boolean> scaleFuture = controller.scaleStream(stream, Collections.emptyList(), Collections.emptyMap(), executor).getFuture();
    AssertExtensions.assertFutureThrows("", scaleFuture, deadlinePredicate);
    CompletableFuture<Boolean> scaleStatusFuture = controller.checkScaleStatus(stream, 0);
    AssertExtensions.assertFutureThrows("", scaleStatusFuture, deadlinePredicate);
    CompletableFuture<Boolean> truncateFuture = controller.truncateStream(deadline, deadline, new StreamCutImpl(Stream.of(deadline, deadline), Collections.emptyMap()));
    AssertExtensions.assertFutureThrows("", truncateFuture, deadlinePredicate);
    CompletableFuture<Boolean> sealFuture = controller.sealStream(deadline, deadline);
    AssertExtensions.assertFutureThrows("", sealFuture, deadlinePredicate);
    CompletableFuture<Boolean> deleteFuture = controller.deleteStream(deadline, deadline);
    AssertExtensions.assertFutureThrows("", deleteFuture, deadlinePredicate);
    // endregion
    // region transaction
    CompletableFuture<TxnSegments> createtxnFuture = controller.createTransaction(stream, 100L);
    AssertExtensions.assertFutureThrows("", createtxnFuture, deadlinePredicate);
    CompletableFuture<Transaction.PingStatus> pingTxnFuture = controller.pingTransaction(stream, UUID.randomUUID(), 100L);
    AssertExtensions.assertFutureThrows("", pingTxnFuture, deadlinePredicate);
    CompletableFuture<Void> abortFuture = controller.abortTransaction(stream, UUID.randomUUID());
    AssertExtensions.assertFutureThrows("", abortFuture, deadlinePredicate);
    CompletableFuture<Void> commitFuture = controller.commitTransaction(stream, "", 0L, UUID.randomUUID());
    AssertExtensions.assertFutureThrows("", commitFuture, deadlinePredicate);
    CompletableFuture<Transaction.Status> txnStatusFuture = controller.checkTransactionStatus(stream, UUID.randomUUID());
    AssertExtensions.assertFutureThrows("", txnStatusFuture, deadlinePredicate);
    // endregion
    // region writer mark
    CompletableFuture<Void> writerPosFuture = controller.noteTimestampFromWriter("deadline", stream, 0L, mock(WriterPosition.class));
    AssertExtensions.assertFutureThrows("", writerPosFuture, deadlinePredicate);
    CompletableFuture<Void> removeWriterFuture = controller.removeWriter("deadline", stream);
    AssertExtensions.assertFutureThrows("", removeWriterFuture, deadlinePredicate);
    // endregion
    // verify that a stub level deadline is not set and that the stub can still make successful calls for which we
    // have mocked successful responses.
    controller.createScope("scope1").join();
}
Also used : StreamCut(io.pravega.client.stream.StreamCut) StreamConfig(io.pravega.controller.stream.api.grpc.v1.Controller.StreamConfig) Cleanup(lombok.Cleanup) StreamConfiguration(io.pravega.client.stream.StreamConfiguration) PingTxnRequest(io.pravega.controller.stream.api.grpc.v1.Controller.PingTxnRequest) SegmentRanges(io.pravega.controller.stream.api.grpc.v1.Controller.SegmentRanges) Mockito.doThrow(org.mockito.Mockito.doThrow) StreamSegments(io.pravega.client.stream.impl.StreamSegments) NoSuchScopeException(io.pravega.client.stream.NoSuchScopeException) Pair(org.apache.commons.lang3.tuple.Pair) AccessOperation(io.pravega.shared.security.auth.AccessOperation) Map(java.util.Map) KeyValueTableInfo(io.pravega.controller.stream.api.grpc.v1.Controller.KeyValueTableInfo) SubscriberStreamCut(io.pravega.controller.stream.api.grpc.v1.Controller.SubscriberStreamCut) Status(io.grpc.Status) Mockito.doReturn(org.mockito.Mockito.doReturn) ReaderGroupConfig(io.pravega.client.stream.ReaderGroupConfig) DeleteScopeStatus(io.pravega.controller.stream.api.grpc.v1.Controller.DeleteScopeStatus) ReaderGroupInfo(io.pravega.controller.stream.api.grpc.v1.Controller.ReaderGroupInfo) TxnId(io.pravega.controller.stream.api.grpc.v1.Controller.TxnId) Slf4j(lombok.extern.slf4j.Slf4j) Assert.assertFalse(org.junit.Assert.assertFalse) TestUtils(io.pravega.test.common.TestUtils) Mockito.mock(org.mockito.Mockito.mock) KeyValueTableSegments(io.pravega.client.tables.impl.KeyValueTableSegments) SegmentId(io.pravega.controller.stream.api.grpc.v1.Controller.SegmentId) ControllerServiceImplBase(io.pravega.controller.stream.api.grpc.v1.ControllerServiceGrpc.ControllerServiceImplBase) CreateReaderGroupResponse(io.pravega.controller.stream.api.grpc.v1.Controller.CreateReaderGroupResponse) KeyValueTableConfig(io.pravega.controller.stream.api.grpc.v1.Controller.KeyValueTableConfig) GrpcSslContexts(io.grpc.netty.shaded.io.grpc.netty.GrpcSslContexts) Exceptions(io.pravega.common.Exceptions) ModelHelper.decode(io.pravega.client.control.impl.ModelHelper.decode) ScopeInfo(io.pravega.controller.stream.api.grpc.v1.Controller.ScopeInfo) Mockito.spy(org.mockito.Mockito.spy) UpdateSubscriberStatus(io.pravega.controller.stream.api.grpc.v1.Controller.UpdateSubscriberStatus) PingFailedException(io.pravega.client.stream.PingFailedException) ArrayList(java.util.ArrayList) Strings(com.google.common.base.Strings) NodeUri(io.pravega.controller.stream.api.grpc.v1.Controller.NodeUri) ReaderGroupConfiguration(io.pravega.controller.stream.api.grpc.v1.Controller.ReaderGroupConfiguration) StreamInfo(io.pravega.controller.stream.api.grpc.v1.Controller.StreamInfo) DefaultCredentials(io.pravega.shared.security.auth.DefaultCredentials) Timeout(org.junit.rules.Timeout) ScheduledExecutorService(java.util.concurrent.ScheduledExecutorService) StreamSegmentsWithPredecessors(io.pravega.client.stream.impl.StreamSegmentsWithPredecessors) Server(io.grpc.Server) Before(org.junit.Before) NettyServerBuilder(io.grpc.netty.shaded.io.grpc.netty.NettyServerBuilder) SegmentLocation(io.pravega.controller.stream.api.grpc.v1.Controller.SegmentsAtTime.SegmentLocation) lombok.val(lombok.val) Assert.assertTrue(org.junit.Assert.assertTrue) AsyncIterator(io.pravega.common.util.AsyncIterator) Test(org.junit.Test) IOException(java.io.IOException) Mockito.times(org.mockito.Mockito.times) WriterPosition(io.pravega.client.stream.impl.WriterPosition) File(java.io.File) StatusRuntimeException(io.grpc.StatusRuntimeException) ExecutionException(java.util.concurrent.ExecutionException) DeleteReaderGroupStatus(io.pravega.controller.stream.api.grpc.v1.Controller.DeleteReaderGroupStatus) SegmentsAtTime(io.pravega.controller.stream.api.grpc.v1.Controller.SegmentsAtTime) TxnFailedException(io.pravega.client.stream.TxnFailedException) CreateKeyValueTableStatus(io.pravega.controller.stream.api.grpc.v1.Controller.CreateKeyValueTableStatus) ScalingPolicy(io.pravega.client.stream.ScalingPolicy) Assert.assertEquals(org.junit.Assert.assertEquals) ManagedChannel(io.grpc.ManagedChannel) AssertExtensions(io.pravega.test.common.AssertExtensions) KeyValueTableConfiguration(io.pravega.client.tables.KeyValueTableConfiguration) GetSegmentsRequest(io.pravega.controller.stream.api.grpc.v1.Controller.GetSegmentsRequest) StreamObserver(io.grpc.stub.StreamObserver) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Stream(io.pravega.client.stream.Stream) After(org.junit.After) PravegaNodeUri(io.pravega.shared.protocol.netty.PravegaNodeUri) SubscribersResponse(io.pravega.controller.stream.api.grpc.v1.Controller.SubscribersResponse) Controller(io.pravega.controller.stream.api.grpc.v1.Controller) URI(java.net.URI) Transaction(io.pravega.client.stream.Transaction) TxnSegments(io.pravega.client.stream.impl.TxnSegments) CreateStreamStatus(io.pravega.controller.stream.api.grpc.v1.Controller.CreateStreamStatus) ImmutableMap(com.google.common.collect.ImmutableMap) Predicate(java.util.function.Predicate) AssertExtensions.assertThrows(io.pravega.test.common.AssertExtensions.assertThrows) UUID(java.util.UUID) RetriesExhaustedException(io.pravega.common.util.RetriesExhaustedException) SegmentWithRange(io.pravega.client.stream.impl.SegmentWithRange) List(java.util.List) Entry(java.util.Map.Entry) GetEpochSegmentsRequest(io.pravega.controller.stream.api.grpc.v1.Controller.GetEpochSegmentsRequest) PingTxnStatus(io.pravega.controller.stream.api.grpc.v1.Controller.PingTxnStatus) ArgumentMatchers.any(org.mockito.ArgumentMatchers.any) Segment(io.pravega.client.segment.impl.Segment) ArgumentMatchers.anyLong(org.mockito.ArgumentMatchers.anyLong) CreateScopeStatus(io.pravega.controller.stream.api.grpc.v1.Controller.CreateScopeStatus) StreamImpl(io.pravega.client.stream.impl.StreamImpl) ScaleStatusRequest(io.pravega.controller.stream.api.grpc.v1.Controller.ScaleStatusRequest) KeyValueTableConfigResponse(io.pravega.controller.stream.api.grpc.v1.Controller.KeyValueTableConfigResponse) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) ScaleStatusResponse(io.pravega.controller.stream.api.grpc.v1.Controller.ScaleStatusResponse) TxnState(io.pravega.controller.stream.api.grpc.v1.Controller.TxnState) HashMap(java.util.HashMap) CompletableFuture(java.util.concurrent.CompletableFuture) AtomicReference(java.util.concurrent.atomic.AtomicReference) SuccessorResponse(io.pravega.controller.stream.api.grpc.v1.Controller.SuccessorResponse) ScaleRequest(io.pravega.controller.stream.api.grpc.v1.Controller.ScaleRequest) DeleteKVTableStatus(io.pravega.controller.stream.api.grpc.v1.Controller.DeleteKVTableStatus) CreateTxnRequest(io.pravega.controller.stream.api.grpc.v1.Controller.CreateTxnRequest) StreamCutImpl(io.pravega.client.stream.impl.StreamCutImpl) DeleteStreamStatus(io.pravega.controller.stream.api.grpc.v1.Controller.DeleteStreamStatus) NettyChannelBuilder(io.grpc.netty.shaded.io.grpc.netty.NettyChannelBuilder) LinkedList(java.util.LinkedList) ExecutorService(java.util.concurrent.ExecutorService) ScaleResponse(io.pravega.controller.stream.api.grpc.v1.Controller.ScaleResponse) UpdateReaderGroupResponse(io.pravega.controller.stream.api.grpc.v1.Controller.UpdateReaderGroupResponse) NameUtils(io.pravega.shared.NameUtils) Semaphore(java.util.concurrent.Semaphore) Assert.assertNotNull(org.junit.Assert.assertNotNull) Mockito.verify(org.mockito.Mockito.verify) StreamSegmentSuccessors(io.pravega.client.stream.impl.StreamSegmentSuccessors) TimeUnit(java.util.concurrent.TimeUnit) SecurityConfigDefaults(io.pravega.test.common.SecurityConfigDefaults) Rule(org.junit.Rule) UpdateStreamStatus(io.pravega.controller.stream.api.grpc.v1.Controller.UpdateStreamStatus) InvalidStreamException(io.pravega.client.stream.InvalidStreamException) ExecutorServiceHelpers(io.pravega.common.concurrent.ExecutorServiceHelpers) TxnRequest(io.pravega.controller.stream.api.grpc.v1.Controller.TxnRequest) ReaderGroupConfigResponse(io.pravega.controller.stream.api.grpc.v1.Controller.ReaderGroupConfigResponse) SegmentValidityResponse(io.pravega.controller.stream.api.grpc.v1.Controller.SegmentValidityResponse) Collections(java.util.Collections) ClientConfig(io.pravega.client.ClientConfig) StreamCutImpl(io.pravega.client.stream.impl.StreamCutImpl) StreamSegmentSuccessors(io.pravega.client.stream.impl.StreamSegmentSuccessors) WriterPosition(io.pravega.client.stream.impl.WriterPosition) Cleanup(lombok.Cleanup) Segment(io.pravega.client.segment.impl.Segment) DefaultCredentials(io.pravega.shared.security.auth.DefaultCredentials) PravegaNodeUri(io.pravega.shared.protocol.netty.PravegaNodeUri) StatusRuntimeException(io.grpc.StatusRuntimeException) StreamConfiguration(io.pravega.client.stream.StreamConfiguration) Stream(io.pravega.client.stream.Stream) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) Status(io.grpc.Status) DeleteScopeStatus(io.pravega.controller.stream.api.grpc.v1.Controller.DeleteScopeStatus) UpdateSubscriberStatus(io.pravega.controller.stream.api.grpc.v1.Controller.UpdateSubscriberStatus) DeleteReaderGroupStatus(io.pravega.controller.stream.api.grpc.v1.Controller.DeleteReaderGroupStatus) CreateKeyValueTableStatus(io.pravega.controller.stream.api.grpc.v1.Controller.CreateKeyValueTableStatus) CreateStreamStatus(io.pravega.controller.stream.api.grpc.v1.Controller.CreateStreamStatus) PingTxnStatus(io.pravega.controller.stream.api.grpc.v1.Controller.PingTxnStatus) CreateScopeStatus(io.pravega.controller.stream.api.grpc.v1.Controller.CreateScopeStatus) DeleteKVTableStatus(io.pravega.controller.stream.api.grpc.v1.Controller.DeleteKVTableStatus) DeleteStreamStatus(io.pravega.controller.stream.api.grpc.v1.Controller.DeleteStreamStatus) UpdateStreamStatus(io.pravega.controller.stream.api.grpc.v1.Controller.UpdateStreamStatus) StreamCut(io.pravega.client.stream.StreamCut) SubscriberStreamCut(io.pravega.controller.stream.api.grpc.v1.Controller.SubscriberStreamCut) TxnSegments(io.pravega.client.stream.impl.TxnSegments) StreamSegmentsWithPredecessors(io.pravega.client.stream.impl.StreamSegmentsWithPredecessors) RetriesExhaustedException(io.pravega.common.util.RetriesExhaustedException) Map(java.util.Map) ImmutableMap(com.google.common.collect.ImmutableMap) HashMap(java.util.HashMap) StreamSegments(io.pravega.client.stream.impl.StreamSegments) Test(org.junit.Test)

Example 2 with TxnSegments

use of io.pravega.client.stream.impl.TxnSegments in project pravega by pravega.

the class MockController method createTransaction.

@Override
public CompletableFuture<TxnSegments> createTransaction(final Stream stream, final long lease) {
    UUID txId = UUID.randomUUID();
    List<CompletableFuture<Void>> futures = new ArrayList<>();
    StreamSegments currentSegments = getCurrentSegments(stream);
    for (Segment segment : currentSegments.getSegments()) {
        futures.add(createSegmentTx(txId, segment));
    }
    return Futures.allOf(futures).thenApply(v -> new TxnSegments(currentSegments, txId));
}
Also used : CompletableFuture(java.util.concurrent.CompletableFuture) TxnSegments(io.pravega.client.stream.impl.TxnSegments) ArrayList(java.util.ArrayList) UUID(java.util.UUID) StreamSegments(io.pravega.client.stream.impl.StreamSegments) CreateSegment(io.pravega.shared.protocol.netty.WireCommands.CreateSegment) Segment(io.pravega.client.segment.impl.Segment) DeleteSegment(io.pravega.shared.protocol.netty.WireCommands.DeleteSegment)

Example 3 with TxnSegments

use of io.pravega.client.stream.impl.TxnSegments in project pravega by pravega.

the class ScaleTest method main.

public static void main(String[] args) throws Exception {
    try {
        @Cleanup("shutdownNow") val executor = ExecutorServiceHelpers.newScheduledThreadPool(1, "test");
        @Cleanup TestingServer zkTestServer = new TestingServerStarter().start();
        ServiceBuilder serviceBuilder = ServiceBuilder.newInMemoryBuilder(ServiceBuilderConfig.getDefaultConfig());
        serviceBuilder.initialize();
        StreamSegmentStore store = serviceBuilder.createStreamSegmentService();
        TableStore tableStore = serviceBuilder.createTableStoreService();
        int port = Config.SERVICE_PORT;
        @Cleanup PravegaConnectionListener server = new PravegaConnectionListener(false, port, store, tableStore, serviceBuilder.getLowPriorityExecutor());
        server.startListening();
        // Create controller object for testing against a separate controller report.
        @Cleanup ControllerWrapper controllerWrapper = new ControllerWrapper(zkTestServer.getConnectString(), port);
        Controller controller = controllerWrapper.getController();
        final String scope = "scope";
        controllerWrapper.getControllerService().createScope(scope, 0L).get();
        final String streamName = "stream1";
        final StreamConfiguration config = StreamConfiguration.builder().scalingPolicy(ScalingPolicy.fixed(1)).build();
        Stream stream = new StreamImpl(scope, streamName);
        log.info("Creating stream {}/{}", scope, streamName);
        if (!controller.createStream(scope, streamName, config).get()) {
            log.error("Stream already existed, exiting");
            return;
        }
        // Test 1: scale stream: split one segment into two
        log.info("Scaling stream {}/{}, splitting one segment into two", scope, streamName);
        Map<Double, Double> map = new HashMap<>();
        map.put(0.0, 0.5);
        map.put(0.5, 1.0);
        if (!controller.scaleStream(stream, Collections.singletonList(0L), map, executor).getFuture().get()) {
            log.error("Scale stream: splitting segment into two failed, exiting");
            return;
        }
        // Test 2: scale stream: merge two segments into one
        log.info("Scaling stream {}/{}, merging two segments into one", scope, streamName);
        CompletableFuture<Boolean> scaleResponseFuture = controller.scaleStream(stream, Arrays.asList(1L, 2L), Collections.singletonMap(0.0, 1.0), executor).getFuture();
        if (!scaleResponseFuture.get()) {
            log.error("Scale stream: merging two segments into one failed, exiting");
            return;
        }
        // Test 3: create a transaction, and try scale operation, it should fail with precondition check failure
        CompletableFuture<TxnSegments> txnFuture = controller.createTransaction(stream, 5000);
        TxnSegments transaction = txnFuture.get();
        if (transaction == null) {
            log.error("Create transaction failed, exiting");
            return;
        }
        log.info("Scaling stream {}/{}, splitting one segment into two, while transaction is ongoing", scope, streamName);
        scaleResponseFuture = controller.scaleStream(stream, Collections.singletonList(3L), map, executor).getFuture();
        CompletableFuture<Boolean> future = scaleResponseFuture.whenComplete((r, e) -> {
            if (e != null) {
                log.error("Failed: scale with ongoing transaction.", e);
            } else if (getAndHandleExceptions(controller.checkTransactionStatus(stream, transaction.getTxnId()), RuntimeException::new) != Transaction.Status.OPEN) {
                log.info("Success: scale with ongoing transaction.");
            } else {
                log.error("Failed: scale with ongoing transaction.");
            }
        });
        CompletableFuture<Void> statusFuture = controller.abortTransaction(stream, transaction.getTxnId());
        statusFuture.get();
        future.get();
        log.info("All scaling test PASSED");
        ExecutorServiceHelpers.shutdown(executor);
        System.exit(0);
    } catch (Throwable t) {
        log.error("test failed with {}", t);
        System.exit(-1);
    }
}
Also used : HashMap(java.util.HashMap) Cleanup(lombok.Cleanup) PravegaConnectionListener(io.pravega.segmentstore.server.host.handler.PravegaConnectionListener) ServiceBuilder(io.pravega.segmentstore.server.store.ServiceBuilder) StreamConfiguration(io.pravega.client.stream.StreamConfiguration) Stream(io.pravega.client.stream.Stream) lombok.val(lombok.val) TestingServer(org.apache.curator.test.TestingServer) TxnSegments(io.pravega.client.stream.impl.TxnSegments) TestingServerStarter(io.pravega.test.common.TestingServerStarter) Controller(io.pravega.client.control.impl.Controller) TableStore(io.pravega.segmentstore.contracts.tables.TableStore) StreamSegmentStore(io.pravega.segmentstore.contracts.StreamSegmentStore) StreamImpl(io.pravega.client.stream.impl.StreamImpl)

Example 4 with TxnSegments

use of io.pravega.client.stream.impl.TxnSegments in project pravega by pravega.

the class ControllerBootstrapTest method bootstrapTest.

@Test(timeout = 20000)
public void bootstrapTest() throws Exception {
    Controller controller = controllerWrapper.getController();
    // Now start Pravega service.
    serviceBuilder = ServiceBuilder.newInMemoryBuilder(ServiceBuilderConfig.getDefaultConfig());
    serviceBuilder.initialize();
    store = serviceBuilder.createStreamSegmentService();
    tableStore = serviceBuilder.createTableStoreService();
    server = new PravegaConnectionListener(false, servicePort, store, tableStore, serviceBuilder.getLowPriorityExecutor());
    server.startListening();
    // Create test scope. This operation should succeed.
    Boolean scopeStatus = controller.createScope(SCOPE).join();
    Assert.assertEquals(true, scopeStatus);
    // Try creating a stream. It should not complete until Pravega host has started.
    // After Pravega host starts, stream should be successfully created.
    StreamConfiguration streamConfiguration = StreamConfiguration.builder().scalingPolicy(ScalingPolicy.fixed(1)).build();
    CompletableFuture<Boolean> streamStatus = controller.createStream(SCOPE, STREAM, streamConfiguration);
    Assert.assertTrue(!streamStatus.isDone());
    // Ensure that create stream succeeds.
    Boolean status = streamStatus.join();
    Assert.assertEquals(true, status);
    // Now create transaction should succeed.
    CompletableFuture<TxnSegments> txIdFuture = controller.createTransaction(new StreamImpl(SCOPE, STREAM), 10000);
    TxnSegments id = txIdFuture.join();
    Assert.assertNotNull(id);
    controllerWrapper.awaitRunning();
}
Also used : TxnSegments(io.pravega.client.stream.impl.TxnSegments) StreamImpl(io.pravega.client.stream.impl.StreamImpl) StreamConfiguration(io.pravega.client.stream.StreamConfiguration) Controller(io.pravega.client.control.impl.Controller) PravegaConnectionListener(io.pravega.segmentstore.server.host.handler.PravegaConnectionListener) Test(org.junit.Test)

Example 5 with TxnSegments

use of io.pravega.client.stream.impl.TxnSegments in project pravega by pravega.

the class ControllerImpl method convert.

private TxnSegments convert(CreateTxnResponse response) {
    NavigableMap<Double, SegmentWithRange> rangeMap = new TreeMap<>();
    for (SegmentRange r : response.getActiveSegmentsList()) {
        Preconditions.checkState(r.getMinKey() <= r.getMaxKey());
        rangeMap.put(r.getMaxKey(), new SegmentWithRange(encode(r.getSegmentId()), r.getMinKey(), r.getMaxKey()));
    }
    StreamSegments segments = new StreamSegments(rangeMap);
    return new TxnSegments(segments, encode(response.getTxnId()));
}
Also used : SegmentRange(io.pravega.controller.stream.api.grpc.v1.Controller.SegmentRange) TxnSegments(io.pravega.client.stream.impl.TxnSegments) SegmentWithRange(io.pravega.client.stream.impl.SegmentWithRange) TreeMap(java.util.TreeMap) StreamSegments(io.pravega.client.stream.impl.StreamSegments)

Aggregations

TxnSegments (io.pravega.client.stream.impl.TxnSegments)6 StreamImpl (io.pravega.client.stream.impl.StreamImpl)4 Segment (io.pravega.client.segment.impl.Segment)3 StreamConfiguration (io.pravega.client.stream.StreamConfiguration)3 StreamSegments (io.pravega.client.stream.impl.StreamSegments)3 UUID (java.util.UUID)3 Controller (io.pravega.client.control.impl.Controller)2 Stream (io.pravega.client.stream.Stream)2 SegmentWithRange (io.pravega.client.stream.impl.SegmentWithRange)2 ArrayList (java.util.ArrayList)2 HashMap (java.util.HashMap)2 CompletableFuture (java.util.concurrent.CompletableFuture)2 Cleanup (lombok.Cleanup)2 lombok.val (lombok.val)2 Test (org.junit.Test)2 Strings (com.google.common.base.Strings)1 ImmutableMap (com.google.common.collect.ImmutableMap)1 ManagedChannel (io.grpc.ManagedChannel)1 Server (io.grpc.Server)1 Status (io.grpc.Status)1