1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-06-09 06:41:19 +03:00
mariadb-AlanMologorsky a079a2c944 MCOL-5496: Merge CMAPI code to engine repo.
[add] cmapi code to engine
2023-06-07 10:00:16 +03:00

125 lines
4.6 KiB
Python

import logging
import socket
from cmapi_server.failover_agent import FailoverAgent
from cmapi_server.node_manipulation import add_node, remove_node
from mcs_node_control.models.node_config import NodeConfig
from cmapi_server.test.unittest_global import (
tmp_mcs_config_filename, BaseNodeManipTestCase
)
logging.basicConfig(level='DEBUG')
class TestFailoverAgent(BaseNodeManipTestCase):
def test_activateNodes(self):
self.tmp_files = ('./activate0.xml', './activate1.xml')
hostaddr = socket.gethostbyname(socket.gethostname())
fa = FailoverAgent()
fa.activateNodes(
[self.NEW_NODE_NAME], tmp_mcs_config_filename, self.tmp_files[0],
test_mode=True
)
add_node(
hostaddr, self.tmp_files[0], self.tmp_files[1]
)
nc = NodeConfig()
root = nc.get_current_config_root(self.tmp_files[1])
pm_count = int(root.find('./PrimitiveServers/Count').text)
self.assertEqual(pm_count, 2)
node = root.find('./PMS1/IPAddr')
self.assertEqual(node.text, self.NEW_NODE_NAME)
node = root.find('./pm1_WriteEngineServer/IPAddr')
self.assertEqual(node.text, self.NEW_NODE_NAME)
node = root.find('./PMS2/IPAddr')
self.assertEqual(node.text, hostaddr)
node = root.find('./pm2_WriteEngineServer/IPAddr')
self.assertEqual(node.text, hostaddr)
remove_node(self.NEW_NODE_NAME, self.tmp_files[1], self.tmp_files[1])
def test_deactivateNodes(self):
self.tmp_files = (
'./deactivate0.xml','./deactivate1.xml', './deactivate2.xml'
)
fa = FailoverAgent()
hostname = socket.gethostname()
hostaddr = socket.gethostbyname(hostname)
add_node(
hostaddr, tmp_mcs_config_filename, self.tmp_files[0]
)
fa.activateNodes(
[self.NEW_NODE_NAME], self.tmp_files[0], self.tmp_files[1],
test_mode=True
)
fa.deactivateNodes(
[self.NEW_NODE_NAME], self.tmp_files[1], self.tmp_files[2],
test_mode=True
)
nc = NodeConfig()
root = nc.get_current_config_root(self.tmp_files[2])
pm_count = int(root.find('./PrimitiveServers/Count').text)
self.assertEqual(pm_count, 1)
node = root.find('./PMS1/IPAddr')
self.assertEqual(node.text, hostaddr)
# TODO: Fix node_manipulation add_node logic and _replace_localhost
# node = root.find('./PMS2/IPAddr')
# self.assertEqual(node, None)
node = root.find('./pm1_WriteEngineServer/IPAddr')
self.assertTrue(node.text, hostaddr)
node = root.find('./pm2_WriteEngineServer/IPAddr')
self.assertTrue(node is None)
#node = root.find("./ConfigRevision")
#self.assertEqual(node.text, "3")
# make sure there are no traces of mysql.com,
# or an ip addr that isn't localhost or 127.0.0.1
all_nodes = root.findall('./')
for node in all_nodes:
self.assertFalse(node.text == self.NEW_NODE_NAME)
if node.tag in ['IPAddr', 'Node']:
self.assertTrue(node.text in [hostname, hostaddr])
def test_designatePrimaryNode(self):
self.tmp_files = (
'./primary-node0.xml', './primary-node1.xml', './primary-node2.xml'
)
fa = FailoverAgent()
hostaddr = socket.gethostbyname(socket.gethostname())
fa.activateNodes(
[self.NEW_NODE_NAME], tmp_mcs_config_filename, self.tmp_files[0],
test_mode=True
)
add_node(
hostaddr, self.tmp_files[0], self.tmp_files[1]
)
fa.movePrimaryNode(
'placeholder', self.tmp_files[1], self.tmp_files[2], test_mode=True
)
nc = NodeConfig()
root = nc.get_current_config_root(self.tmp_files[2])
pm_count = int(root.find('./PrimitiveServers/Count').text)
self.assertEqual(pm_count, 2)
node = root.find('./PMS1/IPAddr')
self.assertEqual(node.text, self.NEW_NODE_NAME)
node = root.find('./PMS2/IPAddr')
self.assertEqual(node.text, hostaddr)
node = root.find('./pm1_WriteEngineServer/IPAddr')
self.assertEqual(node.text, self.NEW_NODE_NAME)
node = root.find('./pm2_WriteEngineServer/IPAddr')
self.assertEqual(node.text, hostaddr)
for tag in ['ExeMgr1', 'DMLProc', 'DDLProc']:
node = root.find(f'./{tag}/IPAddr')
self.assertEqual(node.text, self.NEW_NODE_NAME)
self.assertEqual(self.NEW_NODE_NAME, root.find('./PrimaryNode').text)
def test_enterStandbyMode(self):
fa = FailoverAgent()
fa.enterStandbyMode(test_mode=True)