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 b3cb1b074 [test] add RedisClusterCollectImplTest (#1789)
b3cb1b074 is described below
commit b3cb1b074c6907f98d94f3e73b79f78499928d93
Author: crossoverJie <[email protected]>
AuthorDate: Mon Apr 22 17:26:59 2024 +0800
[test] add RedisClusterCollectImplTest (#1789)
---
.../collect/redis/RedisClusterCollectImplTest.java | 104 ++++++++++++++++++---
1 file changed, 92 insertions(+), 12 deletions(-)
diff --git
a/collector/src/test/java/org/apache/hertzbeat/collector/collect/redis/RedisClusterCollectImplTest.java
b/collector/src/test/java/org/apache/hertzbeat/collector/collect/redis/RedisClusterCollectImplTest.java
index 29b9628e2..ebad258ca 100644
---
a/collector/src/test/java/org/apache/hertzbeat/collector/collect/redis/RedisClusterCollectImplTest.java
+++
b/collector/src/test/java/org/apache/hertzbeat/collector/collect/redis/RedisClusterCollectImplTest.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.RedisURI;
+import io.lettuce.core.cluster.RedisClusterClient;
+import io.lettuce.core.cluster.api.StatefulRedisClusterConnection;
+import io.lettuce.core.cluster.api.sync.RedisAdvancedClusterCommands;
+import io.lettuce.core.cluster.models.partitions.Partitions;
+import io.lettuce.core.cluster.models.partitions.RedisClusterNode;
+import io.lettuce.core.resource.ClientResources;
import java.util.ArrayList;
import java.util.List;
import org.apache.hertzbeat.common.entity.job.Metrics;
@@ -27,6 +36,7 @@ import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
+import org.mockito.Mockito;
import org.mockito.junit.jupiter.MockitoExtension;
/**
@@ -36,33 +46,103 @@ import org.mockito.junit.jupiter.MockitoExtension;
*/
@ExtendWith(MockitoExtension.class)
public class RedisClusterCollectImplTest {
+
+ @InjectMocks
+ private RedisCommonCollectImpl redisClusterCollect;
+
@Mock
- private RedisProtocol redisProtocol;
+ private StatefulRedisClusterConnection<String, String> connection;
- @InjectMocks
- private RedisCommonCollectImpl redisClusterCollect;
+ @Mock
+ private RedisAdvancedClusterCommands<String, String> cmd;
+
+ @Mock
+ private RedisClusterClient client;
@BeforeEach
void setUp() {
- redisProtocol = RedisProtocol.builder()
- .host("192.168.77.100")
- .port("6380")
- .build();
}
- @Test
- void getInstance() {
- }
+
@Test
- void collect() {
+ void testCollect(){
+ RedisProtocol redisProtocol = RedisProtocol.builder()
+ .host("127.0.0.1")
+ .port("6379")
+ .pattern("3")
+ .build();
+ String infoTemp = """
+ # Cluster
+ cluster_enabled:%s
+ """;
+ String clusterEnabled = "1";
+ String info = String.format(infoTemp, clusterEnabled);
+
+ String clusterKnownNodes = "2";
+ String clusterInfoTemp = """
+ cluster_slots_fail:0
+ cluster_known_nodes:%s
+ """;
+ String clusterInfo = String.format(clusterInfoTemp, clusterKnownNodes);
CollectRep.MetricsData.Builder builder =
CollectRep.MetricsData.newBuilder();
List<String> aliasField = new ArrayList<>();
- aliasField.add("used_cpu_sys");
+ aliasField.add("cluster_known_nodes");
+ aliasField.add("cluster_enabled");
+ aliasField.add("identity");
+ List<Metrics.Field> fields = new ArrayList<>();
+ fields.add(Metrics.Field.builder()
+ .field("cluster_enabled")
+ .type(TYPE_STRING)
+ .build());
+ fields.add(Metrics.Field.builder()
+ .field("cluster_known_nodes")
+ .type(TYPE_STRING)
+ .build());
+
Metrics metrics = new Metrics();
+ metrics.setName("cluster");
metrics.setRedis(redisProtocol);
metrics.setAliasFields(aliasField);
+ metrics.setFields(fields);
+
+
+
Mockito.mockStatic(RedisClusterClient.class).when(()->RedisClusterClient.create(Mockito.any(ClientResources.class),
+ Mockito.any(RedisURI.class))).thenReturn(client);
+ Mockito.when(client.connect()).thenReturn(connection);
+
+ Partitions partitions = new Partitions();
+ RedisClusterNode node = new RedisClusterNode();
+ String uri1 = "127.0.0.1:6379";
+ node.setUri(RedisURI.create("redis://" + uri1));
+ partitions.add(node);
+ RedisClusterNode node2 = new RedisClusterNode();
+ String uri2 = "127.0.0.2:6379";
+ node2.setUri(RedisURI.create("redis://" + uri2));
+ partitions.add(node2);
+
+ Mockito.when(connection.getPartitions()).thenReturn(partitions);
+
+ Mockito.when(connection.sync()).thenReturn(cmd);
+ Mockito.when(cmd.info(metrics.getName())).thenReturn(info);
+ Mockito.when(cmd.clusterInfo()).thenReturn(clusterInfo);
+
redisClusterCollect.collect(builder, 1L, "test", metrics);
+
+ assertEquals(builder.getCode(), CollectRep.Code.SUCCESS);
+ assertEquals(builder.getValuesCount(), 2);
+ for (int i = 0; i < builder.getValuesList().size(); i++) {
+ CollectRep.ValueRow row = builder.getValues(i);
+ assertEquals(row.getColumnsCount(), 3);
+ assertEquals(row.getColumns(0), clusterKnownNodes);
+ assertEquals(row.getColumns(1), clusterEnabled);
+ if (i == 0) {
+ assertEquals(row.getColumns(2), uri1);
+ } else {
+ assertEquals(row.getColumns(2), uri2);
+ }
+ }
+
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]