Search in sources :

Example 16 with Address

use of io.scalecube.net.Address in project scalecube by scalecube.

the class ErrorFlowTest method initNodes.

@BeforeAll
public static void initNodes() {
    provider = Microservices.builder().discovery(endpoint -> new ScalecubeServiceDiscovery().transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory())).transport(cfg -> cfg.port(PORT.incrementAndGet())).options(opts -> opts.metadata(endpoint))).transport(RSocketServiceTransport::new).services(new GreetingServiceImpl()).startAwait();
    final Address seedAddress = provider.discovery().address();
    consumer = Microservices.builder().discovery(endpoint -> new ScalecubeServiceDiscovery().membership(cfg -> cfg.seedMembers(seedAddress)).transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory())).transport(cfg -> cfg.port(PORT.incrementAndGet())).options(opts -> opts.metadata(endpoint))).transport(RSocketServiceTransport::new).startAwait();
}
Also used : Assertions.assertThrows(org.junit.jupiter.api.Assertions.assertThrows) ScalecubeServiceDiscovery(io.scalecube.services.discovery.ScalecubeServiceDiscovery) StepVerifier(reactor.test.StepVerifier) InternalServiceException(io.scalecube.services.exceptions.InternalServiceException) Publisher(org.reactivestreams.Publisher) GreetingResponse(io.scalecube.services.sut.GreetingResponse) RSocketServiceTransport(io.scalecube.services.transport.rsocket.RSocketServiceTransport) AfterAll(org.junit.jupiter.api.AfterAll) Test(org.junit.jupiter.api.Test) ForbiddenException(io.scalecube.services.exceptions.ForbiddenException) ServiceUnavailableException(io.scalecube.services.exceptions.ServiceUnavailableException) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) BeforeAll(org.junit.jupiter.api.BeforeAll) Mono.from(reactor.core.publisher.Mono.from) GreetingServiceImpl(io.scalecube.services.sut.GreetingServiceImpl) WebsocketTransportFactory(io.scalecube.transport.netty.websocket.WebsocketTransportFactory) ServiceMessage(io.scalecube.services.api.ServiceMessage) BadRequestException(io.scalecube.services.exceptions.BadRequestException) Address(io.scalecube.net.Address) ScalecubeServiceDiscovery(io.scalecube.services.discovery.ScalecubeServiceDiscovery) Address(io.scalecube.net.Address) WebsocketTransportFactory(io.scalecube.transport.netty.websocket.WebsocketTransportFactory) GreetingServiceImpl(io.scalecube.services.sut.GreetingServiceImpl) RSocketServiceTransport(io.scalecube.services.transport.rsocket.RSocketServiceTransport) BeforeAll(org.junit.jupiter.api.BeforeAll)

Example 17 with Address

use of io.scalecube.net.Address in project scalecube by scalecube.

the class ServiceRegistryTest method test_delayed_listen_to_discovery_events.

