RedisInfo.java

package io.redis.test.utils;

import java.util.HashMap;
import java.util.Map;

public class RedisInfo {
    private final Map<String, String> infoMap;

    public RedisInfo() {
        this.infoMap = new HashMap<>();
    }

    public void setField(String key, String value) {
        infoMap.put(key, value);
    }

    public String getField(String key) {
        return infoMap.get(key);
    }

    public String getRedisVersion() {
        return infoMap.get("redis_version");
    }

    public String getOs() {
        return infoMap.get("os");
    }

    public String getMode() {
        return infoMap.get("redis_mode");
    }

    public String getPorts() {
        return infoMap.get("tcp_port"); // Assuming "tcp_port" is the key for ports
    }

    @Override
    public String toString() {
        return "RedisInfo{" +
                "infoMap=" + infoMap +
                '}';
    }

    public static RedisInfo parseInfoServer(String infoOutput) {
        RedisInfo redisInfo = new RedisInfo();

        String[] lines = infoOutput.split("\n");

        for (String line : lines) {
            // Only parse lines that contain a colon (indicating a key-value pair)
            if (line.contains(":")) {
                String[] parts = line.split(":", 2);
                if (parts.length == 2) {
                    redisInfo.setField(parts[0].trim(), parts[1].trim());
                }
            }
        }

        // You can still check for required fields if necessary
        // Example: Ensure that specific fields are set
        if (redisInfo.getField("redis_version") == null || redisInfo.getField("redis_mode") == null) {
            throw new IllegalArgumentException("Missing required fields in Redis server info.");
        }

        return redisInfo;
    }
}