Revert "refactor: implement dynamic loading of test case classes"

This commit is contained in:
haoranchen 2025-02-25 15:40:08 +08:00 committed by GitHub
parent aa33cf7456
commit 0e9319ef69
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 37 additions and 104 deletions

View File

@ -24,7 +24,6 @@ import platform
import socket import socket
import threading import threading
import importlib import importlib
import inspect
import toml import toml
@ -57,17 +56,6 @@ def checkRunTimeError():
if hwnd: if hwnd:
os.system("TASKKILL /F /IM taosd.exe") os.system("TASKKILL /F /IM taosd.exe")
def get_local_classes(module):
classes = []
for name, obj in inspect.getmembers(module, inspect.isclass):
if inspect.getmodule(obj) == module:
classes.append(name)
return classes
def dynamicLoadModule(fileName):
moduleName = fileName.replace(".py", "").replace(os.sep, ".")
return importlib.import_module(moduleName, package='..')
# #
# run case on previous cluster # run case on previous cluster
# #
@ -78,9 +66,9 @@ def runOnPreviousCluster(host, config, fileName):
sep = "/" sep = "/"
if platform.system().lower() == 'windows': if platform.system().lower() == 'windows':
sep = os.sep sep = os.sep
uModule = dynamicLoadModule(fileName) moduleName = fileName.replace(".py", "").replace(sep, ".")
case_class = getattr(uModule, get_local_classes(uModule)[0]) uModule = importlib.import_module(moduleName)
case = case_class() case = uModule.TDTestCase()
# create conn # create conn
conn = taos.connect(host, config) conn = taos.connect(host, config)
@ -370,10 +358,10 @@ if __name__ == "__main__":
updateCfgDictStr = '' updateCfgDictStr = ''
# adapter_cfg_dict_str = '' # adapter_cfg_dict_str = ''
if is_test_framework: if is_test_framework:
uModule = dynamicLoadModule(fileName) moduleName = fileName.replace(".py", "").replace(os.sep, ".")
uModule = importlib.import_module(moduleName)
try: try:
case_class = getattr(uModule, get_local_classes(uModule)[0]) ucase = uModule.TDTestCase()
ucase = case_class()
if ((json.dumps(updateCfgDict) == '{}') and hasattr(ucase, 'updatecfgDict')): if ((json.dumps(updateCfgDict) == '{}') and hasattr(ucase, 'updatecfgDict')):
updateCfgDict = ucase.updatecfgDict updateCfgDict = ucase.updatecfgDict
updateCfgDictStr = "-d %s"%base64.b64encode(json.dumps(updateCfgDict).encode()).decode() updateCfgDictStr = "-d %s"%base64.b64encode(json.dumps(updateCfgDict).encode()).decode()
@ -542,10 +530,10 @@ if __name__ == "__main__":
except: except:
pass pass
if is_test_framework: if is_test_framework:
uModule = dynamicLoadModule(fileName) moduleName = fileName.replace(".py", "").replace("/", ".")
uModule = importlib.import_module(moduleName)
try: try:
case_class = getattr(uModule, get_local_classes(uModule)[0]) ucase = uModule.TDTestCase()
ucase = case_class()
if (json.dumps(updateCfgDict) == '{}'): if (json.dumps(updateCfgDict) == '{}'):
updateCfgDict = ucase.updatecfgDict updateCfgDict = ucase.updatecfgDict
if (json.dumps(adapter_cfg_dict) == '{}'): if (json.dumps(adapter_cfg_dict) == '{}'):

View File

