From 50f743f4c75eade5abb30270840d00b8dbb32f7f Mon Sep 17 00:00:00 2001 From: Liang Zhang Date: Sun, 18 Dec 2022 23:29:06 +0800 Subject: [PATCH] Refactor structure of advisors.yaml (#22958) --- .../yaml/entity/YamlAdvisorConfiguration.java | 6 +----- .../YamlAdvisorConfigurationSwapper.java | 9 ++++---- .../YamlAdvisorsConfigurationSwapperTest.java | 21 +++++++------------ agent/core/src/test/resources/advisors.yaml | 10 ++++----- .../wrapper/PrometheusWrapperFactory.java | 4 ++-- .../main/resources/prometheus/advisors.yaml | 10 ++++----- .../main/resources/prometheus/metrics.yaml | 2 +- 7 files changed, 27 insertions(+), 35 deletions(-) diff --git a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/yaml/entity/YamlAdvisorConfiguration.java b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/yaml/entity/YamlAdvisorConfiguration.java index 3ce8478200eaf..83b26d4255774 100644 --- a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/yaml/entity/YamlAdvisorConfiguration.java +++ b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/yaml/entity/YamlAdvisorConfiguration.java @@ -32,11 +32,7 @@ public final class YamlAdvisorConfiguration { private String target; - private String instanceAdvice; - - private String staticAdvice; - - private String constructAdvice; + private String advice; private Collection pointcuts = new LinkedList<>(); } diff --git a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/yaml/swapper/YamlAdvisorConfigurationSwapper.java b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/yaml/swapper/YamlAdvisorConfigurationSwapper.java index 02982fb75fa74..bb605d83df851 100644 --- a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/yaml/swapper/YamlAdvisorConfigurationSwapper.java +++ b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/yaml/swapper/YamlAdvisorConfigurationSwapper.java @@ -38,16 +38,17 @@ public final class YamlAdvisorConfigurationSwapper { */ public AdvisorConfiguration swapToObject(final YamlAdvisorConfiguration yamlAdvisorConfig, final String type) { AdvisorConfiguration result = AdvisorConfigurationRegistryFactory.getRegistry(type).getAdvisorConfiguration(yamlAdvisorConfig.getTarget()); - if (null != yamlAdvisorConfig.getConstructAdvice() && !("".equals(yamlAdvisorConfig.getConstructAdvice()))) { - result.getConstructorAdvisors().add(new MethodAdvisorConfiguration(ElementMatchers.isConstructor(), yamlAdvisorConfig.getConstructAdvice())); + String[] constructPointcuts = yamlAdvisorConfig.getPointcuts().stream().filter(each -> "construct".equals(each.getType())).map(YamlPointcutConfiguration::getName).toArray(String[]::new); + if (constructPointcuts.length > 0) { + result.getConstructorAdvisors().add(new MethodAdvisorConfiguration(ElementMatchers.isConstructor(), yamlAdvisorConfig.getAdvice())); } String[] instanceMethodPointcuts = yamlAdvisorConfig.getPointcuts().stream().filter(each -> "instance".equals(each.getType())).map(YamlPointcutConfiguration::getName).toArray(String[]::new); if (instanceMethodPointcuts.length > 0) { - result.getInstanceMethodAdvisors().add(new MethodAdvisorConfiguration(ElementMatchers.namedOneOf(instanceMethodPointcuts), yamlAdvisorConfig.getInstanceAdvice())); + result.getInstanceMethodAdvisors().add(new MethodAdvisorConfiguration(ElementMatchers.namedOneOf(instanceMethodPointcuts), yamlAdvisorConfig.getAdvice())); } String[] staticMethodPointcuts = yamlAdvisorConfig.getPointcuts().stream().filter(each -> "static".equals(each.getType())).map(YamlPointcutConfiguration::getName).toArray(String[]::new); if (staticMethodPointcuts.length > 0) { - result.getStaticMethodAdvisors().add(new MethodAdvisorConfiguration(ElementMatchers.namedOneOf(staticMethodPointcuts), yamlAdvisorConfig.getStaticAdvice())); + result.getStaticMethodAdvisors().add(new MethodAdvisorConfiguration(ElementMatchers.namedOneOf(staticMethodPointcuts), yamlAdvisorConfig.getAdvice())); } return result; } diff --git a/agent/core/src/test/java/org/apache/shardingsphere/agent/core/plugin/yaml/swapper/YamlAdvisorsConfigurationSwapperTest.java b/agent/core/src/test/java/org/apache/shardingsphere/agent/core/plugin/yaml/swapper/YamlAdvisorsConfigurationSwapperTest.java index cb7c545dd4361..58241b33dbf33 100644 --- a/agent/core/src/test/java/org/apache/shardingsphere/agent/core/plugin/yaml/swapper/YamlAdvisorsConfigurationSwapperTest.java +++ b/agent/core/src/test/java/org/apache/shardingsphere/agent/core/plugin/yaml/swapper/YamlAdvisorsConfigurationSwapperTest.java @@ -41,26 +41,24 @@ public void assertUnmarshal() { List actualYamlAdvisorConfigs = new ArrayList<>(actual.getAdvisors()); assertYamlAdvisorConfiguration(actualYamlAdvisorConfigs.get(0), createExpectedYamlAdvisorConfiguration("org.apache.shardingsphere.proxy.frontend.command.CommandExecutorTask", "org.apache.shardingsphere.agent.metrics.api.advice.CommandExecutorTaskAdvice", - null, null, Arrays.asList(createExpectedYamlPointcutConfiguration("run", "instance"), createExpectedYamlPointcutConfiguration("processException", "instance")))); + Arrays.asList(createExpectedYamlPointcutConfiguration("run", "instance"), createExpectedYamlPointcutConfiguration("processException", "instance")))); assertYamlAdvisorConfiguration(actualYamlAdvisorConfigs.get(1), createExpectedYamlAdvisorConfiguration("org.apache.shardingsphere.proxy.frontend.netty.FrontendChannelInboundHandler", "org.apache.shardingsphere.agent.metrics.api.advice.ChannelHandlerAdvice", - null, null, Arrays.asList(createExpectedYamlPointcutConfiguration("channelActive", "instance"), + Arrays.asList(createExpectedYamlPointcutConfiguration("channelActive", "instance"), createExpectedYamlPointcutConfiguration("channelRead", "instance"), createExpectedYamlPointcutConfiguration("channelInactive", "instance")))); assertYamlAdvisorConfiguration(actualYamlAdvisorConfigs.get(2), createExpectedYamlAdvisorConfiguration("org.apache.shardingsphere.infra.route.engine.SQLRouteEngine", - "org.apache.shardingsphere.agent.metrics.api.advice.SQLRouteEngineAdvice", null, null, Collections.singleton(createExpectedYamlPointcutConfiguration("route", "instance")))); + "org.apache.shardingsphere.agent.metrics.api.advice.SQLRouteEngineAdvice", Collections.singleton(createExpectedYamlPointcutConfiguration("route", "instance")))); assertYamlAdvisorConfiguration(actualYamlAdvisorConfigs.get(3), createExpectedYamlAdvisorConfiguration( "org.apache.shardingsphere.proxy.backend.communication.jdbc.transaction.BackendTransactionManager", "org.apache.shardingsphere.agent.metrics.api.advice.TransactionAdvice", - null, null, Arrays.asList(createExpectedYamlPointcutConfiguration("commit", "instance"), createExpectedYamlPointcutConfiguration("rollback", "instance")))); + Arrays.asList(createExpectedYamlPointcutConfiguration("commit", "instance"), createExpectedYamlPointcutConfiguration("rollback", "instance")))); assertYamlAdvisorConfiguration(actualYamlAdvisorConfigs.get(4), createExpectedYamlAdvisorConfiguration("org.apache.shardingsphere.infra.config.datasource.JDBCParameterDecoratorHelper", - null, "org.apache.shardingsphere.agent.metrics.api.advice.DataSourceAdvice", null, Collections.singleton(createExpectedYamlPointcutConfiguration("decorate", "static")))); + "org.apache.shardingsphere.agent.metrics.api.advice.DataSourceAdvice", Collections.singleton(createExpectedYamlPointcutConfiguration("decorate", "static")))); } private void assertYamlAdvisorConfiguration(final YamlAdvisorConfiguration actual, final YamlAdvisorConfiguration expected) { assertThat(actual.getTarget(), is(expected.getTarget())); - assertThat(actual.getInstanceAdvice(), is(expected.getInstanceAdvice())); - assertThat(actual.getStaticAdvice(), is(expected.getStaticAdvice())); - assertThat(actual.getConstructAdvice(), is(expected.getConstructAdvice())); + assertThat(actual.getAdvice(), is(expected.getAdvice())); assertThat(actual.getPointcuts().isEmpty(), is(expected.getPointcuts().isEmpty())); Iterator expectedYamlPointcutConfigs = expected.getPointcuts().iterator(); for (YamlPointcutConfiguration each : actual.getPointcuts()) { @@ -70,13 +68,10 @@ private void assertYamlAdvisorConfiguration(final YamlAdvisorConfiguration actua } } - private YamlAdvisorConfiguration createExpectedYamlAdvisorConfiguration(final String target, final String instanceAdvice, - final String staticAdvice, final String constructAdvice, final Collection yamlPointcutConfigs) { + private YamlAdvisorConfiguration createExpectedYamlAdvisorConfiguration(final String target, final String advice, final Collection yamlPointcutConfigs) { YamlAdvisorConfiguration result = new YamlAdvisorConfiguration(); result.setTarget(target); - result.setInstanceAdvice(instanceAdvice); - result.setStaticAdvice(staticAdvice); - result.setConstructAdvice(constructAdvice); + result.setAdvice(advice); result.setPointcuts(yamlPointcutConfigs); return result; } diff --git a/agent/core/src/test/resources/advisors.yaml b/agent/core/src/test/resources/advisors.yaml index 514545019cf0d..e1ff1df3f8be6 100644 --- a/agent/core/src/test/resources/advisors.yaml +++ b/agent/core/src/test/resources/advisors.yaml @@ -17,14 +17,14 @@ advisors: - target: org.apache.shardingsphere.proxy.frontend.command.CommandExecutorTask - instanceAdvice: org.apache.shardingsphere.agent.metrics.api.advice.CommandExecutorTaskAdvice + advice: org.apache.shardingsphere.agent.metrics.api.advice.CommandExecutorTaskAdvice pointcuts: - name: run type: instance - name: processException type: instance - target: org.apache.shardingsphere.proxy.frontend.netty.FrontendChannelInboundHandler - instanceAdvice: org.apache.shardingsphere.agent.metrics.api.advice.ChannelHandlerAdvice + advice: org.apache.shardingsphere.agent.metrics.api.advice.ChannelHandlerAdvice pointcuts: - name: channelActive type: instance @@ -33,19 +33,19 @@ advisors: - name: channelInactive type: instance - target: org.apache.shardingsphere.infra.route.engine.SQLRouteEngine - instanceAdvice: org.apache.shardingsphere.agent.metrics.api.advice.SQLRouteEngineAdvice + advice: org.apache.shardingsphere.agent.metrics.api.advice.SQLRouteEngineAdvice pointcuts: - name: route type: instance - target: org.apache.shardingsphere.proxy.backend.communication.jdbc.transaction.BackendTransactionManager - instanceAdvice: org.apache.shardingsphere.agent.metrics.api.advice.TransactionAdvice + advice: org.apache.shardingsphere.agent.metrics.api.advice.TransactionAdvice pointcuts: - name: commit type: instance - name: rollback type: instance - target: org.apache.shardingsphere.infra.config.datasource.JDBCParameterDecoratorHelper - staticAdvice: org.apache.shardingsphere.agent.metrics.api.advice.DataSourceAdvice + advice: org.apache.shardingsphere.agent.metrics.api.advice.DataSourceAdvice pointcuts: - name: decorate type: static diff --git a/agent/plugins/metrics/type/prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/PrometheusWrapperFactory.java b/agent/plugins/metrics/type/prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/PrometheusWrapperFactory.java index fc5fed23f7cee..558dbbcf02edf 100644 --- a/agent/plugins/metrics/type/prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/PrometheusWrapperFactory.java +++ b/agent/plugins/metrics/type/prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/PrometheusWrapperFactory.java @@ -44,11 +44,11 @@ public final class PrometheusWrapperFactory implements MetricsWrapperFactory { private static List> metrics; static { - parseMetricsYaml(); + parseMetricsYAML(); } @SuppressWarnings("unchecked") - private static void parseMetricsYaml() { + private static void parseMetricsYAML() { InputStream inputStream = PrometheusWrapperFactory.class.getResourceAsStream("/prometheus/metrics.yaml"); Map>> metricsMap = new Yaml().loadAs(inputStream, LinkedHashMap.class); metrics = metricsMap.get("metrics"); diff --git a/agent/plugins/metrics/type/prometheus/src/main/resources/prometheus/advisors.yaml b/agent/plugins/metrics/type/prometheus/src/main/resources/prometheus/advisors.yaml index 63dddf9dc82e4..95ec3c23f80de 100644 --- a/agent/plugins/metrics/type/prometheus/src/main/resources/prometheus/advisors.yaml +++ b/agent/plugins/metrics/type/prometheus/src/main/resources/prometheus/advisors.yaml @@ -17,14 +17,14 @@ advisors: - target: org.apache.shardingsphere.proxy.frontend.command.CommandExecutorTask - instanceAdvice: org.apache.shardingsphere.agent.metrics.api.advice.CommandExecutorTaskAdvice + advice: org.apache.shardingsphere.agent.metrics.api.advice.CommandExecutorTaskAdvice pointcuts: - name: run type: instance - name: processException type: instance - target: org.apache.shardingsphere.proxy.frontend.netty.FrontendChannelInboundHandler - instanceAdvice: org.apache.shardingsphere.agent.metrics.api.advice.ChannelHandlerAdvice + advice: org.apache.shardingsphere.agent.metrics.api.advice.ChannelHandlerAdvice pointcuts: - name: channelActive type: instance @@ -33,19 +33,19 @@ advisors: - name: channelInactive type: instance - target: org.apache.shardingsphere.infra.route.engine.SQLRouteEngine - instanceAdvice: org.apache.shardingsphere.agent.metrics.api.advice.SQLRouteEngineAdvice + advice: org.apache.shardingsphere.agent.metrics.api.advice.SQLRouteEngineAdvice pointcuts: - name: route type: instance - target: org.apache.shardingsphere.proxy.backend.communication.jdbc.transaction.JDBCBackendTransactionManager - instanceAdvice: org.apache.shardingsphere.agent.metrics.api.advice.TransactionAdvice + advice: org.apache.shardingsphere.agent.metrics.api.advice.TransactionAdvice pointcuts: - name: commit type: instance - name: rollback type: instance - target: org.apache.shardingsphere.infra.parser.ShardingSphereSQLParserEngine - instanceAdvice: org.apache.shardingsphere.agent.metrics.api.advice.SQLParserEngineAdvice + advice: org.apache.shardingsphere.agent.metrics.api.advice.SQLParserEngineAdvice pointcuts: - name: parse type: instance diff --git a/agent/plugins/metrics/type/prometheus/src/main/resources/prometheus/metrics.yaml b/agent/plugins/metrics/type/prometheus/src/main/resources/prometheus/metrics.yaml index 530932db7c36c..ff6da9b9e38c2 100644 --- a/agent/plugins/metrics/type/prometheus/src/main/resources/prometheus/metrics.yaml +++ b/agent/plugins/metrics/type/prometheus/src/main/resources/prometheus/metrics.yaml @@ -16,7 +16,7 @@ # metrics: - - id: proxy_request_total + - id: proxy_request_total type: COUNTER name: proxy_request_total help: the shardingsphere proxy request total