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

gongchao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hertzbeat.git


The following commit(s) were added to refs/heads/master by this push:
     new f7fb2356c [test] Add RedisSingleCollectImplTest (#1784)
f7fb2356c is described below

commit f7fb2356c785419f92ff057554fd6c1586d2feda
Author: crossoverJie <[email protected]>
AuthorDate: Fri Apr 19 23:35:36 2024 +0800

    [test] Add RedisSingleCollectImplTest (#1784)
---
 .../collect/redis/RedisSingleCollectImplTest.java  | 73 +++++++++++++++++++++-
 1 file changed, 70 insertions(+), 3 deletions(-)

diff --git 
a/collector/src/test/java/org/apache/hertzbeat/collector/collect/redis/RedisSingleCollectImplTest.java
 
b/collector/src/test/java/org/apache/hertzbeat/collector/collect/redis/RedisSingleCollectImplTest.java
index b5351be84..7effd0483 100644
--- 
a/collector/src/test/java/org/apache/hertzbeat/collector/collect/redis/RedisSingleCollectImplTest.java
+++ 
b/collector/src/test/java/org/apache/hertzbeat/collector/collect/redis/RedisSingleCollectImplTest.java
@@ -17,6 +17,15 @@
 
 package org.apache.hertzbeat.collector.collect.redis;
 
+import static 
org.apache.hertzbeat.common.constants.CommonConstants.TYPE_STRING;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import io.lettuce.core.RedisClient;
+import io.lettuce.core.RedisURI;
+import io.lettuce.core.api.StatefulRedisConnection;
+import io.lettuce.core.api.sync.RedisCommands;
+import io.lettuce.core.resource.ClientResources;
+import java.util.ArrayList;
+import java.util.List;
 import org.apache.hertzbeat.common.entity.job.Metrics;
 import org.apache.hertzbeat.common.entity.job.protocol.RedisProtocol;
 import org.apache.hertzbeat.common.entity.message.CollectRep;
@@ -25,11 +34,10 @@ import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
+import org.mockito.MockedStatic;
+import org.mockito.Mockito;
 import org.mockito.junit.jupiter.MockitoExtension;
 
-import java.util.ArrayList;
-import java.util.List;
-
 
 /**
  * Test case for {@link RedisCommonCollectImpl}
@@ -41,6 +49,16 @@ class RedisSingleCollectImplTest {
     @Mock
     private RedisProtocol redisProtocol;
 
+    @Mock
+    private StatefulRedisConnection<String, String> connection;
+
+    @Mock
+    private RedisCommands<String, String> cmd;
+
+    @Mock
+    private RedisClient client;
+
+
     @InjectMocks
     private RedisCommonCollectImpl redisSingleCollect;
 
@@ -67,4 +85,53 @@ class RedisSingleCollectImplTest {
         metrics.setAliasFields(aliasField);
         redisSingleCollect.collect(builder, 1L, "test", metrics);
     }
+
+    @Test
+    void testCollect() {
+        String redisInfoTemplate = """
+                # Server
+                redis_mode:%s
+                redis_version:%s
+                                """;
+        String redisMode = "standalone";
+        String version = "7.2.4";
+        String redisInfo = String.format(redisInfoTemplate, redisMode, 
version);
+
+        CollectRep.MetricsData.Builder builder = 
CollectRep.MetricsData.newBuilder();
+        List<String> aliasField = new ArrayList<>();
+        aliasField.add("redis_mode");
+        aliasField.add("redis_version");
+
+        List<Metrics.Field> fields = new ArrayList<>();
+        fields.add(Metrics.Field.builder()
+                .field("redis_mode")
+                .type(TYPE_STRING)
+                .build());
+        fields.add(Metrics.Field.builder()
+                .field("redis_version")
+                .type(TYPE_STRING)
+                .build());
+
+        Metrics metrics = new Metrics();
+        metrics.setName("server");
+        metrics.setRedis(redisProtocol);
+        metrics.setAliasFields(aliasField);
+        metrics.setFields(fields);
+
+        MockedStatic<RedisClient> clientMockedStatic = 
Mockito.mockStatic(RedisClient.class);
+        clientMockedStatic.when(() -> 
RedisClient.create(Mockito.any(ClientResources.class), 
Mockito.any(RedisURI.class)))
+                        .thenReturn(client);
+
+        Mockito.when(client.connect()).thenReturn(connection);
+        Mockito.when(connection.sync()).thenReturn(cmd);
+        Mockito.when(cmd.info(metrics.getName())).thenReturn(redisInfo);
+
+        redisSingleCollect.collect(builder, 1L, "test", metrics);
+        assertEquals(builder.getCode(), CollectRep.Code.SUCCESS);
+        for (CollectRep.ValueRow row : builder.getValuesList()) {
+            assertEquals(row.getColumnsCount(), 2);
+            assertEquals(row.getColumns(0), redisMode);
+            assertEquals(row.getColumns(1), version);
+        }
+    }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to