This is an automated email from the ASF dual-hosted git repository.
jianglongtao 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 74085d11055 Fix SET DIST VARIABLE system-log-level (#24016)
74085d11055 is described below
commit 74085d110550614bbb9aba7c80bfbe5e252ba7b7
Author: ChenJiaHao <[email protected]>
AuthorDate: Mon Feb 6 14:21:37 2023 +0800
Fix SET DIST VARIABLE system-log-level (#24016)
* Fix get Enum from props value
* Add SET DIST VARIABLE test cases for system-log-level
* Optimize unit test
---
.../infra/util/props/TypedPropertyValue.java | 2 +-
.../ral/updatable/SetDistVariableExecutorTest.java | 40 ++++++++++++++++++----
2 files changed, 35 insertions(+), 7 deletions(-)
diff --git
a/infra/util/src/main/java/org/apache/shardingsphere/infra/util/props/TypedPropertyValue.java
b/infra/util/src/main/java/org/apache/shardingsphere/infra/util/props/TypedPropertyValue.java
index 10304df210e..348595b00b0 100644
---
a/infra/util/src/main/java/org/apache/shardingsphere/infra/util/props/TypedPropertyValue.java
+++
b/infra/util/src/main/java/org/apache/shardingsphere/infra/util/props/TypedPropertyValue.java
@@ -58,7 +58,7 @@ public final class TypedPropertyValue {
private Enum<?> getEnumValue(final TypedPropertyKey key, final String
value) throws TypedPropertyValueException {
try {
- return (Enum<?>) key.getType().getMethod("valueOf",
String.class).invoke(null, value);
+ return (Enum<?>) key.getType().getMethod("valueOf",
String.class).invoke(null, value.toUpperCase());
} catch (final ReflectiveOperationException | IllegalArgumentException
ex) {
throw new TypedPropertyValueException(key, value);
}
diff --git
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetDistVariableExecutorTest.java
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetDistVariableExecutorTest.java
index 61c2e511ad9..538bf1b966c 100644
---
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetDistVariableExecutorTest.java
+++
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetDistVariableExecutorTest.java
@@ -20,6 +20,7 @@ package
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.updatable;
import
org.apache.shardingsphere.distsql.parser.statement.ral.updatable.SetDistVariableStatement;
import org.apache.shardingsphere.infra.config.mode.ModeConfiguration;
import org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
+import org.apache.shardingsphere.infra.config.props.LoggerLevel;
import org.apache.shardingsphere.infra.instance.ComputeNodeInstance;
import org.apache.shardingsphere.infra.instance.InstanceContext;
import org.apache.shardingsphere.infra.instance.metadata.InstanceMetaData;
@@ -32,6 +33,7 @@ import
org.apache.shardingsphere.mode.manager.standalone.StandaloneModeContextMa
import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
+import org.apache.shardingsphere.proxy.backend.exception.InvalidValueException;
import
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.common.enums.VariableEnum;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
import
org.apache.shardingsphere.proxy.backend.session.transaction.TransactionStatus;
@@ -78,12 +80,7 @@ public final class SetDistVariableExecutorTest extends
ProxyContextRestorer {
@Test
public void assertExecuteWithConfigurationKey() throws SQLException {
- StandaloneModeContextManager standaloneModeContextManager = new
StandaloneModeContextManager();
- ContextManager contextManager = new ContextManager(new
MetaDataContexts(mock(MetaDataPersistService.class), new
ShardingSphereMetaData()),
- new InstanceContext(new
ComputeNodeInstance(mock(InstanceMetaData.class)),
mock(WorkerIdGenerator.class),
- new ModeConfiguration("Standalone", null),
standaloneModeContextManager, mock(LockContext.class), new EventBusContext()));
- standaloneModeContextManager.setContextManagerAware(contextManager);
- ProxyContext.init(contextManager);
+ ContextManager contextManager = mockContextManager();
SetDistVariableStatement statement = new
SetDistVariableStatement("proxy_frontend_flush_threshold", "1024");
SetDistVariableHandler handler = new SetDistVariableHandler();
handler.init(statement, connectionSession);
@@ -92,4 +89,35 @@ public final class SetDistVariableExecutorTest extends
ProxyContextRestorer {
assertThat(actualValue.toString(), is("1024"));
assertThat(contextManager.getMetaDataContexts().getMetaData().getProps().getValue(ConfigurationPropertyKey.PROXY_FRONTEND_FLUSH_THRESHOLD),
is(1024));
}
+
+ @Test
+ public void assertExecuteWithSystemLogLevel() throws SQLException {
+ ContextManager contextManager = mockContextManager();
+ SetDistVariableStatement statement = new
SetDistVariableStatement("system_log_level", "debug");
+ SetDistVariableHandler handler = new SetDistVariableHandler();
+ handler.init(statement, connectionSession);
+ handler.execute();
+ Object actualValue =
contextManager.getMetaDataContexts().getMetaData().getProps().getProps().get("system-log-level");
+ assertThat(actualValue.toString(), is("DEBUG"));
+
assertThat(contextManager.getMetaDataContexts().getMetaData().getProps().getValue(ConfigurationPropertyKey.SYSTEM_LOG_LEVEL),
is(LoggerLevel.DEBUG));
+ }
+
+ @Test(expected = InvalidValueException.class)
+ public void assertExecuteWithWrongSystemLogLevel() throws SQLException {
+ mockContextManager();
+ SetDistVariableStatement statement = new
SetDistVariableStatement("system_log_level", "invalid");
+ SetDistVariableHandler handler = new SetDistVariableHandler();
+ handler.init(statement, connectionSession);
+ handler.execute();
+ }
+
+ private ContextManager mockContextManager() {
+ StandaloneModeContextManager standaloneModeContextManager = new
StandaloneModeContextManager();
+ ContextManager contextManager = new ContextManager(new
MetaDataContexts(mock(MetaDataPersistService.class), new
ShardingSphereMetaData()),
+ new InstanceContext(new
ComputeNodeInstance(mock(InstanceMetaData.class)),
mock(WorkerIdGenerator.class),
+ new ModeConfiguration("Standalone", null),
standaloneModeContextManager, mock(LockContext.class), new EventBusContext()));
+ standaloneModeContextManager.setContextManagerAware(contextManager);
+ ProxyContext.init(contextManager);
+ return contextManager;
+ }
}