Skip to content

Coverage Report doesn't run (or takes forever) #970

Closed
@rafael-trevisan

Description

@rafael-trevisan

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions