package com.sohu.cache.stats.app;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import java.util.Map.Entry;
import javax.annotation.Resource;
import org.junit.Test;
import com.sohu.cache.constant.AppDataMigrateEnum;
import com.sohu.cache.constant.AppDataMigrateResult;
import com.sohu.cache.constant.RedisMigrateToolConstant;
import com.sohu.cache.stats.app.impl.AppDataMigrateCenterImpl;
import com.sohu.cache.util.ConstUtils;
import com.sohu.test.BaseTest;
/**
* 测试迁移数据
*
* @author leifu
* @Date 2016-6-8
* @Time 下午8:53:19
*/
public class AppDataMigrateCenterTest extends BaseTest {
@Resource(name = "appDataMigrateCenter")
private AppDataMigrateCenterImpl appDataMigrateCenter;
private final static String REDIS_SOURCE_PASS = "redisSourcePassWord";
private final static String REDIS_TARGET_PASS = "redisTargetPassWord";
@Test
public void testCheckMigrateMachine() {
// 1.机器是否在列表里(已测)
// 2.是否正确安装redis-migrate-tool(已测)
// 3.是否存在正在执行的redis-migrate-tool(已测)
String migrateMachineIp = "127.0.0.1";
AppDataMigrateEnum sourceRedisMigrateEnum = AppDataMigrateEnum.REDIS_NODE;
String sourceServers = "127.0.0.1:6379";
AppDataMigrateEnum targetRedisMigrateEnum = AppDataMigrateEnum.REDIS_CLUSTER_NODE;
String targetServers = "127.0.0.1:6380";
AppDataMigrateResult redisMigrateResult = appDataMigrateCenter.check(migrateMachineIp, sourceRedisMigrateEnum,
sourceServers, targetRedisMigrateEnum, targetServers, REDIS_SOURCE_PASS, REDIS_TARGET_PASS);
logger.info("===============testCheck start=================");
logger.info(redisMigrateResult.toString());
logger.info("===============testCheck end=================");
}
@Test
public void testCheckServers() {
// 1. 实例列表格式问题(已测)
// 2.1 rdb文件是否存在(已测)
// 2.2 redis节点是否存活
String migrateMachineIp = "127.0.0.1";
// RedisMigrateEnum sourceRedisMigrateEnum =
// RedisMigrateEnum.REDIS_NODE;
// String sourceServers = "127.0.0.1:6388";
AppDataMigrateEnum sourceRedisMigrateEnum = AppDataMigrateEnum.RDB_FILE;
String sourceServers = "/opt/soft/redis/data/dump-6380.rdb";
AppDataMigrateEnum targetRedisMigrateEnum = AppDataMigrateEnum.REDIS_CLUSTER_NODE;
String targetServers = "127.0.0.1:6380";
AppDataMigrateResult redisMigrateResult = appDataMigrateCenter.check(migrateMachineIp, sourceRedisMigrateEnum,
sourceServers, targetRedisMigrateEnum, targetServers, REDIS_SOURCE_PASS, REDIS_TARGET_PASS);
logger.info("===============testCheck start=================");
logger.info(redisMigrateResult.toString());
logger.info("===============testCheck end=================");
}
private String getConfigContent() {
AppDataMigrateEnum sourceRedisMigrateEnum = AppDataMigrateEnum.REDIS_NODE;
String sourceServers = "127.0.0.1:6379";
AppDataMigrateEnum targetRedisMigrateEnum = AppDataMigrateEnum.REDIS_CLUSTER_NODE;
String targetServers = "127.0.0.1:6380";
int port = ConstUtils.REDIS_MIGRATE_TOOL_PORT;
String configConent = appDataMigrateCenter.generateConfig(port, sourceRedisMigrateEnum, sourceServers,
targetRedisMigrateEnum, targetServers, REDIS_SOURCE_PASS, REDIS_TARGET_PASS);
return configConent;
}
@Test
public void testConfigFile() {
String configConent = getConfigContent();
logger.info("===============testCheck start=================");
logger.info(configConent);
logger.info("===============testCheck end=================");
}
@Test
public void testCreateRemoteFile() {
String fileName = "rmt-" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".conf";
String configConent = getConfigContent();
String migrateMachineIp = "127.0.0.1";
appDataMigrateCenter.createRemoteFile(migrateMachineIp, fileName, configConent);
}
@Test
public void testMigrateNode() {
String migrateMachineIp = "127.0.0.1";
AppDataMigrateEnum sourceRedisMigrateEnum = AppDataMigrateEnum.REDIS_NODE;
String sourceServers = "127.0.0.1:6379";
AppDataMigrateEnum targetRedisMigrateEnum = AppDataMigrateEnum.REDIS_CLUSTER_NODE;
String targetServers = "127.0.0.1:6380";
boolean isMigrate = appDataMigrateCenter.migrate(migrateMachineIp, sourceRedisMigrateEnum, sourceServers,
targetRedisMigrateEnum,
targetServers, 10000, 20000, REDIS_SOURCE_PASS, REDIS_TARGET_PASS, 30000);
logger.warn("============testMigrate start=============");
logger.warn("isMigrate:{}", isMigrate);
logger.warn("============testMigrate end=============");
}
@Test
public void testMigrateRDB() {
String migrateMachineIp = "127.0.0.1";
AppDataMigrateEnum sourceRedisMigrateEnum = AppDataMigrateEnum.RDB_FILE;
String sourceServers = "/opt/soft/redis/data/dump-6379.rdb.back";
AppDataMigrateEnum targetRedisMigrateEnum = AppDataMigrateEnum.REDIS_NODE;
String targetServers = "127.0.0.1:6380";
boolean isMigrate = appDataMigrateCenter.migrate(migrateMachineIp, sourceRedisMigrateEnum, sourceServers,
targetRedisMigrateEnum,
targetServers, 10000, 20000, REDIS_SOURCE_PASS, REDIS_TARGET_PASS, 30000);
logger.warn("============testMigrate start=============");
logger.warn("isMigrate:{}", isMigrate);
logger.warn("============testMigrate end=============");
}
@Test
public void testShowMiragteToolProcess() {
long id = 1;
Map<RedisMigrateToolConstant, Map<String, Object>> map = appDataMigrateCenter.showMiragteToolProcess(id);
logger.warn("============testShowMiragteToolProcess start=============");
for(Entry<RedisMigrateToolConstant, Map<String, Object>> entry : map.entrySet()) {
logger.info(entry.getKey().getValue());
for(Entry<String, Object> entry2 : entry.getValue().entrySet()) {
logger.info("\t" + entry2.getKey() + "->" + entry2.getValue());
}
}
logger.warn("============testShowMiragteToolProcess end=============");
}
}