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

Skip to content

Commit 6512cf8

Browse files
replace granular self.print_text_lines calls with a few self.print_text calls
to optimize runtime performance as suggested by jgebal
1 parent 42cf8ee commit 6512cf8

2 files changed

Lines changed: 28 additions & 1 deletion

File tree

source/reporters/ut_realtime_reporter.tpb

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ create or replace type body ut_realtime_reporter is
2424
total_number_of_tests := 0;
2525
current_test_number := 0;
2626
current_indent := 0;
27+
print_buffer := ut_varchar2_rows();
2728
return;
2829
end;
2930

@@ -78,6 +79,7 @@ create or replace type body ut_realtime_reporter is
7879
self.print_node('totalNumberOfTests', to_char(total_number_of_tests));
7980
self.print_end_node('preRun');
8081
self.print_start_node('runEvents');
82+
self.flush_print_buffer();
8183
end before_calling_run;
8284

8385
overriding member procedure after_calling_run(
@@ -87,6 +89,7 @@ create or replace type body ut_realtime_reporter is
8789
begin
8890
self.print_end_node('runEvents');
8991
self.print_end_node('report');
92+
self.flush_print_buffer();
9093
end after_calling_run;
9194

9295
overriding member procedure before_calling_suite(
@@ -96,6 +99,7 @@ create or replace type body ut_realtime_reporter is
9699
begin
97100
self.print_start_node('startSuiteEvent', a_suite.path);
98101
self.print_end_node('startSuiteEvent');
102+
self.flush_print_buffer();
99103
end before_calling_suite;
100104

101105
overriding member procedure after_calling_suite(
@@ -117,6 +121,7 @@ create or replace type body ut_realtime_reporter is
117121
self.print_cdata_node('errorStack', ut_utils.table_to_clob(a_suite.get_error_stack_traces()));
118122
self.print_cdata_node('serverOutput', a_suite.get_serveroutputs());
119123
self.print_end_node('endSuiteEvent');
124+
self.flush_print_buffer();
120125
end after_calling_suite;
121126

122127
overriding member procedure before_calling_test(
@@ -129,6 +134,7 @@ create or replace type body ut_realtime_reporter is
129134
self.print_node('testNumber', to_char(current_test_number));
130135
self.print_node('totalNumberOfTests', to_char(total_number_of_tests));
131136
self.print_end_node('startTestEvent');
137+
self.flush_print_buffer();
132138
end before_calling_test;
133139

134140
overriding member procedure after_calling_test(
@@ -164,6 +170,7 @@ create or replace type body ut_realtime_reporter is
164170
self.print_end_node('failedExpectations');
165171
end if;
166172
self.print_end_node('endTestEvent');
173+
self.flush_print_buffer();
167174
end after_calling_test;
168175

169176
overriding member function get_description return varchar2 is
@@ -230,9 +237,17 @@ create or replace type body ut_realtime_reporter is
230237
) is
231238
begin
232239
current_indent := current_indent + a_indent_summand_before;
233-
self.print_text(lpad(' ', 2 * current_indent) || a_fragment);
240+
ut_utils.append_to_list(print_buffer, lpad(' ', 2 * current_indent) || a_fragment);
234241
current_indent := current_indent + a_indent_summand_after;
235242
end print_xml_fragment;
243+
244+
member procedure flush_print_buffer(
245+
self in out nocopy ut_realtime_reporter
246+
) is
247+
begin
248+
self.print_text_lines(print_buffer);
249+
print_buffer.delete;
250+
end flush_print_buffer;
236251

237252
end;
238253
/

source/reporters/ut_realtime_reporter.tps

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,11 @@ create or replace type ut_realtime_reporter force under ut_output_reporter_base(
3131
*/
3232
current_indent integer,
3333

34+
/**
35+
* Buffers lines to be printed.
36+
*/
37+
print_buffer ut_varchar2_rows,
38+
3439
/**
3540
* The realtime reporter.
3641
* Provides test results in a XML format, for clients such as SQL Developer interested in showing progressing details.
@@ -138,6 +143,13 @@ create or replace type ut_realtime_reporter force under ut_output_reporter_base(
138143
a_fragment in clob,
139144
a_indent_summand_before in integer default 0,
140145
a_indent_summand_after in integer default 0
146+
),
147+
148+
/**
149+
* Flushes the local print buffer to the output buffer.
150+
*/
151+
member procedure flush_print_buffer(
152+
self in out nocopy ut_realtime_reporter
141153
)
142154
)
143155
not final

0 commit comments

Comments
 (0)