Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 3f3fe5e

Browse files
Merge pull request #819 from utPLSQL/feature/realtime_reporter
Feature/realtime reporter
2 parents eaa1029 + f290bce commit 3f3fe5e

4 files changed

Lines changed: 76 additions & 4 deletions

File tree

source/reporters/ut_realtime_reporter.tpb

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,25 +57,27 @@ create or replace type body ut_realtime_reporter is
5757
self.print_node('name', a_suite.name);
5858
self.print_node('description', a_suite.description);
5959
<<suite_elements>>
60+
self.print_start_node('items');
6061
for i in 1 .. a_suite.items.count loop
6162
if a_suite.items(i) is of(ut_test) then
6263
print_test_elements(treat(a_suite.items(i) as ut_test));
6364
elsif a_suite.items(i) is of(ut_logical_suite) then
6465
print_suite_elements(treat(a_suite.items(i) as ut_logical_suite));
6566
end if;
6667
end loop suite_elements;
68+
self.print_end_node('items');
6769
self.print_end_node('suite');
6870
end print_suite_elements;
6971
begin
7072
xml_header := ut_utils.get_xml_header(a_run.client_character_set);
7173
self.print_xml_fragment(xml_header);
7274
self.print_start_node('event', 'type', 'pre-run');
73-
self.print_start_node('suites');
75+
self.print_start_node('items');
7476
<<items>>
7577
for i in 1 .. a_run.items.count loop
7678
print_suite_elements(treat(a_run.items(i) as ut_logical_suite));
7779
end loop items;
78-
self.print_end_node('suites');
80+
self.print_end_node('items');
7981
self.print_node('totalNumberOfTests', to_char(total_number_of_tests));
8082
self.print_end_node('event');
8183
self.flush_print_buffer('pre-run');
@@ -88,6 +90,20 @@ create or replace type body ut_realtime_reporter is
8890
begin
8991
self.print_xml_fragment(xml_header);
9092
self.print_start_node('event', 'type', 'post-run');
93+
self.print_start_node('run');
94+
self.print_node('startTime', to_char(a_run.start_time, 'YYYY-MM-DD"T"HH24:MI:SS.FF6'));
95+
self.print_node('endTime', to_char(a_run.end_time, 'YYYY-MM-DD"T"HH24:MI:SS.FF6'));
96+
self.print_node('executionTime', ut_utils.to_xml_number_format(a_run.execution_time()));
97+
self.print_start_node('counter');
98+
self.print_node('disabled', to_char(a_run.results_count.disabled_count));
99+
self.print_node('success', to_char(a_run.results_count.success_count));
100+
self.print_node('failure', to_char(a_run.results_count.failure_count));
101+
self.print_node('error', to_char(a_run.results_count.errored_count));
102+
self.print_node('warning', to_char(a_run.results_count.warnings_count));
103+
self.print_end_node('counter');
104+
self.print_cdata_node('errorStack', ut_utils.table_to_clob(a_run.get_error_stack_traces()));
105+
self.print_cdata_node('serverOutput', a_run.get_serveroutputs());
106+
self.print_end_node('run');
91107
self.print_end_node('event');
92108
self.flush_print_buffer('post-run');
93109
end after_calling_run;

source/reporters/ut_realtime_reporter.tps

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ create or replace type ut_realtime_reporter force under ut_output_reporter_base(
5858
),
5959

6060
/**
61-
* Indicates the end of the test run.
61+
* Provides meta data of a completed run.
6262
*/
6363
overriding member procedure after_calling_run(
6464
self in out nocopy ut_realtime_reporter,

test/core/reporters/test_realtime_reporter.pkb

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,45 @@ create or replace package body test_realtime_reporter as
153153
select 'post-run' as event_type, null as item_id from dual;
154154
ut.expect(l_actual).to_equal(l_expected);
155155
end xml_report_structure;
156+
157+
procedure pre_run_composite_nodes is
158+
l_actual sys_refcursor;
159+
l_expected sys_refcursor;
160+
begin
161+
open l_actual for
162+
select x.node_path
163+
from table(g_events) t,
164+
xmltable(
165+
q'[
166+
for $i in //(event|items|suite|test)
167+
return <result>{$i/string-join(ancestor-or-self::*/name(.), '/')}</result>
168+
]'
169+
passing t.event_doc
170+
columns node_path varchar2(128) path '.'
171+
) x
172+
where event_type = 'pre-run';
173+
open l_expected for
174+
select 'event' as node_path from dual union all
175+
select 'event/items' as node_path from dual union all
176+
select 'event/items/suite' as node_path from dual union all
177+
select 'event/items/suite/items' as node_path from dual union all
178+
select 'event/items/suite/items/suite' as node_path from dual union all
179+
select 'event/items/suite/items/suite/items' as node_path from dual union all
180+
select 'event/items/suite/items/suite/items/test' as node_path from dual union all
181+
select 'event/items/suite/items/suite/items/test' as node_path from dual union all
182+
select 'event/items/suite/items/suite' as node_path from dual union all
183+
select 'event/items/suite/items/suite/items' as node_path from dual union all
184+
select 'event/items/suite/items/suite/items/test' as node_path from dual union all
185+
select 'event/items/suite/items/suite/items/test' as node_path from dual union all
186+
select 'event/items/suite/items/suite/items/test' as node_path from dual union all
187+
select 'event/items/suite/items/suite' as node_path from dual union all
188+
select 'event/items/suite/items/suite/items' as node_path from dual union all
189+
select 'event/items/suite/items/suite/items/suite' as node_path from dual union all
190+
select 'event/items/suite/items/suite/items/suite/items' as node_path from dual union all
191+
select 'event/items/suite/items/suite/items/suite/items/test' as node_path from dual union all
192+
select 'event/items/suite/items/suite/items/suite/items/test' as node_path from dual;
193+
ut.expect(l_actual).to_equal(l_expected);
194+
end pre_run_composite_nodes;
156195

157196
procedure total_number_of_tests is
158197
l_actual integer;
@@ -162,7 +201,18 @@ create or replace package body test_realtime_reporter as
162201
into l_actual
163202
from table(g_events) t
164203
where t.event_type = 'pre-run';
165-
end total_number_of_tests;
204+
ut.expect(l_actual).to_equal(l_expected);
205+
end total_number_of_tests;
206+
207+
procedure execution_time_of_run is
208+
l_actual number;
209+
begin
210+
select t.event_doc.extract('/event/run/executionTime/text()').getnumberval()
211+
into l_actual
212+
from table(g_events) t
213+
where t.event_type = 'post-run';
214+
ut.expect(l_actual).to_be_not_null;
215+
end execution_time_of_run;
166216

167217
procedure escaped_characters is
168218
l_actual varchar2(32767);

test/core/reporters/test_realtime_reporter.pks

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,12 @@ create or replace package test_realtime_reporter as
1212
--%test(Provide the total number of tests as part of the pre-run information structure)
1313
procedure total_number_of_tests;
1414

15+
--%test(Provide composite structure for items, an item is either a suite or a test, suites may have nested items)
16+
procedure pre_run_composite_nodes;
17+
18+
--%test(Provide the execution time as part of the post-run information structure)
19+
procedure execution_time_of_run;
20+
1521
--%test(Escape special characters in data such as the test suite description)
1622
procedure escaped_characters;
1723

0 commit comments

Comments
 (0)