This is an automated email from the ASF dual-hosted git repository.
zhaojinchao 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 acc04989560 Refactor MetricsCollectorFixture (#23664)
acc04989560 is described below
commit acc0498956081047a23ed179d447ed00c6f48e3b
Author: Liang Zhang <[email protected]>
AuthorDate: Fri Jan 20 00:14:51 2023 +0800
Refactor MetricsCollectorFixture (#23664)
* Refactor MetricsCollectorFixture
* Refactor MetricsCollectorFixture
* Add ProxyContextRestorer
---
.../core/advice/RouteResultCountAdvice.java | 4 +--
...ectorFactory.java => ProxyContextRestorer.java} | 25 ++++++++-------
.../core/advice/RouteResultCountAdviceTest.java | 11 +++----
.../core/advice/SQLParseCountAdviceTest.java | 34 ++++++++++----------
.../core/advice/SQLRouteCountAdviceTest.java | 16 +++++-----
.../proxy/CommitTransactionsCountAdviceTest.java | 4 +--
.../proxy/CurrentConnectionsCountAdviceTest.java | 6 ++--
.../advice/proxy/ExecuteErrorsCountAdviceTest.java | 6 ++--
.../proxy/ExecuteLatencyHistogramAdviceTest.java | 4 +--
.../core/advice/proxy/RequestsCountAdviceTest.java | 4 +--
.../proxy/RollbackTransactionsCountAdviceTest.java | 4 +--
.../core/exporter/impl/BuildInfoExporterTest.java | 6 ++--
.../impl/proxy/ProxyMetaDataInfoExporterTest.java | 10 +++---
.../impl/proxy/ProxyStateExporterTest.java | 10 +++---
.../{ => collector}/FixtureCollectorFactory.java | 2 +-
.../{ => collector}/MetricsCollectorFixture.java | 36 ++++++++++++++++------
....metrics.core.collector.MetricsCollectorFactory | 2 +-
.../observability/_index.en.md | 2 +-
18 files changed, 99 insertions(+), 87 deletions(-)
diff --git
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/RouteResultCountAdvice.java
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/RouteResultCountAdvice.java
index 85d722cbd71..343e71c2093 100644
---
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/RouteResultCountAdvice.java
+++
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/RouteResultCountAdvice.java
@@ -24,7 +24,6 @@ import
org.apache.shardingsphere.agent.plugin.metrics.core.collector.type.Counte
import
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricCollectorType;
import
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
import org.apache.shardingsphere.infra.route.context.RouteContext;
-import org.apache.shardingsphere.infra.route.context.RouteMapper;
import org.apache.shardingsphere.infra.route.context.RouteUnit;
import java.lang.reflect.Method;
@@ -44,8 +43,7 @@ public final class RouteResultCountAdvice implements
InstanceMethodAdvice {
return;
}
for (RouteUnit each : ((RouteContext) result).getRouteUnits()) {
- RouteMapper dataSourceMapper = each.getDataSourceMapper();
-
MetricsCollectorRegistry.<CounterMetricsCollector>get(routedResultConfig,
pluginType).inc("data_source", dataSourceMapper.getActualName());
+
MetricsCollectorRegistry.<CounterMetricsCollector>get(routedResultConfig,
pluginType).inc("data_source", each.getDataSourceMapper().getActualName());
each.getTableMappers().forEach(table ->
MetricsCollectorRegistry.<CounterMetricsCollector>get(routedResultConfig,
pluginType).inc("table", table.getActualName()));
}
}
diff --git
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/fixture/FixtureCollectorFactory.java
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/ProxyContextRestorer.java
similarity index 57%
copy from
agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/fixture/FixtureCollectorFactory.java
copy to
agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/ProxyContextRestorer.java
index ee6b32057c1..8e5a26baf55 100644
---
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/fixture/FixtureCollectorFactory.java
+++
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/ProxyContextRestorer.java
@@ -15,21 +15,24 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.agent.plugin.metrics.core.fixture;
+package org.apache.shardingsphere.agent.plugin.metrics.core;
-import
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollector;
-import
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorFactory;
-import
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
+import org.apache.shardingsphere.mode.manager.ContextManager;
+import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
+import org.junit.After;
+import org.junit.Before;
-public final class FixtureCollectorFactory implements MetricsCollectorFactory {
+public abstract class ProxyContextRestorer {
- @Override
- public MetricsCollector create(final MetricConfiguration metricConfig) {
- return new MetricsCollectorFixture();
+ private ContextManager currentContextManager;
+
+ @Before
+ public void recordCurrentContextManager() {
+ currentContextManager = ProxyContext.getInstance().getContextManager();
}
- @Override
- public String getType() {
- return "FIXTURE";
+ @After
+ public void restorePreviousContextManager() {
+ ProxyContext.init(currentContextManager);
}
}
diff --git
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/RouteResultCountAdviceTest.java
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/RouteResultCountAdviceTest.java
index 33c230fb4da..a462ed17929 100644
---
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/RouteResultCountAdviceTest.java
+++
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/RouteResultCountAdviceTest.java
@@ -17,11 +17,11 @@
package org.apache.shardingsphere.agent.plugin.metrics.core.advice;
-import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.TargetAdviceObjectFixture;
import
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorRegistry;
import
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricCollectorType;
import
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
-import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.MetricsCollectorFixture;
+import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.TargetAdviceObjectFixture;
+import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.collector.MetricsCollectorFixture;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.infra.route.context.RouteMapper;
import org.apache.shardingsphere.infra.route.context.RouteUnit;
@@ -38,8 +38,7 @@ import static org.mockito.Mockito.mock;
public final class RouteResultCountAdviceTest {
- private final MetricConfiguration routedResultConfig = new
MetricConfiguration("routed_result_total",
- MetricCollectorType.COUNTER, null, Arrays.asList("object",
"name"));
+ private final MetricConfiguration routedResultConfig = new
MetricConfiguration("routed_result_total", MetricCollectorType.COUNTER, null,
Arrays.asList("object", "name"));
@After
public void reset() {
@@ -53,8 +52,6 @@ public final class RouteResultCountAdviceTest {
RouteMapper tableMapper = new RouteMapper("t_order", "t_order_0");
routeContext.getRouteUnits().add(new RouteUnit(dataSourceMapper,
Collections.singleton(tableMapper)));
new RouteResultCountAdvice().afterMethod(new
TargetAdviceObjectFixture(), mock(Method.class), new Object[]{}, routeContext,
"FIXTURE");
- MetricsCollectorFixture wrapper =
MetricsCollectorRegistry.get(routedResultConfig, "FIXTURE");
- // TODO assert by specific label
- assertThat(wrapper.getValue(), is(2d));
+ assertThat(MetricsCollectorRegistry.get(routedResultConfig,
"FIXTURE").toString(), is("data_source.ds_0=1, table.t_order_0=1"));
}
}
diff --git
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLParseCountAdviceTest.java
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLParseCountAdviceTest.java
index 7c264e00ebf..aa1fccc4113 100644
---
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLParseCountAdviceTest.java
+++
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLParseCountAdviceTest.java
@@ -21,7 +21,7 @@ import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.TargetAdviceO
import
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorRegistry;
import
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricCollectorType;
import
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
-import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.MetricsCollectorFixture;
+import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.collector.MetricsCollectorFixture;
import
org.apache.shardingsphere.distsql.parser.statement.rdl.create.RegisterStorageUnitStatement;
import
org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowStorageUnitsStatement;
import
org.apache.shardingsphere.distsql.parser.statement.rul.sql.FormatStatement;
@@ -57,66 +57,66 @@ public final class SQLParseCountAdviceTest {
@Test
public void assertParseInsertSQL() {
- assertParse(new MySQLInsertStatement());
+ assertParse(new MySQLInsertStatement(), "INSERT=1");
}
@Test
- public void assertParseDeleteSQL() {
- assertParse(new MySQLDeleteStatement());
+ public void assertParseUpdateSQL() {
+ assertParse(new MySQLUpdateStatement(), "UPDATE=1");
}
@Test
- public void assertParseUpdateSQL() {
- assertParse(new MySQLUpdateStatement());
+ public void assertParseDeleteSQL() {
+ assertParse(new MySQLDeleteStatement(), "DELETE=1");
}
@Test
public void assertParseSelectSQL() {
- assertParse(new MySQLSelectStatement());
+ assertParse(new MySQLSelectStatement(), "SELECT=1");
}
@Test
public void assertParseDDL() {
- assertParse(new MySQLCreateDatabaseStatement());
+ assertParse(new MySQLCreateDatabaseStatement(), "DDL=1");
}
@Test
public void assertParseDCL() {
- assertParse(new MySQLCreateUserStatement());
+ assertParse(new MySQLCreateUserStatement(), "DCL=1");
}
@Test
public void assertParseDAL() {
- assertParse(new MySQLShowDatabasesStatement());
+ assertParse(new MySQLShowDatabasesStatement(), "DAL=1");
}
@Test
public void assertParseTCL() {
- assertParse(new MySQLCommitStatement());
+ assertParse(new MySQLCommitStatement(), "TCL=1");
}
@Test
public void assertParseRQL() {
- assertParse(new ShowStorageUnitsStatement(new DatabaseSegment(0, 0,
null), null));
+ assertParse(new ShowStorageUnitsStatement(new DatabaseSegment(0, 0,
null), null), "RQL=1");
}
@Test
public void assertParseRDL() {
- assertParse(new RegisterStorageUnitStatement(false,
Collections.emptyList()));
+ assertParse(new RegisterStorageUnitStatement(false,
Collections.emptyList()), "RDL=1");
}
@Test
public void assertParseRAL() {
- assertParse(new ShowMigrationListStatement());
+ assertParse(new ShowMigrationListStatement(), "RAL=1");
}
@Test
public void assertParseRUL() {
- assertParse(new FormatStatement("SELECT * FROM t_order"));
+ assertParse(new FormatStatement("SELECT * FROM tbl"), "RUL=1");
}
- private void assertParse(final SQLStatement sqlStatement) {
+ private void assertParse(final SQLStatement sqlStatement, final String
expected) {
new SQLParseCountAdvice().afterMethod(new TargetAdviceObjectFixture(),
mock(Method.class), new Object[]{}, sqlStatement, "FIXTURE");
- assertThat(((MetricsCollectorFixture)
MetricsCollectorRegistry.get(config, "FIXTURE")).getValue(), is(1d));
+ assertThat(MetricsCollectorRegistry.get(config, "FIXTURE").toString(),
is(expected));
}
}
diff --git
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLRouteCountAdviceTest.java
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLRouteCountAdviceTest.java
index 8d401f9225e..4f7640d044a 100644
---
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLRouteCountAdviceTest.java
+++
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLRouteCountAdviceTest.java
@@ -17,11 +17,11 @@
package org.apache.shardingsphere.agent.plugin.metrics.core.advice;
-import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.TargetAdviceObjectFixture;
import
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorRegistry;
import
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricCollectorType;
import
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
-import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.MetricsCollectorFixture;
+import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.collector.MetricsCollectorFixture;
+import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.TargetAdviceObjectFixture;
import org.apache.shardingsphere.infra.binder.QueryContext;
import
org.apache.shardingsphere.infra.binder.statement.CommonSQLStatementContext;
import org.apache.shardingsphere.infra.context.ConnectionContext;
@@ -53,29 +53,29 @@ public final class SQLRouteCountAdviceTest {
@Test
public void assertInsertRoute() {
QueryContext queryContext = new QueryContext(new
CommonSQLStatementContext<>(new MySQLInsertStatement()), "",
Collections.emptyList());
- assertRoute(queryContext);
+ assertRoute(queryContext, "INSERT=1");
}
@Test
public void assertUpdateRoute() {
QueryContext queryContext = new QueryContext(new
CommonSQLStatementContext<>(new MySQLUpdateStatement()), "",
Collections.emptyList());
- assertRoute(queryContext);
+ assertRoute(queryContext, "UPDATE=1");
}
@Test
public void assertDeleteRoute() {
QueryContext queryContext = new QueryContext(new
CommonSQLStatementContext<>(new MySQLDeleteStatement()), "",
Collections.emptyList());
- assertRoute(queryContext);
+ assertRoute(queryContext, "DELETE=1");
}
@Test
public void assertSelectRoute() {
QueryContext queryContext = new QueryContext(new
CommonSQLStatementContext<>(new MySQLSelectStatement()), "",
Collections.emptyList());
- assertRoute(queryContext);
+ assertRoute(queryContext, "SELECT=1");
}
- public void assertRoute(final QueryContext queryContext) {
+ public void assertRoute(final QueryContext queryContext, final String
expected) {
advice.beforeMethod(new TargetAdviceObjectFixture(),
mock(Method.class), new Object[]{new ConnectionContext(), queryContext},
"FIXTURE");
- assertThat(((MetricsCollectorFixture)
MetricsCollectorRegistry.get(config, "FIXTURE")).getValue(), is(1d));
+ assertThat(MetricsCollectorRegistry.get(config, "FIXTURE").toString(),
is(expected));
}
}
diff --git
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CommitTransactionsCountAdviceTest.java
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CommitTransactionsCountAdviceTest.java
index 5cd43e1d0ec..f4b9815c0b1 100644
---
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CommitTransactionsCountAdviceTest.java
+++
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CommitTransactionsCountAdviceTest.java
@@ -21,7 +21,7 @@ import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.TargetAdviceO
import
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorRegistry;
import
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricCollectorType;
import
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
-import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.MetricsCollectorFixture;
+import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.collector.MetricsCollectorFixture;
import org.junit.After;
import org.junit.Test;
@@ -46,6 +46,6 @@ public final class CommitTransactionsCountAdviceTest {
@Test
public void assertMethod() {
advice.beforeMethod(new TargetAdviceObjectFixture(),
mock(Method.class), new Object[]{}, "FIXTURE");
- assertThat(((MetricsCollectorFixture)
MetricsCollectorRegistry.get(config, "FIXTURE")).getValue(), is(1D));
+ assertThat(MetricsCollectorRegistry.get(config, "FIXTURE").toString(),
is("1"));
}
}
diff --git
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CurrentConnectionsCountAdviceTest.java
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CurrentConnectionsCountAdviceTest.java
index 456f3cd35bb..54a1cf46a12 100644
---
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CurrentConnectionsCountAdviceTest.java
+++
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CurrentConnectionsCountAdviceTest.java
@@ -17,11 +17,11 @@
package org.apache.shardingsphere.agent.plugin.metrics.core.advice.proxy;
-import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.TargetAdviceObjectFixture;
import
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorRegistry;
import
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricCollectorType;
import
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
-import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.MetricsCollectorFixture;
+import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.collector.MetricsCollectorFixture;
+import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.TargetAdviceObjectFixture;
import org.junit.After;
import org.junit.Test;
@@ -50,7 +50,7 @@ public final class CurrentConnectionsCountAdviceTest {
advice.beforeMethod(targetObject, mockMethod("channelActive"), new
Object[]{}, "FIXTURE");
advice.beforeMethod(targetObject, mockMethod("channelActive"), new
Object[]{}, "FIXTURE");
advice.beforeMethod(targetObject, mockMethod("channelInactive"), new
Object[]{}, "FIXTURE");
- assertThat(((MetricsCollectorFixture)
MetricsCollectorRegistry.get(config, "FIXTURE")).getValue(), is(1d));
+ assertThat(MetricsCollectorRegistry.get(config, "FIXTURE").toString(),
is("1"));
}
private Method mockMethod(final String methodName) {
diff --git
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteErrorsCountAdviceTest.java
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteErrorsCountAdviceTest.java
index c576d351745..e2e58dbb635 100644
---
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteErrorsCountAdviceTest.java
+++
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteErrorsCountAdviceTest.java
@@ -17,11 +17,11 @@
package org.apache.shardingsphere.agent.plugin.metrics.core.advice.proxy;
-import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.TargetAdviceObjectFixture;
import
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorRegistry;
import
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricCollectorType;
import
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
-import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.MetricsCollectorFixture;
+import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.collector.MetricsCollectorFixture;
+import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.TargetAdviceObjectFixture;
import org.junit.After;
import org.junit.Test;
@@ -45,6 +45,6 @@ public final class ExecuteErrorsCountAdviceTest {
public void assertCountExecuteErrors() {
TargetAdviceObjectFixture targetObject = new
TargetAdviceObjectFixture();
new ExecuteErrorsCountAdvice().afterMethod(targetObject,
mock(Method.class), new Object[]{}, null, "FIXTURE");
- assertThat(((MetricsCollectorFixture)
MetricsCollectorRegistry.get(config, "FIXTURE")).getValue(), is(1d));
+ assertThat(MetricsCollectorRegistry.get(config, "FIXTURE").toString(),
is("1"));
}
}
diff --git
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteLatencyHistogramAdviceTest.java
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteLatencyHistogramAdviceTest.java
index 9715b10cd41..ff72b5aa2ea 100644
---
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteLatencyHistogramAdviceTest.java
+++
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteLatencyHistogramAdviceTest.java
@@ -21,7 +21,7 @@ import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.TargetAdviceO
import
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorRegistry;
import
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricCollectorType;
import
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
-import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.MetricsCollectorFixture;
+import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.collector.MetricsCollectorFixture;
import org.junit.After;
import org.junit.Test;
@@ -49,6 +49,6 @@ public final class ExecuteLatencyHistogramAdviceTest {
advice.beforeMethod(targetObject, method, new Object[]{}, "FIXTURE");
Thread.sleep(500L);
advice.afterMethod(targetObject, method, new Object[]{}, null,
"FIXTURE");
- assertThat(((MetricsCollectorFixture)
MetricsCollectorRegistry.get(config, "FIXTURE")).getValue(),
greaterThanOrEqualTo(500D));
+ assertThat(Double.parseDouble(MetricsCollectorRegistry.get(config,
"FIXTURE").toString()), greaterThanOrEqualTo(500d));
}
}
diff --git
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RequestsCountAdviceTest.java
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RequestsCountAdviceTest.java
index a607fac43aa..c2e1c8d8e77 100644
---
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RequestsCountAdviceTest.java
+++
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RequestsCountAdviceTest.java
@@ -21,7 +21,7 @@ import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.TargetAdviceO
import
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorRegistry;
import
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricCollectorType;
import
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
-import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.MetricsCollectorFixture;
+import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.collector.MetricsCollectorFixture;
import org.junit.After;
import org.junit.Test;
@@ -47,6 +47,6 @@ public final class RequestsCountAdviceTest {
public void assertCountRequests() {
TargetAdviceObjectFixture targetObject = new
TargetAdviceObjectFixture();
advice.beforeMethod(targetObject, mock(Method.class), new Object[]{},
"FIXTURE");
- assertThat(((MetricsCollectorFixture)
MetricsCollectorRegistry.get(config, "FIXTURE")).getValue(), is(1d));
+ assertThat(MetricsCollectorRegistry.get(config, "FIXTURE").toString(),
is("1"));
}
}
diff --git
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RollbackTransactionsCountAdviceTest.java
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RollbackTransactionsCountAdviceTest.java
index 2de04e932b8..a08f50bf2ea 100644
---
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RollbackTransactionsCountAdviceTest.java
+++
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RollbackTransactionsCountAdviceTest.java
@@ -21,7 +21,7 @@ import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.TargetAdviceO
import
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorRegistry;
import
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricCollectorType;
import
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
-import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.MetricsCollectorFixture;
+import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.collector.MetricsCollectorFixture;
import org.junit.After;
import org.junit.Test;
@@ -46,6 +46,6 @@ public final class RollbackTransactionsCountAdviceTest {
@Test
public void assertMethod() {
advice.beforeMethod(new TargetAdviceObjectFixture(),
mock(Method.class), new Object[]{}, "FIXTURE");
- assertThat(((MetricsCollectorFixture)
MetricsCollectorRegistry.get(config, "FIXTURE")).getValue(), is(1D));
+ assertThat(MetricsCollectorRegistry.get(config, "FIXTURE").toString(),
is("1"));
}
}
diff --git
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/exporter/impl/BuildInfoExporterTest.java
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/exporter/impl/BuildInfoExporterTest.java
index ce16aa396c0..ce8f21e0532 100644
---
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/exporter/impl/BuildInfoExporterTest.java
+++
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/exporter/impl/BuildInfoExporterTest.java
@@ -21,7 +21,7 @@ import
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsColl
import
org.apache.shardingsphere.agent.plugin.metrics.core.collector.type.GaugeMetricFamilyMetricsCollector;
import
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricCollectorType;
import
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
-import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.MetricsCollectorFixture;
+import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.collector.MetricsCollectorFixture;
import org.junit.After;
import org.junit.Test;
@@ -29,7 +29,7 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.Optional;
-import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.containsString;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.assertTrue;
@@ -45,6 +45,6 @@ public final class BuildInfoExporterTest {
public void assertExport() {
Optional<GaugeMetricFamilyMetricsCollector> collector = new
BuildInfoExporter().export("FIXTURE");
assertTrue(collector.isPresent());
- assertThat(((MetricsCollectorFixture) collector.get()).getValue(),
is(1d));
+ assertThat(collector.get().toString(),
containsString("ShardingSphere=1, "));
}
}
diff --git
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/exporter/impl/proxy/ProxyMetaDataInfoExporterTest.java
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/exporter/impl/proxy/ProxyMetaDataInfoExporterTest.java
index 999349ca2d9..44f610b658a 100644
---
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/exporter/impl/proxy/ProxyMetaDataInfoExporterTest.java
+++
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/exporter/impl/proxy/ProxyMetaDataInfoExporterTest.java
@@ -17,11 +17,12 @@
package
org.apache.shardingsphere.agent.plugin.metrics.core.exporter.impl.proxy;
+import
org.apache.shardingsphere.agent.plugin.metrics.core.ProxyContextRestorer;
import
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorRegistry;
import
org.apache.shardingsphere.agent.plugin.metrics.core.collector.type.GaugeMetricFamilyMetricsCollector;
import
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricCollectorType;
import
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
-import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.MetricsCollectorFixture;
+import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.collector.MetricsCollectorFixture;
import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.junit.After;
@@ -38,15 +39,12 @@ import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-public final class ProxyMetaDataInfoExporterTest {
-
- private final ContextManager originalContextManager =
ProxyContext.getInstance().getContextManager();
+public final class ProxyMetaDataInfoExporterTest extends ProxyContextRestorer {
@After
public void reset() {
MetricConfiguration config = new
MetricConfiguration("proxy_meta_data_info",
MetricCollectorType.GAUGE_METRIC_FAMILY, null,
Collections.singletonList("name"), Collections.emptyMap());
((MetricsCollectorFixture) MetricsCollectorRegistry.get(config,
"FIXTURE")).reset();
- ProxyContext.init(originalContextManager);
}
@Test
@@ -63,6 +61,6 @@ public final class ProxyMetaDataInfoExporterTest {
ProxyContext.init(contextManager);
Optional<GaugeMetricFamilyMetricsCollector> collector = new
ProxyMetaDataInfoExporter().export("FIXTURE");
assertTrue(collector.isPresent());
- assertThat(((MetricsCollectorFixture) collector.get()).getValue(),
is(0d));
+ assertThat(collector.get().toString(), is("schema_count=0,
database_count=0"));
}
}
diff --git
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/exporter/impl/proxy/ProxyStateExporterTest.java
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/exporter/impl/proxy/ProxyStateExporterTest.java
index 18e72c00a74..1a36f062e19 100644
---
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/exporter/impl/proxy/ProxyStateExporterTest.java
+++
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/exporter/impl/proxy/ProxyStateExporterTest.java
@@ -17,11 +17,12 @@
package
org.apache.shardingsphere.agent.plugin.metrics.core.exporter.impl.proxy;
+import
org.apache.shardingsphere.agent.plugin.metrics.core.ProxyContextRestorer;
import
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorRegistry;
import
org.apache.shardingsphere.agent.plugin.metrics.core.collector.type.GaugeMetricFamilyMetricsCollector;
import
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricCollectorType;
import
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
-import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.MetricsCollectorFixture;
+import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.collector.MetricsCollectorFixture;
import org.apache.shardingsphere.infra.config.mode.ModeConfiguration;
import org.apache.shardingsphere.infra.instance.ComputeNodeInstance;
import org.apache.shardingsphere.infra.instance.InstanceContext;
@@ -47,15 +48,12 @@ import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
-public final class ProxyStateExporterTest {
-
- private final ContextManager originalContextManager =
ProxyContext.getInstance().getContextManager();
+public final class ProxyStateExporterTest extends ProxyContextRestorer {
@After
public void reset() {
MetricConfiguration config = new MetricConfiguration("proxy_state",
MetricCollectorType.GAUGE_METRIC_FAMILY, null, Collections.emptyList(),
Collections.emptyMap());
((MetricsCollectorFixture) MetricsCollectorRegistry.get(config,
"FIXTURE")).reset();
- ProxyContext.init(originalContextManager);
}
@Test
@@ -73,6 +71,6 @@ public final class ProxyStateExporterTest {
ProxyContext.init(new ContextManager(metaDataContexts,
instanceContext));
Optional<GaugeMetricFamilyMetricsCollector> collector = new
ProxyStateExporter().export("FIXTURE");
assertTrue(collector.isPresent());
- assertThat(((MetricsCollectorFixture) collector.get()).getValue(),
is(0d));
+ assertThat(collector.get().toString(), is("0"));
}
}
diff --git
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/fixture/FixtureCollectorFactory.java
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/fixture/collector/FixtureCollectorFactory.java
similarity index 98%
rename from
agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/fixture/FixtureCollectorFactory.java
rename to
agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/fixture/collector/FixtureCollectorFactory.java
index ee6b32057c1..fa8d7a1ed76 100644
---
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/fixture/FixtureCollectorFactory.java
+++
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/fixture/collector/FixtureCollectorFactory.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.agent.plugin.metrics.core.fixture;
+package org.apache.shardingsphere.agent.plugin.metrics.core.fixture.collector;
import
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollector;
import
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorFactory;
diff --git
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/fixture/MetricsCollectorFixture.java
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/fixture/collector/MetricsCollectorFixture.java
similarity index 67%
rename from
agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/fixture/MetricsCollectorFixture.java
rename to
agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/fixture/collector/MetricsCollectorFixture.java
index b0a5438b3bc..aa8089e43b6 100644
---
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/fixture/MetricsCollectorFixture.java
+++
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/fixture/collector/MetricsCollectorFixture.java
@@ -15,21 +15,25 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.agent.plugin.metrics.core.fixture;
+package org.apache.shardingsphere.agent.plugin.metrics.core.fixture.collector;
-import lombok.Getter;
import
org.apache.shardingsphere.agent.plugin.metrics.core.collector.type.CounterMetricsCollector;
import
org.apache.shardingsphere.agent.plugin.metrics.core.collector.type.GaugeMetricFamilyMetricsCollector;
import
org.apache.shardingsphere.agent.plugin.metrics.core.collector.type.GaugeMetricsCollector;
import
org.apache.shardingsphere.agent.plugin.metrics.core.collector.type.HistogramMetricsCollector;
import
org.apache.shardingsphere.agent.plugin.metrics.core.collector.type.SummaryMetricsCollector;
+import java.util.Collection;
+import java.util.LinkedHashMap;
import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
-@Getter
public final class MetricsCollectorFixture implements CounterMetricsCollector,
GaugeMetricsCollector, HistogramMetricsCollector, SummaryMetricsCollector,
GaugeMetricFamilyMetricsCollector {
- private double value;
+ private int value;
+
+ private final Map<String, Integer> labeledValues = new LinkedHashMap<>();
@Override
public void inc() {
@@ -38,7 +42,8 @@ public final class MetricsCollectorFixture implements
CounterMetricsCollector, G
@Override
public void inc(final String... labels) {
- value++;
+ String key = String.join(".", labels);
+ labeledValues.put(key, labeledValues.getOrDefault(key, 0) + 1);
}
@Override
@@ -48,17 +53,20 @@ public final class MetricsCollectorFixture implements
CounterMetricsCollector, G
@Override
public void dec(final String... labels) {
- value--;
+ String key = String.join(".", labels);
+ labeledValues.put(key, labeledValues.getOrDefault(key, 0) - 1);
}
@Override
public void observe(final double value) {
- this.value = value;
+ this.value = (int) value;
}
@Override
public void addMetric(final List<String> labelValues, final double value) {
- this.value += value;
+ for (String each : labelValues) {
+ labeledValues.put(each, labeledValues.getOrDefault(each, 0) +
(int) value);
+ }
}
@Override
@@ -66,10 +74,20 @@ public final class MetricsCollectorFixture implements
CounterMetricsCollector, G
return null;
}
+ @Override
+ public String toString() {
+ return labeledValues.isEmpty() ? value + "" : String.join(", ",
getLabeledContents());
+ }
+
+ private Collection<String> getLabeledContents() {
+ return labeledValues.entrySet().stream().map(entry ->
String.format("%s=%s", entry.getKey(),
entry.getValue())).collect(Collectors.toList());
+ }
+
/**
* Reset.
*/
public void reset() {
- value = 0d;
+ value = 0;
+ labeledValues.clear();
}
}
diff --git
a/agent/plugins/metrics/core/src/test/resources/META-INF/services/org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorFactory
b/agent/plugins/metrics/core/src/test/resources/META-INF/services/org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorFactory
index a8cb342f4a6..2fbb22b9d77 100644
---
a/agent/plugins/metrics/core/src/test/resources/META-INF/services/org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorFactory
+++
b/agent/plugins/metrics/core/src/test/resources/META-INF/services/org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorFactory
@@ -15,4 +15,4 @@
# limitations under the License.
#
-org.apache.shardingsphere.agent.plugin.metrics.core.fixture.FixtureCollectorFactory
+org.apache.shardingsphere.agent.plugin.metrics.core.fixture.collector.FixtureCollectorFactory
diff --git
a/docs/document/content/user-manual/shardingsphere-proxy/observability/_index.en.md
b/docs/document/content/user-manual/shardingsphere-proxy/observability/_index.en.md
index 13d7561d5d5..462b18a2961 100644
---
a/docs/document/content/user-manual/shardingsphere-proxy/observability/_index.en.md
+++
b/docs/document/content/user-manual/shardingsphere-proxy/observability/_index.en.md
@@ -162,7 +162,7 @@ services:
| build_info | GAUGE_METRIC_FAMILY | Build information
|
| parsed_sql_total | COUNTER | Total count of
parsed by type (INSERT, UPDATE, DELETE, SELECT, DDL, DCL, DAL, TCL, RQL, RDL,
RAL, RUL) |
| routed_sql_total | COUNTER | Total count of
routed by type (INSERT, UPDATE, DELETE, SELECT)
|
-| routed_result_total | COUNTER | Total count of
routed result. (data source routed, table routed)
|
+| routed_result_total | COUNTER | Total count of
routed result (data source routed, table routed)
|
| proxy_state | GAUGE_METRIC_FAMILY | Status information
of ShardingSphere-Proxy. 0 is OK; 1 is CIRCUIT BREAK; 2 is LOCK
|
| proxy_meta_data_info | GAUGE_METRIC_FAMILY | Meta data
information of ShardingSphere-Proxy. schema_count is logic number of databases;
database_count is actual number of databases |
| proxy_current_connections | GAUGE | Current
connections of ShardingSphere-Proxy
|