303 lines
11 KiB
Python
303 lines
11 KiB
Python
from ssl import ALERT_DESCRIPTION_CERTIFICATE_UNOBTAINABLE
|
|
import taos
|
|
import sys
|
|
import time
|
|
import os
|
|
import socket
|
|
|
|
from util.log import *
|
|
from util.sql import *
|
|
from util.cases import *
|
|
from util.dnodes import *
|
|
from util.common import *
|
|
|
|
class ClusterDnodes(TDDnodes):
|
|
"""rewrite TDDnodes and make MyDdnodes as TDDnodes child class"""
|
|
def __init__(self ,dnodes_lists):
|
|
|
|
super(ClusterDnodes,self).__init__()
|
|
self.dnodes = dnodes_lists # dnode must be TDDnode instance
|
|
self.simDeployed = False
|
|
self.testCluster = False
|
|
self.valgrind = 0
|
|
self.killValgrind = 1
|
|
self.independent = True
|
|
self.dnodeNums = 5
|
|
|
|
# def getTDDnodes(dnodeNums):
|
|
|
|
# return
|
|
|
|
|
|
class ConfigureyCluster:
|
|
"""configure dnodes and return TDDnodes list, it can """
|
|
|
|
def __init__(self):
|
|
self.dnodes = None
|
|
self.dnodes_nums = 5
|
|
self.independent = True
|
|
self.start_port = 6030
|
|
self.portStep = 100
|
|
hostname1= socket.gethostname()
|
|
|
|
def configure_cluster(self ,dnodes_nums=5,independent=True,start_port=6030,portStep=100,hostname="%s"%hostname1):
|
|
self.start_port=int(start_port)
|
|
self.portStep=int(portStep)
|
|
self.hostname=hostname
|
|
self.dnodes_nums = int(dnodes_nums)
|
|
self.independent = independent
|
|
self.dnodes = []
|
|
start_port_sec = 6130
|
|
for num in range(1, (self.dnodes_nums+1)):
|
|
dnode = TDDnode(num)
|
|
dnode.addExtraCfg("firstEp", f"{hostname}:{self.start_port}")
|
|
dnode.addExtraCfg("fqdn", f"{hostname}")
|
|
dnode.addExtraCfg("serverPort", f"{self.start_port + (num-1)*self.portStep}")
|
|
# dnode.addExtraCfg("monitorFqdn", hostname)
|
|
# dnode.addExtraCfg("monitorPort", 7043)
|
|
dnode.addExtraCfg("secondEp", f"{hostname}:{start_port_sec}")
|
|
# configure three dnoe don't support vnodes
|
|
if self.dnodes_nums > 4 :
|
|
if self.independent and (num < 4):
|
|
dnode.addExtraCfg("supportVnodes", 0)
|
|
# print(dnode)
|
|
self.dnodes.append(dnode)
|
|
return self.dnodes
|
|
|
|
def create_dnode(self,conn):
|
|
tdSql.init(conn.cursor())
|
|
for dnode in self.dnodes[1:]:
|
|
# print(dnode.cfgDict)
|
|
dnode_id = dnode.cfgDict["fqdn"] + ":" +dnode.cfgDict["serverPort"]
|
|
print(dnode_id)
|
|
tdSql.execute(" create dnode '%s';"%dnode_id)
|
|
# count=0
|
|
# while count < 10:
|
|
# time.sleep(1)
|
|
# tdSql.query("show dnodes;")
|
|
# if tdSql.checkRows(self.dnodes_nums) :
|
|
# print("mnode is three nodes")
|
|
# if tdSql.queryResult[0][4]=='leader' :
|
|
# if tdSql.queryResult[2][4]=='offline':
|
|
# if tdSql.queryResult[1][2]=='follower':
|
|
# print("stop mnodes on dnode 3 successfully in 10s")
|
|
# break
|
|
# count+=1
|
|
# else:
|
|
# print("stop mnodes on dnode 3 failed in 10s")
|
|
# return -1
|
|
checkstatus=False
|
|
|
|
|
|
|
|
def check_dnode(self,conn):
|
|
tdSql.init(conn.cursor())
|
|
count=0
|
|
while count < 5:
|
|
tdSql.query("show dnodes")
|
|
# tdLog.debug(tdSql.queryResult)
|
|
status=0
|
|
for i in range(self.dnodes_nums):
|
|
if tdSql.queryResult[i][4] == "ready":
|
|
status+=1
|
|
tdLog.debug(status)
|
|
|
|
if status == self.dnodes_nums:
|
|
tdLog.debug(" create cluster with %d dnode and check cluster dnode all ready within 5s! " %self.dnodes_nums)
|
|
break
|
|
count+=1
|
|
time.sleep(1)
|
|
else:
|
|
tdLog.debug("create cluster with %d dnode but check dnode not ready within 5s ! "%self.dnodes_nums)
|
|
return -1
|
|
|
|
|
|
cluster = ConfigureyCluster()
|
|
|
|
# def start(self ,dnodes_nums):
|
|
|
|
# self.TDDnodes = ClusterDnodes(dnodes)
|
|
# self.TDDnodes.init("")
|
|
# self.TDDnodes.setTestCluster(testCluster)
|
|
# self.TDDnodes.setValgrind(valgrind)
|
|
# self.TDDnodes.stopAll()
|
|
# for dnode in self.TDDnodes.dnodes:
|
|
# self.TDDnodes.deploy(dnode.index,{})
|
|
|
|
# for dnode in self.TDDnodes.dnodes:
|
|
# self.TDDnodes.starttaosd(dnode.index)
|
|
|
|
# # create cluster
|
|
# for dnode in self.TDDnodes.dnodes[1:]:
|
|
# # print(dnode.cfgDict)
|
|
# dnode_id = dnode.cfgDict["fqdn"] + ":" +dnode.cfgDict["serverPort"]
|
|
# dnode_first_host = dnode.cfgDict["firstEp"].split(":")[0]
|
|
# dnode_first_port = dnode.cfgDict["firstEp"].split(":")[-1]
|
|
# cmd = f" taos -h {dnode_first_host} -P {dnode_first_port} -s ' create dnode \"{dnode_id} \" ' ;"
|
|
# print(cmd)
|
|
# os.system(cmd)
|
|
|
|
# time.sleep(2)
|
|
# tdLog.info(" create cluster with %d dnode done! " %dnodes_nums)
|
|
|
|
# def buildcluster(self,dnodenumber):
|
|
# self.depoly_cluster(dnodenumber)
|
|
# self.master_dnode = self.TDDnodes.dnodes[0]
|
|
# self.host=self.master_dnode.cfgDict["fqdn"]
|
|
# conn1 = taos.connect(self.master_dnode.cfgDict["fqdn"] , config=self.master_dnode.cfgDir)
|
|
# tdSql.init(conn1.cursor())
|
|
|
|
# def checkdnodes(self,dnodenumber):
|
|
# count=0
|
|
# while count < 10:
|
|
# time.sleep(1)
|
|
# statusReadyBumber=0
|
|
# tdSql.query("show dnodes;")
|
|
# if tdSql.checkRows(dnodenumber) :
|
|
# print("dnode is %d nodes"%dnodenumber)
|
|
# for i in range(dnodenumber):
|
|
# if tdSql.queryResult[i][4] !='ready' :
|
|
# status=tdSql.queryResult[i][4]
|
|
# print("dnode:%d status is %s "%(i,status))
|
|
# break
|
|
# else:
|
|
# statusReadyBumber+=1
|
|
# print(statusReadyBumber)
|
|
# if statusReadyBumber == dnodenumber :
|
|
# print("all of %d mnodes is ready in 10s "%dnodenumber)
|
|
# return True
|
|
# break
|
|
# count+=1
|
|
# else:
|
|
# print("%d mnodes is not ready in 10s "%dnodenumber)
|
|
# return False
|
|
|
|
|
|
# def check3mnode(self):
|
|
# count=0
|
|
# while count < 10:
|
|
# time.sleep(1)
|
|
# tdSql.query("show mnodes;")
|
|
# if tdSql.checkRows(3) :
|
|
# print("mnode is three nodes")
|
|
# if tdSql.queryResult[0][2]=='leader' :
|
|
# if tdSql.queryResult[1][2]=='follower':
|
|
# if tdSql.queryResult[2][2]=='follower':
|
|
# print("three mnodes is ready in 10s")
|
|
# break
|
|
# elif tdSql.queryResult[0][2]=='follower' :
|
|
# if tdSql.queryResult[1][2]=='leader':
|
|
# if tdSql.queryResult[2][2]=='follower':
|
|
# print("three mnodes is ready in 10s")
|
|
# break
|
|
# elif tdSql.queryResult[0][2]=='follower' :
|
|
# if tdSql.queryResult[1][2]=='follower':
|
|
# if tdSql.queryResult[2][2]=='leader':
|
|
# print("three mnodes is ready in 10s")
|
|
# break
|
|
# count+=1
|
|
# else:
|
|
# print("three mnodes is not ready in 10s ")
|
|
# return -1
|
|
|
|
# tdSql.query("show mnodes;")
|
|
# tdSql.checkRows(3)
|
|
# tdSql.checkData(0,1,'%s:6030'%self.host)
|
|
# tdSql.checkData(0,3,'ready')
|
|
# tdSql.checkData(1,1,'%s:6130'%self.host)
|
|
# tdSql.checkData(1,3,'ready')
|
|
# tdSql.checkData(2,1,'%s:6230'%self.host)
|
|
# tdSql.checkData(2,3,'ready')
|
|
|
|
# def check3mnode1off(self):
|
|
# count=0
|
|
# while count < 10:
|
|
# time.sleep(1)
|
|
# tdSql.query("show mnodes;")
|
|
# if tdSql.checkRows(3) :
|
|
# print("mnode is three nodes")
|
|
# if tdSql.queryResult[0][2]=='offline' :
|
|
# if tdSql.queryResult[1][2]=='leader':
|
|
# if tdSql.queryResult[2][2]=='follower':
|
|
# print("stop mnodes on dnode 2 successfully in 10s")
|
|
# break
|
|
# elif tdSql.queryResult[1][2]=='follower':
|
|
# if tdSql.queryResult[2][2]=='leader':
|
|
# print("stop mnodes on dnode 2 successfully in 10s")
|
|
# break
|
|
# count+=1
|
|
# else:
|
|
# print("stop mnodes on dnode 2 failed in 10s ")
|
|
# return -1
|
|
# tdSql.error("drop mnode on dnode 1;")
|
|
|
|
# tdSql.query("show mnodes;")
|
|
# tdSql.checkRows(3)
|
|
# tdSql.checkData(0,1,'%s:6030'%self.host)
|
|
# tdSql.checkData(0,2,'offline')
|
|
# tdSql.checkData(0,3,'ready')
|
|
# tdSql.checkData(1,1,'%s:6130'%self.host)
|
|
# tdSql.checkData(1,3,'ready')
|
|
# tdSql.checkData(2,1,'%s:6230'%self.host)
|
|
# tdSql.checkData(2,3,'ready')
|
|
|
|
# def check3mnode2off(self):
|
|
# count=0
|
|
# while count < 40:
|
|
# time.sleep(1)
|
|
# tdSql.query("show mnodes;")
|
|
# if tdSql.checkRows(3) :
|
|
# print("mnode is three nodes")
|
|
# if tdSql.queryResult[0][2]=='leader' :
|
|
# if tdSql.queryResult[1][2]=='offline':
|
|
# if tdSql.queryResult[2][2]=='follower':
|
|
# print("stop mnodes on dnode 2 successfully in 10s")
|
|
# break
|
|
# count+=1
|
|
# else:
|
|
# print("stop mnodes on dnode 2 failed in 10s ")
|
|
# return -1
|
|
# tdSql.error("drop mnode on dnode 2;")
|
|
|
|
# tdSql.query("show mnodes;")
|
|
# tdSql.checkRows(3)
|
|
# tdSql.checkData(0,1,'%s:6030'%self.host)
|
|
# tdSql.checkData(0,2,'leader')
|
|
# tdSql.checkData(0,3,'ready')
|
|
# tdSql.checkData(1,1,'%s:6130'%self.host)
|
|
# tdSql.checkData(1,2,'offline')
|
|
# tdSql.checkData(1,3,'ready')
|
|
# tdSql.checkData(2,1,'%s:6230'%self.host)
|
|
# tdSql.checkData(2,2,'follower')
|
|
# tdSql.checkData(2,3,'ready')
|
|
|
|
# def check3mnode3off(self):
|
|
# count=0
|
|
# while count < 10:
|
|
# time.sleep(1)
|
|
# tdSql.query("show mnodes;")
|
|
# if tdSql.checkRows(3) :
|
|
# print("mnode is three nodes")
|
|
# if tdSql.queryResult[0][2]=='leader' :
|
|
# if tdSql.queryResult[2][2]=='offline':
|
|
# if tdSql.queryResult[1][2]=='follower':
|
|
# print("stop mnodes on dnode 3 successfully in 10s")
|
|
# break
|
|
# count+=1
|
|
# else:
|
|
# print("stop mnodes on dnode 3 failed in 10s")
|
|
# return -1
|
|
# tdSql.error("drop mnode on dnode 3;")
|
|
# tdSql.query("show mnodes;")
|
|
# tdSql.checkRows(3)
|
|
# tdSql.checkData(0,1,'%s:6030'%self.host)
|
|
# tdSql.checkData(0,2,'leader')
|
|
# tdSql.checkData(0,3,'ready')
|
|
# tdSql.checkData(1,1,'%s:6130'%self.host)
|
|
# tdSql.checkData(1,2,'follower')
|
|
# tdSql.checkData(1,3,'ready')
|
|
# tdSql.checkData(2,1,'%s:6230'%self.host)
|
|
# tdSql.checkData(2,2,'offline')
|
|
# tdSql.checkData(2,3,'ready')
|
|
|