#!/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 """ 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_ # + stories : subtable of subject # + : element of subtable - the unique name # + name : redundant name-attribute # + attribute : some main attributes # + datas : # + : 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 = "applications" # SUBJECT_COMP = "component" SUBJECT_COMPS = SUBJECT_COMP + "s" SUBJECT_USECASE = "usecase" SUBJECT_USECASES = SUBJECT_USECASE + "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_VARIANTS = "variants" SUBJECT_ENVIRONMENT = 'environment' SUBJECT_ENVIRONMENTS = SUBJECT_ENVIRONMENT + "s" SUBJECT_STORY = "story" SUBJECT_STORIES = "stories" SUBJECT_DESCRIPTION = "description" # --> MAIN-ATTR SUBJECT_REFERENCE = "reference" # --> MAIN-ATTR LIST_SUBJECTS = [SUBJECT_APPS, SUBJECT_ARTIFACT, SUBJECT_COMPS, SUBJECT_PROJECTS] SUBJECT_STEP = "step" SUBJECT_STEPS = "steps" # --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_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_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 LIST_DATA_NODE = [DATA_NODE_HEADER, DATA_NODE_DATA, DATA_NODE_DDL, DATA_NODE_TABLES, DATA_NODE_STEPS, DATA_NODE_OPTION, DATA_NODE_ROW] # -- Parameter ------------------------------------------------ # ____ _ # | _ \ __ _ _ __ __ _ _ __ ___ ___| |_ ___ _ __ # | |_) / _` | '__/ _` | '_ ` _ \ / _ \ __/ _ \ '__| # | __/ (_| | | | (_| | | | | | | __/ || __/ | # |_| \__,_|_| \__,_|_| |_| |_|\___|\__\___|_| # # ------------------------------------------------------------- PAR_PROGRAM = 'program' PAR_USER = 'user' PAR_GRAN = "gran" PAR_PROJ = 'project' """ definition of the project which will be tested """ 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 """ PAR_VAR = 'variant' """ definition of a variant dataflow especially the channel """ PAR_REL = 'release' """ definition of the release of the application which will be tested """ PAR_BASEDIR = 'basedir' PAR_DIRNAME = 'dirname' 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 """ PAR_TDTYP = 'tdtyp' PAR_TDSRC = 'tdsrc' PAR_TDNAME = 'tdname' PAR_LOG = 'loglevel' PAR_MODUS = 'modus' PAR_COMP = 'component' PAR_FCT = 'function' PAR_TOOL = 'tool' PAR_STEP = 'step' PAR_DESCRIPT = 'desription' PAR_STRING = 'parstring' """ """ PAR_TESTPLAN = "testplan" 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" """ 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] # -- 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"