Closed
Description
The coverage report doesn't run or takes forever.
version: 18.0.0.0.0
compatibility: 18.0.0
ut_version: v3.1.3.2402
Edition: Oracle Database 18c Enterprise Edition Release 18.0.0.0.0
Port String: x86_64/Linux 2.4.xx
Information about client software
SQLDeveloper, SQLPlus, utPLSQL-cli
To Reproduce
./utplsql run ***/***@host:1521/*** -f=ut_coverage_html_reporter -o=coverage.html
Expected behavior
A HTML file with the coverage report
Details of the issue
A couple of "utPLSQL" and "JDBC Thin Client" database sessions get stuck waiting forever for the following wait-events:
- resmgr:cpu quantum
- PL/SQL lock timer
- PX Deq: Execute Reply
The SQL running queries are:
select full_name
, owner
, name
, line
, to_be_skipped
, text
from (
select lower(s.owner || '.' || s.name) as full_name
, s.owner
, s.name
, s.line - coalesce(
case
when type != 'TRIGGER' then
0
end
,(
select min(t.line) - 1
from dba_source t
where t.owner = s.owner
and t.type = s.type
and t.name = s.name
and regexp_like(t.text, '[A-Za-z0-9$#_]*(begin|declare|compound).*', 'i')
)) as line
, s.text
, case
when
-- to avoid execution of regexp_like on every line
-- first do a rough check for existence of search pattern keyword
( lower(s.text) like '%procedure%'
or lower(s.text) like '%function%'
or lower(s.text) like '%begin%'
or lower(s.text) like '%end%'
or lower(s.text) like '%package%' )
and regexp_like ( s.text
, '^([\t ]*(((not)?\s*(overriding|final|instantiable)[\t ]*)*(static|constructor|member)?[\t ]*(procedure|function)|package([\t ]+body)|begin|end([\t ]+\S+)*[ \t]*;))'
, 'i' ) then
'Y'
end as to_be_skipped
from dba_source s
where s.owner in (
select upper(t.column_value)
from table ( :l_schema_names ) t
)
and s.type not in (
'PACKAGE'
, 'TYPE'
, 'JAVA SOURCE'
)
--Exclude calls to utPLSQL framework, Unit Test packages and objects from a_exclude_list parameter of coverage reporter
and ( s.owner
, s.name ) not in (
select el.owner
, el.name
from table ( :l_skipped_objects ) el
)
)
where line > 0
and
select column_value as text
from table ( ( :b1 ).get_lines ( :b2
, :b3 ) )
Running the tests works fine. Only the Coverage Report doesn't run.