Search in sources :

Example 1 with HaNode

use of com.cubrid.cubridmanager.core.cubrid.service.model.HaNode in project cubrid-manager by CUBRID.

the class HaShardManagerTest method testShard.

public void testShard() {
    HaShardManager manager = HaShardManager.getInstance();
    assertNotNull(manager);
    HaNode replicaNode = new HaNode(NodeType.REPLICA);
    replicaNode.setIp(replicaIp);
    replicaNode.setServiceName(haServiceName);
    ShardNode shardNode = new ShardNode();
    shardNode.setIp(shardIp);
    shardNode.setServiceName(shardServiceName);
    BrokerNode brokerNode = new BrokerNode();
    brokerNode.setIp(brokerIp);
    brokerNode.setHostName(brokerHost);
    brokerNode.setServiceName(haServiceName);
    manager.add(brokerNode);
    manager.add(shardNode);
    manager.add(replicaNode);
    List<NodeInfo> nodeList = manager.getNodeList();
    assertTrue(nodeList.contains(replicaNode));
    assertTrue(nodeList.contains(shardNode));
    assertTrue(nodeList.contains(brokerNode));
    int index = manager.find(brokerNode);
    assertEquals(nodeList.get(index), brokerNode);
    BrokerNode brokerNode2 = new BrokerNode();
    String brokerIp2 = "127.0.0.1";
    brokerNode2.setIp(brokerIp2);
    assertTrue(manager.find(brokerNode2) == -1);
    assertEquals(manager.findByIp(shardIp), shardNode);
    assertNull(manager.findByIp(brokerIp2));
    List<NodeInfo> haGroups = manager.findGroupByIp(replicaIp);
    assertTrue(haGroups.size() == 2);
    assertTrue(haGroups.contains(replicaNode));
    assertTrue(haGroups.contains(brokerNode));
    assertFalse(haGroups.contains(shardNode));
    List<NodeInfo> shardGroups = manager.findGroupByServiceName(shardServiceName);
    assertTrue(shardGroups.size() == 1);
    assertTrue(shardGroups.contains(shardNode));
    assertFalse(shardGroups.contains(replicaNode));
    List<NodeInfo> haList = manager.getHaNodes();
    assertTrue(haList.size() == 1);
    assertTrue(haList.contains(replicaNode));
    assertFalse(haList.contains(brokerNode));
    List<NodeInfo> shardList = manager.getShardNodes();
    assertTrue(shardList.size() == 1);
    assertTrue(shardList.contains(shardNode));
    assertFalse(shardList.contains(brokerNode));
    List<NodeInfo> brokerList = manager.getBrokerNodes();
    assertTrue(brokerList.size() == 1);
    assertTrue(brokerList.contains(brokerNode));
    assertFalse(brokerList.contains(shardNode));
    int haIndex = manager.find(replicaNode);
    int shardIndex = manager.find(shardNode);
    assertTrue(haIndex > shardIndex);
    manager.sort();
    int haIndex2 = manager.find(replicaNode);
    int shardIndex2 = manager.find(shardNode);
    assertTrue(haIndex2 < shardIndex2);
    //test remove method
    manager.remove(shardNode);
    assertTrue(manager.find(shardNode) == -1);
    assertNull(manager.findByIp(shardIp));
    manager.add(shardNode);
    manager.remove(brokerNode);
    testRegisterBrokerHostInHaShard(manager);
}
Also used : BrokerNode(com.cubrid.cubridmanager.core.cubrid.service.model.BrokerNode) HaNode(com.cubrid.cubridmanager.core.cubrid.service.model.HaNode) ShardNode(com.cubrid.cubridmanager.core.cubrid.service.model.ShardNode) NodeInfo(com.cubrid.cubridmanager.core.cubrid.service.model.NodeInfo)

Example 2 with HaNode

use of com.cubrid.cubridmanager.core.cubrid.service.model.HaNode in project cubrid-manager by CUBRID.

the class HaShardManagerTest method testHa.

