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

menghaoran pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new 89d2668  refactor agent metrics  IT (#9199)
89d2668 is described below

commit 89d2668c57222d2c02ffc1b1ac32642bb43c0bb9
Author: xiaoyu <[email protected]>
AuthorDate: Thu Jan 28 15:49:36 2021 +0800

    refactor agent metrics  IT (#9199)
    
    * agent metrics  IT
    
    * remove empty line
---
 .../core/config/yaml/YamlPluginConfiguration.java  |  4 +-
 .../agent/test/common/util/JdbcUtils.java          | 18 ++++++
 .../agent/test/metrics/MetricsPluginIT.java        | 70 +++++++++++++---------
 .../{MetricsLabelResult.java => MetricResult.java} | 16 ++++-
 .../src/test/resources/docker/docker-compose.yml   |  2 +-
 .../test/resources/docker/proxy/conf/agent.yaml    |  2 +-
 .../src/test/resources/env/engine-env.properties   |  3 +
 7 files changed, 80 insertions(+), 35 deletions(-)

diff --git 
a/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/config/yaml/YamlPluginConfiguration.java
 
b/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/config/yaml/YamlPluginConfiguration.java
index c802cab..550b37b 100644
--- 
a/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/config/yaml/YamlPluginConfiguration.java
+++ 
b/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/config/yaml/YamlPluginConfiguration.java
@@ -28,9 +28,9 @@ import lombok.Setter;
 @Setter
 public final class YamlPluginConfiguration {
     
-    private String host = "localhost";
+    private String host;
     
-    private int port = 5775;
+    private int port;
     
     private String password;
     
diff --git 
a/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/shardingsphere-integration-agent-test-common/src/test/java/org/apache/shardingsphere/integration/agent/test/common/util/JdbcUtils.java
 
b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/shardingsphere-integration-agent-test-common/src/test/java/org/apache/shardingsphere/integration/agent/test/common/util/JdbcUtils.java
index 6881ae4..8efda0b 100644
--- 
a/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/shardingsphere-integration-agent-test-common/src/test/java/org/apache/shardingsphere/integration/agent/test/common/util/JdbcUtils.java
+++ 
b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/shardingsphere-integration-agent-test-common/src/test/java/org/apache/shardingsphere/integration/agent/test/common/util/JdbcUtils.java
@@ -86,6 +86,24 @@ public class JdbcUtils {
     }
     
     /**
+     * Update order status.
+     *
+     * @param orderEntity order entity
+     * @param dataSource data source
+     */
+    public static void updateOrderStatus(final OrderEntity orderEntity, final 
DataSource dataSource) {
+        String sql = "UPDATE t_order SET status = ? where order_id =?";
+        try (Connection connection = dataSource.getConnection(); 
PreparedStatement preparedStatement = connection.prepareStatement(sql, 
Statement.RETURN_GENERATED_KEYS)) {
+            connection.setAutoCommit(false);
+            preparedStatement.setString(1, orderEntity.getStatus());
+            preparedStatement.setLong(2, orderEntity.getOrderId());
+            preparedStatement.executeUpdate();
+            connection.commit();
+        } catch (final SQLException ignored) {
+        }
+    }
+    
+    /**
      * Select all orders collection.
      *
      * @param dataSource data source
diff --git 
a/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/shardingsphere-integration-agent-test-metrics/src/test/java/org/apache/shardingsphere/integration/agent/test/metrics/MetricsPluginIT.java
 
b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/shardingsphere-integration-agent-test-metrics/src/test/java/org/apache/shardingsphere/integration/agent/test/metrics/MetricsPluginIT.java
index 2dada3f..408ab0b 100644
--- 
a/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/shardingsphere-integration-agent-test-metrics/src/test/java/org/apache/shardingsphere/integration/agent/test/metrics/MetricsPluginIT.java
+++ 
b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/shardingsphere-integration-agent-test-metrics/src/test/java/org/apache/shardingsphere/integration/agent/test/metrics/MetricsPluginIT.java
@@ -19,28 +19,26 @@ package 
org.apache.shardingsphere.integration.agent.test.metrics;
 
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Properties;
 import javax.sql.DataSource;
 import lombok.extern.slf4j.Slf4j;
 import 
org.apache.shardingsphere.integration.agent.test.common.entity.OrderEntity;
 import 
org.apache.shardingsphere.integration.agent.test.common.env.IntegrationTestEnvironment;
 import org.apache.shardingsphere.integration.agent.test.common.util.JdbcUtils;
 import 
org.apache.shardingsphere.integration.agent.test.common.util.OkHttpUtils;
-import 
org.apache.shardingsphere.integration.agent.test.metrics.result.MetricsLabelResult;
+import 
org.apache.shardingsphere.integration.agent.test.metrics.result.MetricResult;
 import org.junit.Test;
 
 import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 
 @Slf4j
 public final class MetricsPluginIT {
     
-    private static final String PROMETHEUS_URL = 
"http://127.0.0.1:19090/api/v1/labels";;
-    
     private static final String REQUEST_TOTAL = "proxy_request_total";
     
     private static final String COLLECTION_TOTAL = "proxy_connection_total";
@@ -75,41 +73,55 @@ public final class MetricsPluginIT {
             }
             OrderEntity orderEntity = new OrderEntity(1000, 1000, "ROLL_BACK");
             JdbcUtils.insertOrderRollback(orderEntity, dataSource);
+            JdbcUtils.updateOrderStatus(orderEntity, dataSource);
             Collection<OrderEntity> orderEntities = 
JdbcUtils.selectAllOrders(dataSource);
             assertThat(orderEntities.size(), is(10));
             for (Long each : results) {
                 JdbcUtils.deleteOrderByOrderId(each, dataSource);
             }
+            Properties engineEnvProps = 
IntegrationTestEnvironment.getInstance().getEngineEnvProps();
             try {
-                Thread.sleep(6000);
+                
Thread.sleep(Long.parseLong(engineEnvProps.getProperty("prometheus.waitMs", 
"60000")));
             } catch (final InterruptedException ignore) {
             }
-            try {
-                MetricsLabelResult metricsLabelResult = 
OkHttpUtils.getInstance().get(PROMETHEUS_URL, MetricsLabelResult.class);
-                log.info("prometheus label result is: {}", metricsLabelResult);
-                String[] labelNames = metricsLabelResult.getData();
-                log.info("prometheus label names is: {}", 
Arrays.toString(labelNames));
-                assertThat(metricsLabelResult.getStatus(), is("success"));
-                assertTrue(labelNames.length > 0);
-                assertFalse(isExist(labelNames, REQUEST_TOTAL));
-                assertFalse(isExist(labelNames, COLLECTION_TOTAL));
-                assertFalse(isExist(labelNames, EXECUTE_LATENCY));
-                assertFalse(isExist(labelNames, SELECT));
-                assertFalse(isExist(labelNames, UPDATE));
-                assertFalse(isExist(labelNames, DELETE));
-                assertFalse(isExist(labelNames, INSERT));
-                assertFalse(isExist(labelNames, ROUTE_DATASOURCE));
-                assertFalse(isExist(labelNames, ROUTE_TABLE));
-                assertFalse(isExist(labelNames, COMMIT));
-                assertFalse(isExist(labelNames, ROLLBACK));
-            } catch (IOException e) {
-                e.printStackTrace();
-                log.info("http get prometheus is error :", e);
+            String url = engineEnvProps.getProperty("prometheus.url");
+            Collection<String> metricsNames = buildMetricsNames();
+            for (String each : metricsNames) {
+                String metricURL = buildMetricURL(url, each);
+                try {
+                    MetricResult metricResult = 
OkHttpUtils.getInstance().get(metricURL, MetricResult.class);
+                    assertResult(metricResult, each);
+                } catch (IOException e) {
+                    log.info("http get prometheus is error :", e);
+                }
             }
         }
     }
     
-    private static boolean isExist(final String[] labelNames, final String 
labelName) {
-        return Arrays.asList(labelNames).contains(labelName);
+    private void assertResult(final MetricResult metricResult, final String 
metricsName) {
+        assertThat(metricResult.getStatus(), is("success"));
+        assertTrue(metricResult.getData().size() > 0);
+        List<MetricResult.Metric> metricList = 
metricResult.getData().get(metricsName);
+        assertTrue(metricList.size() > 0);
+    }
+    
+    private Collection<String> buildMetricsNames() {
+        Collection<String> result = new HashSet<>();
+        result.add(REQUEST_TOTAL);
+        result.add(COLLECTION_TOTAL);
+        result.add(EXECUTE_LATENCY);
+        result.add(SELECT);
+        result.add(UPDATE);
+        result.add(DELETE);
+        result.add(INSERT);
+        result.add(ROUTE_DATASOURCE);
+        result.add(ROUTE_TABLE);
+        result.add(COMMIT);
+        result.add(ROLLBACK);
+        return result;
+    }
+    
+    private String buildMetricURL(final String url, final String metricsName) {
+        return String.join("", url, metricsName);
     }
 }
diff --git 
a/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/shardingsphere-integration-agent-test-metrics/src/test/java/org/apache/shardingsphere/integration/agent/test/metrics/result/MetricsLabelResult.java
 
b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/shardingsphere-integration-agent-test-metrics/src/test/java/org/apache/shardingsphere/integration/agent/test/metrics/resul
 [...]
similarity index 76%
rename from 
shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/shardingsphere-integration-agent-test-metrics/src/test/java/org/apache/shardingsphere/integration/agent/test/metrics/result/MetricsLabelResult.java
rename to 
shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/shardingsphere-integration-agent-test-metrics/src/test/java/org/apache/shardingsphere/integration/agent/test/metrics/result/MetricResult.java
index ddbce2c..2a24ac4 100644
--- 
a/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/shardingsphere-integration-agent-test-metrics/src/test/java/org/apache/shardingsphere/integration/agent/test/metrics/result/MetricsLabelResult.java
+++ 
b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/shardingsphere-integration-agent-test-metrics/src/test/java/org/apache/shardingsphere/integration/agent/test/metrics/result/MetricResult.java
@@ -17,12 +17,24 @@
 
 package org.apache.shardingsphere.integration.agent.test.metrics.result;
 
+import java.util.List;
+import java.util.Map;
 import lombok.Data;
 
 @Data
-public class MetricsLabelResult {
+public class MetricResult {
     
     private String status;
     
-    private String[] data;
+    private Map<String, List<Metric>> data;
+    
+    @Data
+    public static class Metric {
+        
+        private String type;
+        
+        private String help;
+        
+        private String unit;
+    }
 }
diff --git 
a/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/shardingsphere-integration-agent-test-metrics/src/test/resources/docker/docker-compose.yml
 
b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/shardingsphere-integration-agent-test-metrics/src/test/resources/docker/docker-compose.yml
index 4a87656..553299c 100644
--- 
a/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/shardingsphere-integration-agent-test-metrics/src/test/resources/docker/docker-compose.yml
+++ 
b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/shardingsphere-integration-agent-test-metrics/src/test/resources/docker/docker-compose.yml
@@ -49,7 +49,7 @@ services:
     ports:
       - "43070:3307"
       - "43080:3308"
-      - "18090:8090"
+      - "18090:18090"
     links:
       - "mysql:mysql.agent.metrics.host"
     volumes:
diff --git 
a/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/shardingsphere-integration-agent-test-metrics/src/test/resources/docker/proxy/conf/agent.yaml
 
b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/shardingsphere-integration-agent-test-metrics/src/test/resources/docker/proxy/conf/agent.yaml
index 1937a09..766de2c 100644
--- 
a/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/shardingsphere-integration-agent-test-metrics/src/test/resources/docker/proxy/conf/agent.yaml
+++ 
b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/shardingsphere-integration-agent-test-metrics/src/test/resources/docker/proxy/conf/agent.yaml
@@ -23,7 +23,7 @@ ignoredPluginNames:
 
 plugins:
   prometheus:
-    port: 8090
+    port: 18090
     props:
       JVM_INFORMATION_COLLECTOR_ENABLED : "true"
   Jaeger:
diff --git 
a/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/shardingsphere-integration-agent-test-metrics/src/test/resources/env/engine-env.properties
 
b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/shardingsphere-integration-agent-test-metrics/src/test/resources/env/engine-env.properties
index 010dbd3..3ace88e 100644
--- 
a/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/shardingsphere-integration-agent-test-metrics/src/test/resources/env/engine-env.properties
+++ 
b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/shardingsphere-integration-agent-test-metrics/src/test/resources/env/engine-env.properties
@@ -24,3 +24,6 @@ proxy.password=root
 proxy.retry=30
 proxy.waitMs=1000
 
+prometheus.waitMs=60000
+prometheus.url=http://127.0.0.1:19090/api/v1/metadata?metric=
+

Reply via email to