@ -22,9 +22,6 @@ import json
import platform import platform
import socket import socket
import threading import threading
import inspect
import importlib
import os
import toml import toml
@ -60,17 +57,6 @@ def checkRunTimeError():
os.system("TASKKILL /F /IM taosd.exe") os.system("TASKKILL /F /IM taosd.exe")
def get_local_classes(module):
classes = []
for name, obj in inspect.getmembers(module, inspect.isclass):
if inspect.getmodule(obj) == module:
classes.append(name)
return classes
def dynamicLoadModule(fileName):
moduleName = fileName.replace(".py", "").replace(os.sep, ".")
return importlib.import_module(moduleName, package='..')
if __name__ == "__main__": if __name__ == "__main__":
fileName = "all" fileName = "all"
@ -309,10 +295,10 @@ if __name__ == "__main__":
updateCfgDictStr = "" updateCfgDictStr = ""
# adapter_cfg_dict_str = '' # adapter_cfg_dict_str = ''
if is_test_framework: if is_test_framework:
uModule = dynamicLoadModule(fileName) moduleName = fileName.replace(".py", "").replace(os.sep, ".")
uModule = importlib.import_module(moduleName)
try: try:
case_class = getattr(uModule, get_local_classes(uModule)[0]) ucase = uModule.TDTestCase()
ucase = case_class()
if (json.dumps(updateCfgDict) == "{}") and hasattr( if (json.dumps(updateCfgDict) == "{}") and hasattr(
ucase, "updatecfgDict" ucase, "updatecfgDict"
): ):
@ -448,10 +434,10 @@ if __name__ == "__main__":
except: except:
pass pass
if is_test_framework: if is_test_framework:
uModule = dynamicLoadModule(fileName) moduleName = fileName.replace(".py", "").replace("/", ".")
uModule = importlib.import_module(moduleName)
try: try:
case_class = getattr(uModule, get_local_classes(uModule)[0]) ucase = uModule.TDTestCase()
ucase = case_class()
if json.dumps(updateCfgDict) == "{}": if json.dumps(updateCfgDict) == "{}":
updateCfgDict = ucase.updatecfgDict updateCfgDict = ucase.updatecfgDict
if json.dumps(adapter_cfg_dict) == "{}": if json.dumps(adapter_cfg_dict) == "{}":

View File

@ -51,13 +51,6 @@ class TDCases:
def addCluster(self, name, case): def addCluster(self, name, case):
self.clusterCases.append(TDCase(name, case)) self.clusterCases.append(TDCase(name, case))
def get_local_classes(self, module):
classes = []
for name, obj in inspect.getmembers(module, inspect.isclass):
if inspect.getmodule(obj) == module:
classes.append(name)
return classes
def runAllLinux(self, conn): def runAllLinux(self, conn):
# TODO: load all Linux cases here # TODO: load all Linux cases here
runNum = 0 runNum = 0
@ -78,10 +71,7 @@ class TDCases:
runNum = 0 runNum = 0
for tmp in self.linuxCases: for tmp in self.linuxCases:
if tmp.name.find(fileName) != -1: if tmp.name.find(fileName) != -1:
# get the last class name as the test case class name case = testModule.TDTestCase()
case_class = getattr(testModule, self.get_local_classes(testModule)[0])
case = case_class()
case.init(conn, self._logSql, replicaVar) case.init(conn, self._logSql, replicaVar)
try: try:
case.run() case.run()
@ -113,9 +103,7 @@ class TDCases:
runNum = 0 runNum = 0
for tmp in self.windowsCases: for tmp in self.windowsCases:
if tmp.name.find(fileName) != -1: if tmp.name.find(fileName) != -1:
# get the last class name as the test case class name case = testModule.TDTestCase()
case_class = getattr(testModule, self.get_local_classes(testModule)[0])
case = case_class()
case.init(conn, self._logSql,replicaVar) case.init(conn, self._logSql,replicaVar)
try: try:
case.run() case.run()
@ -129,15 +117,12 @@ class TDCases:
def runAllCluster(self): def runAllCluster(self):
# TODO: load all cluster case module here # TODO: load all cluster case module here
testModule = self.__dynamicLoadModule(fileName)
runNum = 0 runNum = 0
for tmp in self.clusterCases: for tmp in self.clusterCases:
if tmp.name.find(fileName) != -1: if tmp.name.find(fileName) != -1:
tdLog.notice("run cases like %s" % (fileName)) tdLog.notice("run cases like %s" % (fileName))
# get the last class name as the test case class name case = testModule.TDTestCase()
case_class = getattr(testModule, self.get_local_classes(testModule)[0])
case = case_class()
case.init() case.init()
case.run() case.run()
case.stop() case.stop()
@ -153,9 +138,7 @@ class TDCases:
for tmp in self.clusterCases: for tmp in self.clusterCases:
if tmp.name.find(fileName) != -1: if tmp.name.find(fileName) != -1:
tdLog.notice("run cases like %s" % (fileName)) tdLog.notice("run cases like %s" % (fileName))
# get the last class name as the test case class name case = testModule.TDTestCase()
case_class = getattr(testModule, self.get_local_classes(testModule)[0])
case = case_class()
case.init() case.init()
case.run() case.run()
case.stop() case.stop()