@ParameterizedTest
@MethodSource("metadataCodecSource")
public void test_delayed_listen_to_discovery_events(MetadataCodec metadataCodec) {
    Sinks.Many<ServiceDiscoveryEvent> processor = Sinks.many().replay().all();
    List<Microservices> cluster = new CopyOnWriteArrayList<>();
    Microservices seed = Microservices.builder().discovery(defServiceDiscovery(metadataCodec)).transport(RSocketServiceTransport::new).services(new GreetingServiceImpl()).startAwait();
    cluster.add(seed);
    seed.listenDiscovery().subscribe(processor::tryEmitNext, processor::tryEmitError, processor::tryEmitComplete);
    Address seedAddress = seed.discovery().address();
    StepVerifier.create(processor.asFlux().onBackpressureBuffer()).then(() -> {
        Microservices ms1 = Microservices.builder().discovery(defServiceDiscovery(seedAddress, metadataCodec)).transport(RSocketServiceTransport::new).services(new GreetingServiceImpl(), new AnnotationServiceImpl()).startAwait();
        cluster.add(ms1);
    }).assertNext(event -> assertEquals(ENDPOINT_ADDED, event.type())).then(() -> {
        Microservices ms2 = Microservices.builder().discovery(defServiceDiscovery(seedAddress, metadataCodec)).transport(RSocketServiceTransport::new).services(new GreetingServiceImpl()).startAwait();
        cluster.add(ms2);
    }).assertNext(event -> assertEquals(ENDPOINT_ADDED, event.type())).thenCancel().verify(TIMEOUT);
    StepVerifier.create(seed.call().api(AnnotationService.class).serviceDiscoveryEventTypes()).assertNext(type -> assertEquals(ENDPOINT_ADDED, type)).assertNext(type -> assertEquals(ENDPOINT_ADDED, type)).thenCancel().verify(TIMEOUT);
    Mono.whenDelayError(cluster.stream().map(Microservices::shutdown).toArray(Mono[]::new)).block(TIMEOUT);
}
Also used : Sinks(reactor.core.publisher.Sinks) ENDPOINT_LEAVING(io.scalecube.services.discovery.api.ServiceDiscoveryEvent.Type.ENDPOINT_LEAVING) StepVerifier(reactor.test.StepVerifier) MetadataCodec(io.scalecube.cluster.metadata.MetadataCodec) JdkMetadataCodec(io.scalecube.cluster.metadata.JdkMetadataCodec) ENDPOINT_ADDED(io.scalecube.services.discovery.api.ServiceDiscoveryEvent.Type.ENDPOINT_ADDED) Duration(java.time.Duration) ServiceDiscoveryEvent(io.scalecube.services.discovery.api.ServiceDiscoveryEvent) WebsocketTransportFactory(io.scalecube.transport.netty.websocket.WebsocketTransportFactory) Assertions.assertEquals(org.junit.jupiter.api.Assertions.assertEquals) Address(io.scalecube.net.Address) MethodSource(org.junit.jupiter.params.provider.MethodSource) ScalecubeServiceDiscovery(io.scalecube.services.discovery.ScalecubeServiceDiscovery) ENDPOINT_REMOVED(io.scalecube.services.discovery.api.ServiceDiscoveryEvent.Type.ENDPOINT_REMOVED) JacksonMetadataCodec(io.scalecube.cluster.codec.jackson.JacksonMetadataCodec) Mono(reactor.core.publisher.Mono) Arguments(org.junit.jupiter.params.provider.Arguments) AnnotationService(io.scalecube.services.sut.AnnotationService) AnnotationServiceImpl(io.scalecube.services.sut.AnnotationServiceImpl) RSocketServiceTransport(io.scalecube.services.transport.rsocket.RSocketServiceTransport) List(java.util.List) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest) Stream(java.util.stream.Stream) ServiceDiscoveryFactory(io.scalecube.services.discovery.api.ServiceDiscoveryFactory) GreetingServiceImpl(io.scalecube.services.sut.GreetingServiceImpl) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) Sinks(reactor.core.publisher.Sinks) Address(io.scalecube.net.Address) ServiceDiscoveryEvent(io.scalecube.services.discovery.api.ServiceDiscoveryEvent) AnnotationServiceImpl(io.scalecube.services.sut.AnnotationServiceImpl) GreetingServiceImpl(io.scalecube.services.sut.GreetingServiceImpl) RSocketServiceTransport(io.scalecube.services.transport.rsocket.RSocketServiceTransport) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest) MethodSource(org.junit.jupiter.params.provider.MethodSource)

Example 18 with Address

use of io.scalecube.net.Address in project scalecube by scalecube.

the class ServiceRegistryTest method test_added_removed_registration_events.