// test ha/shard separately because of use only 3 node to install cubrid
// we suppose that: HA/shard node on the same machine
public void testHa() {
    HaShardManager manager = HaShardManager.getInstance();
    assertNotNull(manager);
    HaNode haNode = new HaNode(NodeType.SLAVE);
    haNode.setIp(haIp);
    haNode.setHostName(haHost);
    haNode.setServiceName(haServiceName);
    HaNode replicaNode = new HaNode(NodeType.REPLICA);
    replicaNode.setIp(replicaIp);
    replicaNode.setServiceName(haServiceName);
    BrokerNode brokerNode = new BrokerNode();
    brokerNode.setIp(brokerIp);
    brokerNode.setHostName(brokerHost);
    brokerNode.setServiceName(haServiceName);
    manager.add(brokerNode);
    manager.add(replicaNode);
    manager.add(haNode);
    List<NodeInfo> nodeList = manager.getNodeList();
    assertTrue(nodeList.contains(haNode));
    assertTrue(nodeList.contains(replicaNode));
    assertTrue(nodeList.contains(brokerNode));
    int index = manager.find(brokerNode);
    assertEquals(nodeList.get(index), brokerNode);
    BrokerNode brokerNode2 = new BrokerNode();
    String brokerIp2 = "127.0.0.1";
    brokerNode2.setIp(brokerIp2);
    assertTrue(manager.find(brokerNode2) == -1);
    assertEquals(manager.findByIp(brokerIp), brokerNode);
    assertNull(manager.findByIp(brokerIp2));
    assertEquals(manager.findByHostName(haHost), haNode);
    assertNull(manager.findByHostName("localhost"));
    List<NodeInfo> haGroups = manager.findGroupByIp(haIp);
    assertTrue(haGroups.size() == 3);
    assertTrue(haGroups.contains(haNode));
    assertTrue(haGroups.contains(replicaNode));
    assertTrue(haGroups.contains(brokerNode));
    List<NodeInfo> haGroups2 = manager.findGroupByHostName(haHost);
    assertTrue(haGroups2.size() == 3);
    assertTrue(haGroups2.contains(haNode));
    assertTrue(haGroups2.contains(replicaNode));
    assertTrue(haGroups2.contains(brokerNode));
    List<NodeInfo> shardGroups = manager.findGroupByServiceName(shardServiceName);
    assertTrue(shardGroups.size() == 0);
    List<NodeInfo> haList = manager.getHaNodes();
    assertTrue(haList.size() == 2);
    assertTrue(haList.contains(haNode));
    assertTrue(haList.contains(replicaNode));
    assertFalse(haList.contains(brokerNode));
    List<NodeInfo> shardList = manager.getShardNodes();
    assertTrue(shardList.size() == 0);
    List<NodeInfo> brokerList = manager.getBrokerNodes();
    assertTrue(brokerList.size() == 1);
    assertTrue(brokerList.contains(brokerNode));
    assertFalse(brokerList.contains(haNode));
    int haIndex = manager.find(haNode);
    int brokerIndex = manager.find(brokerNode);
    assertTrue(haIndex > brokerIndex);
    manager.sort();
    int haIndex2 = manager.find(haNode);
    int brokerIndex2 = manager.find(brokerNode);
    assertTrue(haIndex2 < brokerIndex2);
    //test remove method
    manager.remove(brokerNode);
    assertTrue(manager.find(brokerNode) == -1);
    assertNull(manager.findByIp(brokerIp));
    testRegisterBrokerHostInHaShard(manager);
}
Also used : BrokerNode(com.cubrid.cubridmanager.core.cubrid.service.model.BrokerNode) HaNode(com.cubrid.cubridmanager.core.cubrid.service.model.HaNode) NodeInfo(com.cubrid.cubridmanager.core.cubrid.service.model.NodeInfo)

Example 3 with HaNode

use of com.cubrid.cubridmanager.core.cubrid.service.model.HaNode in project cubrid-manager by CUBRID.

the class HaShardDemo method getHaNodeInfo.

