From 149b359ca62b9ead2a9fc73b094e8501d45fc276 Mon Sep 17 00:00:00 2001 From: zhyyu Date: Fri, 29 Oct 2021 21:35:17 +0800 Subject: [PATCH] fix config yaml data type conversion bug (#8035) Co-authored-by: yuzhongyu --- CHANGES.md | 1 + .../config/ApplicationConfigLoader.java | 17 +++++++++- .../ApplicationConfigLoaderTestCase.java | 34 +++++++++++++++++++ 3 files changed, 51 insertions(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index 27c28a785e..b0d4f85147 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -42,6 +42,7 @@ Release Notes. * Fix TimeBucket missing in ElasticSearch and provide compatible `storage2Entity` for previous versions. * Fix ElasticSearch implementation of `queryMetricsValues` and `readLabeledMetricsValues` doesn't fill default values when no available data in the ElasticSearch server. +* Fix config yaml data type conversion bug when meets special character like !. #### UI diff --git a/oap-server/server-starter/src/main/java/org/apache/skywalking/oap/server/starter/config/ApplicationConfigLoader.java b/oap-server/server-starter/src/main/java/org/apache/skywalking/oap/server/starter/config/ApplicationConfigLoader.java index 7fcf620e7e..3bccd303a9 100644 --- a/oap-server/server-starter/src/main/java/org/apache/skywalking/oap/server/starter/config/ApplicationConfigLoader.java +++ b/oap-server/server-starter/src/main/java/org/apache/skywalking/oap/server/starter/config/ApplicationConfigLoader.java @@ -20,6 +20,7 @@ package org.apache.skywalking.oap.server.starter.config; import java.io.FileNotFoundException; import java.io.Reader; +import java.util.ArrayList; import java.util.Iterator; import java.util.Map; import java.util.Properties; @@ -111,7 +112,7 @@ public class ApplicationConfigLoader implements ConfigLoader prop : System.getProperties().entrySet()) { overrideModuleSettings(configuration, prop.getKey().toString(), prop.getValue().toString()); diff --git a/oap-server/server-starter/src/test/java/org/apache/skywalking/oap/server/starter/config/ApplicationConfigLoaderTestCase.java b/oap-server/server-starter/src/test/java/org/apache/skywalking/oap/server/starter/config/ApplicationConfigLoaderTestCase.java index 52b61c5eb1..09f7871c77 100644 --- a/oap-server/server-starter/src/test/java/org/apache/skywalking/oap/server/starter/config/ApplicationConfigLoaderTestCase.java +++ b/oap-server/server-starter/src/test/java/org/apache/skywalking/oap/server/starter/config/ApplicationConfigLoaderTestCase.java @@ -38,6 +38,7 @@ public class ApplicationConfigLoaderTestCase { public void setUp() throws ConfigFileNotFoundException { System.setProperty("SW_STORAGE", "mysql"); System.setProperty("SW_RECEIVER_ZIPKIN", "default"); + System.setProperty("SW_DATA_SOURCE_PASSWORD", "!AI!3B"); ApplicationConfigLoader configLoader = new ApplicationConfigLoader(); applicationConfiguration = configLoader.load(); } @@ -60,4 +61,37 @@ public class ApplicationConfigLoaderTestCase { assertEquals(2, instanceNameRule.size()); } + @Test + public void testLoadStringTypeConfig() { + Properties providerConfig = applicationConfiguration.getModuleConfiguration("receiver_zipkin") + .getProviderConfiguration("default"); + String host = (String) providerConfig.get("host"); + assertEquals("0.0.0.0", host); + } + + @Test + public void testLoadIntegerTypeConfig() { + Properties providerConfig = applicationConfiguration.getModuleConfiguration("receiver_zipkin") + .getProviderConfiguration("default"); + Integer port = (Integer) providerConfig.get("port"); + assertEquals(Integer.valueOf(9411), port); + } + + @Test + public void testLoadBooleanTypeConfig() { + Properties providerConfig = applicationConfiguration.getModuleConfiguration("core") + .getProviderConfiguration("default"); + Boolean enableDataKeeperExecutor = (Boolean) providerConfig.get("enableDataKeeperExecutor"); + assertEquals(Boolean.TRUE, enableDataKeeperExecutor); + } + + @Test + public void testLoadSpecialStringTypeConfig() { + Properties providerConfig = applicationConfiguration.getModuleConfiguration("storage") + .getProviderConfiguration("mysql"); + Properties properties = (Properties) providerConfig.get("properties"); + String password = (String) properties.get("dataSource.password"); + assertEquals("!AI!3B", password); + } + } -- GitLab