@ParameterizedTest
@MethodSource("metadataCodecSource")
public void test_added_removed_registration_events(MetadataCodec metadataCodec) {
    Sinks.Many<ServiceDiscoveryEvent> events = Sinks.many().replay().all();
    Microservices seed = Microservices.builder().discovery(defServiceDiscovery(metadataCodec)).transport(RSocketServiceTransport::new).startAwait();
    seed.listenDiscovery().subscribe(events::tryEmitNext, events::tryEmitError, events::tryEmitComplete);
    Address seedAddress = seed.discovery().address();
    Microservices ms1 = Microservices.builder().discovery(defServiceDiscovery(seedAddress, metadataCodec)).transport(RSocketServiceTransport::new).services(new GreetingServiceImpl()).startAwait();
    Microservices ms2 = Microservices.builder().discovery(defServiceDiscovery(seedAddress, metadataCodec)).transport(RSocketServiceTransport::new).services(new GreetingServiceImpl()).startAwait();
    StepVerifier.create(events.asFlux().onBackpressureBuffer()).assertNext(event -> assertEquals(ENDPOINT_ADDED, event.type())).assertNext(event -> assertEquals(ENDPOINT_ADDED, event.type())).then(() -> Mono.whenDelayError(ms1.shutdown(), ms2.shutdown()).block(TIMEOUT)).assertNext(event -> assertEquals(ENDPOINT_LEAVING, event.type())).assertNext(event -> assertEquals(ENDPOINT_LEAVING, event.type())).assertNext(event -> assertEquals(ENDPOINT_REMOVED, event.type())).assertNext(event -> assertEquals(ENDPOINT_REMOVED, event.type())).then(() -> seed.shutdown().block(TIMEOUT)).thenCancel().verify(TIMEOUT);
}
Also used : Sinks(reactor.core.publisher.Sinks) ENDPOINT_LEAVING(io.scalecube.services.discovery.api.ServiceDiscoveryEvent.Type.ENDPOINT_LEAVING) StepVerifier(reactor.test.StepVerifier) MetadataCodec(io.scalecube.cluster.metadata.MetadataCodec) JdkMetadataCodec(io.scalecube.cluster.metadata.JdkMetadataCodec) ENDPOINT_ADDED(io.scalecube.services.discovery.api.ServiceDiscoveryEvent.Type.ENDPOINT_ADDED) Duration(java.time.Duration) ServiceDiscoveryEvent(io.scalecube.services.discovery.api.ServiceDiscoveryEvent) WebsocketTransportFactory(io.scalecube.transport.netty.websocket.WebsocketTransportFactory) Assertions.assertEquals(org.junit.jupiter.api.Assertions.assertEquals) Address(io.scalecube.net.Address) MethodSource(org.junit.jupiter.params.provider.MethodSource) ScalecubeServiceDiscovery(io.scalecube.services.discovery.ScalecubeServiceDiscovery) ENDPOINT_REMOVED(io.scalecube.services.discovery.api.ServiceDiscoveryEvent.Type.ENDPOINT_REMOVED) JacksonMetadataCodec(io.scalecube.cluster.codec.jackson.JacksonMetadataCodec) Mono(reactor.core.publisher.Mono) Arguments(org.junit.jupiter.params.provider.Arguments) AnnotationService(io.scalecube.services.sut.AnnotationService) AnnotationServiceImpl(io.scalecube.services.sut.AnnotationServiceImpl) RSocketServiceTransport(io.scalecube.services.transport.rsocket.RSocketServiceTransport) List(java.util.List) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest) Stream(java.util.stream.Stream) ServiceDiscoveryFactory(io.scalecube.services.discovery.api.ServiceDiscoveryFactory) GreetingServiceImpl(io.scalecube.services.sut.GreetingServiceImpl) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) Sinks(reactor.core.publisher.Sinks) Address(io.scalecube.net.Address) ServiceDiscoveryEvent(io.scalecube.services.discovery.api.ServiceDiscoveryEvent) GreetingServiceImpl(io.scalecube.services.sut.GreetingServiceImpl) RSocketServiceTransport(io.scalecube.services.transport.rsocket.RSocketServiceTransport) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest) MethodSource(org.junit.jupiter.params.provider.MethodSource)

Example 19 with Address

use of io.scalecube.net.Address in project scalecube by scalecube.

the class StreamingServiceTest method setup.

@BeforeAll
public static void setup() {
    gateway = Microservices.builder().discovery(serviceEndpoint -> new ScalecubeServiceDiscovery().transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory())).options(opts -> opts.metadata(serviceEndpoint))).transport(RSocketServiceTransport::new).defaultDataDecoder(ServiceMessageCodec::decodeData).startAwait();
    final Address gatewayAddress = gateway.discovery().address();
    node = Microservices.builder().discovery(endpoint -> new ScalecubeServiceDiscovery().transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory())).options(opts -> opts.metadata(endpoint)).membership(cfg -> cfg.seedMembers(gatewayAddress))).transport(RSocketServiceTransport::new).defaultDataDecoder(ServiceMessageCodec::decodeData).services(new SimpleQuoteService()).startAwait();
}
Also used : Assertions.fail(org.junit.jupiter.api.Assertions.fail) Assertions.assertNotNull(org.junit.jupiter.api.Assertions.assertNotNull) ScalecubeServiceDiscovery(io.scalecube.services.discovery.ScalecubeServiceDiscovery) Disposable(reactor.core.Disposable) SimpleQuoteService(io.scalecube.services.sut.SimpleQuoteService) RSocketServiceTransport(io.scalecube.services.transport.rsocket.RSocketServiceTransport) TimeUnit(java.util.concurrent.TimeUnit) Test(org.junit.jupiter.api.Test) CountDownLatch(java.util.concurrent.CountDownLatch) List(java.util.List) ServiceMessageCodec(io.scalecube.services.transport.api.ServiceMessageCodec) BeforeAll(org.junit.jupiter.api.BeforeAll) Assertions.assertTrue(org.junit.jupiter.api.Assertions.assertTrue) Duration(java.time.Duration) QuoteService(io.scalecube.services.sut.QuoteService) WebsocketTransportFactory(io.scalecube.transport.netty.websocket.WebsocketTransportFactory) ServiceMessage(io.scalecube.services.api.ServiceMessage) Assertions.assertEquals(org.junit.jupiter.api.Assertions.assertEquals) Address(io.scalecube.net.Address) ScalecubeServiceDiscovery(io.scalecube.services.discovery.ScalecubeServiceDiscovery) Address(io.scalecube.net.Address) WebsocketTransportFactory(io.scalecube.transport.netty.websocket.WebsocketTransportFactory) SimpleQuoteService(io.scalecube.services.sut.SimpleQuoteService) ServiceMessageCodec(io.scalecube.services.transport.api.ServiceMessageCodec) RSocketServiceTransport(io.scalecube.services.transport.rsocket.RSocketServiceTransport) BeforeAll(org.junit.jupiter.api.BeforeAll)

