Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ISSUE #9308]For the orchestration of configuration filters, there are the following areas that can be optimized #9309 #9310

Open
wants to merge 8 commits into
base: develop
Choose a base branch
from
Prev Previous commit
Next Next commit
add buildConfigFilterChain
  • Loading branch information
CLFutureX committed Oct 12, 2022
commit 78aafc93a3f1836199cc43cf65785f5c9c6ceb98
Original file line number Diff line number Diff line change
@@ -32,40 +32,40 @@
import java.util.Properties;

public class ConfigFilterChainManagerTest {

private static class MyIConfigFilter implements IConfigFilter {

private String name;

private int order;

public MyIConfigFilter(String name, int order) {
this.name = name;
this.order = order;
}

@Override
public void init(IFilterConfig filterConfig) {
}

@Override
public void init(Properties properties) {
}

@Override
public void doFilter(IConfigRequest request, IConfigResponse response, IConfigFilterChain filterChain)
throws NacosException {
IConfigContext configContext = request.getConfigContext();
// save filter info
configContext.setParameter(name, order);

// save filter order
if (configContext.getParameter("orders") == null) {
configContext.setParameter("orders", new ArrayList<Integer>());
}
List<Integer> orders = (List<Integer>) configContext.getParameter("orders");
orders.add(order);

// save filter count
if (configContext.getParameter("filterCount") == null) {
configContext.setParameter("filterCount", 0);
@@ -77,74 +77,76 @@ public void doFilter(IConfigRequest request, IConfigResponse response, IConfigFi
// do next
filterChain.doFilter(request, response);
}

@Override
public int getOrder() {
return order;
}

@Override
public String getFilterName() {
return name;
}
}

@Test
public void testAddFilterOrder() throws NacosException {
final ConfigFilterChainManager configFilterChainManager = new ConfigFilterChainManager(new Properties());
MyIConfigFilter filter1 = new MyIConfigFilter("filter1", 1);
MyIConfigFilter filter2 = new MyIConfigFilter("filter2", 2);
MyIConfigFilter filter3 = new MyIConfigFilter("filter3", 3);

//random order
configFilterChainManager.addFilter(filter2);
configFilterChainManager.addFilter(filter1);
configFilterChainManager.addFilter(filter3);

configFilterChainManager.buildConfigFilterChain();

ConfigRequest configRequest = new ConfigRequest();

configFilterChainManager.doFilter(configRequest, new ConfigResponse());

IConfigContext configContext = configRequest.getConfigContext();

// doFilter works
Assert.assertEquals(1, configContext.getParameter("filter1"));
Assert.assertEquals(2, configContext.getParameter("filter2"));
Assert.assertEquals(3, configContext.getParameter("filter3"));

//order
List<Integer> orders = (List<Integer>) configContext.getParameter("orders");
Assert.assertEquals(Arrays.asList(1, 2, 3), orders);
}

@Test
public void testAddFilterNotRepeat() throws NacosException {
final ConfigFilterChainManager configFilterChainManager = new ConfigFilterChainManager(new Properties());
MyIConfigFilter filter1 = new MyIConfigFilter("filter1", 1);
MyIConfigFilter filter2 = new MyIConfigFilter("filter2", 2);
MyIConfigFilter repeatFilter = new MyIConfigFilter("filter1", 1);

configFilterChainManager.addFilter(filter2);
configFilterChainManager.addFilter(filter1);
configFilterChainManager.addFilter(repeatFilter);

configFilterChainManager.buildConfigFilterChain();

ConfigRequest configRequest = new ConfigRequest();
configFilterChainManager.doFilter(configRequest, new ConfigResponse());

IConfigContext configContext = configRequest.getConfigContext();

Assert.assertEquals(2, configContext.getParameter("filterCount"));
}

@Test
public void testSpiFilterNodeChain() throws NacosException{
public void testSpiFilterNodeChain() throws NacosException {
final ConfigFilterChainManager configFilterChainManager = new ConfigFilterChainManager(new Properties());

configFilterChainManager.doFilter(new ConfigRequest(), new ConfigResponse());
}

@Test
public void testAddFilterNodeChain() throws NacosException{
public void testAddFilterNodeChain() throws NacosException {
final ConfigFilterChainManager configFilterChainManager = new ConfigFilterChainManager(new Properties());

MyIConfigFilter filter1 = new MyIConfigFilter("filter1", 1);