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=
+