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"
+    );
+  }
 }

Reply via email to