This is an automated email from the ASF dual-hosted git repository. upthewaterspout pushed a commit to branch feature/redis-performance-testing in repository https://gitbox.apache.org/repos/asf/geode.git
commit 29f7e97528bcfe58a73130c71b513a1cec93e324 Author: Jacob Barrett <[email protected]> AuthorDate: Tue Mar 2 15:21:54 2021 -0800 Adding CLIENT command. Adding CLUSTER INFO command. --- .../geode/redis/internal/RedisCommandType.java | 5 ++- .../internal/executor/client/ClientExecutor.java | 37 ++++++++++++++++++++++ .../internal/executor/cluster/ClusterExecutor.java | 37 ++++++++++++++++------ 3 files changed, 68 insertions(+), 11 deletions(-) diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/RedisCommandType.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/RedisCommandType.java index ee90919..16fb941 100755 --- a/geode-redis/src/main/java/org/apache/geode/redis/internal/RedisCommandType.java +++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/RedisCommandType.java @@ -33,6 +33,7 @@ import org.apache.geode.redis.internal.ParameterRequirements.UnspecifiedParamete import org.apache.geode.redis.internal.executor.Executor; import org.apache.geode.redis.internal.executor.RedisResponse; import org.apache.geode.redis.internal.executor.UnknownExecutor; +import org.apache.geode.redis.internal.executor.client.ClientExecutor; import org.apache.geode.redis.internal.executor.cluster.ClusterExecutor; import org.apache.geode.redis.internal.executor.connection.AuthExecutor; import org.apache.geode.redis.internal.executor.connection.EchoExecutor; @@ -287,6 +288,9 @@ public enum RedisCommandType { /*********** Sorted Sets **********/ ZADD(new ZaddExecutor(), SUPPORTED, new MinimumParameterRequirements(1)), + /************ CLIENT *************/ + CLIENT(new ClientExecutor(), UNSUPPORTED, new MinimumParameterRequirements(1)), + /////////// UNIMPLEMENTED ///////////////////// ACL(null, UNIMPLEMENTED), @@ -298,7 +302,6 @@ public enum RedisCommandType { BRPOPLPUSH(null, UNIMPLEMENTED), BZPOPMIN(null, UNIMPLEMENTED), BZPOPMAX(null, UNIMPLEMENTED), - CLIENT(null, UNIMPLEMENTED), CONFIG(null, UNIMPLEMENTED), DEBUG(null, UNIMPLEMENTED), DISCARD(null, UNIMPLEMENTED), diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/client/ClientExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/client/ClientExecutor.java new file mode 100644 index 0000000..eede413 --- /dev/null +++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/client/ClientExecutor.java @@ -0,0 +1,37 @@ +/* + * 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.geode.redis.internal.executor.client; + +import org.apache.logging.log4j.Logger; + +import org.apache.geode.logging.internal.log4j.api.LogService; +import org.apache.geode.redis.internal.executor.AbstractExecutor; +import org.apache.geode.redis.internal.executor.RedisResponse; +import org.apache.geode.redis.internal.netty.Command; +import org.apache.geode.redis.internal.netty.ExecutionHandlerContext; + +public class ClientExecutor extends AbstractExecutor { + private static final Logger logger = LogService.getLogger(); + + @Override + public RedisResponse executeCommand(final Command command, + final ExecutionHandlerContext context) { + + logger.info("CLIENT: {}", command.toString()); + + return RedisResponse.ok(); + } +} diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/cluster/ClusterExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/cluster/ClusterExecutor.java index 3dde5aa..db0f574 100644 --- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/cluster/ClusterExecutor.java +++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/cluster/ClusterExecutor.java @@ -61,20 +61,17 @@ public class ClusterExecutor extends AbstractExecutor { StringBuilder strArgs = new StringBuilder(); args.forEach(x -> strArgs.append(new String(x)).append(" ")); - logger.info("CLUSTER args: {}", strArgs); - - RedisResponse response; switch (subCommand.toLowerCase()) { - case "slots": { - response = getSlots(context); - break; - } + case "info": + return getInfo(context); + case "nodes": + return getNodes(context); + case "slots": + return getSlots(context); default: { - response = RedisResponse.error(ERROR_UNKNOWN_COMMAND); + return RedisResponse.error(ERROR_UNKNOWN_COMMAND); } } - - return response; } @SuppressWarnings("unchecked") @@ -142,4 +139,24 @@ public class ClusterExecutor extends AbstractExecutor { return RedisResponse.array(slots); } + + private RedisResponse getNodes(ExecutionHandlerContext ctx) { + return RedisResponse.error("not yet!"); + } + + private RedisResponse getInfo(ExecutionHandlerContext ctx) { + return RedisResponse.bulkString( + "cluster_state:ok\r\n" + + "cluster_slots_assigned:16384\r\n" + + "cluster_slots_ok:16384\r\n" + + "cluster_slots_pfail:0\r\n" + + "cluster_slots_fail:0\r\n" + + "cluster_known_nodes:6\r\n" + + "cluster_size:3\r\n" + + "cluster_current_epoch:6\r\n" + + "cluster_my_epoch:2\r\n" + + "cluster_stats_messages_sent:1483972\r\n" + + "cluster_stats_messages_received:1483968\r\n" + ); + } }
