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

Skip to content

Commit 957e5c9

Browse files
produce 1 row per event document using new output buffer
1 parent fb96511 commit 957e5c9

3 files changed

Lines changed: 62 additions & 74 deletions

File tree

source/reporters/ut_realtime_reporter.tpb

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ create or replace type body ut_realtime_reporter is
7878
self.print_end_node('suites');
7979
self.print_node('totalNumberOfTests', to_char(total_number_of_tests));
8080
self.print_end_node('event');
81-
self.flush_print_buffer();
81+
self.flush_print_buffer('pre-run');
8282
end before_calling_run;
8383

8484
overriding member procedure after_calling_run(
@@ -89,7 +89,7 @@ create or replace type body ut_realtime_reporter is
8989
self.print_xml_fragment(xml_header);
9090
self.print_start_node('event', 'type', 'post-run');
9191
self.print_end_node('event');
92-
self.flush_print_buffer();
92+
self.flush_print_buffer('post-run');
9393
end after_calling_run;
9494

9595
overriding member procedure before_calling_suite(
@@ -102,7 +102,7 @@ create or replace type body ut_realtime_reporter is
102102
self.print_start_node('suite', 'id', a_suite.path);
103103
self.print_end_node('suite');
104104
self.print_end_node('event');
105-
self.flush_print_buffer();
105+
self.flush_print_buffer('pre-suite');
106106
end before_calling_suite;
107107

108108
overriding member procedure after_calling_suite(
@@ -127,7 +127,7 @@ create or replace type body ut_realtime_reporter is
127127
self.print_cdata_node('serverOutput', a_suite.get_serveroutputs());
128128
self.print_end_node('suite');
129129
self.print_end_node('event');
130-
self.flush_print_buffer();
130+
self.flush_print_buffer('post-suite');
131131
end after_calling_suite;
132132

133133
overriding member procedure before_calling_test(
@@ -143,7 +143,7 @@ create or replace type body ut_realtime_reporter is
143143
self.print_node('totalNumberOfTests', to_char(total_number_of_tests));
144144
self.print_end_node('test');
145145
self.print_end_node('event');
146-
self.flush_print_buffer();
146+
self.flush_print_buffer('pre-test');
147147
end before_calling_test;
148148

149149
overriding member procedure after_calling_test(
@@ -182,7 +182,7 @@ create or replace type body ut_realtime_reporter is
182182
end if;
183183
self.print_end_node('test');
184184
self.print_end_node('event');
185-
self.flush_print_buffer();
185+
self.flush_print_buffer('post-test');
186186
end after_calling_test;
187187

188188
overriding member function get_description return varchar2 is
@@ -214,10 +214,6 @@ create or replace type body ut_realtime_reporter is
214214
) is
215215
begin
216216
self.print_xml_fragment('</' || a_name || '>', -1);
217-
if a_name = 'event' then
218-
-- force new line to make complete event a.s.a.p. visible in consuming session
219-
self.print_xml_fragment(' ');
220-
end if;
221217
end print_end_node;
222218

223219
member procedure print_node(
@@ -255,10 +251,17 @@ create or replace type body ut_realtime_reporter is
255251
end print_xml_fragment;
256252

257253
member procedure flush_print_buffer(
258-
self in out nocopy ut_realtime_reporter
254+
self in out nocopy ut_realtime_reporter,
255+
a_item_type in varchar2
259256
) is
257+
l_doc clob;
258+
l_rows integer := print_buffer.count;
260259
begin
261-
self.print_text_lines(print_buffer);
260+
for i in 1 .. l_rows loop
261+
ut_utils.append_to_clob(l_doc, print_buffer(i));
262+
ut_utils.append_to_clob(l_doc, chr(10));
263+
end loop;
264+
self.print_clob(l_doc, a_item_type);
262265
print_buffer.delete;
263266
end flush_print_buffer;
264267

source/reporters/ut_realtime_reporter.tps

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,8 @@ create or replace type ut_realtime_reporter force under ut_output_reporter_base(
155155
* Flushes the local print buffer to the output buffer.
156156
*/
157157
member procedure flush_print_buffer(
158-
self in out nocopy ut_realtime_reporter
158+
self in out nocopy ut_realtime_reporter,
159+
a_item_type in varchar2
159160
)
160161
)
161162
not final

test/core/reporters/test_realtime_reporter.pkb

Lines changed: 45 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
create or replace package body test_realtime_reporter as
22

3-
g_xml_reports test_xmltype_list := test_xmltype_list();
3+
g_xml_reports test_event_list := test_event_list();
44

55
procedure create_test_suites_and_run is
66
pragma autonomous_transaction;
@@ -102,33 +102,17 @@ create or replace package body test_realtime_reporter as
102102

103103
<<run_report_and_cache_result>>
104104
declare
105-
l_clob clob;
105+
l_reporter ut3.ut_realtime_reporter := ut3.ut_realtime_reporter();
106106
begin
107-
g_xml_reports.delete;
108-
<<report_lines>>
109-
for r in (
110-
with
111-
base as (
112-
select sum(case when column_value like '<?xml%' then 1 else 0 end) over(order by rownum) group_no,
113-
rownum as rn,
114-
column_value as line
115-
from table(ut3.ut.run('ut3_tester:realtime_reporting', ut3.ut_realtime_reporter()))
116-
)
117-
select group_no,
118-
lead(group_no, 1, -1) over (order by rn) as next_group_no,
119-
rn,
120-
line
121-
from base
122-
order by rn
123-
) loop
124-
ut3.ut_utils.append_to_clob(l_clob, r.line);
125-
ut3.ut_utils.append_to_clob(l_clob, chr(10));
126-
if r.group_no != r.next_group_no then
127-
g_xml_reports.extend;
128-
g_xml_reports(g_xml_reports.count) := xmltype(l_clob);
129-
l_clob := null;
130-
end if;
131-
end loop report_lines;
107+
-- produce
108+
ut3.ut_runner.run(
109+
a_paths => ut3.ut_varchar2_list(':realtime_reporting'),
110+
a_reporters => ut3.ut_reporters(l_reporter)
111+
);
112+
-- consume
113+
select test_event_object(item_type, xmltype(text))
114+
bulk collect into g_xml_reports
115+
from table(ut3.ut_output_table_buffer(l_reporter.output_buffer.output_id).get_lines());
132116
end run_report_and_cache_result;
133117
end create_test_suites_and_run;
134118

@@ -137,8 +121,8 @@ create or replace package body test_realtime_reporter as
137121
l_expected sys_refcursor;
138122
begin
139123
open l_actual for
140-
select t.column_value.extract('/event/@type').getstringval() as event_type,
141-
t.column_value.extract('/event/suite/@id|/event/test/@id').getstringval() as item_id
124+
select t.event_doc.extract('/event/@type').getstringval() as event_type,
125+
t.event_doc.extract('/event/suite/@id|/event/test/@id').getstringval() as item_id
142126
from table(g_xml_reports) t;
143127
open l_expected for
144128
select 'pre-run' as event_type, null as item_id from dual union all
@@ -174,22 +158,22 @@ create or replace package body test_realtime_reporter as
174158
l_actual integer;
175159
l_expected integer := 7;
176160
begin
177-
select t.column_value.extract('/event/totalNumberOfTests/text()').getnumberval()
161+
select t.event_doc.extract('/event/totalNumberOfTests/text()').getnumberval()
178162
into l_actual
179163
from table(g_xml_reports) t
180-
where t.column_value.extract('/event/@type').getstringval() = 'pre-run';
164+
where t.event_type = 'pre-run';
181165
end total_number_of_tests;
182166

183167
procedure escaped_characters is
184168
l_actual varchar2(32767);
185169
l_expected varchar2(20) := 'suite &lt;A&gt;';
186170
begin
187-
select t.column_value.extract(
171+
select t.event_doc.extract(
188172
'//suite[@id="realtime_reporting.check_realtime_reporting1"]/description/text()'
189173
).getstringval()
190174
into l_actual
191175
from table(g_xml_reports) t
192-
where t.column_value.extract('/event/@type').getstringval() = 'pre-run';
176+
where t.event_type = 'pre-run';
193177
ut.expect(l_actual).to_equal(l_expected);
194178
end escaped_characters;
195179

@@ -198,13 +182,13 @@ create or replace package body test_realtime_reporter as
198182
l_expected sys_refcursor;
199183
begin
200184
open l_actual for
201-
select t.column_value.extract('//test/testNumber/text()')
185+
select t.event_doc.extract('//test/testNumber/text()')
202186
.getnumberval() as test_number,
203-
t.column_value.extract('//test/totalNumberOfTests/text()')
187+
t.event_doc.extract('//test/totalNumberOfTests/text()')
204188
.getnumberval() as total_number_of_tests
205189
from table(g_xml_reports) t
206-
where t.column_value.extract('/event/@type').getstringval() = 'pre-test'
207-
and t.column_value.extract('//test/@id').getstringval() is not null;
190+
where t.event_type = 'pre-test'
191+
and t.event_doc.extract('//test/@id').getstringval() is not null;
208192
open l_expected for
209193
select level as test_number,
210194
7 as total_number_of_tests
@@ -218,21 +202,21 @@ create or replace package body test_realtime_reporter as
218202
l_expected sys_refcursor;
219203
begin
220204
open l_actual for
221-
select t.column_value.extract('//test/testNumber/text()')
205+
select t.event_doc.extract('//test/testNumber/text()')
222206
.getnumberval() as test_number,
223-
t.column_value.extract('//test/totalNumberOfTests/text()')
207+
t.event_doc.extract('//test/totalNumberOfTests/text()')
224208
.getnumberval() as total_number_of_tests
225209
from table(g_xml_reports) t
226-
where t.column_value.extract('/event/@type').getstringval() = 'post-test'
227-
and t.column_value.extract('//test/@id').getstringval() is not null
228-
and t.column_value.extract('//test/startTime/text()').getstringval() is not null
229-
and t.column_value.extract('//test/endTime/text()').getstringval() is not null
230-
and t.column_value.extract('//test/executionTime/text()').getnumberval() is not null
231-
and t.column_value.extract('//test/counter/disabled/text()').getnumberval() is not null
232-
and t.column_value.extract('//test/counter/success/text()').getnumberval() is not null
233-
and t.column_value.extract('//test/counter/failure/text()').getnumberval() is not null
234-
and t.column_value.extract('//test/counter/error/text()').getnumberval() is not null
235-
and t.column_value.extract('//test/counter/warning/text()').getnumberval() is not null;
210+
where t.event_type = 'post-test'
211+
and t.event_doc.extract('//test/@id').getstringval() is not null
212+
and t.event_doc.extract('//test/startTime/text()').getstringval() is not null
213+
and t.event_doc.extract('//test/endTime/text()').getstringval() is not null
214+
and t.event_doc.extract('//test/executionTime/text()').getnumberval() is not null
215+
and t.event_doc.extract('//test/counter/disabled/text()').getnumberval() is not null
216+
and t.event_doc.extract('//test/counter/success/text()').getnumberval() is not null
217+
and t.event_doc.extract('//test/counter/failure/text()').getnumberval() is not null
218+
and t.event_doc.extract('//test/counter/error/text()').getnumberval() is not null
219+
and t.event_doc.extract('//test/counter/warning/text()').getnumberval() is not null;
236220
open l_expected for
237221
select level as test_number,
238222
7 as total_number_of_tests
@@ -245,12 +229,12 @@ create or replace package body test_realtime_reporter as
245229
l_actual varchar2(32767);
246230
l_expected varchar2(80) := '<![CDATA[Actual: 1 (number) was expected to equal: 2 (number) ]]>';
247231
begin
248-
select t.column_value.extract(
232+
select t.event_doc.extract(
249233
'/event/test/failedExpectations/expectation[1]/message/text()'
250234
).getstringval()
251235
into l_actual
252236
from table(g_xml_reports) t
253-
where t.column_value.extract('/event[@type="post-test"]/test/@id').getstringval()
237+
where t.event_doc.extract('/event[@type="post-test"]/test/@id').getstringval()
254238
= 'realtime_reporting.check_realtime_reporting1.test context.test_2_nok';
255239
ut.expect(l_actual).to_equal(l_expected);
256240
end single_failed_message;
@@ -264,11 +248,11 @@ create or replace package body test_realtime_reporter as
264248
from table(g_xml_reports) t,
265249
xmltable(
266250
'/event/test/failedExpectations/expectation'
267-
passing t.column_value
251+
passing t.event_doc
268252
columns message clob path 'message',
269253
caller clob path 'caller'
270254
) x
271-
where t.column_value.extract('/event[@type="post-test"]/test/@id').getstringval()
255+
where t.event_doc.extract('/event[@type="post-test"]/test/@id').getstringval()
272256
= 'realtime_reporting.check_realtime_reporting2.test_4_nok'
273257
and x.message is not null
274258
and x.caller is not null;
@@ -280,10 +264,10 @@ create or replace package body test_realtime_reporter as
280264
l_expected_list ut3.ut_varchar2_list;
281265
l_expected clob;
282266
begin
283-
select t.column_value.extract('//event/test/serverOutput/text()').getstringval()
267+
select t.event_doc.extract('//event/test/serverOutput/text()').getstringval()
284268
into l_actual
285269
from table(g_xml_reports) t
286-
where t.column_value.extract('/event[@type="post-test"]/test/@id').getstringval()
270+
where t.event_doc.extract('/event[@type="post-test"]/test/@id').getstringval()
287271
= 'realtime_reporting.check_realtime_reporting3.test_7_with_serveroutput';
288272
ut3.ut_utils.append_to_list(l_expected_list, '<![CDATA[before test 7');
289273
ut3.ut_utils.append_to_list(l_expected_list, 'after test 7');
@@ -297,10 +281,10 @@ create or replace package body test_realtime_reporter as
297281
l_expected_list ut3.ut_varchar2_list;
298282
l_expected clob;
299283
begin
300-
select t.column_value.extract('//event/suite/serverOutput/text()').getstringval()
284+
select t.event_doc.extract('//event/suite/serverOutput/text()').getstringval()
301285
into l_actual
302286
from table(g_xml_reports) t
303-
where t.column_value.extract('/event[@type="post-suite"]/suite/@id').getstringval()
287+
where t.event_doc.extract('/event[@type="post-suite"]/suite/@id').getstringval()
304288
= 'realtime_reporting.check_realtime_reporting3';
305289
ut3.ut_utils.append_to_list(l_expected_list, '<![CDATA[Now, a no_data_found exception is raised');
306290
ut3.ut_utils.append_to_list(l_expected_list, 'dbms_output and error stack is reported for this suite.');
@@ -315,10 +299,10 @@ create or replace package body test_realtime_reporter as
315299
l_expected_list ut3.ut_varchar2_list;
316300
l_expected clob;
317301
begin
318-
select t.column_value.extract('//event/test/errorStack/text()').getstringval()
302+
select t.event_doc.extract('//event/test/errorStack/text()').getstringval()
319303
into l_actual
320304
from table(g_xml_reports) t
321-
where t.column_value.extract('/event[@type="post-test"]/test/@id').getstringval()
305+
where t.event_doc.extract('/event[@type="post-test"]/test/@id').getstringval()
322306
= 'realtime_reporting.check_realtime_reporting3.test_6_with_runtime_error';
323307
ut3.ut_utils.append_to_list(l_expected_list, '<![CDATA[ORA-00942: table or view does not exist');
324308
ut3.ut_utils.append_to_list(l_expected_list, 'ORA-06512: at "%.CHECK_REALTIME_REPORTING3", line 5');
@@ -332,10 +316,10 @@ create or replace package body test_realtime_reporter as
332316
l_expected_list ut3.ut_varchar2_list;
333317
l_expected clob;
334318
begin
335-
select t.column_value.extract('//event/suite/errorStack/text()').getstringval()
319+
select t.event_doc.extract('//event/suite/errorStack/text()').getstringval()
336320
into l_actual
337321
from table(g_xml_reports) t
338-
where t.column_value.extract('/event[@type="post-suite"]/suite/@id').getstringval()
322+
where t.event_doc.extract('/event[@type="post-suite"]/suite/@id').getstringval()
339323
= 'realtime_reporting.check_realtime_reporting3';
340324
ut3.ut_utils.append_to_list(l_expected_list, '<![CDATA[ORA-01403: no data found');
341325
ut3.ut_utils.append_to_list(l_expected_list, 'ORA-06512: at "%.CHECK_REALTIME_REPORTING3", line 21');

0 commit comments

Comments
 (0)