View File

@ -24,7 +24,6 @@ import platform
import socket import socket
import threading import threading
import importlib import importlib
import inspect
print(f"Python version: {sys.version}") print(f"Python version: {sys.version}")
print(f"Version info: {sys.version_info}") print(f"Version info: {sys.version_info}")
@ -59,16 +58,6 @@ def checkRunTimeError():
if hwnd: if hwnd:
os.system("TASKKILL /F /IM taosd.exe") os.system("TASKKILL /F /IM taosd.exe")
def get_local_classes(module):
classes = []
for name, obj in inspect.getmembers(module, inspect.isclass):
if inspect.getmodule(obj) == module:
classes.append(name)
return classes
def dynamicLoadModule(fileName):
moduleName = fileName.replace(".py", "").replace(os.sep, ".")
return importlib.import_module(moduleName, package='..')
# #
# run case on previous cluster # run case on previous cluster
# #
@ -79,10 +68,9 @@ def runOnPreviousCluster(host, config, fileName):
sep = "/" sep = "/"
if platform.system().lower() == 'windows': if platform.system().lower() == 'windows':
sep = os.sep sep = os.sep
uModule = dynamicLoadModule(fileName) moduleName = fileName.replace(".py", "").replace(sep, ".")
uModule = importlib.import_module(moduleName)
case_class = getattr(uModule, get_local_classes(uModule)[0]) case = uModule.TDTestCase()
case = case_class()
# create conn # create conn
conn = taos.connect(host, config) conn = taos.connect(host, config)
@ -362,10 +350,10 @@ if __name__ == "__main__":
updateCfgDictStr = '' updateCfgDictStr = ''
# adapter_cfg_dict_str = '' # adapter_cfg_dict_str = ''
if is_test_framework: if is_test_framework:
uModule = dynamicLoadModule(fileName) moduleName = fileName.replace(".py", "").replace(os.sep, ".")
uModule = importlib.import_module(moduleName)
try: try:
case_class = getattr(uModule, get_local_classes(uModule)[0]) ucase = uModule.TDTestCase()
ucase = case_class()
if ((json.dumps(updateCfgDict) == '{}') and hasattr(ucase, 'updatecfgDict')): if ((json.dumps(updateCfgDict) == '{}') and hasattr(ucase, 'updatecfgDict')):
updateCfgDict = ucase.updatecfgDict updateCfgDict = ucase.updatecfgDict
updateCfgDictStr = "-d %s"%base64.b64encode(json.dumps(updateCfgDict).encode()).decode() updateCfgDictStr = "-d %s"%base64.b64encode(json.dumps(updateCfgDict).encode()).decode()
@ -534,10 +522,10 @@ if __name__ == "__main__":
except: except:
pass pass
if is_test_framework: if is_test_framework:
uModule = dynamicLoadModule(fileName) moduleName = fileName.replace(".py", "").replace("/", ".")
uModule = importlib.import_module(moduleName)
try: try:
case_class = getattr(uModule, get_local_classes(uModule)[0]) ucase = uModule.TDTestCase()
ucase = case_class()
if (json.dumps(updateCfgDict) == '{}'): if (json.dumps(updateCfgDict) == '{}'):
updateCfgDict = ucase.updatecfgDict updateCfgDict = ucase.updatecfgDict
if (json.dumps(adapter_cfg_dict) == '{}'): if (json.dumps(adapter_cfg_dict) == '{}'):

