This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git

commit 77de3313dd4308cfd249d78c0e650e51af9fa9ef
Author: Lei Zhang <[email protected]>
AuthorDate: Mon Mar 7 18:33:09 2022 +0800

    SCB-2421 Upgrade Spring Boot and Spring Cloud
    
    * Upgrade spring-boot to 2.3.12.RELEASE
    * Upgrade spring-cloud to Hoxton.SR12
---
 .../acceptance-pack-spring-demo-with-nacos/pom.xml |   4 +-
 .../pack/alpha/fsm/FsmAutoConfiguration.java       |   4 +-
 .../ElasticsearchTransactionRepository.java        | 158 +++++++--------------
 .../servicecomb/pack/alpha/fsm/SagaActorTest.java  |  14 +-
 .../pack/alpha/fsm/SagaIntegrationTest.java        |  16 ++-
 .../ElasticsearchTransactionRepositoryTest.java    |  11 +-
 .../alpha/server/AlphaEventControllerTest.java     |   6 +-
 .../alpha/server/AlphaIntegrationWithSSLTest.java  |   5 +-
 .../pack/alpha/server/api/APIv1ControllerTest.java |  14 +-
 .../cluster/master/ClusterLockServiceTest.java     |   5 +-
 .../alpha/server/fsm/AlphaIntegrationFsmTest.java  |   4 +-
 .../server/tcc/AlphaTccEventControllerTest.java    |   6 +-
 .../alpha/server/tcc/MemoryAlphaTccServerTest.java |   5 +-
 .../alpha/server/tcc/RdbAlphaTccServerTest.java    |   5 +-
 .../pack/alpha/server/tcc/TccApplication.java      |   1 -
 .../alpha/server/tcc/TccCallbackEngineTest.java    |   5 +-
 .../server/tcc/service/TccTxEventServiceTest.java  |  13 +-
 .../service/TccTxEventServiceTransactionTest.java  |  14 +-
 .../consul/AlphaConsulAutoConfiguration.java       |   4 +-
 alpha/alpha-spring-cloud-starter-nacos/pom.xml     |   2 +-
 .../nacos/GrpcStartableStartedEventListener.java   |   5 +-
 .../pack/demo/inventory/InventoryServiceTest.java  |   8 +-
 .../pack/demo/payment/PaymentServiceTest.java      |   8 +-
 omega/omega-spring-cloud-nacos-starter/pom.xml     |   2 +-
 .../omega/spring/cloud/OmegaSpringNacosConfig.java |   2 +-
 .../spring/CompensableAnnotationCheckingTest.java  |   9 ++
 .../transaction/spring/TccInterceptorTest.java     |   6 +-
 .../spring/TransactionInterceptionTest.java        |   6 +-
 pack-dependencies/pom.xml                          |  49 +++++--
 .../jpa/EclipseLinkJpaConfiguration.java           |   7 +-
 30 files changed, 198 insertions(+), 200 deletions(-)

diff --git a/acceptance-tests/acceptance-pack-spring-demo-with-nacos/pom.xml 
b/acceptance-tests/acceptance-pack-spring-demo-with-nacos/pom.xml
index 6b66a04..5313b59 100644
--- a/acceptance-tests/acceptance-pack-spring-demo-with-nacos/pom.xml
+++ b/acceptance-tests/acceptance-pack-spring-demo-with-nacos/pom.xml
@@ -53,14 +53,14 @@
             <configuration>
               <images>
                 <image>
-                  <name>nacos/nacos-server</name>
+                  <name>nacos/nacos-server:1.4.2</name>
                   <alias>nacos</alias>
                   <run>
                     <env>
                       <MODE>standalone</MODE>
                     </env>
                     <wait>
-                      <log>Completed initialization in</log>
+                      <log>Nacos started successfully</log>
                       <tcp>
                         <ports>
                           <port>8848</port>
diff --git 
a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/FsmAutoConfiguration.java
 
