package com.alibaba.doris.dataserver.core;
import junit.framework.TestCase;
import com.alibaba.doris.common.router.virtual.VirtualRouterImpl;
import com.alibaba.doris.dataserver.core.mock.MockRequest;
import com.alibaba.doris.dataserver.core.mock.MockResponse;
import com.alibaba.doris.dataserver.core.mock.NormalFilter1;
import com.alibaba.doris.dataserver.core.mock.NormalFilter2;
import com.alibaba.doris.dataserver.core.mock.TheFirstFilter;
import com.alibaba.doris.dataserver.core.mock.TheLastFilter;
/**
* @author ajun Email:jack.yuj@alibaba-inc.com
*/
public class RequestFilterChianTest extends TestCase {
{
VirtualRouterImpl.setDebug(true);
}
public void testRequestFilterChainFactory() {
RequestFilterChainFactory factory = new RequestFilterChainFactory();
RequestFilterChian filterChain = factory.getFilterChian();
assertNotNull(filterChain);
}
public void testExecuteRequestFilterChain() {
RequestFilterChainFactory factory = new RequestFilterChainFactory();
RequestFilterChian filterChain = factory.getFilterChian();
Request request = new MockRequest(null);
Response response = new MockResponse();
RequestFilter filter = new RequestFilter() {
public void doFilter(Request request, Response response, RequestFilterChian filterChain) {
assertTrue(filterChain != null);
filterChain.doFilter(request, response);
}
};
try {
filterChain = new DefaultRequestFilterChian();
((DefaultRequestFilterChian) filterChain).addFilter(filter);
filterChain.doFilter(request, response);
} catch (Exception e) {
fail(e.getMessage());
}
}
public void testAddFilter() {
RequestFilterChainFactory factory = new RequestFilterChainFactory();
RequestFilterChian filterChain = factory.getFilterChian();
RequestFilter first = new TheFirstFilter();
RequestFilter last = new TheLastFilter();
filterChain.addFirstFilter(first);
filterChain.addLastFilter(last);
RequestFilter normal1 = new NormalFilter1();
filterChain.addFilterAfter(first, normal1);
Request request = new MockRequest(null);
Response response = new MockResponse();
filterChain.doFilter(request, response);
System.out.println("-------------------------------");
try {
filterChain.addFirstFilter(first);
fail();
} catch (Exception e) {
;
}
try {
filterChain.addLastFilter(last);
fail();
} catch (Exception e) {
;
}
try {
filterChain.addFilterAfter(last, new NormalFilter2());
fail();
} catch (Exception e) {
;
}
filterChain.addFilterAfter(normal1, new NormalFilter2());
request = new MockRequest(null);
response = new MockResponse();
filterChain.doFilter(request, response);
}
}