* fix test case SentinelDubboConsumerFilterTest#testDegradeSync
* When test is run slow, count bucket will count on next time span, causing failed test.
* dos2unix ParamFlowDefaultCheckerTest.java
* fix testParamFlowDefaultCheckSingleValueCheckQpsMultipleThreads by rule.setDurationInSec(2)
* set threshold as count in 2 seconds to prevent the failure of the unit test when the unit test runs longer than 1 second.
* fix quarkus test by set /txt sleep 300
* If /txt sleep 500 ms, in testSentinelJaxRsQuarkusAdapter, may cause 2 request intervals of more than 1 s, which cause rate limit policy is not effective.
* fix testDegradeAsync
* When test is run slow, count bucket will count on next time span, causing failed test.
* use testcontainers to fix testConsulDataSourceWhenInit
* Project embedded-consul has been deprecated in favour of org.testcontainers:consul
* use consul testcontainers to fix testConsulDataSourceWhenInit, which means docker is required to run tests.
```
Error: com.alibaba.csp.sentinel.datasource.consul.ConsulDataSourceTest.testConsulDataSourceWhenInit -- Time elapsed: 34.47 s <<< ERROR!
com.pszymczyk.consul.EmbeddedConsulException: Could not start Consul process in 30 seconds
at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486)
at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:72)
```
* introduce intermediate node to avoid ABA problem
* fix ParamFlowPartialIntegrationTest
mock TimeUtil to avoid time changed, and bucket moved to next.
* remove csp.sentinel.log.output.type
remove sysprop csp.sentinel.log.output.type in TimeUtilTest,
to avoid a few outputs.
* try fix testConcurrentAcquireAndRelease
* remove stdout
remove sout in ParamFlowThrottleRateLimitingCheckerTest,
to avoid a few outputs.
* ConcurrentClusterFlowCheckerTest,djust the flowId to prevent conflicts
* CurrentConcurrencyManagerTest,adjust the flowId to prevent conflicts
* update year
* Add `@Spi` annotation as the general annotation for SPI definition.
* Add isDefault in @Spi, add loadDefaultInstance and improve loadFirstInstanceOrDefault method, improve test cases
* Add SpiLoaderException class for thrown when something goes wrong while loading Provider
* Rearrange packages of base SPI mechanism
NOTE: this PR contains breaking changes regarding API.
* Make slots loaded by SPI, mark all slots with @SpiOrder from -10000 to -1000, improve comment
* Reserve gateway and param slot chain builder (just extends DefaultSlotChainBuilder) and mark them as @Deprecated
- Add a ParameterMetricStorage specific for caching ParameterMetric (moved from ParamSlot)
- Add rule map building helper method in ParamFlowRuleUtil so that we can reuse it in other rule managers
Signed-off-by: Eric Zhao <sczyh16@gmail.com>
* support burst count, statistic interval per rule and throttling mode.
* Add fields in ParamFlowRule to support burst count, throttle, statistic interval per rule.
* Deprecate HotParamLeapArray and use token bucket algorithm directly.