b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/FsmAutoConfiguration.java
index 6facf00..aeef923 100644
--- 
a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/FsmAutoConfiguration.java
+++ 
b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/FsmAutoConfiguration.java
@@ -46,7 +46,7 @@ import 
org.springframework.context.ConfigurableApplicationContext;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.core.env.ConfigurableEnvironment;
-import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
+import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
 
 @Configuration
 @ImportAutoConfiguration({
@@ -110,7 +110,7 @@ public class FsmAutoConfiguration {
   @Bean
   @ConditionalOnProperty(value = 
"alpha.feature.akka.transaction.repository.type", havingValue = "elasticsearch")
   public TransactionRepository transactionRepository(MetricsService 
metricsService,
-      ElasticsearchTemplate template) {
+      ElasticsearchRestTemplate template) {
     return new ElasticsearchTransactionRepository(template, metricsService,
         repositoryElasticsearchBatchSize, repositoryElasticsearchRefreshTime);
   }
diff --git 
a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/elasticsearch/ElasticsearchTransactionRepository.java
 
b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/elasticsearch/ElasticsearchTransactionRepository.java
index a92b27b..0743f68 100644
--- 
a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/elasticsearch/ElasticsearchTransactionRepository.java
+++ 
b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/elasticsearch/ElasticsearchTransactionRepository.java
@@ -31,31 +31,23 @@ import 
org.apache.servicecomb.pack.alpha.core.fsm.repository.model.GlobalTransac
 import 
org.apache.servicecomb.pack.alpha.core.fsm.repository.model.PagingGlobalTransactions;
 import org.apache.servicecomb.pack.alpha.fsm.metrics.MetricsService;
 import org.apache.servicecomb.pack.alpha.fsm.repository.TransactionRepository;
-import 
org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsRequest;
-import org.elasticsearch.action.admin.indices.stats.IndicesStatsResponse;
-import org.elasticsearch.action.search.SearchResponse;
 import org.elasticsearch.action.search.SearchType;
-import org.elasticsearch.index.query.QueryBuilder;
 import org.elasticsearch.index.query.QueryBuilders;
-import org.elasticsearch.search.SearchHit;
 import org.elasticsearch.search.aggregations.AggregationBuilders;
 import org.elasticsearch.search.aggregations.bucket.MultiBucketsAggregation;
 import org.elasticsearch.search.aggregations.bucket.terms.StringTerms;
-import 
org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder;
 import org.elasticsearch.search.sort.SortBuilders;
 import org.elasticsearch.search.sort.SortOrder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.data.domain.Pageable;
-import org.springframework.data.elasticsearch.core.DefaultResultMapper;
-import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
-import org.springframework.data.elasticsearch.core.SearchResultMapper;
-import org.springframework.data.elasticsearch.core.aggregation.AggregatedPage;
-import 
org.springframework.data.elasticsearch.core.aggregation.impl.AggregatedPageImpl;
-import org.springframework.data.elasticsearch.core.query.GetQuery;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
+import org.springframework.data.elasticsearch.core.SearchHit;
+import org.springframework.data.elasticsearch.core.SearchHits;
+import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
 import org.springframework.data.elasticsearch.core.query.IndexQuery;
 import 
org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
-import org.springframework.data.elasticsearch.core.query.SearchQuery;
+import org.springframework.data.elasticsearch.core.query.Query;
 
 public class ElasticsearchTransactionRepository implements 
TransactionRepository {
 
@@ -63,7 +55,7 @@ public class ElasticsearchTransactionRepository implements 
TransactionRepository
   public static final String INDEX_NAME = "alpha_global_transaction";
   public static final String INDEX_TYPE = "alpha_global_transaction_type";
   private static final long SCROLL_TIMEOUT = 3000;
-  private final ElasticsearchTemplate template;
+  private final ElasticsearchRestTemplate template;
   private final MetricsService metricsService;
   private final ObjectMapper mapper = new ObjectMapper();
   private int batchSize;
@@ -73,7 +65,7 @@ public class ElasticsearchTransactionRepository implements 
TransactionRepository
   private final Object lock = new Object();
 
   public ElasticsearchTransactionRepository(
-      ElasticsearchTemplate template, MetricsService metricsService, int 
batchSize,
+      ElasticsearchRestTemplate template, MetricsService metricsService, int 
batchSize,
       int refreshTime) {
     this.template = template;
     this.metricsService = metricsService;
@@ -103,11 +95,9 @@ public class ElasticsearchTransactionRepository implements 
TransactionRepository
 
   @Override
   public GlobalTransaction getGlobalTransactionByGlobalTxId(String globalTxId) 
{
-    GetQuery getQuery = new GetQuery();
-    getQuery.setId(globalTxId);
-    GlobalTransactionDocument globalTransaction = this.template
-        .queryForObject(getQuery, GlobalTransactionDocument.class);
-    return globalTransaction;
+    Query query = new 
NativeSearchQueryBuilder().withIds(Collections.singletonList(globalTxId)).build();
+    SearchHit<GlobalTransactionDocument> result =  
this.template.searchOne(query, GlobalTransactionDocument.class);
+    return result.getContent();
   }
 
   @Override
@@ -117,38 +107,30 @@ public class ElasticsearchTransactionRepository 
implements TransactionRepository
 
   @Override
   public PagingGlobalTransactions getGlobalTransactions(String state, int 
page, int size) {
-    //ElasticsearchTemplate.prepareScroll() does not add sorting 
https://jira.spring.io/browse/DATAES-457
     long start = System.currentTimeMillis();
     PagingGlobalTransactions pagingGlobalTransactions;
     List<GlobalTransaction> globalTransactions = new ArrayList();
     try{
-      IndicesExistsRequest request = new IndicesExistsRequest(INDEX_NAME);
-      if 
(this.template.getClient().admin().indices().exists(request).actionGet().isExists())
 {
-        QueryBuilder query;
+      if (this.template.indexOps(IndexCoordinates.of(INDEX_NAME)).exists()) {
+        NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder();
+        queryBuilder.withSearchType(SearchType.valueOf(INDEX_TYPE));
         if (state != null && state.trim().length() > 0) {
-          query = QueryBuilders.termQuery("state.keyword", state);
+          queryBuilder.withQuery(QueryBuilders.termQuery("state.keyword", 
state));
         } else {
-          query = QueryBuilders.matchAllQuery();
+          queryBuilder.withQuery(QueryBuilders.matchAllQuery());
         }
-        SearchResponse response = 
this.template.getClient().prepareSearch(INDEX_NAME)
-            .setTypes(INDEX_TYPE)
-            .setQuery(query)
-            
.addSort(SortBuilders.fieldSort("beginTime").order(SortOrder.DESC).unmappedType("date"))
-            .setSize(size)
-            .setFrom(page * size)
-            .execute()
-            .actionGet();
-        ObjectMapper jsonMapper = new ObjectMapper();
-        response.getHits().forEach(hit -> {
+        
queryBuilder.withSort(SortBuilders.fieldSort("beginTime").order(SortOrder.DESC).unmappedType("date"));
+        queryBuilder.withPageable(PageRequest.of(page, size));
+
+        SearchHits<GlobalTransactionDocument> result = 
this.template.search(queryBuilder.build(), GlobalTransactionDocument.class);
+        result.forEach(hit -> {
           try {
-            GlobalTransactionDocument dto = jsonMapper
-                .readValue(hit.getSourceAsString(), 
GlobalTransactionDocument.class);
-            globalTransactions.add(dto);
+            globalTransactions.add(hit.getContent());
           } catch (Exception e) {
             LOG.error(e.getMessage(), e);
           }
         });
-        pagingGlobalTransactions = 
PagingGlobalTransactions.builder().page(page).size(size).total(response.getHits().getTotalHits())
+        pagingGlobalTransactions = 
PagingGlobalTransactions.builder().page(page).size(size).total(result.getTotalHits())
             
.globalTransactions(globalTransactions).elapsed(System.currentTimeMillis() - 
start).build();
       } else {
         LOG.warn("[alpha_global_transaction] index not exist");
@@ -165,91 +147,49 @@ public class ElasticsearchTransactionRepository 
implements TransactionRepository
   }
 
   public Map<String, Long> getTransactionStatistics() {
-    TermsAggregationBuilder termsAggregationBuilder = AggregationBuilders
-        .terms("count_group_by_state").field("state.keyword");
-    SearchQuery searchQuery = new NativeSearchQueryBuilder()
-        .withIndices(INDEX_NAME)
-        .addAggregation(termsAggregationBuilder)
+    Map<String, Long> statistics = new HashMap<>();
+
+    Query query = new NativeSearchQueryBuilder()
+        
.addAggregation(AggregationBuilders.terms("count_group_by_state").field("state.keyword"))
         .build();
-    return this.template.query(searchQuery, response -> {
-      Map<String, Long> statistics = new HashMap<>();
-      if (response.getHits().totalHits > 0) {
-        final StringTerms groupState = 
response.getAggregations().get("count_group_by_state");
-        statistics = groupState.getBuckets()
-            .stream()
-            
.collect(Collectors.toMap(MultiBucketsAggregation.Bucket::getKeyAsString,
-                MultiBucketsAggregation.Bucket::getDocCount));
-      }
-      return statistics;
-    });
+    SearchHits<Map> result = 
this.template.search(query,Map.class,IndexCoordinates.of(INDEX_NAME));
+    if (result.getTotalHits() > 0) {
+      final StringTerms groupState = 
result.getAggregations().get("count_group_by_state");
+      statistics = groupState.getBuckets()
+          .stream()
+          
.collect(Collectors.toMap(MultiBucketsAggregation.Bucket::getKeyAsString,
+              MultiBucketsAggregation.Bucket::getDocCount));
+    }
+
+    return statistics;
   }
 
   @Override
   public List<GlobalTransaction> getSlowGlobalTransactionsTopN(int n) {
-    // ElasticsearchTemplate.prepareScroll() does not add sorting 
https://jira.spring.io/browse/DATAES-457
-    ObjectMapper jsonMapper = new ObjectMapper();
     List<GlobalTransaction> globalTransactions = new ArrayList();
-    IndicesStatsResponse indicesStatsResponse = 
this.template.getClient().admin().indices().prepareStats(INDEX_NAME).get();
-    
if(indicesStatsResponse.getIndices().get(INDEX_NAME).getTotal().docs.getCount()>0){
-      SearchResponse response = 
this.template.getClient().prepareSearch(INDEX_NAME)
-          .setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
-          .setQuery(QueryBuilders.matchAllQuery())
-          
.addSort(SortBuilders.fieldSort("durationTime").order(SortOrder.DESC))
-          .setFrom(0).setSize(n).setExplain(true)
-          .get();
-      response.getHits().forEach(hit -> {
-        try {
-          GlobalTransactionDocument dto = jsonMapper
-              .readValue(hit.getSourceAsString(), 
GlobalTransactionDocument.class);
-          globalTransactions.add(dto);
-        } catch (Exception e) {
-          LOG.error(e.getMessage(), e);
-        }
-      });
-    }
+    Query query = new NativeSearchQueryBuilder()
+        .withSearchType(SearchType.DFS_QUERY_THEN_FETCH)
+        .withQuery(QueryBuilders.matchAllQuery())
+        .withSort(SortBuilders.fieldSort("durationTime").order(SortOrder.DESC))
+        .withPageable(PageRequest.of(0,n))
+        .build();
+    SearchHits<GlobalTransactionDocument> result = 
this.template.search(query,GlobalTransactionDocument.class);
+    result.forEach(hit -> {
+      globalTransactions.add(hit.getContent());
+    });
     return globalTransactions;
   }
 
-  private final SearchResultMapper searchResultMapper = new 
DefaultResultMapper() {
-    @Override
-    public <T> AggregatedPage<T> mapResults(SearchResponse response, Class<T> 
aClass,
-        Pageable pageable) {
-      List<GlobalTransactionDocument> result = new ArrayList<>();
-      for (SearchHit hit : response.getHits()) {
-        if (response.getHits().getHits().length <= 0) {
-          return new AggregatedPageImpl<T>(Collections.EMPTY_LIST, pageable,
-              response.getHits().getTotalHits(), response.getScrollId());
-        }
-        GlobalTransactionDocument globalTransactionDocument = null;
-        try {
-          globalTransactionDocument = mapper.readValue(hit.getSourceAsString(),
-              GlobalTransactionDocument.class);
-        } catch (IOException e) {
-          throw new RuntimeException(e.getMessage(), e);
-        }
-        result.add(globalTransactionDocument);
-      }
-      if (result.isEmpty()) {
-        return new AggregatedPageImpl<T>(Collections.EMPTY_LIST, pageable,
-            response.getHits().getTotalHits(), response.getScrollId());
-      }
-      return new AggregatedPageImpl<T>((List<T>) result, pageable,
-          response.getHits().getTotalHits(), response.getScrollId());
-    }
-  };
-
   private IndexQuery convert(GlobalTransaction transaction) throws 
JsonProcessingException {
     IndexQuery indexQuery = new IndexQuery();
     indexQuery.setId(transaction.getGlobalTxId());
     indexQuery.setSource(mapper.writeValueAsString(transaction));
-    indexQuery.setIndexName(INDEX_NAME);
-    indexQuery.setType(INDEX_TYPE);
     return indexQuery;
   }
 
   private void save(long begin) {
-    template.bulkIndex(queries);
-    template.refresh(INDEX_NAME);
+    template.bulkIndex(queries, IndexCoordinates.of(INDEX_NAME));
+    template.indexOps(IndexCoordinates.of(INDEX_NAME)).refresh();
     metricsService.metrics().doRepositoryAccepted(queries.size());
     long end = System.currentTimeMillis();
     metricsService.metrics().doRepositoryAvgTime((end - begin) / 
queries.size());
diff --git 
a/alpha/alpha-fsm/src/test/java/org/apache/servicecomb/pack/alpha/fsm/SagaActorTest.java
 
b/alpha/alpha-fsm/src/test/java/org/apache/servicecomb/pack/alpha/fsm/SagaActorTest.java
index 9dcfbbe..8b3a7e4 100644
--- 
a/alpha/alpha-fsm/src/test/java/org/apache/servicecomb/pack/alpha/fsm/SagaActorTest.java
+++ 
b/alpha/alpha-fsm/src/test/java/org/apache/servicecomb/pack/alpha/fsm/SagaActorTest.java
@@ -20,6 +20,9 @@ package org.apache.servicecomb.pack.alpha.fsm;
 import static 
org.apache.servicecomb.pack.alpha.fsm.spring.integration.akka.SagaDataExtension.SAGA_DATA_EXTENSION_PROVIDER;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.Assert.assertEquals;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.mock;
 
 import akka.actor.ActorRef;
 import akka.actor.ActorSystem;
@@ -37,10 +40,10 @@ import org.apache.servicecomb.pack.alpha.core.fsm.TxState;
 import org.apache.servicecomb.pack.alpha.core.fsm.event.base.BaseEvent;
 import org.apache.servicecomb.pack.alpha.fsm.metrics.MetricsService;
 import org.apache.servicecomb.pack.alpha.fsm.model.SagaData;
+import org.apache.servicecomb.pack.alpha.fsm.repository.TransactionRepository;
 import 
org.apache.servicecomb.pack.alpha.fsm.repository.TransactionRepositoryChannel;
 import 
org.apache.servicecomb.pack.alpha.fsm.repository.channel.DefaultTransactionRepositoryChannel;
 import 
org.apache.servicecomb.pack.alpha.fsm.repository.elasticsearch.ElasticsearchTransactionRepository;
-import org.apache.servicecomb.pack.alpha.fsm.repository.TransactionRepository;
 import 
org.apache.servicecomb.pack.alpha.fsm.spring.integration.akka.SagaDataExtension;
 import org.junit.After;
 import org.junit.AfterClass;
@@ -48,9 +51,12 @@ import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.mockito.ArgumentMatchers;
 import org.mockito.Mock;
 import org.mockito.junit.MockitoJUnitRunner;
-import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
+import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
+import org.springframework.data.elasticsearch.core.IndexOperations;
+import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
 
 import static org.hamcrest.CoreMatchers.*;
 
@@ -60,7 +66,7 @@ public class SagaActorTest {
   static ActorSystem system;
 
   @Mock
-  ElasticsearchTemplate template;
+  ElasticsearchRestTemplate template;
 
   static MetricsService metricsService = new MetricsService();
 
@@ -99,6 +105,8 @@ public class SagaActorTest {
 
   @Before
   public void before(){
+    
when(template.indexOps(ArgumentMatchers.any(IndexCoordinates.class))).thenReturn(mock(IndexOperations.class));
+
     TransactionRepository repository = new 
ElasticsearchTransactionRepository(template, metricsService, 0,0);
     TransactionRepositoryChannel repositoryChannel = new 
DefaultTransactionRepositoryChannel(repository, metricsService);
     
SAGA_DATA_EXTENSION_PROVIDER.get(system).setRepositoryChannel(repositoryChannel);
diff --git 
a/alpha/alpha-fsm/src/test/java/org/apache/servicecomb/pack/alpha/fsm/SagaIntegrationTest.java
 
b/alpha/alpha-fsm/src/test/java/org/apache/servicecomb/pack/alpha/fsm/SagaIntegrationTest.java
index f7b927e..48753d7 100644
--- 
a/alpha/alpha-fsm/src/test/java/org/apache/servicecomb/pack/alpha/fsm/SagaIntegrationTest.java
+++ 
b/alpha/alpha-fsm/src/test/java/org/apache/servicecomb/pack/alpha/fsm/SagaIntegrationTest.java
@@ -21,6 +21,8 @@ import static java.util.concurrent.TimeUnit.SECONDS;
 import static org.awaitility.Awaitility.await;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 
 import akka.actor.ActorSystem;
 import java.util.UUID;
@@ -30,12 +32,16 @@ import 
org.apache.servicecomb.pack.alpha.fsm.metrics.MetricsService;
 import org.apache.servicecomb.pack.alpha.fsm.model.SagaData;
 import 
org.apache.servicecomb.pack.alpha.fsm.spring.integration.akka.SagaDataExtension;
 import org.junit.After;
+import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.mockito.ArgumentMatchers;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.mock.mockito.MockBean;
-import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
+import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
+import org.springframework.data.elasticsearch.core.IndexOperations;
+import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
 import org.springframework.test.context.junit4.SpringRunner;
 
 @RunWith(SpringRunner.class)
@@ -66,7 +72,13 @@ public class SagaIntegrationTest {
   MetricsService metricsService;
 
   @MockBean
-  ElasticsearchTemplate elasticsearchTemplate;
+  ElasticsearchRestTemplate elasticsearchRestTemplate;
+
+  @Before
+  public void before(){
+    
when(elasticsearchRestTemplate.indexOps(ArgumentMatchers.any(IndexCoordinates.class))).thenReturn(mock(
+        IndexOperations.class));
+  }
 
   @After
   public void after(){
diff --git 
a/alpha/alpha-fsm/src/test/java/org/apache/servicecomb/pack/alpha/fsm/repository/ElasticsearchTransactionRepositoryTest.java
 
b/alpha/alpha-fsm/src/test/java/org/apache/servicecomb/pack/alpha/fsm/repository/ElasticsearchTransactionRepositoryTest.java
index cc7778b..4437da8 100644
--- 
a/alpha/alpha-fsm/src/test/java/org/apache/servicecomb/pack/alpha/fsm/repository/ElasticsearchTransactionRepositoryTest.java
+++ 
b/alpha/alpha-fsm/src/test/java/org/apache/servicecomb/pack/alpha/fsm/repository/ElasticsearchTransactionRepositoryTest.java
@@ -20,6 +20,8 @@ package org.apache.servicecomb.pack.alpha.fsm.repository;
 import static java.util.concurrent.TimeUnit.SECONDS;
 import static org.awaitility.Awaitility.await;
 import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 
 import java.util.ArrayList;
 import java.util.Date;
@@ -32,19 +34,24 @@ import 
org.apache.servicecomb.pack.alpha.core.fsm.repository.model.GlobalTransac
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.mockito.ArgumentMatchers;
 import org.mockito.Mock;
 import org.mockito.junit.MockitoJUnitRunner;
-import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
+import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
+import org.springframework.data.elasticsearch.core.IndexOperations;
+import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
 
 @RunWith(MockitoJUnitRunner.class)
 public class ElasticsearchTransactionRepositoryTest {
 
   @Mock
-  ElasticsearchTemplate template;
+  ElasticsearchRestTemplate template;
   MetricsService metricsService;
 
   @Before
   public void before() {
+    
when(template.indexOps(ArgumentMatchers.any(IndexCoordinates.class))).thenReturn(mock(
+        IndexOperations.class));
     metricsService = new MetricsService();
   }
 
diff --git 
a/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/AlphaEventControllerTest.java
 
b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/AlphaEventControllerTest.java
index d600563..afd041b 100644
--- 
a/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/AlphaEventControllerTest.java
+++ 
b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/AlphaEventControllerTest.java
@@ -36,13 +36,13 @@ import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
 import org.springframework.boot.test.mock.mockito.MockBean;
-import org.springframework.test.context.ActiveProfiles;
 import org.springframework.test.context.junit4.SpringRunner;
 import org.springframework.test.web.servlet.MockMvc;
 
 @RunWith(SpringRunner.class)
-@WebMvcTest(AlphaEventController.class)
-@ActiveProfiles("test")
+@WebMvcTest(value = AlphaEventController.class, properties = {
+    "spring.profiles.active=test"
+})
 public class AlphaEventControllerTest {
   private final TxEvent someEvent = someEvent();
 
diff --git 
a/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/AlphaIntegrationWithSSLTest.java
 
b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/AlphaIntegrationWithSSLTest.java
index 140238e..e5e279a 100644
--- 
a/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/AlphaIntegrationWithSSLTest.java
+++ 
b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/AlphaIntegrationWithSSLTest.java
@@ -24,7 +24,6 @@ import javax.net.ssl.SSLException;
 import org.junit.BeforeClass;
 import org.junit.runner.RunWith;
 import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.ActiveProfiles;
 import org.springframework.test.context.junit4.SpringRunner;
 
 import io.grpc.netty.GrpcSslContexts;
@@ -34,13 +33,13 @@ import io.netty.handler.ssl.SslContext;
 import io.netty.handler.ssl.SslProvider;
 
 @RunWith(SpringRunner.class)
-@ActiveProfiles("ssl")
 @SpringBootTest(classes = {AlphaApplication.class, AlphaConfig.class},
     properties = {
         "alpha.server.host=0.0.0.0",
         "alpha.server.port=8092",
         "alpha.event.pollingInterval=1",
-        "spring.main.allow-bean-definition-overriding=true"
+        "spring.main.allow-bean-definition-overriding=true",
+        "spring.profiles.active=ssl"
     })
 public class AlphaIntegrationWithSSLTest extends AlphaIntegrationTest {
   private static final int port = 8092;
diff --git 
a/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/api/APIv1ControllerTest.java
 
b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/api/APIv1ControllerTest.java
index 10fbd49..bb9b3b5 100644
--- 
a/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/api/APIv1ControllerTest.java
+++ 
b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/api/APIv1ControllerTest.java
@@ -57,7 +57,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import 
org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.mock.mockito.MockBean;
-import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
+import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
 import org.springframework.http.MediaType;
 import org.springframework.test.context.junit4.SpringRunner;
 import org.springframework.test.web.servlet.MockMvc;
@@ -83,7 +83,7 @@ public class APIv1ControllerTest {
   NodeStatus nodeStatus;
 
   @MockBean
-  ElasticsearchTemplate template;
+  ElasticsearchRestTemplate template;
 
   @MockBean
   TransactionRepository transactionRepository;
@@ -111,7 +111,7 @@ public class APIv1ControllerTest {
     mockMvc.perform(get("/alpha/api/v1/metrics"))
         .andExpect(status().isOk())
         .andExpect(
-            
MockMvcResultMatchers.content().contentType(MediaType.APPLICATION_JSON_UTF8_VALUE))
+            
MockMvcResultMatchers.content().contentType(MediaType.APPLICATION_JSON))
         .andExpect(jsonPath("$.metrics.eventReceived").value(1))
         .andExpect(jsonPath("$.metrics.eventAccepted").value(1))
         .andExpect(jsonPath("$.metrics.eventRejected").value(0))
@@ -201,7 +201,7 @@ public class APIv1ControllerTest {
     mockMvc.perform(get("/alpha/api/v1/transaction?page=0&size=50"))
         .andExpect(status().isOk())
         .andExpect(
-            
MockMvcResultMatchers.content().contentType(MediaType.APPLICATION_JSON_UTF8_VALUE))
+            
MockMvcResultMatchers.content().contentType(MediaType.APPLICATION_JSON))
         .andExpect(jsonPath("$.total").value(1))
         .andExpect(jsonPath("$.page").value(0))
         .andExpect(jsonPath("$.size").value(50))
@@ -290,7 +290,7 @@ public class APIv1ControllerTest {
         .andDo(print())
         .andExpect(status().isOk())
         .andExpect(
-            
MockMvcResultMatchers.content().contentType(MediaType.APPLICATION_JSON_UTF8_VALUE))
+            
MockMvcResultMatchers.content().contentType(MediaType.APPLICATION_JSON))
         .andExpect(jsonPath("$.globalTxId")
             .value(globalTransaction.getGlobalTxId()))
         .andExpect(jsonPath("$.type")
@@ -324,7 +324,7 @@ public class APIv1ControllerTest {
     mockMvc.perform(get("/alpha/api/v1/transaction/statistics"))
         .andExpect(status().isOk())
         .andExpect(
-            
MockMvcResultMatchers.content().contentType(MediaType.APPLICATION_JSON_UTF8_VALUE))
+            
MockMvcResultMatchers.content().contentType(MediaType.APPLICATION_JSON))
         .andExpect(jsonPath("$.COMMITTED").value(statistics.get("COMMITTED")))
         .andExpect(jsonPath("$.SUSPENDED").value(statistics.get("SUSPENDED")))
         
.andExpect(jsonPath("$.COMPENSATED").value(statistics.get("COMPENSATED")))
@@ -346,7 +346,7 @@ public class APIv1ControllerTest {
     mockMvc.perform(get("/alpha/api/v1/transaction/slow"))
         .andExpect(status().isOk())
         .andExpect(
-            
MockMvcResultMatchers.content().contentType(MediaType.APPLICATION_JSON_UTF8_VALUE))
+            
MockMvcResultMatchers.content().contentType(MediaType.APPLICATION_JSON))
         .andExpect(jsonPath("$", hasSize(10)))
         .andReturn();
   }
diff --git 
a/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/cluster/master/ClusterLockServiceTest.java
 
b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/cluster/master/ClusterLockServiceTest.java
index 886356a..9644b76 100644
--- 
a/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/cluster/master/ClusterLockServiceTest.java
+++ 
b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/cluster/master/ClusterLockServiceTest.java
@@ -29,7 +29,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.mock.mockito.MockBean;
-import org.springframework.test.context.ActiveProfiles;
 import org.springframework.test.context.junit4.SpringRunner;
 import 
org.apache.servicecomb.pack.alpha.server.cluster.master.provider.jdbc.MasterLockEntityRepository;
 
@@ -41,14 +40,14 @@ import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.when;
 
 @RunWith(SpringRunner.class)
-@ActiveProfiles("test")
 @SpringBootTest(classes = {AlphaApplication.class, AlphaConfig.class},
     properties = {
         "alpha.cluster.master.enabled=true",
         "alpha.server.host=0.0.0.0",
         "alpha.server.port=8090",
         "alpha.event.pollingInterval=1",
-        "spring.main.allow-bean-definition-overriding=true"
+        "spring.main.allow-bean-definition-overriding=true",
+        "spring.profiles.active=test"
     })
 public class ClusterLockServiceTest {
 
diff --git 
a/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/fsm/AlphaIntegrationFsmTest.java
 
b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/fsm/AlphaIntegrationFsmTest.java
index 85da3cd..49966bc 100644
--- 
a/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/fsm/AlphaIntegrationFsmTest.java
+++ 
b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/fsm/AlphaIntegrationFsmTest.java
@@ -48,7 +48,7 @@ import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.mock.mockito.MockBean;
-import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
+import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
 import org.springframework.test.context.junit4.SpringRunner;
 
 @RunWith(SpringRunner.class)
@@ -85,7 +85,7 @@ public class AlphaIntegrationFsmTest {
   private Map<String, Map<String, OmegaCallback>> omegaCallbacks;
 
   @MockBean
-  ElasticsearchTemplate elasticsearchTemplate;
+  ElasticsearchRestTemplate elasticsearchRestTemplate;
 
   @BeforeClass
   public static void beforeClass() {
diff --git 
a/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/tcc/AlphaTccEventControllerTest.java
 
b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/tcc/AlphaTccEventControllerTest.java
index 94627df..09c1c9e 100644
--- 
a/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/tcc/AlphaTccEventControllerTest.java
+++ 
b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/tcc/AlphaTccEventControllerTest.java
@@ -36,13 +36,13 @@ import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
 import org.springframework.boot.test.mock.mockito.MockBean;
-import org.springframework.test.context.ActiveProfiles;
 import org.springframework.test.context.junit4.SpringRunner;
 import org.springframework.test.web.servlet.MockMvc;
 
 @RunWith(SpringRunner.class)
-@WebMvcTest(AlphaTccEventController.class)
-@ActiveProfiles("test")
+@WebMvcTest(value = AlphaTccEventController.class, properties = {
+    "spring.profiles.active=test"
+})
 public class AlphaTccEventControllerTest {
   private final TccTxEvent someEvent = someEvent();
 
diff --git 
a/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/tcc/MemoryAlphaTccServerTest.java
 
b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/tcc/MemoryAlphaTccServerTest.java
index 559c660..c0106e8 100644
--- 
a/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/tcc/MemoryAlphaTccServerTest.java
+++ 
b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/tcc/MemoryAlphaTccServerTest.java
@@ -21,16 +21,15 @@ import io.grpc.netty.NettyChannelBuilder;
 import org.junit.BeforeClass;
 import org.junit.runner.RunWith;
 import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.ActiveProfiles;
 import org.springframework.test.context.junit4.SpringRunner;
 
 @RunWith(SpringRunner.class)
 @SpringBootTest(classes = {TccApplication.class},
     properties = {
         "alpha.server.host=0.0.0.0",
-        "alpha.server.port=8190"
+        "alpha.server.port=8190",
+        "spring.profiles.active=memory,tccTest"
     })
-@ActiveProfiles("memory,tccTest")
 public class MemoryAlphaTccServerTest extends AlphaTccServerTestBase {
 
   @BeforeClass
diff --git 
a/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/tcc/RdbAlphaTccServerTest.java
 
b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/tcc/RdbAlphaTccServerTest.java
index b1d20c4..61661cd 100644
--- 
a/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/tcc/RdbAlphaTccServerTest.java
+++ 
b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/tcc/RdbAlphaTccServerTest.java
@@ -21,16 +21,15 @@ import io.grpc.netty.NettyChannelBuilder;
 import org.junit.BeforeClass;
 import org.junit.runner.RunWith;
 import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.ActiveProfiles;
 import org.springframework.test.context.junit4.SpringRunner;
 
 @RunWith(SpringRunner.class)
 @SpringBootTest(classes = {TccApplication.class},
     properties = {
         "alpha.server.host=0.0.0.0",
-        "alpha.server.port=8091"
+        "alpha.server.port=8091",
+        "spring.profiles.active=tccTest"
     })
-@ActiveProfiles("tccTest")
 public class RdbAlphaTccServerTest extends AlphaTccServerTestBase {
 
   @BeforeClass
diff --git 
a/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/tcc/TccApplication.java
 
b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/tcc/TccApplication.java
index 0562357..abd0f5f 100644
--- 
a/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/tcc/TccApplication.java
+++ 
b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/tcc/TccApplication.java
@@ -21,7 +21,6 @@ import 
org.apache.servicecomb.pack.alpha.server.GrpcServerConfig;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.context.annotation.Import;
-import org.springframework.test.context.ActiveProfiles;
 
 @SpringBootApplication(scanBasePackageClasses = GrpcTccEventService.class)
 @Import({GrpcServerConfig.class,TccConfiguration.class})
diff --git 
a/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/tcc/TccCallbackEngineTest.java
 
b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/tcc/TccCallbackEngineTest.java
index 7064a07..4d66ff7 100644
--- 
a/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/tcc/TccCallbackEngineTest.java
+++ 
b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/tcc/TccCallbackEngineTest.java
@@ -42,7 +42,6 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.ActiveProfiles;
 import org.springframework.test.context.junit4.SpringRunner;
 
 @RunWith(SpringRunner.class)
@@ -50,9 +49,9 @@ import org.springframework.test.context.junit4.SpringRunner;
     properties = {
         "alpha.server.host=0.0.0.0",
         "alpha.server.port=8092",
-        "alpha.compensation.retry.delay=30"
+        "alpha.compensation.retry.delay=30",
+        "spring.profiles.active=tccTest"
     })
-@ActiveProfiles("tccTest")
 public class TccCallbackEngineTest {
 
   @Autowired
diff --git 
a/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/tcc/service/TccTxEventServiceTest.java
 
b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/tcc/service/TccTxEventServiceTest.java
index ad334ee..e1c6e11 100644
--- 
a/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/tcc/service/TccTxEventServiceTest.java
+++ 
b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/tcc/service/TccTxEventServiceTest.java
@@ -47,14 +47,13 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.ActiveProfiles;
 import org.springframework.test.context.junit4.SpringRunner;
 
 @RunWith(SpringRunner.class)
 @SpringBootTest(classes = {TccApplication.class}, properties = {
-    "spring.jpa.show-sql=true"
+    "spring.jpa.show-sql=true",
+    "spring.profiles.active=tccTest"
 })
-@ActiveProfiles("tccTest")
 public class TccTxEventServiceTest {
 
   @Autowired
@@ -160,8 +159,8 @@ public class TccTxEventServiceTest {
 
     tccTxEventService.clearCompletedGlobalTx(1);
 
-    
assertThat(participatedEventRepository.findByGlobalTxId(globalTxId).isPresent(),
 is(false));
-    
assertThat(globalTxEventRepository.findByGlobalTxId(globalTxId).isPresent(), 
is(false));
+    
assertThat(participatedEventRepository.findByGlobalTxId(globalTxId).get().isEmpty(),
 is(true));
+    
assertThat(globalTxEventRepository.findByGlobalTxId(globalTxId).get().isEmpty(),
 is(true));
 
     Optional<List<TccTxEvent>> events = 
tccTxEventRepository.findByGlobalTxId(globalTxId);
     assertThat(events.get().size(), is(5));
@@ -189,8 +188,8 @@ public class TccTxEventServiceTest {
 
     tccTxEventService.clearCompletedGlobalTx(2);
 
-    
assertThat(participatedEventRepository.findByGlobalTxId(globalTxId).isPresent(),
 is(false));
-    
assertThat(globalTxEventRepository.findByGlobalTxId(globalTxId).isPresent(), 
is(false));
+    
assertThat(participatedEventRepository.findByGlobalTxId(globalTxId).get().isEmpty(),
 is(true));
+    
assertThat(globalTxEventRepository.findByGlobalTxId(globalTxId).get().isEmpty(),
 is(true));
 
     Optional<List<TccTxEvent>> events = 
tccTxEventRepository.findByGlobalTxId(globalTxId);
     assertThat(events.get().size(), is(5));
diff --git 
a/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/tcc/service/TccTxEventServiceTransactionTest.java
 
b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/tcc/service/TccTxEventServiceTransactionTest.java
index f7f5e6f..cea33d8 100644
--- 
a/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/tcc/service/TccTxEventServiceTransactionTest.java
+++ 
b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/tcc/service/TccTxEventServiceTransactionTest.java
@@ -43,12 +43,12 @@ import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.mock.mockito.MockBean;
-import org.springframework.test.context.ActiveProfiles;
 import org.springframework.test.context.junit4.SpringRunner;
 
 @RunWith(SpringRunner.class)
-@SpringBootTest(classes = {TccApplication.class, TccConfiguration.class})
-@ActiveProfiles("tccTest")
+@SpringBootTest(classes = {TccApplication.class, TccConfiguration.class}, 
properties = {
+    "spring.profiles.active=tccTest"
+})
 public class TccTxEventServiceTransactionTest {
 
   @Autowired
@@ -101,19 +101,19 @@ public class TccTxEventServiceTransactionTest {
 
     tccTxEventService.onTccStartedEvent(tccStartEvent);
     Optional<List<GlobalTxEvent>> startEvents = 
globalTxEventRepository.findByGlobalTxId(globalTxId);
-    assertThat(startEvents.isPresent(), is(false));
+    assertThat(startEvents.get().isEmpty(), is(true));
 
     tccTxEventService.onParticipationStartedEvent(participatedEvent);
     Optional<List<ParticipatedEvent>> participates = 
participatedEventRepository.findByGlobalTxId(globalTxId);
-    assertThat(participates.isPresent(), is(false));
+    assertThat(participates.get().isEmpty(), is(true));
 
     tccTxEventService.onTccEndedEvent(tccEndEvent);
     Optional<List<GlobalTxEvent>> endEvents = 
globalTxEventRepository.findByGlobalTxId(globalTxId);
-    assertThat(endEvents.isPresent(), is(false));
+    assertThat(endEvents.get().isEmpty(), is(true));
 
     participatedEventRepository.save(participatedEvent);
     tccTxEventService.onCoordinatedEvent(coordinateEvent);
     participates = participatedEventRepository.findByGlobalTxId(globalTxId);
-    assertThat(participates.isPresent(), is(true));
+    assertThat(participates.get().isEmpty(), is(false));
   }
 }
diff --git 
a/alpha/alpha-spring-cloud-starter-consul/src/main/java/org/apache/servicecomb/pack/alpha/server/discovery/consul/AlphaConsulAutoConfiguration.java
 
b/alpha/alpha-spring-cloud-starter-consul/src/main/java/org/apache/servicecomb/pack/alpha/server/discovery/consul/AlphaConsulAutoConfiguration.java
index 9bfaab4..989b888 100644
--- 
a/alpha/alpha-spring-cloud-starter-consul/src/main/java/org/apache/servicecomb/pack/alpha/server/discovery/consul/AlphaConsulAutoConfiguration.java
+++ 
b/alpha/alpha-spring-cloud-starter-consul/src/main/java/org/apache/servicecomb/pack/alpha/server/discovery/consul/AlphaConsulAutoConfiguration.java
@@ -18,6 +18,7 @@
 package org.apache.servicecomb.pack.alpha.server.discovery.consul;
 
 import com.ecwid.consul.v1.ConsulClient;
+import com.ecwid.consul.v1.QueryParams;
 import com.ecwid.consul.v1.Response;
 import com.ecwid.consul.v1.agent.model.NewService;
 import com.ecwid.consul.v1.catalog.model.CatalogService;
@@ -106,7 +107,8 @@ public class AlphaConsulAutoConfiguration {
       if(instanceRegisteredEvent.getConfig() instanceof 
ConsulDiscoveryProperties){
         ConsulDiscoveryProperties properties = 
(ConsulDiscoveryProperties)instanceRegisteredEvent.getConfig();
         this.consuleInstanceId = 
formatConsulInstanceId(properties.getInstanceId());
-        Response<List<CatalogService>> services = 
consulClient.getCatalogService(serviceName,null);
+        Response<List<CatalogService>> services = 
consulClient.getCatalogService(serviceName,
+            QueryParams.Builder.builder().build());
         if(services.getValue() != null){
           services.getValue().stream().filter(service ->
               
service.getServiceId().equalsIgnoreCase(this.consuleInstanceId)).forEach(service
 -> {
diff --git a/alpha/alpha-spring-cloud-starter-nacos/pom.xml 
b/alpha/alpha-spring-cloud-starter-nacos/pom.xml
index 9207ea3..8cd96b5 100644
--- a/alpha/alpha-spring-cloud-starter-nacos/pom.xml
+++ b/alpha/alpha-spring-cloud-starter-nacos/pom.xml
@@ -43,7 +43,7 @@
       <artifactId>spring-boot-starter-log4j2</artifactId>
     </dependency>
     <dependency>
-      <groupId>org.springframework.cloud</groupId>
+      <groupId>com.alibaba.cloud</groupId>
       <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
     </dependency>
     <dependency>
diff --git 
a/alpha/alpha-spring-cloud-starter-nacos/src/main/java/org/apache/servicecomb/pack/alpha/server/discovery/nacos/GrpcStartableStartedEventListener.java
 
b/alpha/alpha-spring-cloud-starter-nacos/src/main/java/org/apache/servicecomb/pack/alpha/server/discovery/nacos/GrpcStartableStartedEventListener.java
index 7f9b072..1582c20 100644
--- 
a/alpha/alpha-spring-cloud-starter-nacos/src/main/java/org/apache/servicecomb/pack/alpha/server/discovery/nacos/GrpcStartableStartedEventListener.java
+++ 
b/alpha/alpha-spring-cloud-starter-nacos/src/main/java/org/apache/servicecomb/pack/alpha/server/discovery/nacos/GrpcStartableStartedEventListener.java
@@ -17,6 +17,8 @@
 
 package org.apache.servicecomb.pack.alpha.server.discovery.nacos;
 
+import com.alibaba.cloud.nacos.NacosDiscoveryProperties;
+import com.alibaba.cloud.nacos.discovery.NacosDiscoveryAutoConfiguration;
 import com.google.common.eventbus.EventBus;
 import com.google.common.eventbus.Subscribe;
 import org.apache.servicecomb.pack.alpha.core.event.GrpcStartableStartedEvent;
@@ -26,8 +28,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.cloud.alibaba.nacos.NacosDiscoveryAutoConfiguration;
-import org.springframework.cloud.alibaba.nacos.NacosDiscoveryProperties;
+
 import org.springframework.stereotype.Component;
 
 import javax.annotation.PostConstruct;
diff --git 
a/demo/tcc-spring-demo/inventory/src/test/java/org/apache/servicecomb/pack/demo/inventory/InventoryServiceTest.java
 
b/demo/tcc-spring-demo/inventory/src/test/java/org/apache/servicecomb/pack/demo/inventory/InventoryServiceTest.java
index 224c326..f2126a0 100644
--- 
a/demo/tcc-spring-demo/inventory/src/test/java/org/apache/servicecomb/pack/demo/inventory/InventoryServiceTest.java
+++ 
b/demo/tcc-spring-demo/inventory/src/test/java/org/apache/servicecomb/pack/demo/inventory/InventoryServiceTest.java
@@ -27,14 +27,14 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.ActiveProfiles;
 import org.springframework.test.context.junit4.SpringRunner;
 
 @RunWith(SpringRunner.class)
 // disable the omega to avoid the connection of Alpha
-@ActiveProfiles("test")
-@SpringBootTest(classes = {TccInventoryApplication.class},
-    properties = {"omega.enabled=false"})
+@SpringBootTest(classes = {TccInventoryApplication.class}, properties = {
+    "omega.enabled=false",
+    "spring.profiles.active=test"
+})
 public class InventoryServiceTest {
   @Autowired
   private InventoryService inventoryService;
diff --git 
a/demo/tcc-spring-demo/payment/src/test/java/org/apache/servicecomb/pack/demo/payment/PaymentServiceTest.java
 
b/demo/tcc-spring-demo/payment/src/test/java/org/apache/servicecomb/pack/demo/payment/PaymentServiceTest.java
index ca820c2..dffc908 100644
--- 
a/demo/tcc-spring-demo/payment/src/test/java/org/apache/servicecomb/pack/demo/payment/PaymentServiceTest.java
+++ 
b/demo/tcc-spring-demo/payment/src/test/java/org/apache/servicecomb/pack/demo/payment/PaymentServiceTest.java
@@ -31,14 +31,14 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.ActiveProfiles;
 import org.springframework.test.context.junit4.SpringRunner;
 
 @RunWith(SpringRunner.class)
 // disable the omega to avoid the connection of Alpha
-@ActiveProfiles("test")
-@SpringBootTest(classes = {TccPaymentApplication.class},
-    properties = {"omega.enabled=false"})
+@SpringBootTest(classes = {TccPaymentApplication.class}, properties = {
+    "omega.enabled=false",
+    "spring.profiles.active=test"
+})
 
 public class PaymentServiceTest {
   @Autowired
diff --git a/omega/omega-spring-cloud-nacos-starter/pom.xml 
b/omega/omega-spring-cloud-nacos-starter/pom.xml
index a560702..3c4e7bc 100644
--- a/omega/omega-spring-cloud-nacos-starter/pom.xml
+++ b/omega/omega-spring-cloud-nacos-starter/pom.xml
@@ -43,7 +43,7 @@
       <artifactId>omega-connector-grpc</artifactId>
     </dependency>
     <dependency>
-      <groupId>org.springframework.cloud</groupId>
+      <groupId>com.alibaba.cloud</groupId>
       <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
     </dependency>
   </dependencies>
diff --git 
a/omega/omega-spring-cloud-nacos-starter/src/main/java/org/apache/servicecomb/pack/omega/spring/cloud/OmegaSpringNacosConfig.java
 
b/omega/omega-spring-cloud-nacos-starter/src/main/java/org/apache/servicecomb/pack/omega/spring/cloud/OmegaSpringNacosConfig.java
index 5083ea7..899737a 100644
--- 
a/omega/omega-spring-cloud-nacos-starter/src/main/java/org/apache/servicecomb/pack/omega/spring/cloud/OmegaSpringNacosConfig.java
+++ 
b/omega/omega-spring-cloud-nacos-starter/src/main/java/org/apache/servicecomb/pack/omega/spring/cloud/OmegaSpringNacosConfig.java
@@ -24,6 +24,7 @@
 
 package org.apache.servicecomb.pack.omega.spring.cloud;
 
+import com.alibaba.cloud.nacos.discovery.NacosDiscoveryAutoConfiguration;
 import org.apache.servicecomb.pack.omega.connector.grpc.AlphaClusterDiscovery;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -31,7 +32,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.autoconfigure.AutoConfigureAfter;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.cloud.alibaba.nacos.NacosDiscoveryAutoConfiguration;
 import org.springframework.cloud.client.ServiceInstance;
 import org.springframework.cloud.client.discovery.DiscoveryClient;
 import org.springframework.context.annotation.Bean;
diff --git 
a/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/pack/omega/transaction/spring/CompensableAnnotationCheckingTest.java
 
b/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/pack/omega/transaction/spring/CompensableAnnotationCheckingTest.java
index cc2e629..018d08c 100644
--- 
a/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/pack/omega/transaction/spring/CompensableAnnotationCheckingTest.java
+++ 
b/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/pack/omega/transaction/spring/CompensableAnnotationCheckingTest.java
@@ -34,6 +34,9 @@ public class CompensableAnnotationCheckingTest {
     try {
       try (ConfigurableApplicationContext ignored = new 
SpringApplicationBuilder(TransactionTestMain.class)
           .profiles("annotation-checking")
+          .properties("spring.jpa.hibernate.ddl-auto=none",
+              "spring.datasource.driver-class-name=org.h2.Driver",
+              "spring.datasource.url=jdbc:h2:mem:alpha;MODE=MYSQL")
           .run()) {
         expectFailing(BeanCreationException.class);
       }
@@ -47,6 +50,9 @@ public class CompensableAnnotationCheckingTest {
     try {
       try (ConfigurableApplicationContext ignored = new 
SpringApplicationBuilder(TransactionTestMain.class)
           .profiles("annotation-retries-checking")
+          .properties("spring.jpa.hibernate.ddl-auto=none",
+              "spring.datasource.driver-class-name=org.h2.Driver",
+              "spring.datasource.url=jdbc:h2:mem:alpha;MODE=MYSQL")
           .run()) {
         expectFailing(BeanCreationException.class);
       }
@@ -60,6 +66,9 @@ public class CompensableAnnotationCheckingTest {
     try {
       try (ConfigurableApplicationContext ignored = new 
SpringApplicationBuilder(TransactionTestMain.class)
           .profiles("omega-context-aware-checking")
+          .properties("spring.jpa.hibernate.ddl-auto=none",
+              "spring.datasource.driver-class-name=org.h2.Driver",
+              "spring.datasource.url=jdbc:h2:mem:alpha;MODE=MYSQL")
           .run()) {
         expectFailing(BeanCreationException.class);
       }
diff --git 
a/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/pack/omega/transaction/spring/TccInterceptorTest.java
 
b/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/pack/omega/transaction/spring/TccInterceptorTest.java
index 0cefd6b..375ae71 100644
--- 
a/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/pack/omega/transaction/spring/TccInterceptorTest.java
+++ 
b/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/pack/omega/transaction/spring/TccInterceptorTest.java
@@ -44,7 +44,11 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
 @RunWith(SpringRunner.class)
-@SpringBootTest(classes = {TransactionTestMain.class, MessageConfig.class})
+@SpringBootTest(properties = {
+    "spring.jpa.hibernate.ddl-auto=none",
+    "spring.datasource.driver-class-name=org.h2.Driver",
+    "spring.datasource.url=jdbc:h2:mem:alpha;MODE=MYSQL"},
+    classes = {TransactionTestMain.class, MessageConfig.class})
 public class TccInterceptorTest {
 
   private static final String globalTxId = UUID.randomUUID().toString();
diff --git 
a/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/pack/omega/transaction/spring/TransactionInterceptionTest.java
 
b/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/pack/omega/transaction/spring/TransactionInterceptionTest.java
index 16ed116..69c9f9e 100644
--- 
a/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/pack/omega/transaction/spring/TransactionInterceptionTest.java
+++ 
b/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/pack/omega/transaction/spring/TransactionInterceptionTest.java
@@ -66,7 +66,11 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
 @RunWith(SpringRunner.class)
-@SpringBootTest(classes = {TransactionTestMain.class, MessageConfig.class})
+@SpringBootTest(properties = {
+    "spring.jpa.hibernate.ddl-auto=none",
+    "spring.datasource.driver-class-name=org.h2.Driver",
+    "spring.datasource.url=jdbc:h2:mem:alpha;MODE=MYSQL"},
+    classes = {TransactionTestMain.class, MessageConfig.class})
 @AutoConfigureMockMvc
 public class TransactionInterceptionTest {
   @SuppressWarnings("unchecked")
diff --git a/pack-dependencies/pom.xml b/pack-dependencies/pom.xml
index 586a320..9a0f9eb 100644
--- a/pack-dependencies/pom.xml
+++ b/pack-dependencies/pom.xml
@@ -39,21 +39,20 @@
     <slf4j.version>1.7.25</slf4j.version>
 
     <!-- spring.io -->
-    <spring.boot.version>2.1.6.RELEASE</spring.boot.version>
-    <spring.cloud.version>Greenwich.SR1</spring.cloud.version>
-    
<spring.cloud.starter.netflix.eureka.client.version>2.1.1.RELEASE</spring.cloud.starter.netflix.eureka.client.version>
-    
<spring.cloud.starter.consul.discovery.version>2.1.1.RELEASE</spring.cloud.starter.consul.discovery.version>
-    
<spring.cloud.starter.zookeeper.discovery.version>2.1.1.RELEASE</spring.cloud.starter.zookeeper.discovery.version>
-    
<spring.cloud.starter.alibaba.nacos.discovery.version>0.2.2.RELEASE</spring.cloud.starter.alibaba.nacos.discovery.version>
-    <spring.cloud.stream.version>2.2.1.RELEASE</spring.cloud.stream.version>
-    
<spring.cloud.function.version>2.1.1.RELEASE</spring.cloud.function.version>
+    <spring.boot.version>2.3.12.RELEASE</spring.boot.version>
+    <spring.cloud.version>Hoxton.SR12</spring.cloud.version>
+    
<spring.cloud.starter.netflix.eureka.client.version>2.2.10.RELEASE</spring.cloud.starter.netflix.eureka.client.version>
+    
<spring.cloud.starter.consul.discovery.version>2.2.8.RELEASE</spring.cloud.starter.consul.discovery.version>
+    
<spring.cloud.starter.zookeeper.discovery.version>2.2.5.RELEASE</spring.cloud.starter.zookeeper.discovery.version>
+    
<spring.cloud.starter.alibaba.nacos.discovery.version>2.2.7.RELEASE</spring.cloud.starter.alibaba.nacos.discovery.version>
+    <spring.cloud.stream.version>3.0.13.RELEASE</spring.cloud.stream.version>
+    
<spring.cloud.function.version>3.0.14.RELEASE</spring.cloud.function.version>
 
     <!-- akka fsm -->
     <akka.version>2.5.32</akka.version>
     <alpakka.version>1.0.5</alpakka.version>
     <leveldbjni-all.version>1.8</leveldbjni-all.version>
     <akka-persistence-redis.version>0.4.0</akka-persistence-redis.version>
-    <kafka.version>2.1.1</kafka.version>
 
     <!-- grpc netty -->
     <grpc.version>1.44.1</grpc.version>
@@ -171,7 +170,7 @@
         <version>${spring.cloud.starter.zookeeper.discovery.version}</version>
       </dependency>
       <dependency>
-        <groupId>org.springframework.cloud</groupId>
+        <groupId>com.alibaba.cloud</groupId>
         <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
         
<version>${spring.cloud.starter.alibaba.nacos.discovery.version}</version>
       </dependency>
@@ -504,6 +503,26 @@
       </dependency>
       <dependency>
         <groupId>io.grpc</groupId>
+        <artifactId>grpc-api</artifactId>
+        <version>${grpc.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>io.grpc</groupId>
+        <artifactId>grpc-context</artifactId>
+        <version>${grpc.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>io.grpc</groupId>
+        <artifactId>grpc-core</artifactId>
+        <version>${grpc.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>io.grpc</groupId>
+        <artifactId>grpc-protobuf-lite</artifactId>
+        <version>${grpc.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>io.grpc</groupId>
         <artifactId>grpc-netty</artifactId>
         <version>${grpc.version}</version>
       </dependency>
@@ -603,11 +622,11 @@
         <artifactId>commons-lang3</artifactId>
         <version>${commons-lang3.version}</version>
       </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>kafka-clients</artifactId>
-        <version>${kafka.version}</version>
-      </dependency>
+<!--      <dependency>-->
+<!--        <groupId>org.apache.kafka</groupId>-->
+<!--        <artifactId>kafka-clients</artifactId>-->
+<!--        <version>${kafka.version}</version>-->
+<!--      </dependency>-->
       <dependency>
         <groupId>com.netflix.hystrix</groupId>
         <artifactId>hystrix-core</artifactId>
diff --git 
a/persistence/persistence-jpa/src/main/java/org/apache/servicecomb/pack/persistence/jpa/EclipseLinkJpaConfiguration.java
 
b/persistence/persistence-jpa/src/main/java/org/apache/servicecomb/pack/persistence/jpa/EclipseLinkJpaConfiguration.java
index 2c8da03..69dbf91 100644
--- 
a/persistence/persistence-jpa/src/main/java/org/apache/servicecomb/pack/persistence/jpa/EclipseLinkJpaConfiguration.java
+++ 
b/persistence/persistence-jpa/src/main/java/org/apache/servicecomb/pack/persistence/jpa/EclipseLinkJpaConfiguration.java
@@ -26,7 +26,6 @@ import javax.sql.DataSource;
 import org.springframework.beans.factory.ObjectProvider;
 import org.springframework.boot.autoconfigure.orm.jpa.JpaBaseConfiguration;
 import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties;
-import 
org.springframework.boot.autoconfigure.transaction.TransactionManagerCustomizers;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.orm.jpa.vendor.AbstractJpaVendorAdapter;
 import org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter;
@@ -34,11 +33,11 @@ import 
org.springframework.transaction.jta.JtaTransactionManager;
 
 @Configuration
 public class EclipseLinkJpaConfiguration extends JpaBaseConfiguration {
+
   EclipseLinkJpaConfiguration(DataSource dataSource,
       JpaProperties properties,
-      ObjectProvider<JtaTransactionManager> jtaTransactionManagerProvider,
-      ObjectProvider<TransactionManagerCustomizers> 
transactionManagerCustomizers) {
-    super(dataSource, properties, jtaTransactionManagerProvider, 
transactionManagerCustomizers);
+      ObjectProvider<JtaTransactionManager> jtaTransactionManagerProvider) {
+    super(dataSource, properties, jtaTransactionManagerProvider);
   }
 
   @Override

Reply via email to