@Override public Optional<? extends LoadBalancer> resolve(String... serviceReferences) { if (ArrayUtils.isEmpty(serviceReferences) || StringUtils.isEmpty(serviceReferences[0])) { return Optional.empty(); } String reference = serviceReferences[0]; if (reference.startsWith("/")) { // current server reference if (beanContext.containsBean(EmbeddedServer.class)) { EmbeddedServer embeddedServer = beanContext.getBean(EmbeddedServer.class); URL url = embeddedServer.getURL(); return Optional.of(LoadBalancer.fixed(url)); } else { return Optional.empty(); } } else if (reference.indexOf('/') > -1) { try { URL url = new URL(reference); return Optional.of(LoadBalancer.fixed(url)); } catch (MalformedURLException e) { return Optional.empty(); } } else { reference = NameUtils.hyphenate(reference); return resolveLoadBalancerForServiceID(reference); } }
@BeforeClass public static void setupServer() { System.setProperty(Environment.BOOTSTRAP_CONTEXT_PROPERTY, "true"); Map<String, Object> map = new HashMap<>(); map.put(MockSpringCloudConfigServer.ENABLED, true); map.put("micronaut.server.port", -1); map.put("spring.cloud.config.enabled", false); map.put("micronaut.environments", "dev,test"); springCloudServer = ApplicationContext.run(EmbeddedServer.class, map); server = ApplicationContext.run(EmbeddedServer.class, CollectionUtils.mapOf( "micronaut.environments","test", "micronaut.application.name", "spring-config-sample", "micronaut.config-client.enabled", true, "spring.cloud.config.enabled", true, "spring.cloud.config.uri", springCloudServer.getURI() )); client = server .getApplicationContext() .createBean(HttpClient.class, LoadBalancer.fixed(server.getURL())); }
} else { URL serverURL = ((EmbeddedServerInstance) instance).getEmbeddedServer().getURL(); HTTPCheck httpCheck; try {
@Test public void testStreamingClient() { EmbeddedServer embeddedServer = ApplicationContext.run(EmbeddedServer.class); RxStreamingHttpClient client = embeddedServer.getApplicationContext().createBean(RxStreamingHttpClient.class, embeddedServer.getURL());
@Test public void testPostInvalidFormData() { EmbeddedServer embeddedServer = ApplicationContext.run(EmbeddedServer.class); RxHttpClient client = embeddedServer.getApplicationContext().createBean(RxHttpClient.class, embeddedServer.getURL()); // tag::postform[] Map<String, String> data = new LinkedHashMap<>(); data.put("title", "The Stand"); data.put("pages", "notnumber"); data.put("url", "noturl"); Flowable<HttpResponse<Book>> call = client.exchange( POST("/binding/book", data) .contentType(MediaType.APPLICATION_FORM_URLENCODED), Book.class ); // end::postform[] thrown.expect(HttpClientResponseException.class); thrown.expectMessage(CoreMatchers.startsWith("Failed to convert argument [pages] for value [notnumber]")); HttpResponse<Book> response = call.blockingFirst(); embeddedServer.stop(); client.stop(); } }
@Test public void testSimpleRetrieve() { EmbeddedServer embeddedServer = ApplicationContext.run(EmbeddedServer.class); RxHttpClient client = embeddedServer.getApplicationContext().createBean(RxHttpClient.class, embeddedServer.getURL()); // tag::simple[] String uri = UriBuilder.of("/hello/{name}") .expand(Collections.singletonMap("name", "John")) .toString(); assertEquals("/hello/John", uri); String result = client.toBlocking().retrieve(uri); assertEquals( "Hello John", result ); // end::simple[] embeddedServer.stop(); client.stop(); }
@Test public void testGetPojoList() { ApplicationContext applicationContext = ApplicationContext.run(); EmbeddedServer server = applicationContext.getBean(EmbeddedServer.class).start(); HttpClient client = applicationContext.createBean(HttpClient.class, server.getURL()); Flowable<HttpResponse<List>> flowable = Flowable.fromPublisher(client.exchange( HttpRequest.GET("/get/pojoList"), Argument.of(List.class, HttpGetSpec.Book.class) )); HttpResponse<List> response = flowable.blockingFirst(); assertEquals(response.getStatus(), HttpStatus.OK); Optional<List> body = response.getBody(); assertTrue(body.isPresent()); List<HttpGetSpec.Book> list = body.get(); assertEquals(list.size(), 1); assertTrue(list.get(0) instanceof HttpGetSpec.Book); client.stop(); applicationContext.stop(); } }
@Test public void testSimpleGet() { ApplicationContext applicationContext = ApplicationContext.run(); EmbeddedServer server = applicationContext.getBean(EmbeddedServer.class).start(); HttpClient client = new DefaultHttpClient(server.getURL()); Flowable<HttpResponse<String>> flowable = Flowable.fromPublisher(client.exchange( HttpRequest.GET("/get/simple"), String.class )); HttpResponse<String> response = flowable.blockingFirst(); Assert.assertEquals(response.getStatus(), HttpStatus.OK); Optional<String> body = response.getBody(String.class); assertTrue(body.isPresent()); assertEquals(body.get(), "success"); client.stop(); applicationContext.stop(); }
@Test public void testRetrieveWithJSON() { EmbeddedServer embeddedServer = ApplicationContext.run(EmbeddedServer.class); RxHttpClient client = embeddedServer.getApplicationContext().createBean(RxHttpClient.class, embeddedServer.getURL()); // tag::jsonmap[] Flowable<Map> response = client.retrieve( GET("/greet/John"), Map.class ); // end::jsonmap[] assertEquals( "Hello John", response.blockingFirst().get("text") ); // tag::jsonmaptypes[] response = client.retrieve( GET("/greet/John"), Argument.of(Map.class, String.class, String.class) // <1> ); // end::jsonmaptypes[] assertEquals( "Hello John", response.blockingFirst().get("text") ); embeddedServer.stop(); client.stop(); }
@Test public void testRetrieveWithPOJOResponse() { EmbeddedServer embeddedServer = ApplicationContext.run(EmbeddedServer.class); RxHttpClient client = embeddedServer.getApplicationContext().createBean(RxHttpClient.class, embeddedServer.getURL()); // tag::pojoresponse[] Flowable<HttpResponse<Message>> call = client.exchange( GET("/greet/John"), Message.class // <1> ); HttpResponse<Message> response = call.blockingFirst(); Optional<Message> message = response.getBody(Message.class); // <2> // check the status assertEquals( HttpStatus.OK, response.getStatus() // <3> ); // check the body assertTrue(message.isPresent()); assertEquals( "Hello John", message.get().getText() ); // end::pojoresponse[] embeddedServer.stop(); client.stop(); }
@Test public void testPostWithURITemplate() { EmbeddedServer embeddedServer = ApplicationContext.run(EmbeddedServer.class); RxHttpClient client = embeddedServer.getApplicationContext().createBean(RxHttpClient.class, embeddedServer.getURL()); // tag::posturitemplate[] Flowable<HttpResponse<Book>> call = client.exchange( POST("/amazon/book/{title}", new Book("The Stand")), Book.class ); // end::posturitemplate[] HttpResponse<Book> response = call.blockingFirst(); Optional<Book> message = response.getBody(Book.class); // <2> // check the status assertEquals( HttpStatus.CREATED, response.getStatus() // <3> ); // check the body assertTrue(message.isPresent()); assertEquals( "The Stand", message.get().getTitle() ); embeddedServer.stop(); client.stop(); }
@Test public void testPostRequestWithPOJO() { EmbeddedServer embeddedServer = ApplicationContext.run(EmbeddedServer.class); RxHttpClient client = embeddedServer.getApplicationContext().createBean(RxHttpClient.class, embeddedServer.getURL());
@Test public void testPostRequestWithString() { EmbeddedServer embeddedServer = ApplicationContext.run(EmbeddedServer.class); RxHttpClient client = embeddedServer.getApplicationContext().createBean(RxHttpClient.class, embeddedServer.getURL()); // tag::poststring[] Flowable<HttpResponse<String>> call = client.exchange( POST("/hello", "Hello John") // <1> .contentType(MediaType.TEXT_PLAIN_TYPE) .accept(MediaType.TEXT_PLAIN_TYPE), // <2> String.class // <3> ); // end::poststring[] HttpResponse<String> response = call.blockingFirst(); Optional<String> message = response.getBody(String.class); // <2> // check the status assertEquals( HttpStatus.CREATED, response.getStatus() // <3> ); // check the body assertTrue(message.isPresent()); assertEquals( "Hello John", message.get() ); embeddedServer.stop(); client.stop(); }
@Test public void testRetrieveWithPOJO() { EmbeddedServer embeddedServer = ApplicationContext.run(EmbeddedServer.class); RxHttpClient client = embeddedServer.getApplicationContext().createBean(RxHttpClient.class, embeddedServer.getURL()); // tag::jsonpojo[] Flowable<Message> response = client.retrieve( GET("/greet/John"), Message.class ); assertEquals( "Hello John", response.blockingFirst().getText() ); // end::jsonpojo[] embeddedServer.stop(); client.stop(); }
@Test public void testRetrieveWithHeaders() { EmbeddedServer embeddedServer = ApplicationContext.run(EmbeddedServer.class); RxHttpClient client = embeddedServer.getApplicationContext().createBean(RxHttpClient.class, embeddedServer.getURL()); // tag::headers[] Flowable<String> response = client.retrieve( GET("/hello/John") .header("X-My-Header", "SomeValue") ); // end::headers[] assertEquals( "Hello John", response.blockingFirst() ); embeddedServer.stop(); client.stop(); }
@Test public void testPostFormData() { EmbeddedServer embeddedServer = ApplicationContext.run(EmbeddedServer.class); RxHttpClient client = embeddedServer.getApplicationContext().createBean(RxHttpClient.class, embeddedServer.getURL());
@Override public Optional<? extends LoadBalancer> resolve(String... serviceReferences) { if (ArrayUtils.isEmpty(serviceReferences) || StringUtils.isEmpty(serviceReferences[0])) { return Optional.empty(); } String reference = serviceReferences[0]; if (reference.startsWith("/")) { // current server reference if (beanContext.containsBean(EmbeddedServer.class)) { EmbeddedServer embeddedServer = beanContext.getBean(EmbeddedServer.class); URL url = embeddedServer.getURL(); return Optional.of(LoadBalancer.fixed(url)); } else { return Optional.empty(); } } else if (reference.indexOf('/') > -1) { try { URL url = new URL(reference); return Optional.of(LoadBalancer.fixed(url)); } catch (MalformedURLException e) { return Optional.empty(); } } else { reference = NameUtils.hyphenate(reference); return resolveLoadBalancerForServiceID(reference); } }
@Override public Optional<? extends LoadBalancer> resolve(String... serviceReferences) { if (ArrayUtils.isEmpty(serviceReferences) || StringUtils.isEmpty(serviceReferences[0])) { return Optional.empty(); } String reference = serviceReferences[0]; if (reference.startsWith("/")) { // current server reference if (beanContext.containsBean(EmbeddedServer.class)) { EmbeddedServer embeddedServer = beanContext.getBean(EmbeddedServer.class); URL url = embeddedServer.getURL(); return Optional.of(LoadBalancer.fixed(url)); } else { return Optional.empty(); } } else if (reference.indexOf('/') > -1) { try { URL url = new URL(reference); return Optional.of(LoadBalancer.fixed(url)); } catch (MalformedURLException e) { return Optional.empty(); } } else { reference = NameUtils.hyphenate(reference); return resolveLoadBalancerForServiceID(reference); } }
long end = System.currentTimeMillis(); long took = end - start; URL url = ((EmbeddedServer) embeddedApplication).getURL(); LOG.info("Startup completed in {}ms. Server Running: {}", took, url);
@BeforeClass public static void setupServer() { server = ApplicationContext.run(EmbeddedServer.class, Collections.singletonMap( "consul.client.enabled", false )); client = server .getApplicationContext() .createBean(HttpClient.class, server.getURL()); }