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.

443 lines
17 KiB

#!/usr/bin/python
# -*- coding: utf-8 -*-
# ---------------------------------------------------------------------------------------------------------
# Author : Ulrich Carmesin
# Source : gitea.ucarmesin.de
# ---------------------------------------------------------------------------------------------------------
"""
The constants desribes the keywords of the main datastructures, these are
* the configurations of
* program-configuration for general technical variables in xtools - stored in internal conf-folder
it represents the general knowledge of this test-automatism
* xbasic-configuration for global variables in job - stored in external conf-folder
it represents the knowledge of your test-topic
* comp-configuration for component-attributes - stored in internal component-folder in
+ ddl-configuration of an entity of the component as attributes - stored in internal component-folder
+ environment-config for connection-attributes of the component - stored in external environment-folder
it represents the application-knowledge and the knowledge of the application-installation
* test-specification with testdata - stored in external testdata-folder
* the internal datastructure
"""
2 years ago
import os
home = ""
if home == "":
home = os.getcwd()
prgdir = ""
if home[-4:] == "test":
home = home[0:-5]
if home[-10:] == "components":
home = home[0:-11]
if home[-9:] == "program":
prgdir = home[-6:]
home = home[0:-7]
elif home[-7:] == "program":
prgdir = home[-7:]
home = home[0:-8]
HOME_PATH = home
# -- example -----------------------------------------------------
# example testcase - nodes
# the internal datastructure is a tree with this design:
# root { : subject itself - subject-singular-constant
# + option { : subtable of subject - subject-plural-constant
# + attribute : attribute of subtable - allowed attribute-names in data-const LIST_ATTR_<subject>
# + stories : subtable of subject
# + <NAME> : element of subtable - the unique name
# + name : redundant name-attribute
# + attribute : some main attributes
# + datas :
# + <NAME> : table name
# + ddl : topic, functionality relating to ddl
# + _header [ : specific data-node of the topic - constant
# - fields : variable field-name
# + steps : special topic
#
# + comp { : variable component-name
# + substructure { : variable maybe scheme, table of a database-component
# + + _header [ : constant
# - fields : variable field-name
# -------------------------------------------------------------
# --Domain ----------------------------------------------------
# ____ _
# | _ \ ___ _ __ ___ __ _(_)_ __
# | | | |/ _ \| '_ ` _ \ / _` | | '_ \
# | |_| | (_) | | | | | | (_| | | | | |
# |____/ \___/|_| |_| |_|\__,_|_|_| |_|
#
# -------------------------------------------------------------
DOM_PROJECT = "project"
"""
this domain is relating to project-management and -knowledge
subjects of the domain are:
- project
- application
- release
topics relating to the domain are:
"""
DOM_SPECIFICATION = "specification"
"""
this domain is relating to project-management and -knowledge
subjects of the domain are:
- application
- usercase
- variant
- release
- story
topics relating to the domain are:
"""
DOM_TEST = "test"
"""
this domain is relating to project-management and -knowledge
subjects of the domain are:
- testplan
- release
- testsuite
- application
- variant
- testcase
- application
- usercase
- variant
- story
- option
- data
- step
- testreport
- release
- artifact
topics relating to the domain are:
"""
DOM_IMPLEMENTATION = "implementation"
"""
this domain is relating to project-management and -knowledge
subjects of the domain are:
- component
- artifact
- data
- step
topics relating to the domain are:
- db
- cli
- api
- conn
- ddl
"""
DOM_INSTALLATION = "installation"
"""
this domain is relating to project-management and -knowledge
subjects of the domain are:
- environent
- component
topics relating to the domain are:
- db
- cli
- api
- conn
- instance
"""
# --Subject ----------------------------------------------------
# ____ _ _ _
# / ___| _ _| |__ (_) ___ ___| |_
# \___ \| | | | '_ \| |/ _ \/ __| __|
# ___) | |_| | |_) | | __/ (__| |_
# |____/ \__,_|_.__// |\___|\___|\__|
# |__/
# -------------------------------------------------------------
# the configuration of a component or tool
# entity { : variable name of the group, xbasic, component-name or tool-name
# + subject { : variable subject-name - it correspondends to a tool
# + + sub-subject { : variable subject-name - it correspondends to a tool
# + attributes : constant of the tool in which the attribute ist implemented
# the main subjects # prog xbasic envir tool comp testcase main implentation module
""" This constant defines the debug-folder in testing-filesystem """
SUBJECT_PROJECT = "project"
SUBJECT_PROJECTS = SUBJECT_PROJECT + "s"
SUBJECT_APP = "application"
SUBJECT_APPS = SUBJECT_APP+"s" #
SUBJECT_COMP = "component"
SUBJECT_COMPS = SUBJECT_COMP + "s"
SUBJECT_USECASE = "usecase"
SUBJECT_USECASES = SUBJECT_USECASE + "s"
SUBJECT_USER = "user"
SUBJECT_USERS = SUBJECT_USER + "s"
SUBJECT_REL = "release"
SUBJECT_RELS = SUBJECT_REL + "s"
SUBJECT_TESTCASE = "testcase"
SUBJECT_TESTCASES = SUBJECT_TESTCASE + "s"
SUBJECT_TESTSUITE = "testsuite"
SUBJECT_TESTSUITES = SUBJECT_TESTSUITE + "s"
SUBJECT_TESTPLAN = "testplan"
SUBJECT_TESTPLANS = SUBJECT_TESTPLAN + "s"
SUBJECT_ARTIFACT = "artifact"
SUBJECT_ARTIFACTS = SUBJECT_ARTIFACT + "s"
ATTR_ARTS_LOG = "log"
ATTR_ARTS_LOB = "lob"
ATTR_ARTS_FILE = "file"
ATTR_ARTS_TYPE = "type"
""" must attribute for the type of the technique """
ATTR_ARTS_NAME = "name"
""" optional attribute just for information """
ATTR_ARTS_PATH = "path"
""" optional attribute for the xbasic folder if the artifact is stored in the filesystem """
ATTR_ARTS_RESET = "reset"
""" optional attribute if the artefact should be reset in the initializing-phase """
ATTR_ARTS_PRESTEP = "prestep"
""" optional attribute to define a source-table for this table """
LIST_ARTS_ATTR = [ATTR_ARTS_TYPE, ATTR_ARTS_PATH, ATTR_ARTS_RESET, ATTR_ARTS_PRESTEP, ATTR_ARTS_NAME]
SUBJECT_VARIANT = "variant"
SUBJECT_VARIANTS = SUBJECT_VARIANT + "s"
SUBJECT_ENVIRONMENT = 'environment'
SUBJECT_ENVIRONMENTS = SUBJECT_ENVIRONMENT + "s"
SUBJECT_STORY = "story"
SUBJECT_STORIES = "stories"
SUBJECT_DESCRIPTION = "description" # --> MAIN-ATTR
SUBJECT_REFERENCE = "reference" # --> MAIN-ATTR
SUBJECT_STEP = "step"
SUBJECT_STEPS = "steps"
SUBJECT_DATATABLE = "table"
SUBJECT_DATATABLES = SUBJECT_DATATABLE + "s"
# List of persistent models
LIST_SUBJECTS = [SUBJECT_PROJECTS, SUBJECT_APPS, SUBJECT_USECASES, SUBJECT_VARIANTS, SUBJECT_RELS, SUBJECT_STORIES,
SUBJECT_TESTPLANS, SUBJECT_TESTSUITES, SUBJECT_TESTCASES, SUBJECT_STEPS, SUBJECT_DATATABLES,
SUBJECT_ENVIRONMENTS, SUBJECT_COMPS, SUBJECT_ARTIFACTS, "storys"]
# --Topic -----------------------------------------------------
# _____ _
# |_ _|__ _ __ (_) ___
# | |/ _ \| '_ \| |/ __|
# | | (_) | |_) | | (__
# |_|\___/| .__/|_|\___|
# |_|
# -------------------------------------------------------------
# topics
"""
in this subject-node are each kind of result of any component with the structure:
* topic (db, cli, api, ...)
* * general attributes - to-know: technical attributes are stored in connection-tree
* * partial-component - to-know: the existence of db-tables can be defined in the ddl-tree
* * * specific attributes - it overrides the general attributes
"""
TOPIC_INST = "instance"
ATTR_INST_CNT = "count" #
ATTR_INST_SGL = "single"
LIST_INST_ATTR = [ATTR_INST_CNT, ATTR_INST_SGL]
ATTR_INST_SUBCOMP = SUBJECT_COMPS
ATTR_INST_TESTSERVER = "Testserver"
TOPIC_PATH = "paths"
ATTR_PATH_MODE = "mode"
""" This constant defines the home-folder in filesystem of test """
ATTR_PATH_HOME = "home"
""" This constant defines the home-folder in testing-filesystem """
ATTR_PATH_DEBUG = "debugs"
""" This constant defines the debug-folder in testing-filesystem """
ATTR_PATH_ARCHIV = "archiv"
""" This constant defines the folder in testing-filesystem for results and log of execution """
ATTR_PATH_EXPECT = "expect"
""" This constant defines the folder in testing-filesystem for test-expectation values """
ATTR_PATH_PROGRAM = "program"
""" This constant defines the program-folder in the workspace """
ATTR_PATH_COMPS = "components"
""" This constant defines the subfolder in the program-folder in the workspace """
ATTR_PATH_ENV = "environment"
""" This constant defines the folder in testing-filesystem, used for configs related to environments """
ATTR_PATH_RELEASE = "release"
""" This constant defines the folder in testing-filesystem, used for configs related to release """
ATTR_PATH_TDATA = "testdata"
""" This constant defines the folder in testing-filesystem with the testcase-specifications """
ATTR_PATH_PATTN = "pattern"
""" This constant defines the debug-folder in testing-filesystem """
# SUBJECT_FCT = "function" # --> TOPIC
TOPIC_DDL = "ddl"
ATTR_TYPE = "type" #
RULE_ACCEPTANCE = "acceptance" #
ATTR_STEP_ARGS = "args"
ATTR_EXEC_REF = "_exec"
ATTR_DATA_REF = "_nr"
ATTR_DATA_COMP = "_comp"
TOPIC_TOOL = "tool" # ?? -> TOPIC
TOPIC_NODE_DB = "db"
# testexec, db_abstr
ATTR_DB_PARTITION = "partitioned"
""" optional attribute if table is partitioned
- this keyword delimited by "+" will be replaced by partition-names which are parametrized """
ATTR_DB_DATABASE = "database"
""" attribute for technical name of the database """
ATTR_DB_SCHEMA = "schema"
""" optional attribute for technical name of the schema """
ATTR_DB_TABNAME = "tabname"
""" optional attribute in order to use a different technical name for the db-table """
ATTR_DB_USER = "user"
""" optional attribute in order to use a different technical name for the db-table """
ATTR_DB_PASSWD = "password"
""" optional attribute in order to use a different technical name for the db-table """
ATTR_DB_HOST = "hostname"
""" optional attribute in order to use a different technical name for the db-table """
LIST_DB_ATTR = [ATTR_DB_PARTITION, ATTR_DB_DATABASE, ATTR_DB_SCHEMA, ATTR_DB_TABNAME, ATTR_ARTS_PRESTEP,
ATTR_DB_USER, ATTR_DB_PASSWD, ATTR_DB_HOST] + LIST_ARTS_ATTR
TOPIC_CONN = "conn"
ATTR_DB_CONN_JAR = "conn_jar_name"
""" optional attribute for connection-jar-file instead of connection by ip, port """
ATTR_CONN_HOST = "hostname"
""" optional attribute for connection-jar-file instead of connection by ip, port """
ATTR_CONN_TENANT = "tenant"
""" optional attribute for connection-jar-file instead of connection by ip, port """
ATTR_CONN_IP = "ip"
ATTR_CONN_PORT = "port"
ATTR_CONN_DOMPATH = "dompath"
""" directory where the component is stored in the filesystem """
ATTR_CONN_USER = "user"
ATTR_CONN_PASSWD = "password"
LIST_CONN_ATTR = [ATTR_CONN_HOST, ATTR_CONN_IP, ATTR_CONN_PORT, ATTR_CONN_DOMPATH, ATTR_CONN_USER, ATTR_CONN_PASSWD]
TOPIC_NODE_CLI = "cli"
LIST_CLI_ATTR = [] + LIST_ARTS_ATTR
TOPIC_NODE_API = "api"
LIST_API_ATTR = [] + LIST_ARTS_ATTR
TOPIC_NODE_FILE = "file"
ATTR_FILE_OLD = "oldfile"
ATTR_FILE_ROTATE = "rotate"
NODE_ATTRIBUTES = "attributes"
LIST_FILE_ATTR = [ATTR_FILE_OLD, ATTR_FILE_ROTATE] + LIST_ARTS_ATTR
LIST_ATTR = {
TOPIC_NODE_DB: LIST_DB_ATTR,
TOPIC_NODE_API: LIST_API_ATTR,
TOPIC_NODE_CLI: LIST_CLI_ATTR,
TOPIC_NODE_FILE: LIST_FILE_ATTR
}
LIST_TOPIC_NODES = [TOPIC_NODE_FILE, TOPIC_NODE_DB, TOPIC_NODE_CLI, TOPIC_NODE_API]
# -- data nodes -----------------------------------------------
# ____ _ _ _ _
# | _ \ __ _| |_ __ _ | \ | | ___ __| | ___ ___
# | | | |/ _` | __/ _` |_____| \| |/ _ \ / _` |/ _ \/ __|
# | |_| | (_| | || (_| |_____| |\ | (_) | (_| | __/\__ \
# |____/ \__,_|\__\__,_| |_| \_|\___/ \__,_|\___||___/
#
# -------------------------------------------------------------
""" This constant defines a subnode of a table for the column-names """
CONF_NODE_GENERAL = "_general"
""" it defines a subnode of a table for the column-names """
DATA_NODE_HEADER = "_header"
""" it defines a subnode of a table for the field-list, used for ddl """
DATA_NODE_FIELDS = "_fields"
""" it defines a subnode of a table for the data as key-value-pair, keys from header """
DATA_NODE_DDLFIELDS = "_ddlfields"
""" it defines a subnode of a table for the data as key-value-pair, keys from header """
DATA_NODE_DATA = "_data"
""" it defines the main node in the testdata for the steps to execute """
DATA_NODE_STEPS = SUBJECT_STEPS # "_step" ## ?? SUBJECT
""" it defines main node in the testdata for testcase specific parameters """
DATA_NODE_OPTION = "_option" ## ?? SUBJECT
DATA_NODE_HEAD = "_head" ## ??
DATA_NODE_ARGS = "_arguments"
""" it defines arguments as internal key-value-pairs by delimted with :, used in steps """
""" This constant defines the main node in the testdata for the steps to execute """
DATA_NODE_TABLES = "_tables" # ?? SUBJECT
DATA_NODE_KEYS = "_keys"
""" This constant defines the node for data scheme (DataDefinitionLanguage)
The fields are defined in data_const (D) """
DATA_NODE_DDLKEYS = "_ddlkeys"
""" This constant defines the node for data scheme (DataDefinitionLanguage)
The fields are defined in data_const (D) """
DATA_NODE_DDL = "ddl" # ?? TOPIC
DATA_NODE_COMP = "comp" # ?? SUBJECT
""" This constant defines """
DATA_NODE_PAR = "par"
DATA_NODE_CATALOG = "_catalog"
DATA_NODE_ROW = "_row"
DATA_NODE_SUBTABLES = "subtables" # ?? SUBJECT
DATA_NODE_TOPICS = "_topics"
DATA_NODE_PATH = "_path"
LIST_DATA_NODE = [DATA_NODE_HEADER, DATA_NODE_DATA, DATA_NODE_DDL, DATA_NODE_TOPICS,
DATA_NODE_TABLES, DATA_NODE_STEPS, DATA_NODE_OPTION, DATA_NODE_ROW, DATA_NODE_PATH]
# -- Parameter ------------------------------------------------
# ____ _
# | _ \ __ _ _ __ __ _ _ __ ___ ___| |_ ___ _ __
# | |_) / _` | '__/ _` | '_ ` _ \ / _ \ __/ _ \ '__|
# | __/ (_| | | | (_| | | | | | | __/ || __/ |
# |_| \__,_|_| \__,_|_| |_| |_|\___|\__\___|_|
#
# -------------------------------------------------------------
2 years ago
PAR_PROGRAM = 'program'
PAR_USER = 'user'
PAR_GRAN = "gran"
PAR_PROJ = 'project'
""" definition of the project which will be tested """
3 years ago
PAR_APP = 'application'
""" definition of the application which will be tested """
PAR_ENV = 'environment'
""" definition of the environment where the application runs which will be tested """
2 years ago
PAR_VAR = 'variant'
""" definition of a variant dataflow especially the channel """
3 years ago
PAR_REL = 'release'
""" definition of the release of the application which will be tested """
2 years ago
PAR_BASEDIR = 'basedir'
PAR_DIRNAME = 'dirname'
3 years ago
PAR_TSDIR = 'tsdir'
""" definition of the directory of the testsuite for summaries of the testcases """
PAR_TCDIR = 'tcdir'
""" definition of the directory of the testcase for logs and results """
PAR_XPDIR = 'xpdir'
""" definition of the directory of expectation for comparing the testcase """
PAR_WSDIR = "wsdir"
""" definition of the directory of the workspace """
3 years ago
PAR_TDTYP = 'tdtyp'
PAR_TDSRC = 'tdsrc'
PAR_TDNAME = 'tdname'
PAR_LOG = 'loglevel'
PAR_MODUS = 'modus'
PAR_COMP = 'component'
PAR_FCT = 'function'
PAR_TOOL = 'tool'
3 years ago
PAR_STEP = 'step'
PAR_DESCRIPT = 'desription'
2 years ago
PAR_STRING = 'parstring'
3 years ago
""" """
PAR_TESTPLAN = "testplan"
3 years ago
PAR_TESTCASE = "testcase"
PAR_TESTCASES = "testcases"
PAR_TESTSUITE = "testsuite"
# todo Trennung testsuite - usecase denn n:1-Zuordnung
PAR_TPTIME = "tptime"
PAR_TCTIME = "tctime"
PAR_TSTIME = "tstime"
PAR_TESTINSTANCES = "testinstances"
3 years ago
""" name of testcase extracted from PAR_TCDIR """
PAR_DB_WHERE = "dbwhere"
""" optional parameter with a where-clause """
PAR_DB_PARTITION = "dbparts"
""" optional parameter for partitions of a partitioned tables """
LIST_MAIN_PAR = [PAR_APP, PAR_ENV, PAR_VAR, PAR_REL, PAR_TCDIR, PAR_TSDIR]
3 years ago
# -- attributes -----------------------------------------------
# _ _ _ _ _
# __ _| |_| |_ _ __(_) |__ _ _| |_ ___ ___
# / _` | __| __| '__| | '_ \| | | | __/ _ \/ __|
# | (_| | |_| |_| | | | |_) | |_| | || __/\__ \
# \__,_|\__|\__|_| |_|_.__/ \__,_|\__\___||___/
#
# -------------------------------------------------------------
# -- key-values -----------------------------------------------
# _ _
# | | _____ _ ___ ____ _| |_ _ ___ ___
# | |/ / _ \ | | \ \ / / _` | | | | |/ _ \/ __|
# | < __/ |_| |\ V / (_| | | |_| | __/\__ \
# |_|\_\___|\__, | \_/ \__,_|_|\__,_|\___||___/
# |___/
# -------------------------------------------------------------
BASIS_FILE = "basis"
SVAL_YES = "y"
SVAL_NO = "n"
SVAL_NULL = "null"
# -------------------------------------------------------------
# exception texts
EXP_NO_BASIS_FILE = "basis file cant be found"
EXCEPT_NOT_IMPLEMENT = "method is not implemented"
EXCEPT_NOT_INITIALIZED = "class is not initialized"
2 years ago