package com.alibaba.rocketmq.namesrv;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Random;
import com.alibaba.rocketmq.common.namesrv.TopicRuntimeData;
import com.alibaba.rocketmq.common.protocol.route.BrokerData;
import com.alibaba.rocketmq.common.protocol.route.QueueData;
/**
* @auther lansheng.zj@taobao.com
*/
public class DataUtils {
public static TopicRuntimeData createSpecific1() {
TopicRuntimeData data = new TopicRuntimeData();
data.getTopicOrderConfs().put("topic.num.topic-1", "105:4;106:4");
data.getTopicOrderConfs().put("topic.num.andor-applye-test", "105:4;106:4");
data.getBrokerList().add("10.23.12.12:8123");
data.getBrokerList().add("10.23.12.13:8123");
data.getBrokerList().add("10.23.12.14:8123");
data.getBrokerList().add("10.23.12.15:8123");
return data;
}
public static TopicRuntimeData createSpecific2() {
TopicRuntimeData data = new TopicRuntimeData();
data.getTopicOrderConfs().put("topic.num.topic-1", "105:4;106:4");
data.getTopicOrderConfs().put("topic.num.andor-applye-test", "105:4;106:4");
data.getBrokerList().add("10.23.12.12:8123");
data.getBrokerList().add("10.23.12.13:8123");
data.getBrokerList().add("10.23.12.100:8123");
data.getBrokerList().add("10.23.12.101:8123");
return data;
}
public static TopicRuntimeData createExpect() {
TopicRuntimeData data = new TopicRuntimeData();
data.getTopicOrderConfs().put("topic.num.topic-1", "105:4;106:4");
data.getTopicOrderConfs().put("topic.num.andor-applye-test", "105:4;106:4");
data.getBrokerList().add("10.23.12.12:8123");
data.getBrokerList().add("10.23.12.13:8123");
data.getBrokerList().add("10.23.12.14:8123");
data.getBrokerList().add("10.23.12.15:8123");
data.getBrokerList().add("10.23.12.100:8123");
data.getBrokerList().add("10.23.12.101:8123");
return data;
}
public static TopicRuntimeData createOne() {
TopicRuntimeData data = new TopicRuntimeData();
QueueData queueData1 = new QueueData();
queueData1.setBrokerName("broker-1");
queueData1.setPerm(4);
queueData1.setReadQueueNums(4);
queueData1.setWriteQueueNums(4);
List<QueueData> queueDatas1 = new ArrayList<QueueData>();
queueDatas1.add(queueData1);
List<QueueData> queueDatas2 = new ArrayList<QueueData>();
queueDatas2.add(queueData1);
data.getTopicBrokers().put("topic-1", queueDatas1);
data.getTopicBrokers().put("topic-2", queueDatas2);
data.getTopicOrderConfs().put("topic.num.topic-1", "105:4;106:4");
data.getTopicOrderConfs().put("topic.num.andor-applye-test", "105:4;106:4");
BrokerData broker1 = new BrokerData();
broker1.setBrokerName("broker-1");
HashMap<Long, String> brokerAddrs1 = new HashMap<Long, String>();
brokerAddrs1.put(0L, "10.23.12.12:8123");
broker1.setBrokerAddrs(brokerAddrs1);
data.getBrokers().put("broker-1", broker1);
data.getBrokerList().add("10.23.12.12:8123");
data.getBrokerList().add("10.23.12.13:8123");
data.getBrokerList().add("10.23.12.14:8123");
data.getBrokerList().add("10.23.12.15:8123");
return data;
}
public static TopicRuntimeData create() {
TopicRuntimeData data = new TopicRuntimeData();
QueueData queueData1 = new QueueData();
queueData1.setBrokerName("broker-1");
queueData1.setPerm(4);
queueData1.setReadQueueNums(4);
queueData1.setWriteQueueNums(4);
QueueData queueData2 = new QueueData();
queueData2.setBrokerName("broker-2");
queueData2.setPerm(4);
queueData2.setReadQueueNums(4);
queueData2.setWriteQueueNums(4);
QueueData queueData3 = new QueueData();
queueData3.setBrokerName("broker-3");
queueData3.setPerm(4);
queueData3.setReadQueueNums(4);
queueData3.setWriteQueueNums(4);
QueueData queueData4 = new QueueData();
queueData4.setBrokerName("broker-4");
queueData4.setPerm(4);
queueData4.setReadQueueNums(4);
queueData4.setWriteQueueNums(4);
List<QueueData> queueDatas1 = new ArrayList<QueueData>();
queueDatas1.add(queueData1);
queueDatas1.add(queueData2);
List<QueueData> queueDatas2 = new ArrayList<QueueData>();
queueDatas2.add(queueData1);
queueDatas2.add(queueData3);
queueDatas2.add(queueData4);
data.getTopicBrokers().put("topic-1", queueDatas1);
data.getTopicBrokers().put("topic-2", queueDatas2);
data.getTopicOrderConfs().put("topic.num.topic-1", "105:4;106:4");
data.getTopicOrderConfs().put("topic.num.andor-applye-test", "105:4;106:4");
BrokerData broker1 = new BrokerData();
broker1.setBrokerName("broker-1");
HashMap<Long, String> brokerAddrs1 = new HashMap<Long, String>();
brokerAddrs1.put(0L, "10.23.12.12:8123");
broker1.setBrokerAddrs(brokerAddrs1);
BrokerData broker2 = new BrokerData();
broker2.setBrokerName("broker-2");
HashMap<Long, String> brokerAddrs2 = new HashMap<Long, String>();
brokerAddrs2.put(0L, "10.23.12.13:8123");
broker2.setBrokerAddrs(brokerAddrs2);
BrokerData broker3 = new BrokerData();
broker3.setBrokerName("broker-3");
HashMap<Long, String> brokerAddrs3 = new HashMap<Long, String>();
brokerAddrs3.put(0L, "10.23.12.14:8123");
broker3.setBrokerAddrs(brokerAddrs3);
BrokerData broker4 = new BrokerData();
broker4.setBrokerName("broker-4");
HashMap<Long, String> brokerAddrs4 = new HashMap<Long, String>();
// brokerAddrs4.put(0L, "10.23.12.15:8123");
broker4.setBrokerAddrs(brokerAddrs4);
data.getBrokers().put("broker-1", broker1);
data.getBrokers().put("broker-2", broker2);
data.getBrokers().put("broker-3", broker3);
data.getBrokers().put("broker-4", broker4);
data.getBrokerList().add("10.23.12.12:8123");
data.getBrokerList().add("10.23.12.13:8123");
data.getBrokerList().add("10.23.12.14:8123");
data.getBrokerList().add("10.23.12.15:8123");
return data;
}
public static QueueData createQueueData() {
QueueData queueData1 = new QueueData();
queueData1.setBrokerName(createBrokerName());
queueData1.setPerm(4);
queueData1.setReadQueueNums(4);
queueData1.setWriteQueueNums(4);
return queueData1;
}
public static String createBrokerName() {
return "broker-" + randomInt(1000);
}
public static String createAddr() {
return "" + randomInt(256) + "." + randomInt(256) + "." + randomInt(256) + "." + randomInt(256)
+ ":8123";
}
public static String createTopic() {
return "topic-" + randomInt(1000);
}
public static int randomInt(int ratio) {
Random random = new Random(System.currentTimeMillis());
return Math.abs(random.nextInt()) % ratio;
}
public static <T, V> void hackField(T target, V value, String fieldName) throws Exception {
Field field = target.getClass().getDeclaredField(fieldName);
field.setAccessible(true);
field.set(target, value);
}
public static <T, F> F getField(T target, Class<F> fieldClazz, String fieldName)
throws Exception {
Field field = target.getClass().getDeclaredField(fieldName);
field.setAccessible(true);
F fieldObj = (F)field.get(target);
return fieldObj;
}
}