package brave.spring.beans; import org.junit.After; import org.junit.Test; import org.springframework.beans.factory.BeanCreationException; import zipkin.Endpoint; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.failBecauseExceptionWasNotThrown; public class EndpointFactoryBeanTest { XmlBeans context; @After public void close() { if (context != null) context.close(); } @Test public void serviceName() { context = new XmlBeans("" + "<bean id=\"localEndpoint\" class=\"brave.spring.beans.EndpointFactoryBean\">\n" + " <property name=\"serviceName\" value=\"brave-webmvc-example\"/>\n" + "</bean>" ); context.refresh(); assertThat(context.getBean(Endpoint.class)) .isEqualTo(Endpoint.builder().serviceName("brave-webmvc-example").build()); } @Test public void ip() { context = new XmlBeans("" + "<bean id=\"localEndpoint\" class=\"brave.spring.beans.EndpointFactoryBean\">\n" + " <property name=\"serviceName\" value=\"brave-webmvc-example\"/>\n" + " <property name=\"ip\" value=\"1.2.3.4\"/>\n" + "</bean>" ); context.refresh(); assertThat(context.getBean(Endpoint.class)) .isEqualTo(Endpoint.builder() .serviceName("brave-webmvc-example") .ipv4(1 << 24 | 2 << 16 | 3 << 8 | 4) .build()); } @Test public void ip_malformed() { context = new XmlBeans("" + "<bean id=\"localEndpoint\" class=\"brave.spring.beans.EndpointFactoryBean\">\n" + " <property name=\"serviceName\" value=\"brave-webmvc-example\"/>\n" + " <property name=\"ip\" value=\"localhost\"/>\n" + "</bean>" ); context.refresh(); try { context.getBean(Endpoint.class); failBecauseExceptionWasNotThrown(BeanCreationException.class); } catch (BeanCreationException e) { assertThat(e) .hasMessageContaining("endpoint.ip: localhost is not an IP literal"); } } @Test public void port() { context = new XmlBeans("" + "<bean id=\"localEndpoint\" class=\"brave.spring.beans.EndpointFactoryBean\">\n" + " <property name=\"serviceName\" value=\"brave-webmvc-example\"/>\n" + " <property name=\"ip\" value=\"1.2.3.4\"/>\n" + " <property name=\"port\" value=\"8080\"/>\n" + "</bean>" ); context.refresh(); assertThat(context.getBean(Endpoint.class)) .isEqualTo(Endpoint.builder() .serviceName("brave-webmvc-example") .ipv4(1 << 24 | 2 << 16 | 3 << 8 | 4) .port(8080).build()); } }