You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-08-08 14:22:09 +03:00
MCOL-5496: Merge CMAPI code to engine repo.
[add] cmapi code to engine
This commit is contained in:
committed by
Alan Mologorsky
parent
77eedd1756
commit
a079a2c944
83
cmapi/failover/test/tester.py
Normal file
83
cmapi/failover/test/tester.py
Normal file
@@ -0,0 +1,83 @@
|
||||
from .. import config
|
||||
import time
|
||||
from socket import *
|
||||
import struct
|
||||
import sys
|
||||
|
||||
_config = config.Config("failover/test/config-test.xml")
|
||||
print("got desired_nodes = {}".format(_config.getDesiredNodes()))
|
||||
print("got active_nodes = {}".format(_config.getActiveNodes()))
|
||||
print("got inacive_nodes = {}".format(_config.getInactiveNodes()))
|
||||
print("got all nodes = {}".format(_config.getAllNodes()))
|
||||
print("got primarynode = {}".format(_config.getPrimaryNode()))
|
||||
print()
|
||||
|
||||
from ..heartbeater import HeartBeater
|
||||
from ..heartbeat_history import HBHistory
|
||||
|
||||
hbh = HBHistory()
|
||||
hb = HeartBeater(_config, hbh)
|
||||
hb.start()
|
||||
sock = socket(type = SOCK_DGRAM)
|
||||
sock.bind(('localhost', 12345))
|
||||
|
||||
# Updated heartbeater to send the reply to its own port, rather than to
|
||||
# the port of the sending socket. Need to update this.
|
||||
#msg = struct.pack("4sH", hb.areYouThereMsg, 1234)
|
||||
#sock.sendto(msg, ('localhost', hb.port))
|
||||
#print("sent the are-you-there msg")
|
||||
#(data, remote) = sock.recvfrom(6)
|
||||
#(data, seq) = struct.unpack("4sH", data)
|
||||
#if data == hb.yesIAmMsg:
|
||||
# print("got the yes-i-am msg, seq = {}".format(seq))
|
||||
#else:
|
||||
# print("got something other than the yes-i-am-msg")
|
||||
|
||||
hb.stop()
|
||||
|
||||
#from heartbeat_history import HBHistory
|
||||
|
||||
#hbh = HBHistory()
|
||||
hbh.setCurrentTick(0)
|
||||
hbh.gotHeartbeat("node1", 0)
|
||||
hbh.setCurrentTick(1)
|
||||
hbh.gotHeartbeat("node2", 1)
|
||||
hbh.setCurrentTick(2)
|
||||
hbh.setCurrentTick(10)
|
||||
hbh.gotHeartbeat("node1", 9)
|
||||
hbh.gotHeartbeat("node1", 2)
|
||||
pongs = hbh.getNodeHistory("node1", 20)
|
||||
print("Got pongs: {}".format(pongs))
|
||||
|
||||
print('''
|
||||
This is currently a 'manual' test, meaning the user should watch for the expected output
|
||||
In this case, because NM's identity checker will return 'node1', and that does not match
|
||||
node[2-4], those nodes will appear to NodeMonitor to be offline. Our starting condition
|
||||
is that nodes 1-3 are active, and node4 is inactive. After 15s, nodes 2 & 3
|
||||
should be deactivated, a new primary node will be chosen, and and our AgentBase will start
|
||||
printing these events.
|
||||
''')
|
||||
def testNodeMonitor1(nm):
|
||||
nm.start()
|
||||
print("Waiting for 20 secs, watch for output from AgentBase")
|
||||
time.sleep(20)
|
||||
nm.stop()
|
||||
time.sleep(1)
|
||||
print("NodeMonitor was stopped, did it produce the right output?")
|
||||
|
||||
from ..node_monitor import NodeMonitor
|
||||
nm = NodeMonitor(config = _config, samplingInterval = 10)
|
||||
# check whether node[1-4] are in the /etc/hosts file as localhost
|
||||
addr1 = gethostbyname("node1")
|
||||
addr2 = gethostbyname("node2")
|
||||
addr3 = gethostbyname("node3")
|
||||
addr4 = gethostbyname("node4")
|
||||
if addr1 == '127.0.0.1' and addr2 == '127.0.0.1' and addr3 == '127.0.0.1' and addr4 == '127.0.0.1':
|
||||
testNodeMonitor1(nm)
|
||||
else:
|
||||
print("Skipping testNodeMonitor1(). node[1-4] needs to be defined as 127.0.0.1 in /etc/hosts")
|
||||
|
||||
|
||||
|
||||
print("tester is finished")
|
||||
|
Reference in New Issue
Block a user