Example 20 with Address

use of io.scalecube.net.Address in project scalecube by scalecube.

the class RSocketServiceTransportTest method setUp.

@BeforeEach
public void setUp() {
    gateway = Microservices.builder().discovery(endpoint -> new ScalecubeServiceDiscovery().transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory())).options(opts -> opts.metadata(endpoint))).transport(RSocketServiceTransport::new).startAwait();
    final Address gatewayAddress = this.gateway.discovery().address();
    serviceNode = Microservices.builder().discovery(serviceEndpoint -> new ScalecubeServiceDiscovery().transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory())).options(opts -> opts.metadata(serviceEndpoint)).membership(cfg -> cfg.seedMembers(gatewayAddress))).transport(RSocketServiceTransport::new).services(new SimpleQuoteService()).startAwait();
}
Also used : ScalecubeServiceDiscovery(io.scalecube.services.discovery.ScalecubeServiceDiscovery) BeforeEach(org.junit.jupiter.api.BeforeEach) Disposable(reactor.core.Disposable) Mono(reactor.core.publisher.Mono) ConnectionClosedException(io.scalecube.services.exceptions.ConnectionClosedException) AtomicReference(java.util.concurrent.atomic.AtomicReference) SimpleQuoteService(io.scalecube.services.sut.SimpleQuoteService) TimeUnit(java.util.concurrent.TimeUnit) Test(org.junit.jupiter.api.Test) CountDownLatch(java.util.concurrent.CountDownLatch) AfterEach(org.junit.jupiter.api.AfterEach) Microservices(io.scalecube.services.Microservices) ServiceCall(io.scalecube.services.ServiceCall) Assertions.assertTrue(org.junit.jupiter.api.Assertions.assertTrue) Duration(java.time.Duration) QuoteService(io.scalecube.services.sut.QuoteService) ServiceDiscoveryEvent(io.scalecube.services.discovery.api.ServiceDiscoveryEvent) WebsocketTransportFactory(io.scalecube.transport.netty.websocket.WebsocketTransportFactory) Optional(java.util.Optional) ServiceMessage(io.scalecube.services.api.ServiceMessage) Assertions.assertEquals(org.junit.jupiter.api.Assertions.assertEquals) Address(io.scalecube.net.Address) BaseTest(io.scalecube.services.BaseTest) ScalecubeServiceDiscovery(io.scalecube.services.discovery.ScalecubeServiceDiscovery) Address(io.scalecube.net.Address) WebsocketTransportFactory(io.scalecube.transport.netty.websocket.WebsocketTransportFactory) SimpleQuoteService(io.scalecube.services.sut.SimpleQuoteService) BeforeEach(org.junit.jupiter.api.BeforeEach)

Aggregations

Address (io.scalecube.net.Address)21 ScalecubeServiceDiscovery (io.scalecube.services.discovery.ScalecubeServiceDiscovery)17 WebsocketTransportFactory (io.scalecube.transport.netty.websocket.WebsocketTransportFactory)17 Mono (reactor.core.publisher.Mono)17 RSocketServiceTransport (io.scalecube.services.transport.rsocket.RSocketServiceTransport)15 Microservices (io.scalecube.services.Microservices)12 ServiceMessage (io.scalecube.services.api.ServiceMessage)7 Assertions.assertEquals (org.junit.jupiter.api.Assertions.assertEquals)7 ServiceDiscoveryEvent (io.scalecube.services.discovery.api.ServiceDiscoveryEvent)6 List (java.util.List)6 ServiceDiscoveryFactory (io.scalecube.services.discovery.api.ServiceDiscoveryFactory)5 CopyOnWriteArrayList (java.util.concurrent.CopyOnWriteArrayList)5 Sinks (reactor.core.publisher.Sinks)5 Duration (java.time.Duration)4 Collections (java.util.Collections)4 Map (java.util.Map)4 Optional (java.util.Optional)4 Flux (reactor.core.publisher.Flux)4 ServiceCall (io.scalecube.services.ServiceCall)3 ServiceInfo (io.scalecube.services.ServiceInfo)3