Signed-off-by: Jason Joo <hblzxsj@163.com>master
@@ -116,15 +116,16 @@ public class FlowPartialIntegrationTest { | |||||
@Test | @Test | ||||
public void testOriginFlowRule() { | public void testOriginFlowRule() { | ||||
String RESOURCE_NAME = "testOriginFlowRule"; | |||||
// normal | // normal | ||||
FlowRule flowRule = new FlowRule(); | FlowRule flowRule = new FlowRule(); | ||||
flowRule.setResource("testOriginFlowRule"); | |||||
flowRule.setResource(RESOURCE_NAME); | |||||
flowRule.setGrade(RuleConstant.FLOW_GRADE_QPS); | flowRule.setGrade(RuleConstant.FLOW_GRADE_QPS); | ||||
flowRule.setCount(0); | flowRule.setCount(0); | ||||
flowRule.setLimitApp("other"); | flowRule.setLimitApp("other"); | ||||
FlowRule flowRule2 = new FlowRule(); | FlowRule flowRule2 = new FlowRule(); | ||||
flowRule2.setResource("testOriginFlowRule"); | |||||
flowRule2.setResource(RESOURCE_NAME); | |||||
flowRule2.setGrade(RuleConstant.FLOW_GRADE_QPS); | flowRule2.setGrade(RuleConstant.FLOW_GRADE_QPS); | ||||
flowRule2.setCount(1); | flowRule2.setCount(1); | ||||
flowRule2.setLimitApp("app2"); | flowRule2.setLimitApp("app2"); | ||||
@@ -134,7 +135,7 @@ public class FlowPartialIntegrationTest { | |||||
ContextUtil.enter("node1", "app1"); | ContextUtil.enter("node1", "app1"); | ||||
Entry e = null; | Entry e = null; | ||||
try { | try { | ||||
e = SphU.entry("testOriginFlowRule"); | |||||
e = SphU.entry(RESOURCE_NAME); | |||||
fail("Should had failed"); | fail("Should had failed"); | ||||
} catch (BlockException e1) { | } catch (BlockException e1) { | ||||
e1.printStackTrace(); | e1.printStackTrace(); | ||||
@@ -146,7 +147,7 @@ public class FlowPartialIntegrationTest { | |||||
ContextUtil.enter("node1", "app2"); | ContextUtil.enter("node1", "app2"); | ||||
e = null; | e = null; | ||||
try { | try { | ||||
e = SphU.entry("testOriginFlowRule"); | |||||
e = SphU.entry(RESOURCE_NAME); | |||||
} catch (BlockException e1) { | } catch (BlockException e1) { | ||||
fail("Should had failed"); | fail("Should had failed"); | ||||
} | } | ||||
@@ -19,6 +19,8 @@ import org.junit.Test; | |||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.List; | import java.util.List; | ||||
import java.util.concurrent.CountDownLatch; | |||||
import java.util.concurrent.TimeUnit; | |||||
import static org.junit.Assert.assertEquals; | import static org.junit.Assert.assertEquals; | ||||
@@ -44,27 +46,34 @@ public class FlowRuleManagerTest { | |||||
} | } | ||||
@Test | @Test | ||||
public void testLoadAndGetRules(){ | |||||
public void testLoadAndGetRules() throws InterruptedException{ | |||||
FlowRuleManager.loadRules(STATIC_RULES_1); | FlowRuleManager.loadRules(STATIC_RULES_1); | ||||
assertEquals(1, FlowRuleManager.getRules().size()); // the initial size | assertEquals(1, FlowRuleManager.getRules().size()); // the initial size | ||||
new Thread(loader, "Loader").start(); | |||||
final CountDownLatch latchStart = new CountDownLatch(1); | |||||
final CountDownLatch latchEnd = new CountDownLatch(1); | |||||
new Thread(new Runnable() { | |||||
@Override | |||||
public void run() { | |||||
try { | |||||
latchStart.await(10, TimeUnit.SECONDS); | |||||
} catch (InterruptedException e) { | |||||
return; | |||||
} | |||||
for(int i = 0; i < 10000; i++){ | |||||
//to guarantee that they're different and change happens | |||||
FlowRuleManager.loadRules(i % 2 == 0 ? STATIC_RULES_2 : STATIC_RULES_1); | |||||
} | |||||
latchEnd.countDown(); | |||||
} | |||||
}).start(); | |||||
for(int i = 0; i < 10000; i++){ | |||||
latchStart.countDown(); | |||||
for (int i = 0; i < 10000; i++) { | |||||
//The initial size is 1, and the size after updating should also be 1, | //The initial size is 1, and the size after updating should also be 1, | ||||
//if the actual size is 0, that must be called after clear(), | //if the actual size is 0, that must be called after clear(), | ||||
// but before putAll() in FlowPropertyListener.configUpdate | // but before putAll() in FlowPropertyListener.configUpdate | ||||
assertEquals(1, FlowRuleManager.getRules().size()); | assertEquals(1, FlowRuleManager.getRules().size()); | ||||
} | } | ||||
latchEnd.await(10, TimeUnit.SECONDS); | |||||
} | } | ||||
public Runnable loader = new Runnable() { | |||||
@Override | |||||
public void run() { | |||||
for(int i = 0; i < 10000; i++){ | |||||
//to guarantee that they're different and change happens | |||||
FlowRuleManager.loadRules(i % 2 == 0 ? STATIC_RULES_2 : STATIC_RULES_1); | |||||
} | |||||
} | |||||
}; | |||||
} | } |
@@ -29,7 +29,6 @@ import org.junit.After; | |||||
import org.junit.Before; | import org.junit.Before; | ||||
import org.junit.Test; | import org.junit.Test; | ||||
import static org.junit.Assert.*; | |||||
import static org.mockito.Mockito.*; | import static org.mockito.Mockito.*; | ||||
/** | /** | ||||