diff --git a/sentinel-cluster/sentinel-cluster-server-default/src/test/java/com/alibaba/csp/sentinel/cluster/flow/ConcurrentClusterFlowCheckerTest.java b/sentinel-cluster/sentinel-cluster-server-default/src/test/java/com/alibaba/csp/sentinel/cluster/flow/ConcurrentClusterFlowCheckerTest.java index c9761cc1..5bf7e955 100644 --- a/sentinel-cluster/sentinel-cluster-server-default/src/test/java/com/alibaba/csp/sentinel/cluster/flow/ConcurrentClusterFlowCheckerTest.java +++ b/sentinel-cluster/sentinel-cluster-server-default/src/test/java/com/alibaba/csp/sentinel/cluster/flow/ConcurrentClusterFlowCheckerTest.java @@ -1,5 +1,5 @@ /* - * Copyright 1999-2018 Alibaba Group Holding Ltd. + * Copyright 1999-2024 Alibaba Group Holding Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,6 +22,7 @@ import com.alibaba.csp.sentinel.cluster.flow.statistic.concurrent.CurrentConcurr import com.alibaba.csp.sentinel.cluster.flow.statistic.concurrent.TokenCacheNodeManager; import com.alibaba.csp.sentinel.cluster.server.connection.ConnectionManager; import com.alibaba.csp.sentinel.cluster.server.AbstractTimeBasedTest; +import com.alibaba.csp.sentinel.concurrent.NamedThreadFactory; import com.alibaba.csp.sentinel.slots.block.ClusterRuleConstant; import com.alibaba.csp.sentinel.slots.block.RuleConstant; import com.alibaba.csp.sentinel.slots.block.flow.ClusterFlowConfig; @@ -47,7 +48,7 @@ public class ConcurrentClusterFlowCheckerTest extends AbstractTimeBasedTest { ClusterFlowConfig config = new ClusterFlowConfig(); config.setResourceTimeout(500); config.setClientOfflineTime(1000); - config.setFlowId(111L); + config.setFlowId(179L); config.setThresholdType(ClusterRuleConstant.FLOW_THRESHOLD_GLOBAL); rule.setClusterConfig(config); rule.setClusterMode(true); @@ -64,7 +65,7 @@ public class ConcurrentClusterFlowCheckerTest extends AbstractTimeBasedTest { public void testEasyAcquireAndRelease() throws InterruptedException { try (MockedStatic mocked = super.mockTimeUtil()) { setCurrentMillis(mocked, System.currentTimeMillis()); - FlowRule rule = ClusterFlowRuleManager.getFlowRuleById(111L); + FlowRule rule = ClusterFlowRuleManager.getFlowRuleById(179L); ArrayList list = new ArrayList<>(); for (int i = 0; i < 10; i++) { TokenResult result = ConcurrentClusterFlowChecker.acquireConcurrentToken("127.0.0.1", rule, 1); @@ -83,7 +84,7 @@ public class ConcurrentClusterFlowCheckerTest extends AbstractTimeBasedTest { result.getStatus() == TokenResultStatus.RELEASE_OK); } Assert.assertTrue("fail to release token", - CurrentConcurrencyManager.get(111L).get() == 0 && TokenCacheNodeManager.getSize() == 0); + CurrentConcurrencyManager.get(179L).get() == 0 && TokenCacheNodeManager.getSize() == 0); } } @@ -91,22 +92,22 @@ public class ConcurrentClusterFlowCheckerTest extends AbstractTimeBasedTest { public void testConcurrentAcquireAndRelease() throws InterruptedException { try (MockedStatic mocked = super.mockTimeUtil()) { setCurrentMillis(mocked, System.currentTimeMillis()); - final FlowRule rule = ClusterFlowRuleManager.getFlowRuleById(111L); + final FlowRule rule = ClusterFlowRuleManager.getFlowRuleById(179L); final CountDownLatch countDownLatch = new CountDownLatch(1000); - ExecutorService pool = Executors.newFixedThreadPool(100); + ExecutorService pool = Executors.newFixedThreadPool(100, + new NamedThreadFactory("ConcurrentClusterFlowCheckerTest", true) + ); for (long i = 0; i < 1000; i++) { - Runnable task = new Runnable() { - @Override - public void run() { - assert rule != null; - TokenResult result = ConcurrentClusterFlowChecker.acquireConcurrentToken("127.0.0.1", rule, 1); - Assert.assertTrue("concurrent control fail", CurrentConcurrencyManager.get(111L).get() <= rule.getCount()); - if (result.getStatus() == TokenResultStatus.OK) { - ConcurrentClusterFlowChecker.releaseConcurrentToken(result.getTokenId()); - } - countDownLatch.countDown(); + Runnable task = () -> { + Assert.assertNotNull(rule); + TokenResult result = ConcurrentClusterFlowChecker.acquireConcurrentToken("127.0.0.1", rule, 1); + String msg = String.format("concurrent control fail %s<%s", CurrentConcurrencyManager.get(179L).get(), rule.getCount()); + Assert.assertTrue(msg, CurrentConcurrencyManager.get(179L).get() <= rule.getCount()); + if (result.getStatus() == TokenResultStatus.OK) { + ConcurrentClusterFlowChecker.releaseConcurrentToken(result.getTokenId()); } + countDownLatch.countDown(); }; pool.execute(task); } @@ -121,7 +122,7 @@ public class ConcurrentClusterFlowCheckerTest extends AbstractTimeBasedTest { @Test public void testReleaseExpiredToken() throws InterruptedException { ConnectionManager.addConnection("test", "127.0.0.1"); - FlowRule rule = ClusterFlowRuleManager.getFlowRuleById(111L); + FlowRule rule = ClusterFlowRuleManager.getFlowRuleById(179L); for (int i = 0; i < 10; i++) { ConcurrentClusterFlowChecker.acquireConcurrentToken("127.0.0.1", rule, 1); } diff --git a/sentinel-cluster/sentinel-cluster-server-default/src/test/java/com/alibaba/csp/sentinel/cluster/flow/statistic/concurrent/CurrentConcurrencyManagerTest.java b/sentinel-cluster/sentinel-cluster-server-default/src/test/java/com/alibaba/csp/sentinel/cluster/flow/statistic/concurrent/CurrentConcurrencyManagerTest.java index dff3ca94..92e3a4a9 100644 --- a/sentinel-cluster/sentinel-cluster-server-default/src/test/java/com/alibaba/csp/sentinel/cluster/flow/statistic/concurrent/CurrentConcurrencyManagerTest.java +++ b/sentinel-cluster/sentinel-cluster-server-default/src/test/java/com/alibaba/csp/sentinel/cluster/flow/statistic/concurrent/CurrentConcurrencyManagerTest.java @@ -1,5 +1,5 @@ /* - * Copyright 1999-2018 Alibaba Group Holding Ltd. + * Copyright 1999-2024 Alibaba Group Holding Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,7 +15,7 @@ */ package com.alibaba.csp.sentinel.cluster.flow.statistic.concurrent; -import com.alibaba.csp.sentinel.cluster.flow.statistic.concurrent.CurrentConcurrencyManager; +import com.alibaba.csp.sentinel.concurrent.NamedThreadFactory; import org.junit.Assert; import org.junit.Test; @@ -26,24 +26,23 @@ import java.util.concurrent.Executors; public class CurrentConcurrencyManagerTest { @Test public void updateTest() throws InterruptedException { - CurrentConcurrencyManager.put(111L, 0); - CurrentConcurrencyManager.put(222L, 0); + CurrentConcurrencyManager.put(113L, 0); + CurrentConcurrencyManager.put(223L, 0); final CountDownLatch countDownLatch = new CountDownLatch(1000); - ExecutorService pool = Executors.newFixedThreadPool(100); + ExecutorService pool = Executors.newFixedThreadPool(100, + new NamedThreadFactory("CurrentConcurrencyManagerTest", true) + ); for (int i = 0; i < 1000; i++) { - Runnable task = new Runnable() { - @Override - public void run() { - CurrentConcurrencyManager.addConcurrency(111L, 1); - CurrentConcurrencyManager.addConcurrency(222L, 2); - countDownLatch.countDown(); - } + Runnable task = () -> { + CurrentConcurrencyManager.addConcurrency(113L, 1); + CurrentConcurrencyManager.addConcurrency(223L, 2); + countDownLatch.countDown(); }; pool.execute(task); } countDownLatch.await(); pool.shutdown(); - Assert.assertEquals(1000, CurrentConcurrencyManager.get(111L).get()); - Assert.assertEquals(2000, CurrentConcurrencyManager.get(222L).get()); + Assert.assertEquals(1000, CurrentConcurrencyManager.get(113L).get()); + Assert.assertEquals(2000, CurrentConcurrencyManager.get(223L).get()); } } diff --git a/sentinel-core/src/test/java/com/alibaba/csp/sentinel/util/TimeUtilTest.java b/sentinel-core/src/test/java/com/alibaba/csp/sentinel/util/TimeUtilTest.java index 9c3568a9..622cf60a 100644 --- a/sentinel-core/src/test/java/com/alibaba/csp/sentinel/util/TimeUtilTest.java +++ b/sentinel-core/src/test/java/com/alibaba/csp/sentinel/util/TimeUtilTest.java @@ -1,5 +1,5 @@ /* - * Copyright 1999-2020 Alibaba Group Holding Ltd. + * Copyright 1999-2024 Alibaba Group Holding Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -32,10 +32,6 @@ import com.alibaba.csp.sentinel.util.function.Tuple2; * */ public class TimeUtilTest { - @Before - public void initLogging() { - System.setProperty("csp.sentinel.log.output.type", "console"); - } private void waitFor(int step, int seconds) throws InterruptedException { for (int i = 0; i < seconds; i ++) { diff --git a/sentinel-extension/sentinel-parameter-flow-control/src/test/java/com/alibaba/csp/sentinel/slots/block/flow/param/ParamFlowPartialIntegrationTest.java b/sentinel-extension/sentinel-parameter-flow-control/src/test/java/com/alibaba/csp/sentinel/slots/block/flow/param/ParamFlowPartialIntegrationTest.java index 7c11d27d..0b126b9e 100644 --- a/sentinel-extension/sentinel-parameter-flow-control/src/test/java/com/alibaba/csp/sentinel/slots/block/flow/param/ParamFlowPartialIntegrationTest.java +++ b/sentinel-extension/sentinel-parameter-flow-control/src/test/java/com/alibaba/csp/sentinel/slots/block/flow/param/ParamFlowPartialIntegrationTest.java @@ -3,10 +3,13 @@ package com.alibaba.csp.sentinel.slots.block.flow.param; import com.alibaba.csp.sentinel.Entry; import com.alibaba.csp.sentinel.EntryType; import com.alibaba.csp.sentinel.SphU; +import com.alibaba.csp.sentinel.block.flow.param.AbstractTimeBasedTest; import com.alibaba.csp.sentinel.slots.block.BlockException; +import com.alibaba.csp.sentinel.util.TimeUtil; import org.junit.After; import org.junit.Before; import org.junit.Test; +import org.mockito.MockedStatic; import java.util.ArrayList; import java.util.Collections; @@ -18,7 +21,7 @@ import static org.junit.Assert.assertTrue; * @author quguai * @date 2023/10/27 13:44 */ -public class ParamFlowPartialIntegrationTest { +public class ParamFlowPartialIntegrationTest extends AbstractTimeBasedTest { @Before public void setUp() throws Exception { @@ -32,22 +35,25 @@ public class ParamFlowPartialIntegrationTest { @Test public void testParamFlowRegex() { - ParamFlowRule rule = new ParamFlowRule(".*") - .setParamIdx(0) - .setCount(1); - rule.setRegex(true); - ParamFlowRuleManager.loadRules(Collections.singletonList(rule)); - verifyFlow("testParamFlowRegex_1", true, "args"); - verifyFlow("testParamFlowRegex_1", true, "args_1"); + try (MockedStatic mocked = super.mockTimeUtil()) { + setCurrentMillis(mocked, 1800000000000L); + ParamFlowRule rule = new ParamFlowRule(".*") + .setParamIdx(0) + .setCount(1); + rule.setRegex(true); + ParamFlowRuleManager.loadRules(Collections.singletonList(rule)); + verifyFlow("testParamFlowRegex_1", true, "args"); + verifyFlow("testParamFlowRegex_1", true, "args_1"); - verifyFlow("testParamFlowRegex_1", false, "args"); - verifyFlow("testParamFlowRegex_1", false, "args_1"); + verifyFlow("testParamFlowRegex_1", false, "args"); + verifyFlow("testParamFlowRegex_1", false, "args_1"); - verifyFlow("testParamFlowRegex_2", true, "args"); - verifyFlow("testParamFlowRegex_2", true, "args_1"); + verifyFlow("testParamFlowRegex_2", true, "args"); + verifyFlow("testParamFlowRegex_2", true, "args_1"); - verifyFlow("testParamFlowRegex_2", false, "args"); - verifyFlow("testParamFlowRegex_2", false, "args_1"); + verifyFlow("testParamFlowRegex_2", false, "args"); + verifyFlow("testParamFlowRegex_2", false, "args_1"); + } } diff --git a/sentinel-extension/sentinel-parameter-flow-control/src/test/java/com/alibaba/csp/sentinel/slots/block/flow/param/ParamFlowThrottleRateLimitingCheckerTest.java b/sentinel-extension/sentinel-parameter-flow-control/src/test/java/com/alibaba/csp/sentinel/slots/block/flow/param/ParamFlowThrottleRateLimitingCheckerTest.java index 8d9cfde4..b631c9fb 100644 --- a/sentinel-extension/sentinel-parameter-flow-control/src/test/java/com/alibaba/csp/sentinel/slots/block/flow/param/ParamFlowThrottleRateLimitingCheckerTest.java +++ b/sentinel-extension/sentinel-parameter-flow-control/src/test/java/com/alibaba/csp/sentinel/slots/block/flow/param/ParamFlowThrottleRateLimitingCheckerTest.java @@ -1,5 +1,5 @@ /* - * Copyright 1999-2019 Alibaba Group Holding Ltd. + * Copyright 1999-2024 Alibaba Group Holding Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -70,7 +70,6 @@ public class ParamFlowThrottleRateLimitingCheckerTest { } assertEquals(successCount, threshold); - System.out.println("testSingleValueThrottleCheckQps: sleep for 3 seconds"); TimeUnit.SECONDS.sleep(3); currentTime = TimeUtil.currentTimeMillis(); @@ -104,7 +103,6 @@ public class ParamFlowThrottleRateLimitingCheckerTest { metric.getRuleTimeCounterMap().put(rule, new ConcurrentLinkedHashMapWrapper(4000)); int threadCount = 40; - System.out.println(metric.getRuleTimeCounter(rule)); final CountDownLatch waitLatch = new CountDownLatch(threadCount); final AtomicInteger successCount = new AtomicInteger(); @@ -125,10 +123,8 @@ public class ParamFlowThrottleRateLimitingCheckerTest { waitLatch.await(); assertEquals(successCount.get(), 1); - System.out.println(threadCount); successCount.set(0); - System.out.println("testSingleValueThrottleCheckQpsMultipleThreads: sleep for 3 seconds"); TimeUnit.SECONDS.sleep(3); successCount.set(0);