You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by ni...@apache.org on 2019/12/28 07:38:08 UTC

[servicecomb-pack] 01/02: SCB-1694 Improve unit test coverages for APIv1Controller

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 cb78750db93cb60700f828126ee1ea429395687e
Author: Lei Zhang <zh...@apache.org>
AuthorDate: Fri Dec 27 21:41:49 2019 +0800

    SCB-1694 Improve unit test coverages for APIv1Controller
---
 .../servicecomb/pack/alpha/core/api/APIv1.java     |  3 --
 .../pack/alpha/server/api/APIv1Impl.java           |  5 ---
 .../alpha/server/api/APIv1ControllerTests.java     | 49 ++++++++++++++++++++--
 3 files changed, 46 insertions(+), 11 deletions(-)

diff --git a/alpha/alpha-core/src/main/java/org/apache/servicecomb/pack/alpha/core/api/APIv1.java b/alpha/alpha-core/src/main/java/org/apache/servicecomb/pack/alpha/core/api/APIv1.java
index 9239c1b..67ebcc5 100644
--- a/alpha/alpha-core/src/main/java/org/apache/servicecomb/pack/alpha/core/api/APIv1.java
+++ b/alpha/alpha-core/src/main/java/org/apache/servicecomb/pack/alpha/core/api/APIv1.java
@@ -33,9 +33,6 @@ public interface APIv1 {
   PagingGlobalTransactions getTransactions(String state, int page, int size)
       throws Exception;
 
-  PagingGlobalTransactions getTransactions(int page, int size)
-      throws Exception;
-
   Map<String, Long> getTransactionStatistics();
 
   List<GlobalTransaction> getSlowTransactions(int size);
diff --git a/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/api/APIv1Impl.java b/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/api/APIv1Impl.java
index f8ea1d2..edd7b78 100644
--- a/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/api/APIv1Impl.java
+++ b/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/api/APIv1Impl.java
@@ -51,11 +51,6 @@ public class APIv1Impl implements APIv1 {
     return globalTransaction;
   }
 
-  public PagingGlobalTransactions getTransactions(int page, int size)
-      throws Exception {
-    return getTransactions(null, page, size);
-  }
-
   public PagingGlobalTransactions getTransactions(String state, int page, int size)
       throws Exception {
     PagingGlobalTransactions pagingGlobalTransactions = transactionRepository
diff --git a/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/api/APIv1ControllerTests.java b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/api/APIv1ControllerTests.java
index 1169b0b..c20acd9 100644
--- a/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/api/APIv1ControllerTests.java
+++ b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/api/APIv1ControllerTests.java
@@ -28,7 +28,9 @@ import com.fasterxml.jackson.core.JsonGenerator.Feature;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import java.util.ArrayList;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.UUID;
 import org.apache.servicecomb.pack.alpha.core.NodeStatus;
 import org.apache.servicecomb.pack.alpha.core.NodeStatus.TypeEnum;
@@ -46,11 +48,14 @@ import org.apache.servicecomb.pack.alpha.fsm.repository.TransactionRepository;
 import org.apache.servicecomb.pack.alpha.core.fsm.repository.model.GlobalTransaction;
 import org.apache.servicecomb.pack.alpha.core.fsm.repository.model.PagingGlobalTransactions;
 import org.apache.servicecomb.pack.alpha.core.fsm.repository.model.SagaSubTransaction;
+import org.apache.servicecomb.pack.alpha.server.AlphaApplication;
+import org.apache.servicecomb.pack.alpha.server.AlphaConfig;
 import org.apache.servicecomb.pack.alpha.server.metrics.AlphaMetricsEndpoint;
 import org.junit.Test;
 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.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.http.MediaType;
@@ -61,7 +66,8 @@ import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
 
 @RunWith(SpringRunner.class)
-@WebMvcTest(value = {APIv1Controller.class, AlphaMetricsEndpoint.class})
+@AutoConfigureMockMvc
+@SpringBootTest(classes = {AlphaApplication.class, AlphaConfig.class})
 public class APIv1ControllerTests {
 
   @Autowired
@@ -187,7 +193,7 @@ public class APIv1ControllerTests {
         .globalTransactions(globalTransactions)
         .build();
 
-    when(transactionRepository.getGlobalTransactions(0, 50)).thenReturn(paging);
+    when(transactionRepository.getGlobalTransactions(null,0, 50)).thenReturn(paging);
 
     ObjectMapper mapper = new ObjectMapper();
     mapper.configure(JsonGenerator.Feature.QUOTE_FIELD_NAMES, false);
@@ -307,4 +313,41 @@ public class APIv1ControllerTests {
         .andExpect(jsonPath("$.events", hasSize(8)))
         .andReturn();
   }
+
+  @Test
+  public void transactionStatisticsTest() throws Exception {
+    Map<String, Long> statistics = new HashMap<>();
+    statistics.put("COMMITTED", 1l);
+    statistics.put("SUSPENDED", 2l);
+    statistics.put("COMPENSATED", 3l);
+    when(transactionRepository.getTransactionStatistics()).thenReturn(statistics);
+    mockMvc.perform(get("/alpha/api/v1/transaction/statistics"))
+        .andExpect(status().isOk())
+        .andExpect(
+            MockMvcResultMatchers.content().contentType(MediaType.APPLICATION_JSON_UTF8_VALUE))
+        .andExpect(jsonPath("$.COMMITTED").value(statistics.get("COMMITTED")))
+        .andExpect(jsonPath("$.SUSPENDED").value(statistics.get("SUSPENDED")))
+        .andExpect(jsonPath("$.COMPENSATED").value(statistics.get("COMPENSATED")))
+        .andReturn();
+  }
+
+  @Test
+  public void transactionSlowTest() throws Exception {
+    List<GlobalTransaction> globalTransactions = new ArrayList<>();
+    for(int i=0;i<10;i++){
+      globalTransactions.add(GlobalTransaction.builder()
+          .beginTime(new Date())
+          .endTime(new Date())
+          .events(new ArrayList<>())
+          .subTransactions(new ArrayList<>())
+          .build());
+    }
+    when(transactionRepository.getSlowGlobalTransactionsTopN(10)).thenReturn(globalTransactions);
+    mockMvc.perform(get("/alpha/api/v1/transaction/slow"))
+        .andExpect(status().isOk())
+        .andExpect(
+            MockMvcResultMatchers.content().contentType(MediaType.APPLICATION_JSON_UTF8_VALUE))
+        .andExpect(jsonPath("$", hasSize(10)))
+        .andReturn();
+  }
 }