View File

@ -24,7 +24,6 @@ import platform
import socket import socket
import threading import threading
import importlib import importlib
import inspect
print(f"Python version: {sys.version}") print(f"Python version: {sys.version}")
print(f"Version info: {sys.version_info}") print(f"Version info: {sys.version_info}")
@ -59,16 +58,6 @@ def checkRunTimeError():
if hwnd: if hwnd:
os.system("TASKKILL /F /IM taosd.exe") os.system("TASKKILL /F /IM taosd.exe")
def get_local_classes(module):
classes = []
for name, obj in inspect.getmembers(module, inspect.isclass):
if inspect.getmodule(obj) == module:
classes.append(name)
return classes
def dynamicLoadModule(fileName):
moduleName = fileName.replace(".py", "").replace(os.sep, ".")
return importlib.import_module(moduleName, package='..')
# #
# run case on previous cluster # run case on previous cluster
# #
@ -79,10 +68,9 @@ def runOnPreviousCluster(host, config, fileName):
sep = "/" sep = "/"
if platform.system().lower() == 'windows': if platform.system().lower() == 'windows':
sep = os.sep sep = os.sep
uModule = dynamicLoadModule(fileName) moduleName = fileName.replace(".py", "").replace(sep, ".")
uModule = importlib.import_module(moduleName)
case_class = getattr(uModule, get_local_classes(uModule)[0]) case = uModule.TDTestCase()
case = case_class()
# create conn # create conn
conn = taos.connect(host, config) conn = taos.connect(host, config)
@ -362,10 +350,10 @@ if __name__ == "__main__":
updateCfgDictStr = '' updateCfgDictStr = ''
# adapter_cfg_dict_str = '' # adapter_cfg_dict_str = ''
if is_test_framework: if is_test_framework:
uModule = dynamicLoadModule(fileName) moduleName = fileName.replace(".py", "").replace(os.sep, ".")
uModule = importlib.import_module(moduleName)
try: try:
case_class = getattr(uModule, get_local_classes(uModule)[0]) ucase = uModule.TDTestCase()
ucase = case_class()
if ((json.dumps(updateCfgDict) == '{}') and hasattr(ucase, 'updatecfgDict')): if ((json.dumps(updateCfgDict) == '{}') and hasattr(ucase, 'updatecfgDict')):
updateCfgDict = ucase.updatecfgDict updateCfgDict = ucase.updatecfgDict
updateCfgDictStr = "-d %s"%base64.b64encode(json.dumps(updateCfgDict).encode()).decode() updateCfgDictStr = "-d %s"%base64.b64encode(json.dumps(updateCfgDict).encode()).decode()
@ -534,10 +522,10 @@ if __name__ == "__main__":
except: except:
pass pass
if is_test_framework: if is_test_framework:
uModule = dynamicLoadModule(fileName) moduleName = fileName.replace(".py", "").replace("/", ".")
uModule = importlib.import_module(moduleName)
try: try:
case_class = getattr(uModule, get_local_classes(uModule)[0]) ucase = uModule.TDTestCase()
ucase = case_class()
if (json.dumps(updateCfgDict) == '{}'): if (json.dumps(updateCfgDict) == '{}'):
updateCfgDict = ucase.updatecfgDict updateCfgDict = ucase.updatecfgDict
if (json.dumps(adapter_cfg_dict) == '{}'): if (json.dumps(adapter_cfg_dict) == '{}'):