package com.navercorp.pinpoint.web.filter;
import com.navercorp.pinpoint.common.service.ServiceTypeRegistryService;
import com.navercorp.pinpoint.common.trace.ServiceType;
import com.navercorp.pinpoint.common.server.bo.SpanBo;
import com.navercorp.pinpoint.web.util.ServiceTypeRegistryMockFactory;
import org.junit.Assert;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Arrays;
import java.util.Collections;
/**
* @author emeroad
*/
public class LinkFilterTest {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
private final ServiceTypeRegistryService serviceTypeRegistryService = mockServiceTypeRegistryService();
private ServiceTypeRegistryService mockServiceTypeRegistryService() {
final short tomcatTypeCode = 1010;
final String tomcatTypeName = "TOMCAT";
ServiceTypeRegistryMockFactory mockFactory = new ServiceTypeRegistryMockFactory();
mockFactory.addServiceTypeMock(tomcatTypeCode, tomcatTypeName);
return mockFactory.createMockServiceTypeRegistryService();
}
@Test
public void fromToFilterTest() {
ServiceType tomcat = serviceTypeRegistryService.findServiceTypeByName("TOMCAT");
final short tomcatServiceType = tomcat.getCode();
FilterDescriptor descriptor = new FilterDescriptor();
descriptor.setFromApplicationName("APP_A");
descriptor.setFromServiceType(tomcat.getName());
// descriptor.setFromAgentId("AGENT_A");
descriptor.setToApplicationName("APP_B");
descriptor.setToServiceType(tomcat.getName());
// descriptor.setToAgentId("AGENT_B");
FilterHint hint = new FilterHint(Collections.<RpcHint>emptyList());
LinkFilter linkFilter = new LinkFilter(descriptor, hint, serviceTypeRegistryService);
logger.debug(linkFilter.toString());
SpanBo fromSpanBo = new SpanBo();
fromSpanBo.setApplicationId("APP_A");
fromSpanBo.setServiceType(tomcatServiceType);
fromSpanBo.setAgentId("AGENT_A");
fromSpanBo.setSpanId(100);
SpanBo toSpanBO = new SpanBo();
toSpanBO.setApplicationId("APP_B");
toSpanBO.setServiceType(tomcatServiceType);
toSpanBO.setAgentId("AGENT_B");
toSpanBO.setParentSpanId(100);
SpanBo spanBoC = new SpanBo();
spanBoC.setApplicationId("APP_C");
spanBoC.setServiceType(tomcatServiceType);
spanBoC.setAgentId("AGENT_C");
Assert.assertTrue(linkFilter.include(Arrays.asList(fromSpanBo, toSpanBO)));
Assert.assertFalse(linkFilter.include(Arrays.asList(fromSpanBo, spanBoC)));
}
@Test
public void fromToFilterAgentTest() {
final ServiceType tomcat = serviceTypeRegistryService.findServiceTypeByName("TOMCAT");
final short tomcatServiceType = tomcat.getCode();
FilterDescriptor descriptor = new FilterDescriptor();
descriptor.setFromApplicationName("APP_A");
descriptor.setFromServiceType(tomcat.getName());
descriptor.setFromAgentId("AGENT_A");
descriptor.setToApplicationName("APP_B");
descriptor.setToServiceType(tomcat.getName());
descriptor.setToAgentId("AGENT_B");
FilterHint hint = new FilterHint(Collections.<RpcHint>emptyList());
LinkFilter linkFilter = new LinkFilter(descriptor, hint, serviceTypeRegistryService);
logger.debug(linkFilter.toString());
SpanBo fromSpanBo = new SpanBo();
fromSpanBo.setApplicationId("APP_A");
fromSpanBo.setServiceType(tomcatServiceType);
fromSpanBo.setAgentId("AGENT_A");
fromSpanBo.setSpanId(100);
SpanBo toSpanBO = new SpanBo();
toSpanBO.setApplicationId("APP_B");
toSpanBO.setServiceType(tomcatServiceType);
toSpanBO.setAgentId("AGENT_B");
toSpanBO.setParentSpanId(100);
SpanBo spanBoC = new SpanBo();
spanBoC.setApplicationId("APP_C");
spanBoC.setServiceType(tomcatServiceType);
spanBoC.setAgentId("AGENT_C");
Assert.assertTrue(linkFilter.include(Arrays.asList(fromSpanBo, toSpanBO)));
Assert.assertFalse(linkFilter.include(Arrays.asList(fromSpanBo, spanBoC)));
}
}