protected NodeInfo getHaNodeInfo(ServerInfo serverInfo, String haMode) {
    //"heartbeatlist"
    GetHeartbeatNodeInfoTask getHeartbeatNodeInfoTask = new GetHeartbeatNodeInfoTask(serverInfo);
    getHeartbeatNodeInfoTask.setAllDb(true);
    getHeartbeatNodeInfoTask.execute();
    if (!getHeartbeatNodeInfoTask.isSuccess()) {
        return null;
    }
    String status = getHeartbeatNodeInfoTask.getCurrentHostStatus();
    NodeType type = CMServiceAnalysisUtil.convertHaStatToNodeType(status);
    HaNode nodeInfo = null;
    if (type != NodeType.NORMAL) {
        nodeInfo = new HaNode(type);
        nodeInfo.buildStatus("ON");
        nodeInfo.setHostStatusInfoList(getHeartbeatNodeInfoTask.getHAHostStatusList());
    } else if ("on".equals(haMode)) {
        nodeInfo = new HaNode(NodeType.SLAVE);
        nodeInfo.buildStatus("OFF");
    } else if ("replica".equals(haMode)) {
        nodeInfo = new HaNode(NodeType.REPLICA);
        nodeInfo.buildStatus("OFF");
    }
    //"getallsysparam"/"cubrid_ha.conf"
    GetHAConfParameterTask getHAConfParameterTask = new GetHAConfParameterTask(serverInfo);
    getHAConfParameterTask.execute();
    BrokerInfos brokerInfos = new BrokerInfos();
    GetBrokerStatusInfosTask<BrokerInfos> getBrokerStatusInfosTask = new GetBrokerStatusInfosTask<BrokerInfos>(serverInfo, CommonSendMsg.getGetBrokerStatusItems(), brokerInfos);
    getBrokerStatusInfosTask.execute();
    if (!getHAConfParameterTask.isSuccess() || !getBrokerStatusInfosTask.isSuccess()) {
        return null;
    }
    brokerInfos = getBrokerStatusInfosTask.getResultModel();
    if (brokerInfos != null) {
        nodeInfo.setBrokerInfoList(brokerInfos.getBorkerInfoList());
    }
    Map<String, Map<String, String>> haConfParas = getHAConfParameterTask.getConfParameters();
    Map<String, String> haCommonConf = haConfParas.get("[common]");
    //		String haNodeStr = haCommonConf.get("ha_node_list").substring("cubrid@".length());
    //		List<String> haNodeList = Arrays.asList(haNodeStr.split(":"));
    //		String replicaStr = haCommonConf.get("ha_replica_list");
    //		List<String> replicaNodeList = Arrays.asList(replicaStr.substring("cubrid@".length()).split(":"));
    String dbList = haCommonConf.get("ha_db_list");
    if (dbList.indexOf(",") > -1) {
        String[] dbAr = dbList.split(",");
        for (String s : dbAr) {
            if (s.trim().length() > 0) {
                nodeInfo.addDatabase(s);
            }
        }
    } else {
        nodeInfo.addDatabase(dbList);
    }
    return nodeInfo;
}
Also used : HaNode(com.cubrid.cubridmanager.core.cubrid.service.model.HaNode) BrokerInfos(com.cubrid.cubridmanager.core.broker.model.BrokerInfos) NodeType(com.cubrid.cubridmanager.core.cubrid.service.model.NodeType) GetBrokerStatusInfosTask(com.cubrid.cubridmanager.core.broker.task.GetBrokerStatusInfosTask) GetHAConfParameterTask(com.cubrid.cubridmanager.core.common.task.GetHAConfParameterTask) Map(java.util.Map) GetHeartbeatNodeInfoTask(com.cubrid.cubridmanager.core.mondashboard.task.GetHeartbeatNodeInfoTask)

Example 4 with HaNode

use of com.cubrid.cubridmanager.core.cubrid.service.model.HaNode in project cubrid-manager by CUBRID.

the class HaShardManagerTest method testRegisterBrokerHostInHaShard.

public void testRegisterBrokerHostInHaShard(HaShardManager manager) {
    try {
        HaShardDemo demo = new HaShardDemo();
        demo.registerServiceAndBuildInfo(brokerIp, brokerCmPort, brokerCmUser, brokerCmPass, haServiceName, brokerConnName, brokerHost);
        manager.registerBrokerHostInHaShard();
        BrokerNode brokerNode = (BrokerNode) manager.findByIp(brokerIp);
        Set<String> hostSet = brokerNode.getHostSet();
        if (hostSet != null && hostSet.contains(haHost)) {
            HaNode haNode = (HaNode) manager.findByHostName(haHost);
            assertTrue(haNode.getRemoteBrokers().contains(brokerNode));
        }
    } finally {
        ServerInfo serverInfo = ServerManager.getInstance().getServer(brokerIp, brokerCmPort, brokerCmUser);
        if (serverInfo != null) {
            ServerManager.getInstance().removeServer(serverInfo.getHostAddress(), serverInfo.getHostMonPort(), serverInfo.getUserName());
        }
    }
}
Also used : BrokerNode(com.cubrid.cubridmanager.core.cubrid.service.model.BrokerNode) HaNode(com.cubrid.cubridmanager.core.cubrid.service.model.HaNode) ServerInfo(com.cubrid.cubridmanager.core.common.model.ServerInfo)

Aggregations

HaNode (com.cubrid.cubridmanager.core.cubrid.service.model.HaNode)4 BrokerNode (com.cubrid.cubridmanager.core.cubrid.service.model.BrokerNode)3 NodeInfo (com.cubrid.cubridmanager.core.cubrid.service.model.NodeInfo)2 BrokerInfos (com.cubrid.cubridmanager.core.broker.model.BrokerInfos)1 GetBrokerStatusInfosTask (com.cubrid.cubridmanager.core.broker.task.GetBrokerStatusInfosTask)1 ServerInfo (com.cubrid.cubridmanager.core.common.model.ServerInfo)1 GetHAConfParameterTask (com.cubrid.cubridmanager.core.common.task.GetHAConfParameterTask)1 NodeType (com.cubrid.cubridmanager.core.cubrid.service.model.NodeType)1 ShardNode (com.cubrid.cubridmanager.core.cubrid.service.model.ShardNode)1 GetHeartbeatNodeInfoTask (com.cubrid.cubridmanager.core.mondashboard.task.GetHeartbeatNodeInfoTask)1 Map (java.util.Map)1