This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch 3.2
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.2 by this push:
new 66eaadd63c Enhance AbstractMetadataReportTest test case (#13126)
66eaadd63c is described below
commit 66eaadd63c8b83d1a9d66bf79e682ae2a6ba648c
Author: Albumen Kevin <[email protected]>
AuthorDate: Tue Sep 26 11:25:57 2023 +0800
Enhance AbstractMetadataReportTest test case (#13126)
* Enhance AbstractMetadataReportTest test case
* Enhance AbstractMetadataReportTest test case
---
.../metadata/report/support/AbstractMetadataReportTest.java | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git
a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/report/support/AbstractMetadataReportTest.java
b/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/report/support/AbstractMetadataReportTest.java
index 920e6b4f61..a64ab817a7 100644
---
a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/report/support/AbstractMetadataReportTest.java
+++
b/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/report/support/AbstractMetadataReportTest.java
@@ -30,6 +30,7 @@ import
org.apache.dubbo.metadata.report.identifier.ServiceMetadataIdentifier;
import
org.apache.dubbo.metadata.report.identifier.SubscriberMetadataIdentifier;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.model.FrameworkModel;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
@@ -41,6 +42,7 @@ import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ScheduledThreadPoolExecutor;
+import java.util.concurrent.Semaphore;
import java.util.concurrent.ThreadPoolExecutor;
import static org.apache.dubbo.common.constants.CommonConstants.CONSUMER_SIDE;
@@ -178,6 +180,7 @@ class AbstractMetadataReportTest {
RetryMetadataReport retryReport = new RetryMetadataReport(storeUrl, 2,
applicationModel);
retryReport.metadataReportRetry.retryPeriod = 150L;
retryReport.metadataReportRetry.retryTimesIfNonFail = 2;
+ retryReport.semaphore = new Semaphore(1);
ScheduledThreadPoolExecutor retryExecutor =
(ScheduledThreadPoolExecutor)
retryReport.getMetadataReportRetry().getRetryExecutor();
long completedTaskCount = retryExecutor.getCompletedTaskCount();
@@ -187,10 +190,10 @@ class AbstractMetadataReportTest {
await().until(() ->
retryReport.metadataReportRetry.retryScheduledFuture != null);
assertFalse(retryReport.metadataReportRetry.retryScheduledFuture.isCancelled());
assertFalse(retryReport.metadataReportRetry.retryExecutor.isShutdown());
+ retryReport.semaphore.release(2);
await().until(() -> retryExecutor.getCompletedTaskCount() >
completedTaskCount + 2);
-
assertTrue(retryReport.metadataReportRetry.retryScheduledFuture.isCancelled());
- assertTrue(retryReport.metadataReportRetry.retryExecutor.isShutdown());
-
+ await().untilAsserted(() ->
assertTrue(retryReport.metadataReportRetry.retryScheduledFuture.isCancelled()));
+ await().untilAsserted(() ->
assertTrue(retryReport.metadataReportRetry.retryExecutor.isShutdown()));
}
private MetadataIdentifier storeProvider(AbstractMetadataReport
abstractMetadataReport, String interfaceName, String version, String group,
String application) throws ClassNotFoundException {
@@ -353,6 +356,7 @@ class AbstractMetadataReportTest {
Map<String, String> store = new ConcurrentHashMap<>();
int needRetryTimes;
int executeTimes = 0;
+ Semaphore semaphore = new Semaphore(Integer.MAX_VALUE);
public RetryMetadataReport(URL metadataReportURL, int needRetryTimes,
ApplicationModel applicationModel) {
super(metadataReportURL);
@@ -364,6 +368,7 @@ class AbstractMetadataReportTest {
protected void doStoreProviderMetadata(MetadataIdentifier
providerMetadataIdentifier, String serviceDefinitions) {
++executeTimes;
System.out.println("***" + executeTimes + ";" +
System.currentTimeMillis());
+ semaphore.acquireUninterruptibly();
if (executeTimes <= needRetryTimes) {
throw new RuntimeException("must retry:" + executeTimes);
}