Browse Source

DB-Testcases Logmails #1

qa_0.6_Release
Daniel Quathamer 1 year ago
parent
commit
8894dfc7c7
  1. 119
      src-modules/module/qa/conf/qa.xml
  2. 17
      src-modules/module/qa/datentabellen/qa_dbtest_ausfuehren.sql
  3. 133
      src-modules/module/qa/datentabellen/qa_mask_execution2qa_dbtest.sql
  4. 201
      src-modules/module/qa/datentabellen/qa_mask_execution_assert_result_code_setzen.sql
  5. 92
      src-modules/module/qa/datentabellen/qa_testcase_fuellen.sql
  6. 58
      src-modules/module/qa/datentabellen/qa_testcase_result_fuellen.sql
  7. 46
      src-modules/module/qa/etl/mask_execution/mask_execution_mail.x
  8. 32
      src-modules/module/qa/etl/testfall_import/create_tables_testfall_import.sql
  9. 50
      src-modules/module/qa/etl/testfall_import/testfall_import.kjb
  10. 105
      src-modules/module/qa/etl/testfall_import/testfall_import_dbtest.kjb
  11. 331
      src-modules/module/qa/etl/testfall_import/testfall_import_dbtest.ktr
  12. 231
      src-modules/module/qa/etl/testfall_import/testfall_import_dbtest_def.ktr
  13. 1
      src-modules/module/qa/masken/37020_felderinfo.unl
  14. 1
      src-modules/module/qa/masken/37020_masken_felder_bez.unl
  15. 255
      src-modules/module/qa/masken/37020_maskeninfo.unl
  16. 3
      src-modules/module/qa/masken/37100_felderinfo.unl
  17. 1
      src-modules/module/qa/masken/37100_masken_felder_bez.unl
  18. 7
      src-modules/module/qa/masken/37100_maskeninfo.unl
  19. 40
      src-modules/module/qa/masken/37140_maskeninfo.unl
  20. 11
      src-modules/module/qa/masken/37160_felderinfo.unl
  21. 1
      src-modules/module/qa/masken/37160_maske_system_bez.unl
  22. 8
      src-modules/module/qa/masken/37160_masken_felder_bez.unl
  23. 126
      src-modules/module/qa/masken/37160_maskeninfo.unl
  24. 1
      src-modules/module/qa/masken/37160_sachgeb_maske_bez.unl
  25. 78
      src-modules/module/qa/qa_update.x
  26. 90
      src-modules/module/qa/upgrade/qa_upgrade_testcases0.6.sql

119
src-modules/module/qa/conf/qa.xml

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--<!DOCTYPE module SYSTEM "../../../conf/superx-module.dtd"> -->
<module name="qa" version="0.5" sachgebiet_id="260"
<module name="qa" version="0.6b" sachgebiet_id="260"
sachgebiet="Qualitätssicherung" systeminfo_id="260"
system="Qualitätssicherung" thema="Qualitätssicherung" thema_parent="Abfragen">
<database name="superx" version="3.0" system="superx">
@ -9,7 +9,58 @@ system="Qualitätssicherung" thema="Qualitätssicherung" thema_parent="Abfragen" @@ -9,7 +9,58 @@ system="Qualitätssicherung" thema="Qualitätssicherung" thema_parent="Abfragen"
rightname="CS_BIA_STANDARDREPORTS_ADMIN[QA]" />
</sachgebiete>
<table name="qa_mask_execution" thema="Qualitätssicherung" typ="Schlüsseltabelle" >
<!--<table name="qa_testcase" thema="Qualitätssicherung" typ="Datentabelle" >
<description>Testfall Metadaten </description>
<columns>
<column name="tid" type="SERIAL" size="255" default="" notnull="true" currentlyUsed="true" isKey="true" description="id">
<comment>ID</comment>
</column>
<column name="name" type="varchar" size="255" default="" notnull="true" description="Name">
<comment>Interner Name</comment>
</column>
<column name="userinfo_id" type="INTEGER" size="100" default="" notnull="false" description="Angelegt von">
<comment>Benutzer</comment>
</column>
<column name="testcase_type_id" type="INTEGER" size="100" default="" notnull="false" description="Art des Testfalls">
<comment>1=Maskentest,2=DB-Test</comment>
</column>
<column name="is_active" type="smallint" size="" default="1" description="Aktiv"
notnull="true">
<comment>Aktiv 0/1</comment>
</column>
<column name="systeminfo_id" type="INTEGER" size="100" default="" notnull="false" description="Komponente">
<comment></comment>
</column>
<column name="uniquename" type="VARCHAR" size="255" default="" description="Schlüssel"
notnull="false" >
<comment></comment>
</column>
<column name="mask_execution_id" type="INTEGER" size="255" default="" description="Maskentest"
notnull="false" >
<comment></comment>
</column>
<column name="dbtest_id" type="INTEGER" size="255" default="" description="DB-Test"
notnull="false" >
<comment></comment>
</column>
<column name="testcase_status_id" type="INTEGER" size="100" default="" notnull="false" description="Status des Testfalls">
<comment>1=Valide,2=Migration</comment>
</column>
</columns>
<primaryKeys>
<rs>
<row>
<fld name='table_cat'>superx</fld>
<fld name='table_schem'>superx</fld>
<fld name='table_name'>qa_testcase</fld>
<fld name='column_name'>tid</fld>
<fld name='key_seq'>1</fld>
<fld name='pk_name'>pk_qa_testcase</fld>
</row>
</rs></primaryKeys>
</table>
-->
<table name="qa_mask_execution" thema="Qualitätssicherung" typ="Datentabelle" >
<description>Berichtsausführung </description>
<columns>
<column name="tid" type="SERIAL" size="255" default="" notnull="true" currentlyUsed="true" isKey="true" description="id">
@ -193,6 +244,56 @@ notnull="true"> @@ -193,6 +244,56 @@ notnull="true">
</rs></primaryKeys>
<!-- TODO indices-->
</table>
<!--vielleicht mal 'ne Hilfstabelle:
<table name="qa_testcase_result" thema="Qualitätssicherung" typ="Datentabelle" >
<description>Protokoll der Testfall-Ausführung</description>
<columns>
<column name="tid" type="SERIAL" size="255" default="" notnull="true" currentlyUsed="true" isKey="true" description="id">
<comment>ID</comment>
</column>
<column name="testcase_id" type="INTEGER" size="100" default="" notnull="false" description="ID des Testfalls">
<comment></comment>
</column>
<column name="assertion_def_col_caption" type="VARCHAR" size="255" default="" notnull="false" description="Erwartung">
<comment></comment>
</column>
<column name="mask_execution_result_id" type="INTEGER" size="100" default="" notnull="false" description="Maskentest Ergebnis Details">
<comment></comment>
</column>
<column name="dbtest_result_id" type="INTEGER" size="100" default="" notnull="false" description="DB-Test Ergebnis Details">
<comment></comment>
</column>
<column name="execution_start" type="DATETIME" size="100" default="" notnull="false" description="Beginn der Ausführung">
<comment></comment>
</column>
<column name="execution_end" type="DATETIME" size="100" default="" notnull="false" description="Ende der Ausführung">
<comment></comment>
</column>
<column name="result_value" type="VARCHAR" size="255" default="" description="Ergebnis" notnull="false">
<comment></comment>
</column>
<column name="result_code" type="SMALLINT" size="" default="" description="Ausführung erfolgreich" notnull="false">
<comment>0=Erfolg</comment>
</column>
<column name="result_log" type="TEXT" size="" default="" description="Logdatei Ausführung" notnull="false">
<comment></comment>
</column>
</columns>
<primaryKeys>
<rs>
<row>
<fld name='table_cat'>superx</fld>
<fld name='table_schem'>superx</fld>
<fld name='table_name'>qa_testcase_result</fld>
<fld name='column_name'>tid</fld>
<fld name='key_seq'>1</fld>
<fld name='pk_name'>pk_qa_testcase_result</fld>
</row>
</rs></primaryKeys>
</table>-->
<table name="qa_mask_execution_assert_result" thema="Qualitätssicherung" typ="Datentabelle" >
<description>Ergebnis nach Berichtsausführung</description>
<columns>
@ -208,6 +309,7 @@ notnull="true"> @@ -208,6 +309,7 @@ notnull="true">
<column name="result_value" type="VARCHAR" size="255" default="" description="Rückgabewert" notnull="false">
<comment></comment>
</column>
<column name="result_code" type ="SMALLINT" size ="5" default ="" notnull ="false" description="Ausführung Ergebniscode"><comment>0=Erfolg</comment></column>
</columns>
<primaryKeys>
<rs>
@ -222,14 +324,14 @@ notnull="true"> @@ -222,14 +324,14 @@ notnull="true">
</rs></primaryKeys>
<!-- TODO indices-->
</table>
<table name="qa_mask_execution2project" caption="Masken-Test zu Projekt" thema="Qualitätssicherung" typ="Schlüsseltabelle">
<table name="qa_mask_execution2project" caption="Testfall zu Projekt" thema="Qualitätssicherung" typ="Datentabelle">
<columns><column name="tid" type ="SERIAL" size ="10" default ="" notnull ="true" description=""/>
<column name="mask_execution_id" type ="INTEGER" size ="255" default ="" notnull ="true" isKey="true" description="DB-Test"/>
<column name="project_id" type ="INTEGER" size ="10" default ="" notnull ="true" description="Projekt"/>
<column name="issue_id" type ="VARCHAR" size ="255" default ="" notnull ="false" description="Ticketnummer"><comment></comment></column>
</columns>
<indexes>
<index name="ix_qa_mask_execution2project_id" type="unique">
<index name="ix_qa_mask_execution2project" type="unique">
<index-column name="mask_execution_id"/>
<index-column name="project_id"/>
</index>
@ -688,12 +790,6 @@ parent="Qualitätssicherung">Abfragen zur Administration</thema> @@ -688,12 +790,6 @@ parent="Qualitätssicherung">Abfragen zur Administration</thema>
<path>$QA_PFAD/masken</path>
</src>
</maske>
<maske tid="37100" name="Datenbank-Tests Protokoll" thema="Qualitätssicherung">
<description>Datenbank-Tests Protokoll</description>
<src>
<path>$QA_PFAD/masken</path>
</src>
</maske>
<maske tid="37120" name="Datenbank-Tests planen" thema="Administration Qualitätssicherung">
<description>Datenbank-Tests planen</description>
<src>
@ -875,9 +971,10 @@ format="%s"> @@ -875,9 +971,10 @@ format="%s">
<action>
<nativeaction sql="" scriptfile="$QA_PFAD/schluesseltabellen/qa_mask_execution_update.sql"
database=""/>
<nativeaction sql="" scriptfile="$QA_PFAD/datentabellen/qa_mask_execution_assert_result_code_setzen.sql"
database=""/>
<nativeaction sql="" scriptfile="$QA_PFAD/datentabellen/qa_dbtest_ausfuehren.sql"
database=""/>
<nativeaction sql="update systeminfo set datum=today() where tid in (260)" scriptfile="" database=""/>
</action>
</etl-step>

17
src-modules/module/qa/datentabellen/qa_dbtest_ausfuehren.sql

