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

zhangliang 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 059aece2fe7 Add test cases for AgentYamlEngine (#30274)
059aece2fe7 is described below

commit 059aece2fe7fdf0ffb8b67b79a7fba73f87c9bd6
Author: ilyas ahsan <[email protected]>
AuthorDate: Sat Feb 24 23:40:37 2024 +0700

    Add test cases for AgentYamlEngine (#30274)
    
    * Add test cases for AgentYamlEngine
    
    * Add more assertions on the test cases.
---
 .../shardingsphere/yaml/AgentYamlEngineTest.java   | 142 +++++++++++++++++++++
 1 file changed, 142 insertions(+)

diff --git 
a/agent/core/src/test/java/org/apache/shardingsphere/yaml/AgentYamlEngineTest.java
 
b/agent/core/src/test/java/org/apache/shardingsphere/yaml/AgentYamlEngineTest.java
new file mode 100644
index 00000000000..ec6348a9b69
--- /dev/null
+++ 
b/agent/core/src/test/java/org/apache/shardingsphere/yaml/AgentYamlEngineTest.java
@@ -0,0 +1,142 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.yaml;
+
+import org.apache.shardingsphere.agent.api.PluginConfiguration;
+import 
org.apache.shardingsphere.agent.core.advisor.config.yaml.entity.YamlAdvisorConfiguration;
+import 
org.apache.shardingsphere.agent.core.advisor.config.yaml.entity.YamlAdvisorsConfiguration;
+import 
org.apache.shardingsphere.agent.core.advisor.config.yaml.entity.YamlPointcutConfiguration;
+import 
org.apache.shardingsphere.agent.core.advisor.config.yaml.entity.YamlPointcutParameterConfiguration;
+import 
org.apache.shardingsphere.agent.core.advisor.config.yaml.fixture.YamlAdviceFixture;
+import 
org.apache.shardingsphere.agent.core.advisor.config.yaml.fixture.YamlTargetObjectFixture;
+import 
org.apache.shardingsphere.agent.core.plugin.config.yaml.entity.YamlAgentConfiguration;
+import 
org.apache.shardingsphere.agent.core.plugin.config.yaml.swapper.YamlPluginsConfigurationSwapper;
+import org.apache.shardingsphere.agent.core.yaml.AgentYamlEngine;
+import org.junit.jupiter.api.Test;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.nio.file.Files;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.Objects;
+import java.util.List;
+import java.util.Collections;
+import java.util.Arrays;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertNull;
+
+public class AgentYamlEngineTest {
+    
+    @Test
+    void assertUnmarshalYamlAgentConfiguration() throws IOException {
+        try (InputStream inputStream = Files.newInputStream(new 
File(getResourceURL(), "/conf/agent.yaml").toPath())) {
+            YamlAgentConfiguration yamlAgentConfig = 
AgentYamlEngine.unmarshalYamlAgentConfiguration(inputStream);
+            Map<String, PluginConfiguration> actual = 
YamlPluginsConfigurationSwapper.swap(yamlAgentConfig);
+            assertThat(actual.size(), is(3));
+            assertLogFixturePluginConfiguration(actual.get("log_fixture"));
+            assertMetricsPluginConfiguration(actual.get("metrics_fixture"));
+            assertTracingPluginConfiguration(actual.get("tracing_fixture"));
+        }
+    }
+    
+    @Test
+    void assertUnmarshalYamlAdvisorsConfiguration() {
+        InputStream inputStream = 
getClass().getResourceAsStream("/META-INF/conf/advisors.yaml");
+        YamlAdvisorsConfiguration actual = 
AgentYamlEngine.unmarshalYamlAdvisorsConfiguration(inputStream);
+        
+        assertYamlAdvisorConfiguration(actual.getAdvisors().iterator().next());
+    }
+    
+    private String getResourceURL() throws UnsupportedEncodingException {
+        return 
URLDecoder.decode(Objects.requireNonNull(Thread.currentThread().getContextClassLoader().getResource("")).getFile(),
 "UTF8");
+    }
+    
+    private void assertLogFixturePluginConfiguration(final PluginConfiguration 
actual) {
+        assertNull(actual.getHost());
+        assertNull(actual.getPassword());
+        assertThat(actual.getPort(), is(8080));
+        assertThat(actual.getProps().size(), is(1));
+        assertThat(actual.getProps().get("key"), is("value"));
+    }
+    
+    private void assertMetricsPluginConfiguration(final PluginConfiguration 
actual) {
+        assertThat(actual.getHost(), is("localhost"));
+        assertThat(actual.getPassword(), is("random"));
+        assertThat(actual.getPort(), is(8081));
+        assertThat(actual.getProps().size(), is(1));
+        assertThat(actual.getProps().get("key"), is("value"));
+    }
+    
+    private void assertTracingPluginConfiguration(final PluginConfiguration 
actual) {
+        assertThat(actual.getHost(), is("localhost"));
+        assertThat(actual.getPassword(), is("random"));
+        assertThat(actual.getPort(), is(8082));
+        assertThat(actual.getProps().size(), is(1));
+        assertThat(actual.getProps().get("key"), is("value"));
+    }
+    
+    private void assertYamlAdvisorConfiguration(final YamlAdvisorConfiguration 
actual) {
+        assertThat(actual.getTarget(), 
is(YamlTargetObjectFixture.class.getName()));
+        assertThat(actual.getAdvice(), is(YamlAdviceFixture.class.getName()));
+        assertThat(actual.getTarget(), 
is("org.apache.shardingsphere.agent.core.advisor.config.yaml.fixture.YamlTargetObjectFixture"));
+        assertThat(actual.getAdvice(), 
is("org.apache.shardingsphere.agent.core.advisor.config.yaml.fixture.YamlAdviceFixture"));
+        
+        assertThat(actual.getPointcuts().size(), is(8));
+        List<YamlPointcutConfiguration> actualYamlPointcutConfigs = new 
ArrayList<>(actual.getPointcuts());
+        assertYamlPointcutConfiguration(actualYamlPointcutConfigs.get(0), 
null, "constructor", Collections.emptyList());
+        assertYamlPointcutConfiguration(actualYamlPointcutConfigs.get(1), 
null, "constructor", 
Collections.singletonList(createYamlPointcutParameterConfiguration(0, 
"java.lang.String")));
+        assertYamlPointcutConfiguration(actualYamlPointcutConfigs.get(2), 
"call", "method", Collections.emptyList());
+        assertYamlPointcutConfiguration(actualYamlPointcutConfigs.get(3), 
"call", "method", 
Collections.singletonList(createYamlPointcutParameterConfiguration(0, 
"java.lang.String")));
+        assertYamlPointcutConfiguration(actualYamlPointcutConfigs.get(4), 
"call", "method",
+                Arrays.asList(createYamlPointcutParameterConfiguration(0, 
"java.lang.String"), createYamlPointcutParameterConfiguration(1, 
"java.lang.String")));
+        assertYamlPointcutConfiguration(actualYamlPointcutConfigs.get(5), 
"staticCall", "method", Collections.emptyList());
+        assertYamlPointcutConfiguration(actualYamlPointcutConfigs.get(6), 
"staticCall", "method", 
Collections.singletonList(createYamlPointcutParameterConfiguration(0, 
"java.lang.String")));
+        assertYamlPointcutConfiguration(actualYamlPointcutConfigs.get(7), 
"staticCall", "method",
+                Arrays.asList(createYamlPointcutParameterConfiguration(0, 
"java.lang.String"), createYamlPointcutParameterConfiguration(1, 
"java.lang.String")));
+    }
+    
+    private void assertYamlPointcutConfiguration(final 
YamlPointcutConfiguration actual,
+                                                 final String expectedName, 
final String expectedType, final List<YamlPointcutParameterConfiguration> 
expectedParams) {
+        assertThat(actual.getName(), is(expectedName));
+        assertThat(actual.getType(), is(expectedType));
+        assertThat(actual.getParams().size(), is(expectedParams.size()));
+        int count = 0;
+        for (YamlPointcutParameterConfiguration each : actual.getParams()) {
+            assertYamlPointcutParameterConfiguration(each, 
expectedParams.get(count));
+            count++;
+        }
+    }
+    
+    private void assertYamlPointcutParameterConfiguration(final 
YamlPointcutParameterConfiguration actual, final 
YamlPointcutParameterConfiguration expected) {
+        assertThat(actual.getIndex(), is(expected.getIndex()));
+        assertThat(actual.getType(), is(expected.getType()));
+    }
+    
+    private YamlPointcutParameterConfiguration 
createYamlPointcutParameterConfiguration(final int index, final String type) {
+        YamlPointcutParameterConfiguration result = new 
YamlPointcutParameterConfiguration();
+        result.setIndex(index);
+        result.setType(type);
+        return result;
+    }
+}

Reply via email to