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

Skip to content

Commit 9dc67f5

Browse files
committed
Moved and renamed ut_run_sqlplus.
There will be a separate directory for: - sqlcl - others?
1 parent ed39aae commit 9dc67f5

1 file changed

Lines changed: 151 additions & 0 deletions

File tree

client_source/sqlplus/ut_run.sql

Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
/**
2+
This script is designed to allow invocation of UTPLSQL with multiple reporters.
3+
It allows saving of outcomes into multiple output files.
4+
It also facilitates displaying on screen unit test results while the execution is still ongoing.
5+
Current limit of script parameters is 39
6+
7+
Scrip invocation:
8+
ut_run_sqlplus.sql user password database [ut_path|ut_paths] (-f=format [-o=output] [-s] ...)
9+
10+
Parameters:
11+
user - username to connect as
12+
password - password of the user
13+
database - database to connect to
14+
ut_path - a path(s) ot unit test(s) to be executed: user[.package[.procedure]]
15+
ut_paths - a comma separated list of ut_path (with no spaces in between)
16+
-f=format - a format to be used for reporting
17+
-o=output - a file name to put the outputs into
18+
-s - put output to screen can be used in combination with -o
19+
20+
Parameters -f, -o, -s are correlated. That is parameters -o and -s are defining outputs for -f.
21+
Example:
22+
ut_run hr hr xe hr -f=ut_documentation_reporter -o=run.log -s -f=ut_teamcity_reporter -o=teamcity.xml
23+
Unit tests will be be invoked with two reporters:
24+
- ut_documentation_reporter - this one will output to screen and into file "run.log"
25+
- ut_teamcity_reporter - this one will output to file "teamcity.xml"
26+
*/
27+
28+
whenever sqlerror exit failure
29+
whenever oserror exit failure
30+
conn &1/&2@&3
31+
whenever sqlerror continue
32+
whenever oserror continue
33+
34+
set serveroutput on size unlimited format truncated
35+
set trimspool on
36+
set echo off
37+
set termout off
38+
set feedback off
39+
set pagesize 0
40+
set linesize 30000
41+
set long 30000
42+
set longchunksize 30000
43+
set verify off
44+
set heading off
45+
46+
set define off
47+
spool make_input_params_optional.sql
48+
declare
49+
l_sql_columns varchar2(4000);
50+
begin
51+
for i in 1 .. 100 loop
52+
dbms_output.put_line('column '||i||' new_value '||i);
53+
l_sql_columns := l_sql_columns ||'null as "'||i||'",';
54+
end loop;
55+
dbms_output.put_line('select '||rtrim(l_sql_columns, ',') ||' from dual where rownum = 0;');
56+
end;
57+
/
58+
spool off
59+
set define &
60+
61+
@@make_input_params_optional.sql
62+
63+
64+
--prepare executor scripts
65+
66+
set define off
67+
spool set_run_params.sql
68+
declare
69+
l_params varchar2(4000);
70+
begin
71+
for i in 1 .. 100 loop
72+
l_params := l_params || '''&&'||i||''',';
73+
end loop;
74+
dbms_output.put_line('exec ut_runner.set_run_params(ut_varchar2_list('||rtrim(l_params, ',')||'));' );
75+
end;
76+
/
77+
spool off
78+
set define &
79+
80+
81+
@@set_run_params.sql
82+
83+
84+
spool run_in_backgroung.sql
85+
declare
86+
l_output_type varchar2(256) := ut_runner.get_streamed_output_type_name();
87+
l_run_params ut_runner.t_run_params := ut_runner.get_run_params();
88+
procedure p(a_text varchar2) is
89+
begin
90+
dbms_output.put_line(a_text);
91+
end;
92+
begin
93+
p( 'set serveroutput on size unlimited format truncated');
94+
p( 'set trimspool on');
95+
p( 'set pagesize 0');
96+
p( 'set linesize 4000');
97+
p( 'spool run_background.log');
98+
p( 'declare');
99+
p( ' v_reporter ut_reporter;');
100+
p( ' v_reporters_list ut_reporters_list := ut_reporters_list();');
101+
p( 'begin');
102+
for i in 1 .. cardinality(l_run_params.call_params) loop
103+
p(' v_reporter := '||l_run_params.call_params(i).ut_reporter_name||'('||l_output_type||'());');
104+
p(' v_reporter.output.output_id := '''||l_run_params.call_params(i).output_id||''';');
105+
p(' v_reporters_list.extend; v_reporters_list(v_reporters_list.last) := v_reporter;');
106+
end loop;
107+
p( ' ut.run( ut_varchar2_list('||l_run_params.ut_paths||'), ut_composite_reporter( v_reporters_list ) );');
108+
p( 'end;');
109+
p( '/');
110+
p( 'spool off');
111+
p( 'exit');
112+
end;
113+
/
114+
spool off
115+
116+
spool gather_data_from_outputs.sql
117+
declare
118+
l_output_type varchar2(256) := ut_runner.get_streamed_output_type_name();
119+
l_run_params ut_runner.t_run_params := ut_runner.get_run_params();
120+
l_need_spool boolean;
121+
procedure p(a_text varchar2) is
122+
begin
123+
dbms_output.put_line(a_text);
124+
end;
125+
begin
126+
p('declare l_date date := sysdate; begin loop exit when l_date < sysdate; end loop; end;');
127+
p('/');
128+
for i in 1 .. cardinality(l_run_params.call_params) loop
129+
p('set termout '||l_run_params.call_params(i).output_to_screen);
130+
l_need_spool := (l_run_params.call_params(i).output_file_name is not null);
131+
p(case when l_need_spool then 'spool '||l_run_params.call_params(i).output_file_name||chr(10) end||
132+
'select * from table( '||l_output_type||'().get_lines('''||l_run_params.call_params(i).output_id||''') );'||
133+
case when l_need_spool then chr(10)||'spool off' end);
134+
end loop;
135+
end;
136+
/
137+
138+
spool off
139+
140+
set define #
141+
--try running on windows
142+
$ start sqlplus ##1/##2@##3 @run_in_backgroung.sql
143+
--try running on linus/unix
144+
! sqlplus ##1/##2@##3 @run_in_backgroung.sql &
145+
set define &
146+
147+
--make sure we fetch row by row to indicate the progress
148+
set arraysize 1
149+
@gather_data_from_outputs.sql
150+
151+
exit

0 commit comments

Comments
 (0)