@ -57,18 +57,24 @@ create temp table tmp_qa_dbtest_result_id @@ -57,18 +57,24 @@ create temp table tmp_qa_dbtest_result_id
<#foreach dbtest in qa_dbtests>
<#if dbtest_id == "" || dbtest_id==dbtest.tid?string>
select now() as beginn
select ${dbtest.tid}::integer as dbtest_id,now() as beginn
into temp tmp_anfang;
select ${dbtest.fieldclause}
select ${dbtest.fieldclause},(row_number () over (<#if dbtest.orderbyclause !=''>
order by ${dbtest.orderbyclause}
</#if>))::integer as _rownumber
into temp tmp_rs
from ${dbtest.fromclause}
<#if dbtest.whereclause !=''>
where ${dbtest.whereclause}
where <#assign inlineTemplate=dbtest.whereclause?interpret />
<@inlineTemplate/>
</#if>
<#if dbtest.groupbyclause !=''>
group by ${dbtest.groupbyclause}
</#if>
<#if dbtest.orderbyclause !=''>
order by ${dbtest.orderbyclause}
</#if>
@ -99,7 +105,10 @@ then 0 @@ -99,7 +105,10 @@ then 0
else 1 end as result_code,
T.${dbtest_assertion.def_col_name} as result_value
from tmp_anfang A left outer join tmp_rs T
on (1=${dbtest_assertion.rownr})
on (A.dbtest_id=${dbtest_assertion.dbtest_id}
and _rownumber=${dbtest_assertion.rownr}
)
;
insert into tmp_qa_dbtest_result_id(qa_dbtest_result_id)
<#if SQLdialect='Postgres'>

133
src-modules/module/qa/datentabellen/qa_mask_execution2qa_dbtest.sql

@ -0,0 +1,133 @@ @@ -0,0 +1,133 @@
--Beispielscript kopiert Masken-Testfälle auf der Basis Studierende Datenblatt zu DB-Tests
--Achtung: uniquenames müssen angepaßt werden
-- truncate table qa_dbtest_assertion
-- ;
-- truncate table qa_dbtest2project
-- ;
-- truncate table qa_dbtest
-- ;
begin work;
select E.tid,E.name,E.uniquename,F.name as feldname,S.field_value,
(case when F.name='Filter Studierende' then '${' || trim(S.field_value) || '}'
when F.name in ('Hörerstatus','Köpfe oder Fälle ?') then S.field_value
when F.name='Status' then 'kz_rueck_beur_ein in (' || trim(S.field_value) || ')'
when F.name='Bis Semester' then 'sem_rueck_beur_ein<=' || S.field_value
when F.name='Seit Semester' then 'sem_rueck_beur_ein>=' || S.field_value
when F.name='Stichtag' then 'stichtag=' || S.field_value
when F.name='bis Fachsemester' then 'fach_sem_zahl <=' || S.field_value
when F.name='Geschlecht' then 'geschlecht=' || S.field_value
when F.name='Felder' then ''
else 'Unbekanntes Feld' end)::varchar(255) as sqlwhere
into tmp_tc
from qa_mask_execution E, qa_mask_field_sel S, felderinfo F
where E.tid=S.mask_execution_id
and F.tid=S.felderinfo_id
--and E.uniquename='160440_Köpfe_20182_amtlich_01.4_04_Bachelor_mit_LA'
and E.maskeninfo_id=160440
and 2=(select count(*)
from qa_mask_field_sel S2, felderinfo F2
where E.tid=S2.mask_execution_id
and F2.tid=S2.felderinfo_id
and (
(F2.name='Felder'and S2.field_value='sos_stg_aggr.summe')
or
(F2.name='Stichtag' and S2.field_value='1')
)
)
order by 1,2;
select distinct E.tid into temp tmp_invalid
from tmp_tc E where sqlwhere = 'Unbekanntes Feld';
delete from tmp_tc where tid in (select V.tid from tmp_invalid V);
select A.result_value_max,E.*
into tmp_dbtest
from qa_mask_execution_assert A, tmp_tc E
where E.tid=A.mask_execution_id
and result_value_max=result_value_min
and is_active=1
and rownr=1
and colnr=1;
insert into qa_dbtest(tid,
uniquename,
name,
systeminfo_id,
resultset_id,
whereclause,
description,
active
)
select tid,
uniquename,
name,
7 as systeminfo_id,
(select R.tid from qa_resultset R where R.uniquename='students_dp_amtlich_summen') as resultset_id,
array_to_string(array_agg(sqlwhere),' and ') as whereclause,
'' as description,
1 as active
from tmp_dbtest T
where T.sqlwhere !=''
group by 1,2,3,4,5;
insert into qa_dbtest2project
(
dbtest_id,
project_id )
select distinct T.tid,
(select P.tid from qa_project P where P.uniquename='Studierende amtlich Summen')
FROM tmp_dbtest T
;
insert into qa_dbtest_assertion
(
dbtest_id,
rownr,
def_col_caption,
def_col_name,
def_col_value)
select distinct T.tid,
1 as rownr,
'Summe',
'summe',
T.result_value_max
FROM tmp_dbtest T
;
select 'Erfolgreich migrierte Tests';
select distinct T.name
from tmp_dbtest T
order by 1;
delete from qa_mask_execution_assert_result
where mask_execution_assert_id in (select A.tid
from qa_mask_execution_assert A, tmp_dbtest T
where A.mask_execution_id=T.tid);
delete from qa_mask_execution_assert
where mask_execution_id in (select T.tid from tmp_dbtest T);
delete from qa_mask_field_sel
where mask_execution_id in (select T.tid from tmp_dbtest T);
delete from qa_mask_execution
where tid in (select T.tid
from tmp_dbtest T);
drop table tmp_dbtest;
drop table tmp_tc;
select sp_update_sequence('qa_dbtest');
commit;
-- truncate table qa_dbtest_assertion
-- ;
-- truncate table qa_dbtest2project
-- ;
-- truncate table qa_dbtest
-- ;

201
src-modules/module/qa/datentabellen/qa_mask_execution_assert_result_code_setzen.sql

@ -0,0 +1,201 @@ @@ -0,0 +1,201 @@
--Autor: D. Quathamer
--Datum: 2.8.2019
--Freemarker Template
<#include "SQL_lingua_franca"/>
<#include "SuperX_general"/>
--Achtung: Diese Script ist auch das select_stmt der Maske 37020
<#assign resultValueNative="result_value::float" />
<#if SQLdialect='Postgres'>
<#assign resultValueNative="round(decval(replace(result_value,'.',',')),0) " />
</#if>
<#assign inEtl=true />
<#if Maskennummer?exists && Maskennummer=37020>
<#assign inEtl=false />
</#if>
<#assign mask_execution_id="" />
<#if inEtl>
<@selectintotmp
select="A.tid as qa_mask_execution_assert_result_tid,
R.tid,
R.mask_execution_id,
R.execution_start,
R.execution_end,
R.result_code,
null::integer as result_status,
''::char(255) as result_status_str,
A.result_value,
E.tid as execution_id,
E.name as execution_name,
E.uniquename,
E.systeminfo_id,
''::char(255) as systeminfo_id_str,
E.maskeninfo_id,
''::char(255) as maskeninfo_id_str,
A.mask_execution_assert_id,
null::integer as result_value_min,
null::integer as result_value_max,
null::varchar(255) as assert_caption,
null::varchar(255)[] as fields
"
source="qa_mask_execution E, qa_mask_execution_result R inner join qa_mask_execution_assert_result A on (A.mask_execution_result_id=R.tid)"
target="tmp_qa_mask_execution">
-- nested in selectinto muss die where Bedingung u. ggfs. group by etc kommen
where
E.tid=R.mask_execution_id
and A.result_code is null
</@selectintotmp>
<@informixnolog/>;
<#else>
<@selectintotmp
select="A.tid as qa_mask_execution_assert_result_tid,
R.tid,
R.mask_execution_id,
R.execution_start,
R.execution_end,
R.result_code,
null::integer as result_status,
''::char(255) as result_status_str,
A.result_value,
E.tid as execution_id,
E.name as execution_name,
E.uniquename,
E.systeminfo_id,
''::char(255) as systeminfo_id_str,
E.maskeninfo_id,
''::char(255) as maskeninfo_id_str,
A.mask_execution_assert_id,
null::integer as result_value_min,
null::integer as result_value_max,
null::varchar(255) as assert_caption,
null::varchar(255)[] as fields,
('' || E.maskeninfo_id || '&')::text as nextmask,
('../edit/qa/qa_mask_execution_edit.jsp|tid=' || E.tid)::varchar(255) as nextedit
"
source="qa_mask_execution E, qa_mask_execution_result R left outer join qa_mask_execution_assert_result A on (A.mask_execution_result_id=R.tid)"
target="tmp_qa_mask_execution">
-- nested in selectinto muss die where Bedingung u. ggfs. group by etc kommen
where
E.tid=R.mask_execution_id
/* and E.is_active=<<Nur aktive>> */
/* and E.maskeninfo_id=<<Maske>> */
/* and E.userinfo_id=<<Benutzer/in>> */
/* and E.systeminfo_id=<<Komponente>> */
/* and E.name ilike '%<<Testfall-Name (Stichwort)>>%' */
/* and E.uniquename ilike '%<<Testfall-Schlüssel>>%' */
/* and date(R.execution_start) >= date_val(<<Ab Datum>>) */
/* and E.tid in (select P.mask_execution_id from qa_mask_execution2project P where P.project_id=<<Projekt>>) */
/* and R.tid=<<Result-ID>> */
</@selectintotmp>
<@informixnolog/>;
</#if>
<#if SQLdialect='Postgres'>
update tmp_qa_mask_execution set result_value_min=A.result_value_min,
result_value_max=A.result_value_max,
assert_caption=coalesce(A.caption,'Zeile ' || A.rownr || ' Spalte ' || A.colnr)
from qa_mask_execution_assert A
where A.tid=tmp_qa_mask_execution.mask_execution_assert_id;
<#else>
--Informix Dialekt:
update tmp_qa_mask_execution set (result_value_min,
result_value_max,
assert_caption)
= ((select
A.result_value_min,
A.result_value_max,
nvl(A.caption,'Zeile ' || A.rownr || ' Spalte ' || A.colnr)
from qa_mask_execution_assert A
where A.tid=tmp_qa_mask_execution.mask_execution_assert_id
))
where tmp_qa_mask_execution.mask_execution_assert_id in (select A.tid
from qa_mask_execution_assert A)
;
</#if>
update tmp_qa_mask_execution set result_status=2,
result_status_str='Fehler'
where result_code!=0;
update tmp_qa_mask_execution set result_status=0,
result_status_str='Erfolg'
where result_code=0
and (
(${resultValueNative} >= result_value_min or result_value_min is null)
and
(${resultValueNative} <= result_value_max or result_value_max is null)
)
;
update tmp_qa_mask_execution set result_status=1,
result_status_str='Warnung'
where result_status is null;
<#if inEtl>
update qa_mask_execution_assert_result set result_code=T.result_status
from tmp_qa_mask_execution T
where T.qa_mask_execution_assert_result_tid=qa_mask_execution_assert_result.tid
and qa_mask_execution_assert_result.result_code is null;
drop table tmp_qa_mask_execution;
<#else>
/* delete from tmp_qa_mask_execution where result_status not in (<<Ausführungs-Status>>) ; */
update tmp_qa_mask_execution set systeminfo_id_str=(select name from systeminfo S
where S.tid=tmp_qa_mask_execution.systeminfo_id);
update tmp_qa_mask_execution set maskeninfo_id_str=(select name from maskeninfo M
where M.tid=tmp_qa_mask_execution.maskeninfo_id);
<#if SQLdialect='Postgres'>
update tmp_qa_mask_execution set fields=(select array_agg(trim(F.name) || '=' || trim(S.field_value))
from qa_mask_field_sel S, felderinfo F
where S.felderinfo_id=F.tid
and S.is_active=1
and S.mask_execution_id=tmp_qa_mask_execution.execution_id
);
update tmp_qa_mask_execution set nextmask=nextmask || array_to_string(fields,'&','')
where fields is not null;
</#if>
select systeminfo_id_str,
execution_name,
uniquename,
maskeninfo_id_str,
nextmask,
execution_start,
<#if SQLdialect='Postgres'>
round(extract(second from (execution_end-execution_start))::decimal,0)::integer as dauer,
<#else>
execution_end-execution_start as dauer,
</#if>
assert_caption,
result_value_min,
result_value_max,
result_value,
result_status_str,
('37040&Ergebnis=' || tid)::varchar(255) as nexttable
<#if UserIsAdmin>
,nextedit
</#if>
from tmp_qa_mask_execution
order by 1,2,3,4,5,6,7;
</#if>

92
src-modules/module/qa/datentabellen/qa_testcase_fuellen.sql

@ -0,0 +1,92 @@ @@ -0,0 +1,92 @@
--OBSOLET:
begin work;
--welche Maskentests sind noch nicht migriert?
insert into qa_testcase(
name,
userinfo_id,
testcase_type_id,
is_active,
systeminfo_id,
uniquename,
mask_execution_id,
dbtest_id,
testcase_status_id
)
select name,
userinfo_id,
1 as testcase_type_id,
is_active,
systeminfo_id,
uniquename,
E.tid as mask_execution_id,
null::integer as dbtest_id,
2 as testcase_status_id --Migration
FROM qa_mask_execution E
where E.tid not in (select mask_execution_id
from qa_testcase
where mask_execution_id is not null)
;
--Anhängige Tabellen füllen:
insert into qa_testcase2project(
testcase_id,
project_id,
issue_id)
select C.tid,
P.project_id,
P.issue_id
FROM qa_mask_execution2project P, qa_testcase C
where C.mask_execution_id=P.mask_execution_id
and C.testcase_status_id=2
;
--jetzt dbtests:
insert into qa_testcase(
name,
userinfo_id,
testcase_type_id,
is_active,
systeminfo_id,
uniquename,
mask_execution_id,
dbtest_id,
testcase_status_id
)
select name,
null::integer as userinfo_id,
2 as testcase_type_id,
D.active,
D.systeminfo_id,
D.uniquename,
null::integer as mask_execution_id,
D.tid as dbtest_id,
2 as testcase_status_id --Migration
FROM qa_dbtest D
where D.tid not in (select dbtest_id
from qa_testcase
where dbtest_id is not null)
;
--Anhängige Tabellen füllen:
insert into qa_testcase2project(
testcase_id,
project_id,
issue_id)
select C.tid,
P.project_id,
P.issue_id
FROM qa_dbtest2project P, qa_testcase C
where C.dbtest_id=P.dbtest_id
and C.testcase_status_id=2
;
--migriert:
update qa_testcase set testcase_status_id=1
where testcase_status_id=2;
commit;

58
src-modules/module/qa/datentabellen/qa_testcase_result_fuellen.sql

@ -0,0 +1,58 @@ @@ -0,0 +1,58 @@
--OBSOLET:
--truncate table qa_testcase_result;
--maskentests:
insert into qa_testcase_result(
testcase_id,
mask_execution_result_id,
assertion_def_col_caption,
execution_start,
execution_end,
result_value,
result_code,
result_log)
select
C.tid as testcase_id,
P.tid as mask_execution_result_id,
nvl(A.caption,'' || result_value_min || '-'|| result_value_max) as assertion_def_col_caption,
P.execution_start,
P.execution_end,
R.result_value,
R.result_code,
P.result_log
FROM qa_mask_execution_result P, qa_mask_execution_assert_result R, qa_mask_execution_assert A, qa_testcase C
where R.mask_execution_result_id=P.tid
and C.mask_execution_id=P.mask_execution_id
and A.tid=R.mask_execution_assert_id
and P.tid not in (select R.mask_execution_result_id
from qa_testcase_result R
where R.mask_execution_result_id is not null)
;
--DB-Tests:
insert into qa_testcase_result(
testcase_id,
dbtest_result_id,
assertion_def_col_caption,
execution_start,
execution_end,
result_value,
result_code,
result_log)
select
C.tid as testcase_id,
P.tid as dbtest_result_id,
A.def_col_caption,
P.execution_start,
P.execution_end,
P.result_value,
P.result_code,
P.result_value
FROM qa_dbtest_result P, qa_dbtest_assertion A, qa_testcase C
where C.dbtest_id=A.dbtest_id
and A.tid=P.dbtest_assertion_id
and P.tid not in (
select R.dbtest_result_id from qa_testcase_result R
where R.dbtest_result_id is not null)
;

46
src-modules/module/qa/etl/mask_execution/mask_execution_mail.x

@ -0,0 +1,46 @@ @@ -0,0 +1,46 @@
#!/bin/bash
# Verzeichnis in dem Die Dateien abgelegt werden sollen
FILE_DIR="$QA_PFAD/etl/mask_execution/tmp"
mkdir -p $FILE_DIR
# Dateiname
export FILE_NAME="Testfall_Protokoll"
# Masken TID
export MASKEN_TID=37020
# Datum für das Feld "Ab Datum"
export DATUM_EXEC=$(date "+%d.%m.%Y")
# Masken Parameter
export MASK_PARAM="Ausführungs-Status=1,2&Ab Datum=${DATUM_EXEC}"
# ExecuteMask funktioniert nur im WEB-INF Ordner
cd $WEBAPP/WEB-INF
echo CMD -cp "$JDBC_CLASSPATH" $JAVA_OPTS de.superx.bin.ExecuteMask -tid:$MASKEN_TID -out:$FILE_DIR/$FILE_NAME.pdf -user:admin "-params:${MASK_PARAM}&stylesheet=tabelle_fo_pdf.xsl&contenttype=application/pdf" -logger:$SUPERX_DIR/db/conf/logging.properties
# PDF
java -cp "$JDBC_CLASSPATH" $JAVA_OPTS de.superx.bin.ExecuteMask -tid:$MASKEN_TID -out:$FILE_DIR/$FILE_NAME.pdf -user:admin "-params:${MASK_PARAM}&stylesheet=tabelle_fo_pdf.xsl&contenttype=application/pdf" -logger:$SUPERX_DIR/db/conf/logging.properties
# XML
#java -cp "$JDBC_CLASSPATH" $JAVA_OPTS de.superx.bin.ExecuteMask -tid:$MASKEN_TID -out:$FILE_DIR/$FILE_NAME.xml -user:admin "-params:${MASK_PARAM}&stylesheet=tabelle_fo_pdf.xsl&contenttype=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" -logger:$SUPERX_DIR/db/conf/logging.properties
# CSV
java -cp "$JDBC_CLASSPATH" $JAVA_OPTS de.superx.bin.ExecuteMask -tid:$MASKEN_TID -out:$FILE_DIR/$FILE_NAME.csv -user:admin "-params:${MASK_PARAM}&stylesheet=tabelle_fo_pdf.xsl&contenttype=text/csv" -logger:$SUPERX_DIR/db/conf/logging.properties
# Verzeichnis in dem die Dateien abgelegt wurden. Zum zählen und verschicken.
cd $FILE_DIR
sed -i 's/\^/ \| /g' $FILE_DIR/$FILE_NAME.csv
#Zuerst Warnungen und Fehler zählen
export W_ANZ=$(grep -c Warnung $FILE_DIR/$FILE_NAME.csv)
export F_ANZ=$(grep -c Fehler $FILE_DIR/$FILE_NAME.csv)
#Mail Versand
cat $FILE_DIR/$FILE_NAME.csv | $MAILPROG -s "Testfall-Protokoll | $W_ANZ Warnungen | $F_ANZ Fehler" -a $FILE_DIR/$FILE_NAME.pdf "${LOGMAIL}"

32
src-modules/module/qa/etl/testfall_import/create_tables_testfall_import.sql

@ -0,0 +1,32 @@ @@ -0,0 +1,32 @@
drop table if exists tmp_testfall_import_felder;
drop table if exists tmp_testfall_import_feldwerte;
drop table if exists tmp_testfall_import_erg;
create table tmp_testfall_import_felder(
testfall_schluessel varchar(255),
feldnr integer,
feldname varchar(255)
);
create table tmp_testfall_import_feldwerte(
systeminfo_id integer,
testfall_schluessel varchar(255),
maskeninfo_id integer,
feldnr integer,
feldwert varchar(255)
);
create table tmp_testfall_import_erg(
testfall_schluessel varchar(255),
systeminfo_id integer,
mask_execution_id INTEGER ,
rownr INTEGER ,
colnr INTEGER ,
result_value_min FLOAT ,
result_value_max FLOAT ,
is_active smallint default 1 not null,
caption varchar(255)
);

50
src-modules/module/qa/etl/testfall_import/testfall_import.kjb

@ -1,19 +1,18 @@ @@ -1,19 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<job>
<?xml version="1.0" encoding="UTF-8"?><job>
<name>testfall_import</name>
<description/>
<extended_description/>
<job_version/>
<job_status>0</job_status>
<directory>&#x2f;</directory>
<directory>/</directory>
<created_user>-</created_user>
<created_date>2020&#x2f;02&#x2f;23 21&#x3a;14&#x3a;53.737</created_date>
<created_date>2020/02/23 21:14:53.737</created_date>
<modified_user>-</modified_user>
<modified_date>2020&#x2f;02&#x2f;23 21&#x3a;14&#x3a;53.737</modified_date>
<modified_date>2020/02/23 21:14:53.737</modified_date>
<parameters>
<parameter>
<name>PATH_TO_UPLOADFILE</name>
<default_value>file&#x3a;&#x2f;&#x2f;&#x2f;home&#x2f;superx&#x2f;git&#x2f;Memtext-Interna&#x2f;Projekte&#x2f;duisburg-essen_uni&#x2f;impl&#x2f;db_module&#x2f;qa&#x2f;ects_testfaelle&#x2f;qa_importdatei.xlsx</default_value>
<default_value>file:///home/superx/git/Memtext-Interna/Projekte/duisburg-essen_uni/impl/db_module/qa/ects_testfaelle/qa_importdatei.xlsx</default_value>
<description/>
</parameter>
<parameter>
@ -22,32 +21,7 @@ @@ -22,32 +21,7 @@
<description/>
</parameter>
</parameters>
<connection>
<name>eduetl</name>
<server>localhost</server>
<type>POSTGRESQL</type>
<access>Native</access>
<database>eduetl_ude</database>
<port>9998</port>
<username>superx</username>
<password>Encrypted 2be98afc86aa7f292a20aa77fd0c3fa9e</password>
<servername>superx_host_iso</servername>
<data_tablespace/>
<index_tablespace/>
<attributes>
<attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
<attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
<attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
<attribute><code>PORT_NUMBER</code><attribute>9998</attribute></attribute>
<attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>Y</attribute></attribute>
<attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
<attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
<attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
<attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
</attributes>
</connection>
<slaveservers>
</slaveservers>
<slaveservers/>
<job-log-table>
<connection/>
<schema/>
@ -347,7 +321,7 @@ @@ -347,7 +321,7 @@
<type>TRANS</type>
<specification_method>filename</specification_method>
<trans_object_id/>
<filename>&#x24;&#x7b;Internal.Job.Filename.Directory&#x7d;&#x2f;testfall_import.ktr</filename>
<filename>${Internal.Job.Filename.Directory}/testfall_import.ktr</filename>
<transname/>
<arg_from_previous>N</arg_from_previous>
<params_from_previous>N</params_from_previous>
@ -380,10 +354,10 @@ @@ -380,10 +354,10 @@
<name>create table tmp_testfall_import</name>
<description/>
<type>SQL</type>
<sql>&#xa;drop table if exists tmp_testfall_import_felder&#x3b;&#xa;drop table if exists tmp_testfall_import_feldwerte&#x3b;&#xa;drop table if exists tmp_testfall_import_erg&#x3b;&#xa;drop table if exists tmp_testfall_import_felder&#x3b;&#xa;&#xa;create table tmp_testfall_import_felder&#x28;&#xa;testfall_schluessel varchar&#x28;255&#x29;,&#xa;feldnr integer,&#xa;feldname varchar&#x28;255&#x29;&#xa;&#x29;&#x3b;&#xa;create table tmp_testfall_import_felder&#x28;&#xa;testfall_schluessel varchar&#x28;255&#x29;,&#xa;feldnr integer,&#xa;feldname varchar&#x28;255&#x29;&#xa;&#x29;&#x3b;&#xa;&#xa;&#xa;create table tmp_testfall_import_feldwerte&#x28;&#xa;systeminfo_id integer,&#xa;testfall_schluessel varchar&#x28;255&#x29;,&#xa;maskeninfo_id integer,&#xa;feldnr integer,&#xa;feldwert varchar&#x28;255&#x29;&#xa;&#x29;&#x3b;&#xa;&#xa;create table tmp_testfall_import_erg&#x28;&#xa;testfall_schluessel varchar&#x28;255&#x29;,&#xa;systeminfo_id integer,&#xa;mask_execution_id INTEGER , &#xa;rownr INTEGER , &#xa;colnr INTEGER , &#xa;result_value_min FLOAT , &#xa;result_value_max FLOAT , &#xa;is_active smallint default 1 not null,&#xa;caption varchar&#x28;255&#x29;&#xa;&#x29;&#x3b;</sql>
<sql/>
<useVariableSubstitution>F</useVariableSubstitution>
<sqlfromfile>F</sqlfromfile>
<sqlfilename/>
<sqlfromfile>T</sqlfromfile>
<sqlfilename>${Internal.Job.Filename.Directory}/create_tables_testfall_import.sql</sqlfilename>
<sendOneStatement>F</sendOneStatement>
<connection>eduetl</connection>
<parallel>N</parallel>
@ -399,7 +373,7 @@ @@ -399,7 +373,7 @@
<sql/>
<useVariableSubstitution>T</useVariableSubstitution>
<sqlfromfile>T</sqlfromfile>
<sqlfilename>&#x24;&#x7b;Internal.Job.Filename.Directory&#x7d;&#x2f;testfall_import.sql</sqlfilename>
<sqlfilename>${Internal.Job.Filename.Directory}/testfall_import.sql</sqlfilename>
<sendOneStatement>F</sendOneStatement>
<connection>eduetl</connection>
<parallel>N</parallel>
@ -440,7 +414,7 @@ @@ -440,7 +414,7 @@
</hops>
<notepads>
<notepad>
<note>TODO&#x3a; Parameter userid aus Maskenfeld</note>
<note>TODO: Parameter userid aus Maskenfeld</note>
<xloc>472</xloc>
<yloc>234</yloc>
<width>273</width>

105
src-modules/module/qa/etl/testfall_import/testfall_import_dbtest.kjb

@ -1,19 +1,18 @@ @@ -1,19 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<job>
<?xml version="1.0" encoding="UTF-8"?><job>
<name>testfall_import</name>
<description/>
<extended_description/>
<job_version/>
<job_status>0</job_status>
<directory>&#x2f;</directory>
<directory>/</directory>
<created_user>-</created_user>
<created_date>2020&#x2f;02&#x2f;23 21&#x3a;14&#x3a;53.737</created_date>
<created_date>2020/02/23 21:14:53.737</created_date>
<modified_user>-</modified_user>
<modified_date>2020&#x2f;02&#x2f;23 21&#x3a;14&#x3a;53.737</modified_date>
<modified_date>2020/02/23 21:14:53.737</modified_date>
<parameters>
<parameter>
<name>PATH_TO_UPLOADFILE</name>
<default_value>file&#x3a;&#x2f;&#x2f;&#x2f;home&#x2f;superx&#x2f;git&#x2f;Memtext-Interna&#x2f;Projekte&#x2f;duisburg-essen_uni&#x2f;impl&#x2f;db_module&#x2f;qa&#x2f;ects_testfaelle&#x2f;qa_importdatei_dbtest.xlsx</default_value>
<default_value>file:///home/superx/git/Memtext-Interna/Projekte/duisburg-essen_uni/impl/db_module/qa/ects_testfaelle/qa_importdatei_dbtest.xlsx</default_value>
<description/>
</parameter>
<parameter>
@ -22,32 +21,7 @@ @@ -22,32 +21,7 @@
<description/>
</parameter>
</parameters>
<connection>
<name>eduetl</name>
<server>localhost</server>
<type>POSTGRESQL</type>
<access>Native</access>
<database>eduetl_ude</database>
<port>9998</port>
<username>superx</username>
<password>Encrypted 2be98afc86aa7f292a20aa77fd0c3fa9e</password>
<servername>superx_host_iso</servername>
<data_tablespace/>
<index_tablespace/>
<attributes>
<attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
<attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
<attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
<attribute><code>PORT_NUMBER</code><attribute>9998</attribute></attribute>
<attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>Y</attribute></attribute>
<attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
<attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
<attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
<attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
</attributes>
</connection>
<slaveservers>
</slaveservers>
<slaveservers/>
<job-log-table>
<connection/>
<schema/>
@ -347,7 +321,7 @@ @@ -347,7 +321,7 @@
<type>TRANS</type>
<specification_method>filename</specification_method>
<trans_object_id/>
<filename>&#x24;&#x7b;Internal.Job.Filename.Directory&#x7d;&#x2f;testfall_import_dbtest_def.ktr</filename>
<filename>${Internal.Job.Filename.Directory}/testfall_import_dbtest_def.ktr</filename>
<transname/>
<arg_from_previous>N</arg_from_previous>
<params_from_previous>N</params_from_previous>
@ -380,7 +354,64 @@ @@ -380,7 +354,64 @@
<name>create table tmp_testfall_import</name>
<description/>
<type>SQL</type>
<sql>&#xa;drop table if exists tmp_qa_dbtest&#x3b;&#xa;drop table if exists tmp_qa_dbtest_assertion&#x3b;&#xa;drop TABLE if exists tmp_qa_resultset&#x3b;&#xa;drop table if exists tmp_testfall_import_felder&#x3b;&#xa;drop table if exists tmp_testfall_import_feldwerte&#x3b;&#xa;&#xa;CREATE TABLE tmp_qa_dbtest&#xa;&#x28;&#xa; tid serial NOT NULL,&#xa; uniquename varchar&#x28;255&#x29; NOT NULL,&#xa; name varchar&#x28;255&#x29;,&#xa; systeminfo_id integer,&#xa; resultset_id integer ,&#xa;resultset_uniquename varchar&#x28;255&#x29;,&#xa; whereclause text,&#xa; description text,&#xa; active smallint DEFAULT 1&#xa;&#x29;&#x3b;&#xa;CREATE TABLE tmp_qa_dbtest_assertion&#xa;&#x28;&#xa; tid serial NOT NULL,&#xa; dbtest_id integer,&#xa;dbtest_uniquename varchar&#x28;255&#x29;,&#xa;systeminfo_id integer,&#xa; rownr integer,&#xa; def_col_caption varchar&#x28;255&#x29;,&#xa; def_col_name varchar&#x28;255&#x29;,&#xa; def_col_value varchar&#x28;255&#x29;&#xa;&#x29;&#x3b;&#xa;CREATE TABLE tmp_qa_resultset&#xa;&#x28;&#xa; tid serial NOT NULL,&#xa; uniquename varchar&#x28;255&#x29; NOT NULL,&#xa; name varchar&#x28;255&#x29;,&#xa; systeminfo_id integer NOT NULL,&#xa; fromclause text,&#xa; fieldclause text,&#xa; groupbyclause varchar&#x28;255&#x29;,&#xa; orderbyclause varchar&#x28;255&#x29;&#xa;&#x29;&#x3b;&#xa;create table tmp_testfall_import_felder&#x28;&#xa;feldnr integer,&#xa;feldname varchar&#x28;255&#x29;&#xa;&#x29;&#x3b;&#xa;create table tmp_testfall_import_erg&#x28;&#xa;feldnr integer,&#xa;feldname varchar&#x28;255&#x29;&#xa;&#x29;&#x3b;&#xa;&#xa;create table tmp_testfall_import_feldwerte&#x28;&#xa;systeminfo_id integer,&#xa;testfall_schluessel varchar&#x28;255&#x29;,&#xa;resultset_uniquename varchar&#x28;255&#x29;,&#xa;feldnr integer,&#xa;feldwert varchar&#x28;255&#x29;&#xa;&#x29;&#x3b;&#xa;</sql>
<sql>
drop table if exists tmp_qa_dbtest;
drop table if exists tmp_qa_dbtest_assertion;
drop TABLE if exists tmp_qa_resultset;
drop table if exists tmp_testfall_import_felder;
drop table if exists tmp_testfall_import_feldwerte;
CREATE TABLE tmp_qa_dbtest
(
tid serial NOT NULL,
uniquename varchar(255) NOT NULL,
name varchar(255),
systeminfo_id integer,
resultset_id integer ,
resultset_uniquename varchar(255),
whereclause text,
description text,
active smallint DEFAULT 1
);
CREATE TABLE tmp_qa_dbtest_assertion
(
tid serial NOT NULL,
dbtest_id integer,
dbtest_uniquename varchar(255),
systeminfo_id integer,
rownr integer,
def_col_caption varchar(255),
def_col_name varchar(255),
def_col_value varchar(255)
);
CREATE TABLE tmp_qa_resultset
(
tid serial NOT NULL,
uniquename varchar(255) NOT NULL,
name varchar(255),
systeminfo_id integer NOT NULL,
fromclause text,
fieldclause text,
groupbyclause varchar(255),
orderbyclause varchar(255)
);
create table tmp_testfall_import_felder(
feldnr integer,
feldname varchar(255)
);
create table tmp_testfall_import_erg(
feldnr integer,
feldname varchar(255)
);
create table tmp_testfall_import_feldwerte(
systeminfo_id integer,
testfall_schluessel varchar(255),
resultset_uniquename varchar(255),
feldnr integer,
feldwert varchar(255)
);
</sql>
<useVariableSubstitution>F</useVariableSubstitution>
<sqlfromfile>F</sqlfromfile>
<sqlfilename/>
@ -399,7 +430,7 @@ @@ -399,7 +430,7 @@
<sql/>
<useVariableSubstitution>T</useVariableSubstitution>
<sqlfromfile>T</sqlfromfile>
<sqlfilename>&#x24;&#x7b;Internal.Job.Filename.Directory&#x7d;&#x2f;testfall_import_dbtest.sql</sqlfilename>
<sqlfilename>${Internal.Job.Filename.Directory}/testfall_import_dbtest.sql</sqlfilename>
<sendOneStatement>F</sendOneStatement>
<connection>eduetl</connection>
<parallel>N</parallel>
@ -414,7 +445,7 @@ @@ -414,7 +445,7 @@
<type>TRANS</type>
<specification_method>filename</specification_method>
<trans_object_id/>
<filename>&#x24;&#x7b;Internal.Job.Filename.Directory&#x7d;&#x2f;testfall_import_dbtest.ktr</filename>
<filename>${Internal.Job.Filename.Directory}/testfall_import_dbtest.ktr</filename>
<transname/>
<arg_from_previous>N</arg_from_previous>
<params_from_previous>N</params_from_previous>
@ -484,7 +515,7 @@ @@ -484,7 +515,7 @@
</hops>
<notepads>
<notepad>
<note>TODO&#x3a; Parameter userid aus Maskenfeld</note>
<note>TODO: Parameter userid aus Maskenfeld</note>
<xloc>472</xloc>
<yloc>234</yloc>
<width>273</width>

331
src-modules/module/qa/etl/testfall_import/testfall_import_dbtest.ktr

@ -1,5 +1,4 @@ @@ -1,5 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<transformation>
<?xml version="1.0" encoding="UTF-8"?><transformation>
<info>
<name>testfall_import</name>
<description/>
@ -7,11 +6,11 @@ @@ -7,11 +6,11 @@
<trans_version/>
<trans_type>Normal</trans_type>
<trans_status>0</trans_status>
<directory>&#x2f;</directory>
<directory>/</directory>
<parameters>
<parameter>
<name>PATH_TO_UPLOADFILE</name>
<default_value>file&#x3a;&#x2f;&#x2f;&#x2f;home&#x2f;superx&#x2f;git&#x2f;Memtext-Interna&#x2f;Projekte&#x2f;duisburg-essen_uni&#x2f;impl&#x2f;db_module&#x2f;qa&#x2f;ects_testfaelle&#x2f;qa_importdatei_dbtest.xlsx</default_value>
<default_value>file:///home/superx/git/Memtext-Interna/Projekte/duisburg-essen_uni/impl/db_module/qa/ects_testfaelle/qa_importdatei_dbtest.xlsx</default_value>
<description/>
</parameter>
<parameter>
@ -429,47 +428,18 @@ @@ -429,47 +428,18 @@
<capture_step_performance>N</capture_step_performance>
<step_performance_capturing_delay>1000</step_performance_capturing_delay>
<step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
<dependencies>
</dependencies>
<partitionschemas>
</partitionschemas>
<slaveservers>
</slaveservers>
<clusterschemas>
</clusterschemas>
<dependencies/>
<partitionschemas/>
<slaveservers/>
<clusterschemas/>
<created_user>-</created_user>
<created_date>2020&#x2f;02&#x2f;23 11&#x3a;24&#x3a;17.033</created_date>
<created_date>2020/02/23 11:24:17.033</created_date>
<modified_user>-</modified_user>
<modified_date>2020&#x2f;02&#x2f;23 11&#x3a;24&#x3a;17.033</modified_date>
<key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
<modified_date>2020/02/23 11:24:17.033</modified_date>
<key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA=</key_for_session_key>
<is_key_private>N</is_key_private>
</info>
<notepads>
</notepads>
<connection>
<name>eduetl</name>
<server>localhost</server>
<type>POSTGRESQL</type>
<access>Native</access>
<database>eduetl_ude</database>
<port>9998</port>
<username>superx</username>
<password>Encrypted 2be98afc86aa7f292a20aa77fd0c3fa9e</password>
<servername>superx_host_iso</servername>
<data_tablespace/>
<index_tablespace/>
<attributes>
<attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
<attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
<attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
<attribute><code>PORT_NUMBER</code><attribute>9998</attribute></attribute>
<attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>Y</attribute></attribute>
<attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
<attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
<attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
<attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
</attributes>
</connection>
<notepads/>
<order>
<hop>
<from>Sort rows</from>
@ -561,7 +531,7 @@ @@ -561,7 +531,7 @@
<currency/>
<decimal/>
<group/>
<nullif>&#x2a;</nullif>
<nullif>*</nullif>
<length>-1</length>
<precision>-1</precision>
<set_empty_string>N</set_empty_string>
@ -569,10 +539,8 @@ @@ -569,10 +539,8 @@
</fields>
<cluster_schema/>
<remotesteps>
<input>
</input>
<output>
</output>
<input/>
<output/>
</remotesteps>
<GUI>
<xloc>512</xloc>
@ -580,7 +548,6 @@ @@ -580,7 +548,6 @@
<draw>Y</draw>
</GUI>
</step>
<step>
<name>Filter rows 3 2</name>
<type>FilterRows</type>
@ -604,10 +571,8 @@ @@ -604,10 +571,8 @@
</compare>
<cluster_schema/>
<remotesteps>
<input>
</input>
<output>
</output>
<input/>
<output/>
</remotesteps>
<GUI>
<xloc>832</xloc>
@ -615,7 +580,6 @@ @@ -615,7 +580,6 @@
<draw>Y</draw>
</GUI>
</step>
<step>
<name>Microsoft Excel Input</name>
<type>ExcelInput</type>
@ -643,7 +607,7 @@ @@ -643,7 +607,7 @@
<accept_field/>
<accept_stepname/>
<file>
<name>&#x24;&#x7b;PATH_TO_UPLOADFILE&#x7d;</name>
<name>${PATH_TO_UPLOADFILE}</name>
<filemask/>
<exclude_filemask/>
<file_required>N</file_required>
@ -657,7 +621,7 @@ @@ -657,7 +621,7 @@
<precision>-1</precision>
<trim_type>none</trim_type>
<repeat>N</repeat>
<format>&#x23;</format>
<format>#</format>
<currency/>
<decimal/>
<group/>
@ -675,7 +639,7 @@ @@ -675,7 +639,7 @@
<group/>
</field>
<field>
<name>Testfall Schl&#xfc;ssel</name>
<name>Testfall Schlüssel</name>
<type>String</type>
<length>-1</length>
<precision>-1</precision>
@ -693,7 +657,7 @@ @@ -693,7 +657,7 @@
<precision>-1</precision>
<trim_type>none</trim_type>
<repeat>N</repeat>
<format>&#x23;</format>
<format>#</format>
<currency/>
<decimal/>
<group/>
@ -705,7 +669,7 @@ @@ -705,7 +669,7 @@
<precision>-1</precision>
<trim_type>none</trim_type>
<repeat>N</repeat>
<format>&#x23;</format>
<format>#</format>
<currency/>
<decimal/>
<group/>
@ -717,7 +681,7 @@ @@ -717,7 +681,7 @@
<precision>-1</precision>
<trim_type>none</trim_type>
<repeat>N</repeat>
<format>&#x23;</format>
<format>#</format>
<currency/>
<decimal/>
<group/>
@ -729,7 +693,7 @@ @@ -729,7 +693,7 @@
<precision>-1</precision>
<trim_type>none</trim_type>
<repeat>N</repeat>
<format>&#x23;</format>
<format>#</format>
<currency/>
<decimal/>
<group/>
@ -741,7 +705,7 @@ @@ -741,7 +705,7 @@
<precision>-1</precision>
<trim_type>none</trim_type>
<repeat>N</repeat>
<format>&#x23;</format>
<format>#</format>
<currency/>
<decimal/>
<group/>
@ -753,7 +717,7 @@ @@ -753,7 +717,7 @@
<precision>-1</precision>
<trim_type>none</trim_type>
<repeat>N</repeat>
<format>&#x23;</format>
<format>#</format>
<currency/>
<decimal/>
<group/>
@ -765,7 +729,7 @@ @@ -765,7 +729,7 @@
<precision>-1</precision>
<trim_type>none</trim_type>
<repeat>N</repeat>
<format>&#x23;</format>
<format>#</format>
<currency/>
<decimal/>
<group/>
@ -777,7 +741,7 @@ @@ -777,7 +741,7 @@
<precision>-1</precision>
<trim_type>none</trim_type>
<repeat>N</repeat>
<format>&#x23;</format>
<format>#</format>
<currency/>
<decimal/>
<group/>
@ -789,7 +753,7 @@ @@ -789,7 +753,7 @@
<precision>-1</precision>
<trim_type>none</trim_type>
<repeat>N</repeat>
<format>&#x23;</format>
<format>#</format>
<currency/>
<decimal/>
<group/>
@ -801,7 +765,7 @@ @@ -801,7 +765,7 @@
<precision>-1</precision>
<trim_type>none</trim_type>
<repeat>N</repeat>
<format>&#x23;</format>
<format>#</format>
<currency/>
<decimal/>
<group/>
@ -813,7 +777,7 @@ @@ -813,7 +777,7 @@
<precision>-1</precision>
<trim_type>none</trim_type>
<repeat>N</repeat>
<format>&#x23;</format>
<format>#</format>
<currency/>
<decimal/>
<group/>
@ -837,7 +801,7 @@ @@ -837,7 +801,7 @@
<precision>-1</precision>
<trim_type>none</trim_type>
<repeat>N</repeat>
<format>&#x23;</format>
<format>#</format>
<currency/>
<decimal/>
<group/>
@ -870,10 +834,8 @@ @@ -870,10 +834,8 @@
<spreadsheet_type>POI</spreadsheet_type>
<cluster_schema/>
<remotesteps>
<input>
</input>
<output>
</output>
<input/>
<output/>
</remotesteps>
<GUI>
<xloc>128</xloc>
@ -881,7 +843,6 @@ @@ -881,7 +843,6 @@
<draw>Y</draw>
</GUI>
</step>
<step>
<name>Row Normaliser 2</name>
<type>Normaliser</type>
@ -894,42 +855,62 @@ @@ -894,42 +855,62 @@
<schema_name/>
</partitioning>
<typefield>feldnr</typefield>
<fields> <field> <name>Feld 1</name>
<fields>
<field>
<name>Feld 1</name>
<value>1</value>
<norm>Feldwert</norm>
</field> <field> <name>Feld 2</name>
</field>
<field>
<name>Feld 2</name>
<value>2</value>
<norm>Feldwert</norm>
</field> <field> <name>Feld 3</name>
</field>
<field>
<name>Feld 3</name>
<value>3</value>
<norm>Feldwert</norm>
</field> <field> <name>Feld 4</name>
</field>
<field>
<name>Feld 4</name>
<value>4</value>
<norm>Feldwert</norm>
</field> <field> <name>Feld 5</name>
</field>
<field>
<name>Feld 5</name>
<value>5</value>
<norm>Feldwert</norm>
</field> <field> <name>Feld 6</name>
</field>
<field>
<name>Feld 6</name>
<value>6</value>
<norm>Feldwert</norm>
</field> <field> <name>Feld 7</name>
</field>
<field>
<name>Feld 7</name>
<value>7</value>
<norm>Feldwert</norm>
</field> <field> <name>Feld 8</name>
</field>
<field>
<name>Feld 8</name>
<value>8</value>
<norm>Feldwert</norm>
</field> <field> <name>Feld 9</name>
</field>
<field>
<name>Feld 9</name>
<value>9</value>
<norm>Feldwert</norm>
</field> <field> <name>Feld 10</name>
</field>
<field>
<name>Feld 10</name>
<value>10</value>
<norm>Feldwert</norm>
</field> </fields> <cluster_schema/>
</field>
</fields>
<cluster_schema/>
<remotesteps>
<input>
</input>
<output>
</output>
<input/>
<output/>
</remotesteps>
<GUI>
<xloc>544</xloc>
@ -937,7 +918,6 @@ @@ -937,7 +918,6 @@
<draw>Y</draw>
</GUI>
</step>
<step>
<name>Select resultset</name>
<type>SelectValues</type>
@ -949,17 +929,21 @@ @@ -949,17 +929,21 @@
<method>none</method>
<schema_name/>
</partitioning>
<fields> <field> <name>Tabelle</name>
<fields>
<field>
<name>Tabelle</name>
<rename>resultset</rename>
</field> <field> <name>Komponente</name>
</field>
<field>
<name>Komponente</name>
<rename>systeminfo_id</rename>
</field> <select_unspecified>N</select_unspecified>
</fields> <cluster_schema/>
</field>
<select_unspecified>N</select_unspecified>
</fields>
<cluster_schema/>
<remotesteps>
<input>
</input>
<output>
</output>
<input/>
<output/>
</remotesteps>
<GUI>
<xloc>368</xloc>
@ -967,7 +951,6 @@ @@ -967,7 +951,6 @@
<draw>Y</draw>
</GUI>
</step>
<step>
<name>Select values 2</name>
<type>SelectValues</type>
@ -979,13 +962,15 @@ @@ -979,13 +962,15 @@
<method>none</method>
<schema_name/>
</partitioning>
<fields> <select_unspecified>Y</select_unspecified>
<meta> <name>feldnr</name>
<fields>
<select_unspecified>Y</select_unspecified>
<meta>
<name>feldnr</name>
<rename>feldnr_int</rename>
<type>Integer</type>
<length>-2</length>
<precision>-2</precision>
<conversion_mask>&#x23;</conversion_mask>
<conversion_mask>#</conversion_mask>
<date_format_lenient>false</date_format_lenient>
<date_format_locale/>
<date_format_timezone/>
@ -995,12 +980,12 @@ @@ -995,12 +980,12 @@
<grouping_symbol/>
<currency_symbol/>
<storage_type/>
</meta> </fields> <cluster_schema/>
</meta>
</fields>
<cluster_schema/>
<remotesteps>
<input>
</input>
<output>
</output>
<input/>
<output/>
</remotesteps>
<GUI>
<xloc>688</xloc>
@ -1008,7 +993,6 @@ @@ -1008,7 +993,6 @@
<draw>Y</draw>
</GUI>
</step>
<step>
<name>Sort rows</name>
<type>SortRows</type>
@ -1020,7 +1004,7 @@ @@ -1020,7 +1004,7 @@
<method>none</method>
<schema_name/>
</partitioning>
<directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
<directory>%%java.io.tmpdir%%</directory>
<prefix>out</prefix>
<sort_size>1000000</sort_size>
<free_memory/>
@ -1055,10 +1039,8 @@ @@ -1055,10 +1039,8 @@
</fields>
<cluster_schema/>
<remotesteps>
<input>
</input>
<output>
</output>
<input/>
<output/>
</remotesteps>
<GUI>
<xloc>624</xloc>
@ -1066,7 +1048,6 @@ @@ -1066,7 +1048,6 @@
<draw>Y</draw>
</GUI>
</step>
<step>
<name>Unique rows</name>
<type>Unique</type>
@ -1082,18 +1063,24 @@ @@ -1082,18 +1063,24 @@
<count_field/>
<reject_duplicate_row>N</reject_duplicate_row>
<error_description/>
<fields> <field> <name>resultset</name>
<fields>
<field>
<name>resultset</name>
<case_insensitive>N</case_insensitive>
</field> <field> <name>systeminfo_id</name>
</field>
<field>
<name>systeminfo_id</name>
<case_insensitive>N</case_insensitive>
</field> <field> <name>fieldclause</name>
</field>
<field>
<name>fieldclause</name>
<case_insensitive>Y</case_insensitive>
</field> </fields> <cluster_schema/>
</field>
</fields>
<cluster_schema/>
<remotesteps>
<input>
</input>
<output>
</output>
<input/>
<output/>
</remotesteps>
<GUI>
<xloc>832</xloc>
@ -1101,7 +1088,6 @@ @@ -1101,7 +1088,6 @@
<draw>Y</draw>
</GUI>
</step>
<step>
<name>write qa_resultset</name>
<type>TableOutput</type>
@ -1154,10 +1140,8 @@ @@ -1154,10 +1140,8 @@
</fields>
<cluster_schema/>
<remotesteps>
<input>
</input>
<output>
</output>
<input/>
<output/>
</remotesteps>
<GUI>
<xloc>1088</xloc>
@ -1165,7 +1149,6 @@ @@ -1165,7 +1149,6 @@
<draw>Y</draw>
</GUI>
</step>
<step>
<name>write tmp_qa_dbtest</name>
<type>TableOutput</type>
@ -1205,7 +1188,7 @@ @@ -1205,7 +1188,7 @@
</field>
<field>
<column_name>uniquename</column_name>
<stream_name>Testfall Schl&#xfc;ssel</stream_name>
<stream_name>Testfall Schlüssel</stream_name>
</field>
<field>
<column_name>resultset_uniquename</column_name>
@ -1214,10 +1197,8 @@ @@ -1214,10 +1197,8 @@
</fields>
<cluster_schema/>
<remotesteps>
<input>
</input>
<output>
</output>
<input/>
<output/>
</remotesteps>
<GUI>
<xloc>816</xloc>
@ -1225,7 +1206,6 @@ @@ -1225,7 +1206,6 @@
<draw>Y</draw>
</GUI>
</step>
<step>
<name>write tmp_testfall_import_feldwerte</name>
<type>TableOutput</type>
@ -1257,7 +1237,7 @@ @@ -1257,7 +1237,7 @@
<fields>
<field>
<column_name>testfall_schluessel</column_name>
<stream_name>Testfall Schl&#xfc;ssel</stream_name>
<stream_name>Testfall Schlüssel</stream_name>
</field>
<field>
<column_name>feldnr</column_name>
@ -1278,10 +1258,8 @@ @@ -1278,10 +1258,8 @@
</fields>
<cluster_schema/>
<remotesteps>
<input>
</input>
<output>
</output>
<input/>
<output/>
</remotesteps>
<GUI>
<xloc>1040</xloc>
@ -1289,7 +1267,6 @@ @@ -1289,7 +1267,6 @@
<draw>Y</draw>
</GUI>
</step>
<step>
<name>Row Normaliser 2 2</name>
<type>Normaliser</type>
@ -1302,18 +1279,22 @@ @@ -1302,18 +1279,22 @@
<schema_name/>
</partitioning>
<typefield>ergnr</typefield>
<fields> <field> <name>erg1</name>
<fields>
<field>
<name>erg1</name>
<value>1</value>
<norm>erg</norm>
</field> <field> <name>erg2</name>
</field>
<field>
<name>erg2</name>
<value>2</value>
<norm>erg</norm>
</field> </fields> <cluster_schema/>
</field>
</fields>
<cluster_schema/>
<remotesteps>
<input>
</input>
<output>
</output>
<input/>
<output/>
</remotesteps>
<GUI>
<xloc>112</xloc>
@ -1321,7 +1302,6 @@ @@ -1321,7 +1302,6 @@
<draw>Y</draw>
</GUI>
</step>
<step>
<name>Select values</name>
<type>SelectValues</type>
@ -1333,13 +1313,15 @@ @@ -1333,13 +1313,15 @@
<method>none</method>
<schema_name/>
</partitioning>
<fields> <select_unspecified>Y</select_unspecified>
<meta> <name>Testfall Schl&#xfc;ssel</name>
<rename>Testfall Schl&#xfc;ssel</rename>
<fields>
<select_unspecified>Y</select_unspecified>
<meta>
<name>Testfall Schlüssel</name>
<rename>Testfall Schlüssel</rename>
<type>String</type>
<length>-2</length>
<precision>-2</precision>
<conversion_mask>&#x23;</conversion_mask>
<conversion_mask>#</conversion_mask>
<date_format_lenient>false</date_format_lenient>
<date_format_locale/>
<date_format_timezone/>
@ -1349,12 +1331,14 @@ @@ -1349,12 +1331,14 @@
<grouping_symbol/>
<currency_symbol/>
<storage_type/>
</meta> <meta> <name>Ergebnis 1</name>
</meta>
<meta>
<name>Ergebnis 1</name>
<rename>erg1</rename>
<type>String</type>
<length>-2</length>
<precision>-2</precision>
<conversion_mask>&#x23;</conversion_mask>
<conversion_mask>#</conversion_mask>
<date_format_lenient>false</date_format_lenient>
<date_format_locale/>
<date_format_timezone/>
@ -1364,12 +1348,14 @@ @@ -1364,12 +1348,14 @@
<grouping_symbol/>
<currency_symbol/>
<storage_type/>
</meta> <meta> <name>Ergebnis 2</name>
</meta>
<meta>
<name>Ergebnis 2</name>
<rename>erg2</rename>
<type>String</type>
<length>-2</length>
<precision>-2</precision>
<conversion_mask>&#x23;</conversion_mask>
<conversion_mask>#</conversion_mask>
<date_format_lenient>false</date_format_lenient>
<date_format_locale/>
<date_format_timezone/>
@ -1379,7 +1365,9 @@ @@ -1379,7 +1365,9 @@
<grouping_symbol/>
<currency_symbol/>
<storage_type/>
</meta> <meta> <name>Komponente</name>
</meta>
<meta>
<name>Komponente</name>
<rename>Komponente</rename>
<type>Integer</type>
<length>-2</length>
@ -1394,12 +1382,12 @@ @@ -1394,12 +1382,12 @@
<grouping_symbol/>
<currency_symbol/>
<storage_type/>
</meta> </fields> <cluster_schema/>
</meta>
</fields>
<cluster_schema/>
<remotesteps>
<input>
</input>
<output>
</output>
<input/>
<output/>
</remotesteps>
<GUI>
<xloc>256</xloc>
@ -1407,7 +1395,6 @@ @@ -1407,7 +1395,6 @@
<draw>Y</draw>
</GUI>
</step>
<step>
<name>erg nicht leer</name>
<type>FilterRows</type>
@ -1431,10 +1418,8 @@ @@ -1431,10 +1418,8 @@
</compare>
<cluster_schema/>
<remotesteps>
<input>
</input>
<output>
</output>
<input/>
<output/>
</remotesteps>
<GUI>
<xloc>64</xloc>
@ -1442,7 +1427,6 @@ @@ -1442,7 +1427,6 @@
<draw>Y</draw>
</GUI>
</step>
<step>
<name>write tmp_testfall_import_erg</name>
<type>TableOutput</type>
@ -1474,7 +1458,7 @@ @@ -1474,7 +1458,7 @@
<fields>
<field>
<column_name>dbtest_uniquename</column_name>
<stream_name>Testfall Schl&#xfc;ssel</stream_name>
<stream_name>Testfall Schlüssel</stream_name>
</field>
<field>
<column_name>def_col_name</column_name>
@ -1491,10 +1475,8 @@ @@ -1491,10 +1475,8 @@
</fields>
<cluster_schema/>
<remotesteps>
<input>
</input>
<output>
</output>
<input/>
<output/>
</remotesteps>
<GUI>
<xloc>32</xloc>
@ -1502,10 +1484,7 @@ @@ -1502,10 +1484,7 @@
<draw>Y</draw>
</GUI>
</step>
<step_error_handling>
</step_error_handling>
<slave-step-copy-partition-distribution>
</slave-step-copy-partition-distribution>
<step_error_handling/>
<slave-step-copy-partition-distribution/>
<slave_transformation>N</slave_transformation>
</transformation>

231
src-modules/module/qa/etl/testfall_import/testfall_import_dbtest_def.ktr

@ -1,5 +1,4 @@ @@ -1,5 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<transformation>
<?xml version="1.0" encoding="UTF-8"?><transformation>
<info>
<name>testfall_import</name>
<description/>
@ -7,11 +6,11 @@ @@ -7,11 +6,11 @@
<trans_version/>
<trans_type>Normal</trans_type>
<trans_status>0</trans_status>
<directory>&#x2f;</directory>
<directory>/</directory>
<parameters>
<parameter>
<name>PATH_TO_UPLOADFILE</name>
<default_value>file&#x3a;&#x2f;&#x2f;&#x2f;home&#x2f;superx&#x2f;git&#x2f;Memtext-Interna&#x2f;Projekte&#x2f;duisburg-essen_uni&#x2f;impl&#x2f;db_module&#x2f;qa&#x2f;ects_testfaelle&#x2f;qa_importdatei_dbtest.xlsx</default_value>
<default_value>file:///home/superx/git/Memtext-Interna/Projekte/duisburg-essen_uni/impl/db_module/qa/ects_testfaelle/qa_importdatei_dbtest.xlsx</default_value>
<description/>
</parameter>
<parameter>
@ -429,47 +428,18 @@ @@ -429,47 +428,18 @@
<capture_step_performance>N</capture_step_performance>
<step_performance_capturing_delay>1000</step_performance_capturing_delay>
<step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
<dependencies>
</dependencies>
<partitionschemas>
</partitionschemas>
<slaveservers>
</slaveservers>
<clusterschemas>
</clusterschemas>
<dependencies/>
<partitionschemas/>
<slaveservers/>
<clusterschemas/>
<created_user>-</created_user>
<created_date>2020&#x2f;02&#x2f;23 11&#x3a;24&#x3a;17.033</created_date>
<created_date>2020/02/23 11:24:17.033</created_date>
<modified_user>-</modified_user>
<modified_date>2020&#x2f;02&#x2f;23 11&#x3a;24&#x3a;17.033</modified_date>
<key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
<modified_date>2020/02/23 11:24:17.033</modified_date>
<key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA=</key_for_session_key>
<is_key_private>N</is_key_private>
</info>
<notepads>
</notepads>
<connection>
<name>eduetl</name>
<server>localhost</server>
<type>POSTGRESQL</type>
<access>Native</access>
<database>eduetl_ude</database>
<port>9998</port>
<username>superx</username>
<password>Encrypted 2be98afc86aa7f292a20aa77fd0c3fa9e</password>
<servername>superx_host_iso</servername>
<data_tablespace/>
<index_tablespace/>
<attributes>
<attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
<attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
<attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
<attribute><code>PORT_NUMBER</code><attribute>9998</attribute></attribute>
<attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>Y</attribute></attribute>
<attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
<attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
<attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
<attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
</attributes>
</connection>
<notepads/>
<order>
<hop>
<from>Filter rows 2</from>
@ -535,10 +505,8 @@ @@ -535,10 +505,8 @@
</compare>
<cluster_schema/>
<remotesteps>
<input>
</input>
<output>
</output>
<input/>
<output/>
</remotesteps>
<GUI>
<xloc>416</xloc>
@ -546,7 +514,6 @@ @@ -546,7 +514,6 @@
<draw>Y</draw>
</GUI>
</step>
<step>
<name>Filter rows 2 2</name>
<type>FilterRows</type>
@ -570,10 +537,8 @@ @@ -570,10 +537,8 @@
</compare>
<cluster_schema/>
<remotesteps>
<input>
</input>
<output>
</output>
<input/>
<output/>
</remotesteps>
<GUI>
<xloc>96</xloc>
@ -581,7 +546,6 @@ @@ -581,7 +546,6 @@
<draw>Y</draw>
</GUI>
</step>
<step>
<name>Microsoft Excel Input</name>
<type>ExcelInput</type>
@ -609,7 +573,7 @@ @@ -609,7 +573,7 @@
<accept_field/>
<accept_stepname/>
<file>
<name>&#x24;&#x7b;PATH_TO_UPLOADFILE&#x7d;</name>
<name>${PATH_TO_UPLOADFILE}</name>
<filemask/>
<exclude_filemask/>
<file_required>N</file_required>
@ -623,7 +587,7 @@ @@ -623,7 +587,7 @@
<precision>-1</precision>
<trim_type>none</trim_type>
<repeat>N</repeat>
<format>&#x23;</format>
<format>#</format>
<currency/>
<decimal/>
<group/>
@ -641,7 +605,7 @@ @@ -641,7 +605,7 @@
<group/>
</field>
<field>
<name>Testfall Schl&#xfc;ssel</name>
<name>Testfall Schlüssel</name>
<type>String</type>
<length>-1</length>
<precision>-1</precision>
@ -659,7 +623,7 @@ @@ -659,7 +623,7 @@
<precision>-1</precision>
<trim_type>none</trim_type>
<repeat>N</repeat>
<format>&#x23;</format>
<format>#</format>
<currency/>
<decimal/>
<group/>
@ -671,7 +635,7 @@ @@ -671,7 +635,7 @@
<precision>-1</precision>
<trim_type>none</trim_type>
<repeat>N</repeat>
<format>&#x23;</format>
<format>#</format>
<currency/>
<decimal/>
<group/>
@ -683,7 +647,7 @@ @@ -683,7 +647,7 @@
<precision>-1</precision>
<trim_type>none</trim_type>
<repeat>N</repeat>
<format>&#x23;</format>
<format>#</format>
<currency/>
<decimal/>
<group/>
@ -695,7 +659,7 @@ @@ -695,7 +659,7 @@
<precision>-1</precision>
<trim_type>none</trim_type>
<repeat>N</repeat>
<format>&#x23;</format>
<format>#</format>
<currency/>
<decimal/>
<group/>
@ -707,7 +671,7 @@ @@ -707,7 +671,7 @@
<precision>-1</precision>
<trim_type>none</trim_type>
<repeat>N</repeat>
<format>&#x23;</format>
<format>#</format>
<currency/>
<decimal/>
<group/>
@ -719,7 +683,7 @@ @@ -719,7 +683,7 @@
<precision>-1</precision>
<trim_type>none</trim_type>
<repeat>N</repeat>
<format>&#x23;</format>
<format>#</format>
<currency/>
<decimal/>
<group/>
@ -731,7 +695,7 @@ @@ -731,7 +695,7 @@
<precision>-1</precision>
<trim_type>none</trim_type>
<repeat>N</repeat>
<format>&#x23;</format>
<format>#</format>
<currency/>
<decimal/>
<group/>
@ -743,7 +707,7 @@ @@ -743,7 +707,7 @@
<precision>-1</precision>
<trim_type>none</trim_type>
<repeat>N</repeat>
<format>&#x23;</format>
<format>#</format>
<currency/>
<decimal/>
<group/>
@ -755,7 +719,7 @@ @@ -755,7 +719,7 @@
<precision>-1</precision>
<trim_type>none</trim_type>
<repeat>N</repeat>
<format>&#x23;</format>
<format>#</format>
<currency/>
<decimal/>
<group/>
@ -767,7 +731,7 @@ @@ -767,7 +731,7 @@
<precision>-1</precision>
<trim_type>none</trim_type>
<repeat>N</repeat>
<format>&#x23;</format>
<format>#</format>
<currency/>
<decimal/>
<group/>
@ -779,7 +743,7 @@ @@ -779,7 +743,7 @@
<precision>-1</precision>
<trim_type>none</trim_type>
<repeat>N</repeat>
<format>&#x23;</format>
<format>#</format>
<currency/>
<decimal/>
<group/>
@ -803,7 +767,7 @@ @@ -803,7 +767,7 @@
<precision>-1</precision>
<trim_type>none</trim_type>
<repeat>N</repeat>
<format>&#x23;</format>
<format>#</format>
<currency/>
<decimal/>
<group/>
@ -836,10 +800,8 @@ @@ -836,10 +800,8 @@
<spreadsheet_type>POI</spreadsheet_type>
<cluster_schema/>
<remotesteps>
<input>
</input>
<output>
</output>
<input/>
<output/>
</remotesteps>
<GUI>
<xloc>128</xloc>
@ -847,7 +809,6 @@ @@ -847,7 +809,6 @@
<draw>Y</draw>
</GUI>
</step>
<step>
<name>Row Normaliser</name>
<type>Normaliser</type>
@ -860,42 +821,62 @@ @@ -860,42 +821,62 @@
<schema_name/>
</partitioning>
<typefield>feldnr</typefield>
<fields> <field> <name>Feld 1</name>
<fields>
<field>
<name>Feld 1</name>
<value>1</value>
<norm>Feldname</norm>
</field> <field> <name>Feld 2</name>
</field>
<field>
<name>Feld 2</name>
<value>2</value>
<norm>Feldname</norm>
</field> <field> <name>Feld 3</name>
</field>
<field>
<name>Feld 3</name>
<value>3</value>
<norm>Feldname</norm>
</field> <field> <name>Feld 4</name>
</field>
<field>
<name>Feld 4</name>
<value>4</value>
<norm>Feldname</norm>
</field> <field> <name>Feld 5</name>
</field>
<field>
<name>Feld 5</name>
<value>5</value>
<norm>Feldname</norm>
</field> <field> <name>Feld 6</name>
</field>
<field>
<name>Feld 6</name>
<value>6</value>
<norm>Feldname</norm>
</field> <field> <name>Feld 7</name>
</field>
<field>
<name>Feld 7</name>
<value>7</value>
<norm>Feldname</norm>
</field> <field> <name>Feld 8</name>
</field>
<field>
<name>Feld 8</name>
<value>8</value>
<norm>Feldname</norm>
</field> <field> <name>Feld 9</name>
</field>
<field>
<name>Feld 9</name>
<value>9</value>
<norm>Feldname</norm>
</field> <field> <name>Feld 10</name>
</field>
<field>
<name>Feld 10</name>
<value>10</value>
<norm>Feldname</norm>
</field> </fields> <cluster_schema/>
</field>
</fields>
<cluster_schema/>
<remotesteps>
<input>
</input>
<output>
</output>
<input/>
<output/>
</remotesteps>
<GUI>
<xloc>368</xloc>
@ -903,7 +884,6 @@ @@ -903,7 +884,6 @@
<draw>Y</draw>
</GUI>
</step>
<step>
<name>Row Normaliser 3</name>
<type>Normaliser</type>
@ -916,18 +896,22 @@ @@ -916,18 +896,22 @@
<schema_name/>
</partitioning>
<typefield>feldnr</typefield>
<fields> <field> <name>Ergebnis 1</name>
<fields>
<field>
<name>Ergebnis 1</name>
<value>1</value>
<norm>ergname</norm>
</field> <field> <name>Ergebnis 2</name>
</field>
<field>
<name>Ergebnis 2</name>
<value>2</value>
<norm>ergname</norm>
</field> </fields> <cluster_schema/>
</field>
</fields>
<cluster_schema/>
<remotesteps>
<input>
</input>
<output>
</output>
<input/>
<output/>
</remotesteps>
<GUI>
<xloc>176</xloc>
@ -935,7 +919,6 @@ @@ -935,7 +919,6 @@
<draw>Y</draw>
</GUI>
</step>
<step>
<name>feldnr_int</name>
<type>SelectValues</type>
@ -947,13 +930,15 @@ @@ -947,13 +930,15 @@
<method>none</method>
<schema_name/>
</partitioning>
<fields> <select_unspecified>Y</select_unspecified>
<meta> <name>feldnr</name>
<fields>
<select_unspecified>Y</select_unspecified>
<meta>
<name>feldnr</name>
<rename>feldnr_int</rename>
<type>Integer</type>
<length>-2</length>
<precision>-2</precision>
<conversion_mask>&#x23;</conversion_mask>
<conversion_mask>#</conversion_mask>
<date_format_lenient>false</date_format_lenient>
<date_format_locale/>
<date_format_timezone/>
@ -963,12 +948,12 @@ @@ -963,12 +948,12 @@
<grouping_symbol/>
<currency_symbol/>
<storage_type/>
</meta> </fields> <cluster_schema/>
</meta>
</fields>
<cluster_schema/>
<remotesteps>
<input>
</input>
<output>
</output>
<input/>
<output/>
</remotesteps>
<GUI>
<xloc>336</xloc>
@ -976,7 +961,6 @@ @@ -976,7 +961,6 @@
<draw>Y</draw>
</GUI>
</step>
<step>
<name>feldnr_int 2</name>
<type>SelectValues</type>
@ -988,13 +972,15 @@ @@ -988,13 +972,15 @@
<method>none</method>
<schema_name/>
</partitioning>
<fields> <select_unspecified>Y</select_unspecified>
<meta> <name>feldnr</name>
<fields>
<select_unspecified>Y</select_unspecified>
<meta>
<name>feldnr</name>
<rename>feldnr_int</rename>
<type>Integer</type>
<length>-2</length>
<precision>-2</precision>
<conversion_mask>&#x23;</conversion_mask>
<conversion_mask>#</conversion_mask>
<date_format_lenient>false</date_format_lenient>
<date_format_locale/>
<date_format_timezone/>
@ -1004,12 +990,12 @@ @@ -1004,12 +990,12 @@
<grouping_symbol/>
<currency_symbol/>
<storage_type/>
</meta> </fields> <cluster_schema/>
</meta>
</fields>
<cluster_schema/>
<remotesteps>
<input>
</input>
<output>
</output>
<input/>
<output/>
</remotesteps>
<GUI>
<xloc>96</xloc>
@ -1017,7 +1003,6 @@ @@ -1017,7 +1003,6 @@
<draw>Y</draw>
</GUI>
</step>
<step>
<name>write tmp_testfall_import_erg</name>
<type>TableOutput</type>
@ -1058,10 +1043,8 @@ @@ -1058,10 +1043,8 @@
</fields>
<cluster_schema/>
<remotesteps>
<input>
</input>
<output>
</output>
<input/>
<output/>
</remotesteps>
<GUI>
<xloc>272</xloc>
@ -1069,7 +1052,6 @@ @@ -1069,7 +1052,6 @@
<draw>Y</draw>
</GUI>
</step>
<step>
<name>write tmp_testfall_import_felder</name>
<type>TableOutput</type>
@ -1110,10 +1092,8 @@ @@ -1110,10 +1092,8 @@
</fields>
<cluster_schema/>
<remotesteps>
<input>
</input>
<output>
</output>
<input/>
<output/>
</remotesteps>
<GUI>
<xloc>592</xloc>
@ -1121,10 +1101,7 @@ @@ -1121,10 +1101,7 @@
<draw>Y</draw>
</GUI>
</step>
<step_error_handling>
</step_error_handling>
<slave-step-copy-partition-distribution>
</slave-step-copy-partition-distribution>
<step_error_handling/>
<slave-step-copy-partition-distribution/>
<slave_transformation>N</slave_transformation>
</transformation>

1
src-modules/module/qa/masken/37020_felderinfo.unl

@ -7,3 +7,4 @@ @@ -7,3 +7,4 @@
37026^Ab Datum^40^0^0^150^80^1^date^200^0^0^ ^^<<SQL>> select today()-3 from xdummy^
37027^Testfall-Schlüssel^55^0^0^150^150^1^sql^50^0^0^^^^
37028^Projekt^15^0^0^150^80^1^integer^200^0^1^<<SQL>> select tid,name from qa_project where active=1 /* and systeminfo_id=<<Komponente>> */ order by 2;^^^
37029^Testfall-Typ^1000^300^-1^170^150^1^integer^30^0^1^<<SQL>> select 1,'Maskenausführung' from xdummy union select 2,'Datenbank-Test' from xdummy^^ ^

1
src-modules/module/qa/masken/37020_masken_felder_bez.unl

@ -7,3 +7,4 @@ @@ -7,3 +7,4 @@
37020^37026^
37020^37027^
37020^37028^
37020^37029^

255
src-modules/module/qa/masken/37020_maskeninfo.unl

@ -1,18 +1,67 @@ @@ -1,18 +1,67 @@
37020^Masken-Ausführung Protokoll^--Autor: D. Quathamer\
37020^Testfall-Protokoll^--Autor: D. Quathamer\
--Datum: 2.8.2019\
--Freemarker Template\
<#include "SQL_lingua_franca"/>\
<#include "SuperX_general"/>\
\
--Achtung: Diese Script ist auch das select_stmt der Maske 37020\
\
<#assign resultValueNative="result_value::float" />\
<#if SQLdialect='Postgres'>\
<#assign resultValueNative="round(decval(replace(result_value,'.',',')),0) " />\
</#if>\
\
<#assign inEtl=true />\
<#if Maskennummer?exists && Maskennummer=37020>\
<#assign inEtl=false />\
</#if>\
\
<#assign mask_execution_id="" />\
<#if inEtl>\
\
\
\
<@selectintotmp \
select="1::integer as testcase_type,\
A.tid as qa_mask_execution_assert_result_tid,\
R.tid,\
R.mask_execution_id,\
R.execution_start,\
R.execution_end,\
R.result_code,\
null::integer as result_status,\
''::char(255) as result_status_str,\
A.result_value,\
E.tid as execution_id,\
E.name as execution_name,\
E.uniquename,\
E.systeminfo_id,\
''::char(255) as systeminfo_id_str,\
E.maskeninfo_id,\
''::char(255) as maskeninfo_id_str,\
A.mask_execution_assert_id,\
null::integer as dauer,\
null::integer as result_value_min,\
null::integer as result_value_max,\
null::varchar(255) as assert_caption,\
null::varchar(255) as assert_value_range,\
null::varchar(255)[] as fields\
"\
source="qa_mask_execution E, qa_mask_execution_result R inner join qa_mask_execution_assert_result A on (A.mask_execution_result_id=R.tid)"\
target="tmp_testcase">\
-- nested in selectinto muss die where Bedingung u. ggfs. group by etc kommen\
where \
E.tid=R.mask_execution_id\
and A.result_code is null\
</@selectintotmp>\
<@informixnolog/>;\
\
<#else>\
\
\
<@selectintotmp \
select="R.tid,\
select="1::integer as testcase_type,\
A.tid as qa_mask_execution_assert_result_tid,\
R.tid,\
R.mask_execution_id,\
R.execution_start,\
R.execution_end,\
@ -25,18 +74,22 @@ E.name as execution_name,\ @@ -25,18 +74,22 @@ E.name as execution_name,\
E.uniquename,\
E.systeminfo_id,\
''::char(255) as systeminfo_id_str,\
''::varchar(255) as ticket_link,\
E.maskeninfo_id,\
''::char(255) as maskeninfo_id_str,\
A.mask_execution_assert_id,\
null::decimal(20,6) as dauer,\
null::integer as result_value_min,\
null::integer as result_value_max,\
null::varchar(255) as assert_caption,\
null::varchar(255) as assert_value_range,\
null::varchar(255)[] as fields, \
('' || E.maskeninfo_id || '&')::text as nextmask,\
('../edit/qa/qa_mask_execution_edit.jsp|tid=' || E.tid)::varchar(255) as nextedit\
('../edit/qa/qa_mask_execution_edit.jsp|tid=' || E.tid)::varchar(255) as nextedit,\
('37040&Ergebnis=' || R.tid)::varchar(255) as nexttable\
"\
source="qa_mask_execution E, qa_mask_execution_result R left outer join qa_mask_execution_assert_result A on (A.mask_execution_result_id=R.tid)"\
target="tmp_qa_mask_execution">\
target="tmp_testcase">\
-- nested in selectinto muss die where Bedingung u. ggfs. group by etc kommen\
where \
E.tid=R.mask_execution_id\
@ -48,19 +101,21 @@ target="tmp_qa_mask_execution">\ @@ -48,19 +101,21 @@ target="tmp_qa_mask_execution">\
/* and E.uniquename ilike '%<<Testfall-Schlüssel>>%' */\
/* and date(R.execution_start) >= date_val(<<Ab Datum>>) */\
/* and E.tid in (select P.mask_execution_id from qa_mask_execution2project P where P.project_id=<<Projekt>>) */\
\
/* and 1=<<Testfall-Typ>> */\
</@selectintotmp>\
<@informixnolog/>;\
\
</#if>\
\
<#if SQLdialect='Postgres'>\
update tmp_qa_mask_execution set result_value_min=A.result_value_min,\
update tmp_testcase set result_value_min=A.result_value_min,\
result_value_max=A.result_value_max,\
assert_caption=coalesce(A.caption,'Zeile ' || A.rownr || ' Spalte ' || A.colnr) \
from qa_mask_execution_assert A\
where A.tid=tmp_qa_mask_execution.mask_execution_assert_id;\
where A.tid=tmp_testcase.mask_execution_assert_id;\
<#else>\
--Informix Dialekt:\
update tmp_qa_mask_execution set (result_value_min,\
update tmp_testcase set (result_value_min,\
result_value_max,\
assert_caption) \
= ((select \
@ -68,18 +123,19 @@ update tmp_qa_mask_execution set (result_value_min,\ @@ -68,18 +123,19 @@ update tmp_qa_mask_execution set (result_value_min,\
A.result_value_max,\
nvl(A.caption,'Zeile ' || A.rownr || ' Spalte ' || A.colnr)\
from qa_mask_execution_assert A\
where A.tid=tmp_qa_mask_execution.mask_execution_assert_id\
where A.tid=tmp_testcase.mask_execution_assert_id\
))\
where tmp_qa_mask_execution.mask_execution_assert_id in (select A.tid\
where tmp_testcase.mask_execution_assert_id in (select A.tid\
from qa_mask_execution_assert A)\
;\
</#if>\
\
update tmp_qa_mask_execution set result_status=2,\
\
update tmp_testcase set result_status=2,\
result_status_str='Fehler'\
where result_code!=0;\
\
update tmp_qa_mask_execution set result_status=0,\
update tmp_testcase set result_status=0,\
result_status_str='Erfolg'\
where result_code=0\
and (\
@ -89,29 +145,154 @@ and\ @@ -89,29 +145,154 @@ and\
)\
;\
\
update tmp_qa_mask_execution set result_status=1,\
update tmp_testcase set result_status=1,\
result_status_str='Warnung'\
where result_status is null;\
\
/* delete from tmp_qa_mask_execution where result_status not in (<<Ausführungs-Status>>) ; */\
update tmp_testcase set assert_value_range=result_value_min || '-' || result_value_max;\
\
update tmp_testcase set dauer=\
<#if SQLdialect='Postgres'>\
round(extract(second from (execution_end-execution_start))::decimal,0)::decimal\
<#else>\
execution_end-execution_start\
</#if>\
;\
update tmp_testcase set ticket_link=P.issue_link || TP.issue_id\
from qa_mask_execution2project TP, qa_project P\
where TP.mask_execution_id=tmp_testcase.mask_execution_id\
and P.tid=TP.project_id\
;\
--nun DB-Tests:\
<@selectintotmp \
select="\
T.tid,\
T.name,\
T.uniquename,\
R.execution_start,\
R.execution_end,\
R.result_code,\
null::integer as result_status,\
''::char(255) as result_status_str,\
R.result_value,\
T.systeminfo_id,\
''::char(255) as systeminfo_id_str,\
A.tid as qa_dbtest_assertion_id,\
A.def_col_caption,\
A.def_col_name,\
A.def_col_value,\
''::varchar(255) as ticket_link,\
('../edit/qa/qa_dbtest_edit.jsp|tid=' || T.tid)::varchar(255) as nextedit\
"\
source="qa_dbtest T, qa_dbtest_assertion A inner join qa_dbtest_result R \
on (R.dbtest_assertion_id=A.tid /* and date(R.execution_start) >= date_val(<<Ab Datum>>) */\
/* and R.tid=<<Result-ID>> */\
)"\
target="tmp_qa_dbtest">\
where \
T.tid=A.dbtest_id\
/* and T.active=<<Nur aktive>> */\
/* and T.tid in (select P.dbtest_id from qa_dbtest2project P where P.project_id=<<Projekt>>) */\
/* and E.userinfo_id=<<Benutzer/in>> */\
/* and T.systeminfo_id=<<Komponente>> */\
/* and T.name ilike '%<<Testfall-Name (Stichwort)>>%' */\
/* and T.tid=<<DB-Test>> */\
/* and 2=<<Testfall-Typ>> */\
</@selectintotmp>\
<@informixnolog/>;\
\
update tmp_qa_dbtest set ticket_link=P.issue_link || TP.issue_id\
from qa_dbtest2project TP, qa_project P\
where TP.dbtest_id=tmp_qa_dbtest.tid\
and P.tid=TP.project_id\
;\
update tmp_qa_dbtest set --result_status=1,\
result_status_str='Warnung'\
where result_code=1;\
update tmp_qa_dbtest set result_status=2,\
result_status_str='Fehler'\
where result_code is null;\
-- \
update tmp_qa_dbtest set \
result_status_str='Erfolg'\
where result_code=0\
;\
\
/* delete from tmp_qa_dbtest where result_code not in ( <<Ausführungs-Status>>) ; */\
\
\
\
insert into tmp_testcase(testcase_type,\
systeminfo_id,\
execution_name,\
uniquename,\
--maskeninfo_id_str,\
--nextserverlink,\
ticket_link,\
--nextmask,\
execution_start,\
dauer,\
assert_caption,\
assert_value_range,\
result_value,\
result_status_str,\
nexttable,\
nextedit\
)\
select 2::integer as testcase_type, --DB-Test\
systeminfo_id,\
name,\
uniquename,\
case when ticket_link !='' then 'Ticket|' || ticket_link else '' end as ticket_link,\
execution_start,\
<#if SQLdialect='Postgres'>\
round(extract(second from (execution_end-execution_start))::decimal,0)::integer as dauer,\
<#else>\
execution_end-execution_start as dauer,\
</#if>\
nvl(def_col_caption,def_col_name) as assert_caption,\
def_col_value as assert_value_range,\
result_value,\
result_status_str,\
'' as nexttable,\
nextedit\
from tmp_qa_dbtest\
;\
\
drop table tmp_qa_dbtest;\
\
\
\
<#if inEtl>\
\
update qa_mask_execution_assert_result set result_code=T.result_status\
from tmp_testcase T\
where T.qa_mask_execution_assert_result_tid=qa_mask_execution_assert_result.tid \
and qa_mask_execution_assert_result.result_code is null;\
\
drop table tmp_testcase;\
\
<#else>\
\
/* delete from tmp_testcase where result_status not in (<<Ausführungs-Status>>) ; */\
\
\
update tmp_qa_mask_execution set systeminfo_id_str=(select name from systeminfo S\
where S.tid=tmp_qa_mask_execution.systeminfo_id);\
update tmp_testcase set systeminfo_id_str=(select name from systeminfo S\
where S.tid=tmp_testcase.systeminfo_id);\
\
update tmp_qa_mask_execution set maskeninfo_id_str=(select name from maskeninfo M\
where M.tid=tmp_qa_mask_execution.maskeninfo_id);\
update tmp_testcase set maskeninfo_id_str=(select name from maskeninfo M\
where M.tid=tmp_testcase.maskeninfo_id);\
\
<#if SQLdialect='Postgres'>\
\
update tmp_qa_mask_execution set fields=(select array_agg(trim(F.name) || '=' || trim(S.field_value))\
update tmp_testcase set fields=(select array_agg(trim(F.name) || '=' || trim(S.field_value))\
from qa_mask_field_sel S, felderinfo F\
where S.felderinfo_id=F.tid\
and S.is_active=1\
and S.mask_execution_id=tmp_qa_mask_execution.execution_id\
and S.mask_execution_id=tmp_testcase.execution_id\
);\
\
update tmp_qa_mask_execution set nextmask=nextmask || array_to_string(fields,'&','')\
update tmp_testcase set nextmask=nextmask || array_to_string(fields,'&','')\
where fields is not null;\
\
</#if>\
@ -121,23 +302,21 @@ execution_name,\ @@ -121,23 +302,21 @@ execution_name,\
uniquename,\
maskeninfo_id_str,\
nextmask,\
ticket_link as nextserverlink,\
execution_start,\
<#if SQLdialect='Postgres'>\
round(extract(second from (execution_end-execution_start))::decimal,0)::integer as dauer,\
<#else>\
execution_end-execution_start as dauer,\
</#if>\
dauer,\
assert_caption,\
result_value_min,\
result_value_max,\
assert_value_range,\
result_value,\
result_status_str,\
('37040&Ergebnis=' || tid)::varchar(255) as nexttable\
nexttable\
<#if UserIsAdmin>\
,nextedit\
</#if>\
from tmp_qa_mask_execution\
order by 1,2,3,4,5,6,7;^--freemarker template\
from tmp_testcase\
order by 1,2,3,4,5,6,7;\
\
</#if>^--freemarker template\
XIL List\
drop_and_delete movable_columns sizable_columns horizontal_scrolling\
white_space_color=COLOR_WHITE fixed_columns=2\
@ -157,6 +336,9 @@ Column CID=1 heading_text="Maske" center_heading\ @@ -157,6 +336,9 @@ Column CID=1 heading_text="Maske" center_heading\
Column CID=1 heading_text="Maske\\naufrufen" center_heading\
row_selectable col_selectable heading_platform readonly\
width=40 text_size=200\
Column CID=1 heading_text="Ticket" center_heading\
row_selectable col_selectable heading_platform readonly\
width=40 text_size=200\
Column CID=1 heading_text="Ausführungszeit\\nStart" center_heading\
row_selectable col_selectable heading_platform readonly\
width=14 text_size=200\
@ -166,13 +348,10 @@ Column CID=1 heading_text="Dauer\\n(Sek.)" center_heading\ @@ -166,13 +348,10 @@ Column CID=1 heading_text="Dauer\\n(Sek.)" center_heading\
Column CID=1 heading_text="Erwarteter Wert\\n(Zelle)" center_heading\
row_selectable col_selectable heading_platform readonly\
width=15 text_size=200\
Column CID=1 heading_text="Erwarteter Wert\\n(Minimum)" center_heading\
row_selectable col_selectable heading_platform readonly\
width=15 text_size=200\
Column CID=1 heading_text="Erwarteter Wert\\n(Maximum)" center_heading\
Column CID=1 heading_text="Erwarteter Wert" center_heading\
row_selectable col_selectable heading_platform readonly\
width=15 text_size=200\
Column CID=1 heading_text="Wert" center_heading\
Column CID=1 heading_text="Gefundener Wert" center_heading\
row_selectable col_selectable heading_platform readonly\
width=5 text_size=200\
Column CID=1 heading_text="Ausführungsstatus" center_heading\
@ -186,4 +365,4 @@ Column CID=1 heading_text="Bearbeiten" center_heading\ @@ -186,4 +365,4 @@ Column CID=1 heading_text="Bearbeiten" center_heading\
row_selectable col_selectable heading_platform readonly\
width=5 text_size=200\
</#if>\
@@@^^^Protokoll der Masken-Ausführung ausgeben^drop table tmp_qa_mask_execution;^^1^440^360^0^1^^
@@@^^^Protokoll der Masken-Ausführung ausgeben^drop table tmp_testcase;^^1^440^360^0^1^^

3
src-modules/module/qa/masken/37100_felderinfo.unl

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
37100^Benutzer/in^60^0^0^150^200^1^integer^200^0^1^<<SQL>> select tid,nvl(name,benutzer) from userinfo order by 2;^^^
37101^Ausführungs-Status^0^0^0^150^80^1^integer^200^0^1^<<SQL>> select 0,'Erfolgreich' from xdummy union select 1,'Warnung' from xdummy union select 2,'Fehler' from xdummy order by 1^^^
37101^Ausführungs-Status^0^0^0^150^80^10^integer^200^0^1^<<SQL>> select 0,'Erfolgreich' from xdummy union select 1,'Warnung' from xdummy union select 2,'Fehler' from xdummy order by 1^^^
37102^Projekt^20^0^0^150^80^1^integer^200^0^1^<<SQL>> select tid,name from qa_project where active=1 /* and systeminfo_id=<<Komponente>> */ order by 2;^^^
37103^Testfall-Name (Stichwort)^50^0^0^150^150^1^sql^50^0^0^^^^
37104^Komponente^10^0^0^150^200^1^integer^200^0^1^<<SQL>> select tid,name from systeminfo order by 2;^^^
@ -9,3 +9,4 @@ @@ -9,3 +9,4 @@
/* and T.tid in (select P.dbtest_id from qa_dbtest2project P where P.project_id=<<Projekt>>) */ \
/* and T.systeminfo_id=<<Komponente>> */\
order by 2^ ^ ^
37108^Result-ID^1000^300^-1^170^150^1^integer^30^0^13^ ^^ ^

1
src-modules/module/qa/masken/37100_masken_felder_bez.unl

@ -6,3 +6,4 @@ @@ -6,3 +6,4 @@
37100^37105^
37100^37106^
37100^37107^
37100^37108^

7
src-modules/module/qa/masken/37100_maskeninfo.unl

@ -30,7 +30,10 @@ A.def_col_name,\ @@ -30,7 +30,10 @@ A.def_col_name,\
A.def_col_value,\
''::varchar(255) as ticket_link\
"\
source="qa_dbtest T, qa_dbtest_assertion A left outer join qa_dbtest_result R on (R.dbtest_assertion_id=A.tid /* and date(R.execution_start) >= date_val(<<Ab Datum>>) */)"\
source="qa_dbtest T, qa_dbtest_assertion A inner join qa_dbtest_result R \
on (R.dbtest_assertion_id=A.tid /* and date(R.execution_start) >= date_val(<<Ab Datum>>) */\
/* and R.tid=<<Result-ID>> */\
)"\
target="tmp_qa_dbtest">\
where \
T.tid=A.dbtest_id\
@ -60,7 +63,7 @@ update tmp_qa_dbtest set \ @@ -60,7 +63,7 @@ update tmp_qa_dbtest set \
where result_code=0\
;\
\
/* delete from tmp_qa_dbtest where result_code!= <<Ausführungs-Status>> ; */\
/* delete from tmp_qa_dbtest where result_code not in ( <<Ausführungs-Status>>) ; */\
\
\
update tmp_qa_dbtest set systeminfo_id_str=(select name from systeminfo S\

40
src-modules/module/qa/masken/37140_maskeninfo.unl

@ -13,11 +13,12 @@ R.orderbyclause,\ @@ -13,11 +13,12 @@ R.orderbyclause,\
T.tid,\
T.uniquename,\
T.name,\
T.whereclause\
FROM qa_dbtest T, qa_resultset R\
where \
T.resultset_id=R.tid\
and T.active=1\
T.whereclause,\
C.tid as testcase_id\
FROM qa_testcase C, qa_dbtest T, qa_resultset R\
where C.dbtest_id=T.tid\
and T.resultset_id=R.tid\
and C.is_active=1\
;\
\
</sqlvar>\
@ -28,7 +29,8 @@ A.tid,\ @@ -28,7 +29,8 @@ A.tid,\
A.rownr ,\
A.def_col_caption,\
A.def_col_name,\
A.def_col_value\
A.def_col_value,\
A.def_col_function\
FROM qa_dbtest_assertion A\
where A.dbtest_id in (select T.tid\
from qa_dbtest T where T.active=1)\
@ -49,24 +51,27 @@ from qa_dbtest T where T.active=1)\ @@ -49,24 +51,27 @@ from qa_dbtest T where T.active=1)\
\
/* <#assign dbtest_id="<<DB-Test>>" />*/\
</#if>\
\
create temp table tmp_qa_dbtest_result_id\
(qa_dbtest_result_id integer);\
\
\
<#foreach dbtest in qa_dbtests>\
<#if dbtest_id == "" || dbtest_id==dbtest.tid?string>\
\
select now() as beginn\
select ${dbtest.tid}::integer as dbtest_id,now() as beginn\
into temp tmp_anfang;\
\
select ${dbtest.fieldclause}\
select ${dbtest.fieldclause},(row_number () over (<#if dbtest.orderbyclause !=''>\
order by ${dbtest.orderbyclause}\
</#if>))::integer as _rownumber\
into temp tmp_rs\
from ${dbtest.fromclause}\
<#if dbtest.whereclause !=''>\
where ${dbtest.whereclause}\
where <#assign inlineTemplate=dbtest.whereclause?interpret />\
<@inlineTemplate/>\
</#if>\
<#if dbtest.groupbyclause !=''>\
group by ${dbtest.whereclause}\
group by ${dbtest.groupbyclause}\
</#if>\
<#if dbtest.orderbyclause !=''>\
order by ${dbtest.orderbyclause}\
@ -88,11 +93,20 @@ select \ @@ -88,11 +93,20 @@ select \
${dbtest_assertion.tid},\
A.beginn,\
now(),\
case when T.${dbtest_assertion.def_col_name}='${dbtest_assertion.def_col_value}' then 0\
case when T.${dbtest_assertion.def_col_name}=\
<#if dbtest_assertion.def_col_function !="">\
${dbtest_assertion.def_col_function}('${dbtest_assertion.def_col_value}')\
<#else>\
'${dbtest_assertion.def_col_value}' \
</#if>\
then 0\
else 1 end as result_code,\
T.${dbtest_assertion.def_col_name} as result_value\
from tmp_anfang A left outer join tmp_rs T\
on (1=${dbtest_assertion.rownr})\
on (A.dbtest_id=${dbtest_assertion.dbtest_id}\
and _rownumber=${dbtest_assertion.rownr} \
)\
\
;\
insert into tmp_qa_dbtest_result_id(qa_dbtest_result_id)\
<#if SQLdialect='Postgres'>\

11
src-modules/module/qa/masken/37160_felderinfo.unl

@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
37160^Benutzer/in^60^0^0^150^200^1^integer^200^0^1^<<SQL>> select tid,nvl(name,benutzer) from userinfo order by 2;^^^
37161^Ausführungs-Status^0^0^0^150^80^10^integer^200^0^1^<<SQL>> select 0,'Erfolgreich' from xdummy union select 1,'Warnung' from xdummy union select 2,'Fehler' from xdummy order by 1^^^
37162^Projekt^20^0^0^150^80^1^integer^200^0^1^<<SQL>> select tid,name from qa_project where active=1 /* and systeminfo_id=<<Komponente>> */ order by 2;^^^
37163^Testfall-Name (Stichwort)^50^0^0^150^150^1^sql^50^0^0^^^^
37164^Komponente^10^0^0^150^200^1^integer^200^0^1^<<SQL>> select tid,name from systeminfo order by 2;^^^
37165^Nur aktive^30^0^0^150^80^1^integer^200^0^1^<<SQL>> select 1,'Ja' from xdummy union select 0,'nein' from xdummy order by 1 desc;^^<<SQL>>select 1,'Ja' from xdummy^
37166^Ab Datum^40^0^0^150^80^1^date^200^0^0^ ^^<<SQL>> select today()-3 from xdummy^
37167^Testfall^100^0^0^150^200^1^integer^200^0^1^<<SQL>> select T.tid,T.name from qa_testcase T where is_active=1 \
/* and T.tid in (select P.testcase_id from qa_testcase2project P where P.project_id=<<Projekt>>) */ \
/* and T.systeminfo_id=<<Komponente>> */\
order by 2^ ^ ^

1
src-modules/module/qa/masken/37160_maske_system_bez.unl

@ -0,0 +1 @@ @@ -0,0 +1 @@
37160^260^

8
src-modules/module/qa/masken/37160_masken_felder_bez.unl

@ -0,0 +1,8 @@ @@ -0,0 +1,8 @@
37160^37160^
37160^37161^
37160^37162^
37160^37163^
37160^37164^
37160^37165^
37160^37166^
37160^37167^

126
src-modules/module/qa/masken/37160_maskeninfo.unl

@ -0,0 +1,126 @@ @@ -0,0 +1,126 @@
37160^Testfall-Protokoll^--Autor: D. Quathamer\
--Datum: 2.8.2019\
--Freemarker Template\
<#include "SQL_lingua_franca"/>\
<#include "SuperX_general"/>\
\
\
<#assign resultValueNative="result_value::float" />\
<#if SQLdialect='Postgres'>\
<#assign resultValueNative="round(decval(replace(result_value,'.',',')),0) " />\
</#if>\
\
\
<@selectintotmp \
select="\
T.tid,\
T.name,\
T.uniquename,\
R.assertion_def_col_caption,\
R.execution_start,\
R.execution_end,\
R.result_code,\
R.result_value,\
null::integer as result_status,\
''::char(255) as result_status_str,\
R.result_log,\
T.systeminfo_id,\
''::char(255) as systeminfo_id_str,\
''::varchar(255) as ticket_link,\
''::varchar(255) as nexttable,\
R.mask_execution_result_id,\
R.dbtest_result_id\
"\
source="qa_testcase T inner join qa_testcase_result R on (R.testcase_id=T.tid /* and date(R.execution_start) >= date_val(<<Ab Datum>>) */)"\
target="tmp_qa_testcase">\
where \
1=1\
/* and T.is_active=<<Nur aktive>> */\
/* and T.tid in (select P.testcase_id from qa_testcase2project P where P.project_id=<<Projekt>>) */\
/* and T.userinfo_id=<<Benutzer/in>> */\
/* and T.systeminfo_id=<<Komponente>> */\
/* and T.name ilike '%<<Testfall-Name (Stichwort)>>%' */\
/* and T.tid=<<Testfall>> */\
</@selectintotmp>\
<@informixnolog/>;\
\
update tmp_qa_testcase set ticket_link=P.issue_link || TP.issue_id\
from qa_testcase2project TP, qa_project P\
where TP.testcase_id=tmp_qa_testcase.tid\
and P.tid=TP.project_id\
;\
\
update tmp_qa_testcase set nexttable='37020&Result-ID=' || mask_execution_result_id\
where mask_execution_result_id is not null;\
update tmp_qa_testcase set nexttable='37100&Result-ID=' || dbtest_result_id\
where dbtest_result_id is not null;\
\
\
update tmp_qa_testcase set --result_status=1,\
result_status_str='Warnung'\
where result_code=1;\
update tmp_qa_testcase set result_status=2,\
result_status_str='Fehler'\
where result_code is null;\
-- \
update tmp_qa_testcase set \
result_status_str='Erfolg'\
where result_code=0\
;\
\
/* delete from tmp_qa_testcase where result_code not in ( <<Ausführungs-Status>> ); */\
\
\
update tmp_qa_testcase set systeminfo_id_str=(select name from systeminfo S\
where S.tid=tmp_qa_testcase.systeminfo_id);\
\
select systeminfo_id_str,\
name,\
uniquename,\
case when ticket_link !='' then 'Ticket|' || ticket_link else '' end as nextserverlink,\
assertion_def_col_caption,\
execution_start,\
<#if SQLdialect='Postgres'>\
round(extract(second from (execution_end-execution_start))::decimal,0)::integer as dauer,\
<#else>\
execution_end-execution_start as dauer,\
</#if>\
result_value,\
result_status_str,\
nexttable\
from tmp_qa_testcase\
order by 1,2,3,4,5,6,7;^XIL List\
drop_and_delete movable_columns sizable_columns horizontal_scrolling\
white_space_color=COLOR_WHITE fixed_columns=2\
min_heading_height=35\
Column CID=0 heading_text="Komponente" center_heading\
row_selectable col_selectable heading_platform readonly\
width=20 text_size=100\
Column CID=1 heading_text="Testfall" center_heading\
row_selectable col_selectable heading_platform readonly\
width=50 text_size=200\
Column CID=1 heading_text="Testfall\\nSchlüssel" center_heading\
row_selectable col_selectable heading_platform readonly\
width=10 text_size=200\
Column CID=1 heading_text="Ticket" center_heading\
row_selectable col_selectable heading_platform readonly\
width=10 text_size=200\
Column CID=1 heading_text="Erwartung" center_heading\
row_selectable col_selectable heading_platform readonly\
width=20 text_size=200\
Column CID=1 heading_text="Ausführungszeit\\nStart" center_heading\
row_selectable col_selectable heading_platform readonly\
width=10 text_size=200\
Column CID=1 heading_text="Dauer\\n(Sek.)" center_heading\
row_selectable col_selectable heading_platform readonly\
width=10 text_size=200\
Column CID=1 heading_text="Gefundener Wert" center_heading\
row_selectable col_selectable heading_platform readonly\
width=10 text_size=200\
Column CID=1 heading_text="Ausführungsstatus" center_heading\
row_selectable col_selectable heading_platform readonly\
width=15 text_size=200\
Column CID=1 heading_text="Details" center_heading\
row_selectable col_selectable heading_platform readonly\
width=15 text_size=200\
@@@^^^Übersicht über das Laufzeitverhalten von Masken- und Datenbanktestfällen^drop table tmp_qa_testcase;^^1^440^360^0^1^^

1
src-modules/module/qa/masken/37160_sachgeb_maske_bez.unl

@ -0,0 +1 @@ @@ -0,0 +1 @@
260^37160^

78
src-modules/module/qa/qa_update.x

@ -0,0 +1,78 @@ @@ -0,0 +1,78 @@
#!/bin/bash
#Arbeitsverzeichnis fuer crontab
PFAD=$2
if [ "$PFAD" != "" ]
then
cd $PFAD
fi
#Umgebung einlesen:
if [ "$QA_PFAD" = "" ]
then
echo "ACHTUNG: Die Umgebungsvariable QA_PFAD ist nicht gesetzt. Bitte prüfen Sie $SUPERX_DIR/db/bin/SQL_ENV"
exit 1
fi
if [ "$QA_ERRORMAIL" != "" ]
then
ERRORMAIL=$QA_ERRORMAIL
export ERRORMAIL
fi
if [ "$QA_LOGMAIL" != "" ]
then
LOGMAIL=$QA_LOGMAIL
export LOGMAIL
fi
if [ "$QA_BACKUP" != "" ]
then
MODULE_BACKUP=$QA_BACKUP
export MODULE_BACKUP
fi
#hier geht es los
#bei QA gibt es keine Rohdaten, daher Tagesdatum:
date +'%d.%m.%Y' > $QA_LOAD_PFAD/superx.datum
echo "qa-Update startet" >$QA_ERRORDAT
runAndCheck.x $QA_PFAD/etl/mask_execution "qa_mask_execution.x" EXIT_ON_ERROR SEND_ERRORMAIL SEND_LOGMAIL "QA update$MANDANTID Masken"
runAndCheck.x $QA_PFAD "module_etl.x qa $QA_PFAD $QA_LOAD_PFAD" EXIT_ON_ERROR SEND_ERRORMAIL SEND_LOGMAIL "QA update$MANDANTID"
cat etl/mask_execution/L_QA_update$MANDANTID.log >>$QA_PFAD/L_QA_update$MANDANTID.log
echo "---------------------------Beginn Prüfroutine-----------------------------------" >>$QA_ERRORDAT
cat $QA_PFAD/L_QA_update$MANDANTID.log >>$QA_ERRORDAT
#cat $QA_PFAD/L_qa_Test$MANDANTID.log >>$QA_ERRORDAT
#pruefmail.x $QA_PFAD/L_qa_Test$MANDANTID.log $ERRORMAIL
#Bei Fehlern Datum zurücksetzen:
fgrep -s "not found" $QA_ERRORDAT
FLAG1=$?
fgrep -i -s "error" $QA_ERRORDAT
FLAG2=$?
fgrep -i -s "nicht gefunden" $QA_ERRORDAT
FLAG3=$?
fgrep -i -s "fehler" $QA_ERRORDAT
FLAG4=$?
if [ $FLAG1 -eq 0 -o $FLAG2 -eq 0 -o $FLAG3 -eq 0 -o $FLAG4 -eq 0 ]
then
echo "Fehler beim QA-Update "
echo "---------------------------------------"
echo "Fehlerprotokoll in $QA_ERRORDAT"
echo "Das Datum wird zurückgesetzt. Kopieren Sie die Datei superx.datum ggf. auf den QA-Rechner"
echo "---------------------------------------"
cp $QA_LOAD_PFAD/superx.datum.alt $QA_LOAD_PFAD/superx.datum
else
echo "QA-Update erfolgreich"
if [ "$QA_LOGMAIL" != "" -a "$MAILPROG" != "" ]
then
echo "Masken-Ausführung Protokoll ausführen und versenden"
$QA_PFAD/etl/mask_execution/mask_execution_mail.x >>$QA_ERRORDAT 2>&1
fi
fi

90
src-modules/module/qa/upgrade/qa_upgrade_testcases0.6.sql

@ -0,0 +1,90 @@ @@ -0,0 +1,90 @@
begin work;
--welche Maskentests sind noch nicht migriert?
insert into qa_testcase(
name,
userinfo_id,
testcase_type_id,
is_active,
systeminfo_id,
uniquename,
mask_execution_id,
dbtest_id,
testcase_status_id
)
select name,
userinfo_id,
1 as testcase_type_id,
is_active,
systeminfo_id,
uniquename,
E.tid as mask_execution_id,
null::integer as dbtest_id,
2 as testcase_status_id --Migration
FROM qa_mask_execution E
where E.tid not in (select mask_execution_id
from qa_testcase
where mask_execution_id is not null)
;
--Anhängige Tabellen füllen:
insert into qa_testcase2project(
testcase_id,
project_id,
issue_id)
select C.tid,
P.project_id,
P.issue_id
FROM qa_mask_execution2project P, qa_testcase C
where C.mask_execution_id=P.mask_execution_id
and C.testcase_status_id=2
;
--jetzt dbtests:
insert into qa_testcase(
name,
userinfo_id,
testcase_type_id,
is_active,
systeminfo_id,
uniquename,
mask_execution_id,
dbtest_id,
testcase_status_id
)
select name,
null::integer as userinfo_id,
2 as testcase_type_id,
D.active,
D.systeminfo_id,
D.uniquename,
null::integer as mask_execution_id,
D.tid as dbtest_id,
2 as testcase_status_id --Migration
FROM qa_dbtest D
where D.tid not in (select dbtest_id
from qa_testcase
where dbtest_id is not null)
;
--Anhängige Tabellen füllen:
insert into qa_testcase2project(
testcase_id,
project_id,
issue_id)
select C.tid,
P.project_id,
P.issue_id
FROM qa_dbtest2project P, qa_testcase C
where C.dbtest_id=P.dbtest_id
and C.testcase_status_id=2
;
--migriert:
update qa_testcase set testcase_status_id=1
where testcase_status_id=2;
commit;
Loading…
Cancel
Save