Data-Test-Executer Framework speziell zum Test von Datenverarbeitungen mit Datengenerierung, Systemvorbereitungen, Einspielungen, ganzheitlicher diversifizierender Vergleich
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

135 lines
5.0 KiB

#!/usr/bin/python
# -*- coding: utf-8 -*-
# ---------------------------------------------------------------------------------------------------------
# Author : Ulrich Carmesin
# Source : gitea.ucarmesin.de
# ---------------------------------------------------------------------------------------------------------
3 years ago
import sys
import basic.constants as B
3 years ago
try:
3 years ago
import basic.program
3 years ago
except ImportError:
print("ImportError: " + str(ImportError.with_traceback()))
pass
import yaml
3 years ago
import basic.componentHandling
3 years ago
import utils.path_tool
import os.path
import basic.constants as B
3 years ago
3 years ago
COMP_FILES = ["DATASTRUCTURE"]
CONFIG_FORMAT = ["yml", "json", "csv"]
3 years ago
def getConfigPath(modul, name):
"""
gets the most specified configuration of different sources
Parameter:
* typ -- (basic, comp, tool)
* name -- the specific class
sources:
* programm <<
* install <<
* environ << basis-conf
* release << basis-conf
* testset << parameter/environ
* testcase << parameter
"""
3 years ago
job = basic.program.Job.getInstance()
3 years ago
verify = job.getDebugLevel("config_tool")
job.debug(verify, "getConfig " + modul + ", " + name)
if modul == "tool":
pathname = job.conf.confs.get("paths").get("home") + "/configs/tool_" + name + ".yml"
job.debug(verify, "1 " + pathname)
if os.path.exists(pathname):
return pathname
pathname = job.conf.confs.get("paths").get("program") + "/utils/configs/" + name + ".yml"
job.debug(verify, "2 " + pathname)
if os.path.exists(pathname):
return pathname
pathname = job.conf.confs.get("paths").get("environment") + "/" + job.par.environment + "/configs/tool_" + name + ".yml"
job.debug(verify, "3 " + pathname)
if os.path.exists(pathname):
return pathname
job.debug(verify, "3x " + pathname)
elif modul == "comp":
pathname = job.conf.confs.get("paths").get("home") + "/configs/comp_" + name + ".yml"
job.debug(verify, "4 " + pathname)
if os.path.exists(pathname):
return pathname
3 years ago
pathname = job.conf.confs.get("paths").get("program") + "/components/" + basic.componentHandling.getComponentFolder(name) + "/CONFIG.yml"
3 years ago
job.debug(verify, "5 " + pathname)
if os.path.exists(pathname):
return pathname
job.debug(verify, "6 " + pathname)
3 years ago
elif modul in COMP_FILES:
for format in CONFIG_FORMAT:
pathname = os.path.join(job.conf.confs.get("paths").get("program"), "components", basic.componentHandling.getComponentFolder(name), modul+"."+format)
if os.path.exists(pathname):
return pathname
3 years ago
else:
pathname = utils.path_tool.composePath("tcparfile")
job.debug(verify, "7 " + pathname)
if os.path.exists(pathname):
return pathname
pathname = utils.path_tool.composePath("tsparfile")
job.debug(verify, "8 " + pathname)
if os.path.exists(pathname):
return pathname
pathname = job.conf.confs.get("paths").get("release") + "/configs/basis.yml"
job.debug(verify, "9 " + pathname)
if os.path.exists(pathname):
return pathname
pathname = job.conf.confs.get("paths").get("environment") + "/configs/basis.yml"
job.debug(verify, "10 " + pathname)
if os.path.exists(pathname):
return pathname
pathname = job.conf.confs.get("paths").get("home") + "/config/basis.yml"
job.debug(verify, "11 " + pathname)
if os.path.exists(pathname):
return pathname
job.debug(verify, "12 " + pathname)
def getConfValue(attribute, comp):
if attribute == B.ATTR_CONN_DBTYPE:
if not hasAttr(comp.conf[B.SUBJECT_CONN], "dbtype"):
if hasAttr(comp.conf[B.SUBJECT_CONN], "types") and hasAttr(comp.conf[B.SUBJECT_CONN]["types"], "dbtype"):
dbtype = comp.conf[B.SUBJECT_CONN]["types"]["dbtype"]
else:
raise LookupError("dbtype is not set in comp " + comp.name)
else:
dbtype = comp.conf["conn"]["dbtype"]
return ""
return ""
def hasAttr(o, name):
#print("hasAttr " + str(type(o))+" "+name)
if (isinstance(o, dict)):
if (name in o.keys()):
#print("hasAttr dict ok " + str(type(o)))
return True
#print("hasAttr dict "+str(type(o)))
elif (isinstance(o, list)):
pass
#print("hasAttr list "+str(type(o)))
elif hasattr(o, name):
#print("hasAttr class ok "+str(type(o)))
return True
return False
3 years ago
def getConfig(modul, name):
3 years ago
job = basic.program.Job.getInstance()
verify = job.getDebugLevel("config_tool")-1
3 years ago
pathname = getConfigPath(modul, name)
confs = {}
job.debug(verify, "getConfig " + pathname)
with open(pathname, "r") as file:
job.debug(verify, "openfile")
doc = yaml.full_load(file)
for i, v in doc.items():
job.debug(verify, "item " + str(i) + ": " + str(v))
confs[i] = v
return confs