package brave.spring.beans;
import brave.Clock;
import brave.Tracing;
import brave.internal.StrictCurrentTraceContext;
import brave.sampler.Sampler;
import org.junit.After;
import org.junit.Test;
import zipkin.Endpoint;
import zipkin.reporter.Reporter;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
public class TracingFactoryBeanTest {
public static Clock CLOCK = mock(Clock.class);
XmlBeans context;
@After public void close() {
if (context != null) context.close();
}
@Test public void localServiceName() {
context = new XmlBeans(""
+ "<bean id=\"tracing\" class=\"brave.spring.beans.TracingFactoryBean\">\n"
+ " <property name=\"localServiceName\" value=\"brave-webmvc-example\"/>\n"
+ "</bean>"
);
context.refresh();
assertThat(context.getBean(Tracing.class))
.extracting("tracer.localEndpoint")
.extracting("serviceName")
.containsExactly("brave-webmvc-example");
}
@Test public void localEndpoint() {
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>"
, ""
+ "<bean id=\"tracing\" class=\"brave.spring.beans.TracingFactoryBean\">\n"
+ " <property name=\"localEndpoint\" ref=\"localEndpoint\"/>\n"
+ "</bean>"
);
context.refresh();
assertThat(context.getBean(Tracing.class))
.extracting("tracer.localEndpoint")
.containsExactly(Endpoint.builder()
.serviceName("brave-webmvc-example")
.ipv4(1 << 24 | 2 << 16 | 3 << 8 | 4)
.port(8080).build());
}
@Test public void reporter() {
context = new XmlBeans(""
+ "<bean id=\"tracing\" class=\"brave.spring.beans.TracingFactoryBean\">\n"
+ " <property name=\"reporter\">\n"
+ " <util:constant static-field=\"zipkin.reporter.Reporter.CONSOLE\"/>\n"
+ " </property>\n"
+ "</bean>"
);
context.refresh();
assertThat(context.getBean(Tracing.class))
.extracting("tracer.recorder.reporter")
.containsExactly(Reporter.CONSOLE);
}
@Test public void clock() {
context = new XmlBeans(""
+ "<bean id=\"tracing\" class=\"brave.spring.beans.TracingFactoryBean\">\n"
+ " <property name=\"clock\">\n"
+ " <util:constant static-field=\"" + getClass().getName() + ".CLOCK\"/>\n"
+ " </property>\n"
+ "</bean>"
);
context.refresh();
assertThat(context.getBean(Tracing.class))
.extracting("tracer.clock")
.containsExactly(CLOCK);
}
@Test public void sampler() {
context = new XmlBeans(""
+ "<bean id=\"tracing\" class=\"brave.spring.beans.TracingFactoryBean\">\n"
+ " <property name=\"sampler\">\n"
+ " <util:constant static-field=\"brave.sampler.Sampler.NEVER_SAMPLE\"/>\n"
+ " </property>\n"
+ "</bean>"
);
context.refresh();
assertThat(context.getBean(Tracing.class))
.extracting("tracer.sampler")
.containsExactly(Sampler.NEVER_SAMPLE);
}
@Test public void currentTraceContext() {
context = new XmlBeans(""
+ "<bean id=\"tracing\" class=\"brave.spring.beans.TracingFactoryBean\">\n"
+ " <property name=\"currentTraceContext\">\n"
+ " <bean class=\"brave.internal.StrictCurrentTraceContext\"/>\n"
+ " </property>\n"
+ "</bean>"
);
context.refresh();
assertThat(context.getBean(Tracing.class))
.extracting("tracer.currentTraceContext")
.allMatch(o -> o instanceof StrictCurrentTraceContext);
}
@Test public void traceId128Bit() {
context = new XmlBeans(""
+ "<bean id=\"tracing\" class=\"brave.spring.beans.TracingFactoryBean\">\n"
+ " <property name=\"traceId128Bit\" value=\"true\"/>\n"
+ "</bean>"
);
context.refresh();
assertThat(context.getBean(Tracing.class))
.extracting("tracer.traceId128Bit")
.containsExactly(true);
}
}