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

Skip to content

Running tests from UT3 user in other schema corrupts annotation cache #1051

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
hkorsvoll opened this issue Mar 10, 2020 · 18 comments
Closed
Assignees
Labels
Milestone

Comments

@hkorsvoll
Copy link

Hi

We are setting up utPLSQL as a test framework for our database. We are initiating tests from TeamCity using utplsql-cli.
We have installed utPLSQL using the global DDL trigger approach. There might be situations where the annotation cache is not up to date or otherwise broken. Ref [/issues/1018].
It would be great to have a command-line switch for forcing a rebuild of the annotation cache.
During nightly test runs, we can then use this switch to ensure that the cache is valid.

@jgebal
Copy link
Member

jgebal commented Mar 10, 2020

You should not need this switch if you're using version 3.1.10 or above.
There are quite some improvements to how cache is handled in that version.
Can you try it out and report if you're really facing issues?

@hkorsvoll
Copy link
Author

Look at my detailed comment in 1018 :-)

I found that what is clearing the cache is that I used the UT3 user when initiating the tests. Hopefully, I will not see this issue again when using another user.

@jgebal
Copy link
Member

jgebal commented Mar 10, 2020

Yes. UT3 user is "special".
It is framework owner schema.
I'll see if there is any way not to rely on it being special.
I think i know what is causing the problem.

Running tests from a different account shoyld solve your issues.

@hkorsvoll
Copy link
Author

Great, if you add this information in the Readme, you can close this issue :)

@jgebal
Copy link
Member

jgebal commented Mar 10, 2020

I will move that issue to utPLSQL main project as it is a framework issue, not utPLSQL-cli only.

@jgebal jgebal transferred this issue from utPLSQL/utPLSQL-cli Mar 10, 2020
@jgebal
Copy link
Member

jgebal commented Mar 10, 2020

I think it would be best to address the root cause and allow for test execution from UT3 user.

@jgebal jgebal changed the title Switch for forcing rebuild of annotation cache Running tests from UT3 user in other schema corrupts annotation cache Mar 10, 2020
@jgebal
Copy link
Member

jgebal commented Mar 10, 2020

@hkorsvoll - can you provide me simple steps to reproduce the issue? It would greatly help with writing automated test for it to prove that the fix works and prevent regression.

The way utPLSQL was detecting if user has execute any procedure was implemented in a naive/silly way.

I'm hoping the issue will now be fixed, just need to figure a way to write an automated test for it.

Alternatively I could ask you to try out the version with fix.
I would prefer steps to reproduce though.

@jgebal jgebal added the bug label Mar 10, 2020
@jgebal jgebal self-assigned this Mar 10, 2020
@jgebal jgebal added this to the 3.1.11 milestone Mar 10, 2020
@hkorsvoll
Copy link
Author

Hi, I just have to say what a pleasant experience it is to deal with a well functioning open-source community :)
Thank you for the quick response and the professionality you are showing.

@hkorsvoll
Copy link
Author

Steps to reproduce.

  1. We installed utPLSQL in an Oracle 12.1.0.2 DB, headleass (public synonyms), with DDL trigger.
  2. I created one test package in Schema1 using a user AS SYSDBA
  3. Test sucessfully running from this session
  4. Running utplsql-cli run UTP3/****@db -p Schema1
  5. No test running.

@jgebal
Copy link
Member

jgebal commented Mar 11, 2020

@hkorsvoll
By default, when installing the UT3 user doesn't have execute any procedure privilege and so it will not be able to run any tests from other schema.

From what I understand, the issue was related to the fact that the annotation cache got corrupted/purged somehow.

I've tried reproducing the steps on my local 12.1 instance.

  1. install utPLSQL 3.1.10 using all defaults with script install_headless_with_trigger.sql
  2. Run script as DBA
create user other_user identified by other_user;
grant connect, resource, create procedure to other_user;

create user tester identified by tester;
grant connect, resource, create procedure to tester;
  1. Run below as tester
create or replace function betwnstr( a_string varchar2, a_start_pos integer, a_end_pos integer ) return varchar2 is
  l_start_pos pls_integer := a_start_pos;
begin
  if l_start_pos = 0 then
    l_start_pos := 1;
    end if;
  return substr( a_string, l_start_pos, a_end_pos - l_start_pos + 1);
end;
/

create or replace package test_betwnstr as
  -- %suite(Between string function)

  -- %test(Returns substring from start position to end position)
  procedure normal_case;
end;
/

create or replace package body test_betwnstr as
  procedure normal_case is
  begin
    ut.expect( betwnstr( '1234567', 2, 5 ) ).to_equal('2345');
  end;
end;
/
grant execute on test_betwnstr to other_user;
  1. Run the test as tester with: call ut.run('tester.test_betwnstr'); and get results:
 Between string function
   Returns substring from start position to end position [.003 sec]

 Finished in .004702 seconds
 1 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)
  1. Run the test as other_user with: call ut.run('tester.test_betwnstr'); and get results:
 Between string function
   Returns substring from start position to end position [.003 sec]

 Finished in .0015582 seconds
 1 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)
  1. Run the test as ut3 with: call ut.run('tester.test_betwnstr'); and get errors:
 ORA-20204: Suite package tester.test_betwnstr does not exist
 ORA-06512: at "UT3.UT_RUNNER", line 180
 ORA-06512: at "UT3.UT", line 134
 ORA-06512: at "UT3.UT", line 488
 ORA-06512: at "UT3.UT", line 623
 ORA-06512: at line 1 Position: 5
 ORA-06512: at "UT3.UT_SUITE_MANAGER", line 566
 ORA-06512: at "UT3.UT_RUNNER", line 167
 ORA-20204: Suite package tester.test_betwnstr does not exist
  1. Run the whole schema as ut3 with: call ut.run('tester'); and get no tests:
 Finished in .00001 seconds
 0 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)
  1. Check content of ut_annotation_cache_info table to see if annotations are still in cache:
select *
  from
    ut_annotation_cache_info uaci
    join ut_annotation_cache uac
    on uaci.cache_id = uac.cache_id;

Data is still there:

CACHE_ID OBJECT_OWNER OBJECT_NAME OBJECT_TYPE PARSE_TIME CACHE_ID ANNOTATION_POSITION ANNOTATION_NAME ANNOTATION_TEXT SUBOBJECT_NAME
1 TESTER TEST_BETWNSTR PACKAGE 2020-02-28 02:11:17.876829 1 3 suite Between string function NULL
1 TESTER TEST_BETWNSTR PACKAGE 2020-02-28 02:11:17.876829 1 5 test Returns substring from start position to end position normal_case
  1. Run the test as other_user with: call ut.run('tester.test_betwnstr'); and get results:
 Between string function
   Returns substring from start position to end position [.002 sec]

 Finished in .003522 seconds
 1 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)

I'm unable to reproduce the issue locally.

Is there anything you did differently? Can you help me identifying if there was something specific in your steps taken?

@hkorsvoll
Copy link
Author

hkorsvoll commented Mar 12, 2020

Tests are located in schema FELLES.
User for creating tests is EWOPD.

Here is the DDL for the UTP3 user:

-- Start of DDL Script for User UTP3
-- Generated 12.03.2020 09:09:05 from [email protected]

CREATE USER utp3
IDENTIFIED BY <Enter User Password Here>
DEFAULT TABLESPACE UTPLSQL
TEMPORARY TABLESPACE UTPLSQLTEMP
QUOTA UNLIMITED ON UTPLSQL
/
GRANT ALTER SESSION TO utp3
/
GRANT CREATE PROCEDURE TO utp3
/
GRANT CREATE SEQUENCE TO utp3
/
GRANT CREATE SESSION TO utp3
/
GRANT CREATE SYNONYM TO utp3
/
GRANT CREATE TABLE TO utp3
/
GRANT CREATE TYPE TO utp3
/
GRANT CREATE VIEW TO utp3
/
GRANT EXECUTE ON sys.dbms_crypto TO utp3
/
GRANT EXECUTE ON sys.dbms_crypto TO utp3
/
GRANT EXECUTE ON sys.dbms_lock TO utp3
/
GRANT EXECUTE ON sys.dbms_lock TO utp3
/


-- End of DDL Script for User UTP3

This is the DDL for the user creating objects (I have removed references to our own schemas):

-- Start of DDL Script for User EWOPD
-- Generated 12.03.2020 09:23:20 from [email protected]

CREATE USER ewopd
IDENTIFIED BY <Enter User Password Here>
DEFAULT TABLESPACE BRUKARDATA
TEMPORARY TABLESPACE BRUKARDATATEMP
/
GRANT ADMINISTER ANY SQL TUNING SET TO ewopd
/
GRANT ADMINISTER DATABASE TRIGGER TO ewopd
/
GRANT ADMINISTER SQL TUNING SET TO ewopd
/
GRANT ADVISOR TO ewopd
/
GRANT ALTER ANY CLUSTER TO ewopd
/
GRANT ALTER ANY DIMENSION TO ewopd
/
GRANT ALTER ANY EVALUATION CONTEXT TO ewopd
/
GRANT ALTER ANY INDEX TO ewopd
/
GRANT ALTER ANY INDEXTYPE TO ewopd
/
GRANT ALTER ANY LIBRARY TO ewopd
/
GRANT ALTER ANY MATERIALIZED VIEW TO ewopd
/
GRANT ALTER ANY OUTLINE TO ewopd
/
GRANT ALTER ANY PROCEDURE TO ewopd
/
GRANT ALTER ANY ROLE TO ewopd
/
GRANT ALTER ANY RULE TO ewopd
/
GRANT ALTER ANY RULE SET TO ewopd
/
GRANT ALTER ANY SEQUENCE TO ewopd
/
GRANT ALTER ANY SQL PROFILE TO ewopd
/
GRANT ALTER ANY TABLE TO ewopd
/
GRANT ALTER ANY TRIGGER TO ewopd
/
GRANT ALTER ANY TYPE TO ewopd
/
GRANT ALTER DATABASE TO ewopd
/
GRANT ALTER PROFILE TO ewopd
/
GRANT ALTER RESOURCE COST TO ewopd
/
GRANT ALTER ROLLBACK SEGMENT TO ewopd
/
GRANT ALTER SESSION TO ewopd
/
GRANT ALTER SYSTEM TO ewopd
/
GRANT ALTER TABLESPACE TO ewopd
/
GRANT ALTER USER TO ewopd
/
GRANT ANALYZE ANY TO ewopd
/
GRANT AUDIT ANY TO ewopd
/
GRANT AUDIT SYSTEM TO ewopd
/
GRANT BACKUP ANY TABLE TO ewopd
/
GRANT BECOME USER TO ewopd
/
GRANT CHANGE NOTIFICATION TO ewopd
/
GRANT COMMENT ANY TABLE TO ewopd
/
GRANT CREATE ANY CLUSTER TO ewopd
/
GRANT CREATE ANY CONTEXT TO ewopd
/
GRANT CREATE ANY CREDENTIAL TO ewopd
/
GRANT CREATE ANY DIMENSION TO ewopd
/
GRANT CREATE ANY DIRECTORY TO ewopd
/
GRANT CREATE ANY EVALUATION CONTEXT TO ewopd
/
GRANT CREATE ANY INDEX TO ewopd
/
GRANT CREATE ANY INDEXTYPE TO ewopd
/
GRANT CREATE ANY JOB TO ewopd
/
GRANT CREATE ANY LIBRARY TO ewopd
/
GRANT CREATE ANY MATERIALIZED VIEW TO ewopd
/
GRANT CREATE ANY OPERATOR TO ewopd
/
GRANT CREATE ANY OUTLINE TO ewopd
/
GRANT CREATE ANY PROCEDURE TO ewopd
/
GRANT CREATE ANY RULE TO ewopd
/
GRANT CREATE ANY RULE SET TO ewopd
/
GRANT CREATE ANY SEQUENCE TO ewopd
/
GRANT CREATE ANY SQL PROFILE TO ewopd
/
GRANT CREATE ANY SYNONYM TO ewopd
/
GRANT CREATE ANY TABLE TO ewopd
/
GRANT CREATE ANY TRIGGER TO ewopd
/
GRANT CREATE ANY TYPE TO ewopd
/
GRANT CREATE ANY VIEW TO ewopd
/
GRANT CREATE CLUSTER TO ewopd
/
GRANT CREATE CREDENTIAL TO ewopd
/
GRANT CREATE DATABASE LINK TO ewopd
/
GRANT CREATE DIMENSION TO ewopd
/
GRANT CREATE EVALUATION CONTEXT TO ewopd
/
GRANT CREATE EXTERNAL JOB TO ewopd
/
GRANT CREATE INDEXTYPE TO ewopd
/
GRANT CREATE JOB TO ewopd
/
GRANT CREATE LIBRARY TO ewopd
/
GRANT CREATE MATERIALIZED VIEW TO ewopd
/
GRANT CREATE OPERATOR TO ewopd
/
GRANT CREATE PROCEDURE TO ewopd
/
GRANT CREATE PROFILE TO ewopd
/
GRANT CREATE PUBLIC DATABASE LINK TO ewopd
/
GRANT CREATE PUBLIC SYNONYM TO ewopd
/
GRANT CREATE ROLE TO ewopd
/
GRANT CREATE ROLLBACK SEGMENT TO ewopd
/
GRANT CREATE RULE TO ewopd
/
GRANT CREATE RULE SET TO ewopd
/
GRANT CREATE SEQUENCE TO ewopd
/
GRANT CREATE SESSION TO ewopd
/
GRANT CREATE SYNONYM TO ewopd
/
GRANT CREATE TABLE TO ewopd
/
GRANT CREATE TABLESPACE TO ewopd
/
GRANT CREATE TRIGGER TO ewopd
/
GRANT CREATE TYPE TO ewopd
/
GRANT CREATE USER TO ewopd
/
GRANT CREATE VIEW TO ewopd
/
GRANT DEBUG ANY PROCEDURE TO ewopd
/
GRANT DEBUG CONNECT SESSION TO ewopd
/
GRANT DELETE ANY TABLE TO ewopd
/
GRANT DEQUEUE ANY QUEUE TO ewopd
/
GRANT DROP ANY CLUSTER TO ewopd
/
GRANT DROP ANY DIMENSION TO ewopd
/
GRANT DROP ANY DIRECTORY TO ewopd
/
GRANT DROP ANY EVALUATION CONTEXT TO ewopd
/
GRANT DROP ANY INDEX TO ewopd
/
GRANT DROP ANY INDEXTYPE TO ewopd
/
GRANT DROP ANY LIBRARY TO ewopd
/
GRANT DROP ANY MATERIALIZED VIEW TO ewopd
/
GRANT DROP ANY OPERATOR TO ewopd
/
GRANT DROP ANY OUTLINE TO ewopd
/
GRANT DROP ANY PROCEDURE TO ewopd
/
GRANT DROP ANY ROLE TO ewopd
/
GRANT DROP ANY RULE TO ewopd
/
GRANT DROP ANY RULE SET TO ewopd
/
GRANT DROP ANY SEQUENCE TO ewopd
/
GRANT DROP ANY SQL PROFILE TO ewopd
/
GRANT DROP ANY SYNONYM TO ewopd
/
GRANT DROP ANY TABLE TO ewopd
/
GRANT DROP ANY TRIGGER TO ewopd
/
GRANT DROP ANY TYPE TO ewopd
/
GRANT DROP ANY VIEW TO ewopd
/
GRANT DROP PROFILE TO ewopd
/
GRANT DROP PUBLIC DATABASE LINK TO ewopd
/
GRANT DROP PUBLIC SYNONYM TO ewopd
/
GRANT DROP ROLLBACK SEGMENT TO ewopd
/
GRANT DROP TABLESPACE TO ewopd
/
GRANT DROP USER TO ewopd
/
GRANT ENQUEUE ANY QUEUE TO ewopd
/
GRANT EXECUTE ANY CLASS TO ewopd
/
GRANT EXECUTE ANY EVALUATION CONTEXT TO ewopd
/
GRANT EXECUTE ANY INDEXTYPE TO ewopd
/
GRANT EXECUTE ANY LIBRARY TO ewopd
/
GRANT EXECUTE ANY OPERATOR TO ewopd
/
GRANT EXECUTE ANY PROCEDURE TO ewopd
/
GRANT EXECUTE ANY PROGRAM TO ewopd
/
GRANT EXECUTE ANY RULE TO ewopd
/
GRANT EXECUTE ANY RULE SET TO ewopd
/
GRANT EXECUTE ANY TYPE TO ewopd
/
GRANT EXPORT FULL DATABASE TO ewopd
/
GRANT FLASHBACK ANY TABLE TO ewopd
/
GRANT FORCE ANY TRANSACTION TO ewopd
/
GRANT FORCE TRANSACTION TO ewopd
/
GRANT GLOBAL QUERY REWRITE TO ewopd
/
GRANT GRANT ANY OBJECT PRIVILEGE TO ewopd
/
GRANT GRANT ANY PRIVILEGE TO ewopd
/
GRANT GRANT ANY ROLE TO ewopd
/
GRANT IMPORT FULL DATABASE TO ewopd
/
GRANT INSERT ANY TABLE TO ewopd
/
GRANT LOCK ANY TABLE TO ewopd
/
GRANT LOGMINING TO ewopd
/
GRANT MANAGE ANY FILE GROUP TO ewopd
/
GRANT MANAGE ANY QUEUE TO ewopd
/
GRANT MANAGE FILE GROUP TO ewopd
/
GRANT MANAGE SCHEDULER TO ewopd
/
GRANT MANAGE TABLESPACE TO ewopd
/
GRANT MERGE ANY VIEW TO ewopd
/
GRANT ON COMMIT REFRESH TO ewopd
/
GRANT QUERY REWRITE TO ewopd
/
GRANT READ ANY FILE GROUP TO ewopd
/
GRANT RESTRICTED SESSION TO ewopd
/
GRANT RESUMABLE TO ewopd
/
GRANT SELECT ANY SEQUENCE TO ewopd
/
GRANT SELECT ANY TABLE TO ewopd
/
GRANT SELECT ANY TRANSACTION TO ewopd
/
GRANT SYSDBA TO ewopd
/
GRANT SYSOPER TO ewopd
/
GRANT UNDER ANY TABLE TO ewopd
/
GRANT UNDER ANY TYPE TO ewopd
/
GRANT UNDER ANY VIEW TO ewopd
/
GRANT UNLIMITED TABLESPACE TO ewopd
/
GRANT UPDATE ANY TABLE TO ewopd
/
GRANT AQ_ADMINISTRATOR_ROLE TO ewopd
/
GRANT AQ_USER_ROLE TO ewopd
/
GRANT AUTHENTICATEDUSER TO ewopd
/
GRANT CONNECT TO ewopd
/
GRANT CTXAPP TO ewopd
/
GRANT DBA TO ewopd
/
GRANT DELETE_CATALOG_ROLE TO ewopd
/
GRANT EJBCLIENT TO ewopd
/
GRANT EXECUTE_CATALOG_ROLE TO ewopd
/
GRANT EXP_FULL_DATABASE TO ewopd
/
GRANT GATHER_SYSTEM_STATISTICS TO ewopd
/
GRANT GUIBRUKAR TO ewopd
/
GRANT HS_ADMIN_ROLE TO ewopd
/
GRANT IMP_FULL_DATABASE TO ewopd
/
GRANT JAVADEBUGPRIV TO ewopd
/
GRANT JAVAIDPRIV TO ewopd
/
GRANT JAVASYSPRIV TO ewopd
/
GRANT JAVAUSERPRIV TO ewopd
/
GRANT JAVA_ADMIN TO ewopd
/
GRANT JAVA_DEPLOY TO ewopd
/
GRANT LOGSTDBY_ADMINISTRATOR TO ewopd
/
GRANT OEM_ADVISOR TO ewopd
/
GRANT OEM_MONITOR TO ewopd
/
GRANT RECOVERY_CATALOG_OWNER TO ewopd
/
GRANT RESOURCE TO ewopd
/
GRANT SCHEDULER_ADMIN TO ewopd
/
GRANT SELECT_CATALOG_ROLE TO ewopd
/
GRANT XDBADMIN TO ewopd
/
ALTER USER ewopd DEFAULT ROLE ALL
/
GRANT DEBUG ON sys.dba_indexes TO ewopd
/
GRANT DELETE ON sys.dba_indexes TO ewopd
/
GRANT FLASHBACK ON sys.dba_indexes TO ewopd
/
GRANT INSERT ON sys.dba_indexes TO ewopd
/
GRANT MERGE VIEW ON sys.dba_indexes TO ewopd
/
GRANT ON COMMIT REFRESH ON sys.dba_indexes TO ewopd
/
GRANT QUERY REWRITE ON sys.dba_indexes TO ewopd
/
GRANT REFERENCES ON sys.dba_indexes TO ewopd
/
GRANT SELECT ON sys.dba_indexes TO ewopd
/
GRANT UPDATE ON sys.dba_indexes TO ewopd
/
GRANT DEBUG ON sys.dba_jobs TO ewopd
/
GRANT DELETE ON sys.dba_jobs TO ewopd
/
GRANT FLASHBACK ON sys.dba_jobs TO ewopd
/
GRANT INSERT ON sys.dba_jobs TO ewopd
/
GRANT MERGE VIEW ON sys.dba_jobs TO ewopd
/
GRANT ON COMMIT REFRESH ON sys.dba_jobs TO ewopd
/
GRANT QUERY REWRITE ON sys.dba_jobs TO ewopd
/
GRANT REFERENCES ON sys.dba_jobs TO ewopd
/
GRANT SELECT ON sys.dba_jobs TO ewopd
/
GRANT UPDATE ON sys.dba_jobs TO ewopd
/
GRANT SELECT ON sys.dba_jobs_running TO ewopd
/
GRANT SELECT ON sys.dba_role_privs TO ewopd
/
GRANT DEBUG ON sys.dba_scheduler_jobs TO ewopd
/
GRANT DELETE ON sys.dba_scheduler_jobs TO ewopd
/
GRANT FLASHBACK ON sys.dba_scheduler_jobs TO ewopd
/
GRANT INSERT ON sys.dba_scheduler_jobs TO ewopd
/
GRANT MERGE VIEW ON sys.dba_scheduler_jobs TO ewopd
/
GRANT ON COMMIT REFRESH ON sys.dba_scheduler_jobs TO ewopd
/
GRANT QUERY REWRITE ON sys.dba_scheduler_jobs TO ewopd
/
GRANT REFERENCES ON sys.dba_scheduler_jobs TO ewopd
/
GRANT SELECT ON sys.dba_scheduler_jobs TO ewopd
/
GRANT UPDATE ON sys.dba_scheduler_jobs TO ewopd
/
GRANT DEBUG ON sys.dba_scheduler_job_classes TO ewopd
/
GRANT DELETE ON sys.dba_scheduler_job_classes TO ewopd
/
GRANT FLASHBACK ON sys.dba_scheduler_job_classes TO ewopd
/
GRANT INSERT ON sys.dba_scheduler_job_classes TO ewopd
/
GRANT MERGE VIEW ON sys.dba_scheduler_job_classes TO ewopd
/
GRANT ON COMMIT REFRESH ON sys.dba_scheduler_job_classes TO ewopd
/
GRANT QUERY REWRITE ON sys.dba_scheduler_job_classes TO ewopd
/
GRANT REFERENCES ON sys.dba_scheduler_job_classes TO ewopd
/
GRANT SELECT ON sys.dba_scheduler_job_classes TO ewopd
/
GRANT UPDATE ON sys.dba_scheduler_job_classes TO ewopd
/
GRANT DEBUG ON sys.dba_scheduler_job_log TO ewopd
/
GRANT DELETE ON sys.dba_scheduler_job_log TO ewopd
/
GRANT FLASHBACK ON sys.dba_scheduler_job_log TO ewopd
/
GRANT INSERT ON sys.dba_scheduler_job_log TO ewopd
/
GRANT MERGE VIEW ON sys.dba_scheduler_job_log TO ewopd
/
GRANT ON COMMIT REFRESH ON sys.dba_scheduler_job_log TO ewopd
/
GRANT QUERY REWRITE ON sys.dba_scheduler_job_log TO ewopd
/
GRANT REFERENCES ON sys.dba_scheduler_job_log TO ewopd
/
GRANT SELECT ON sys.dba_scheduler_job_log TO ewopd
/
GRANT UPDATE ON sys.dba_scheduler_job_log TO ewopd
/
GRANT DEBUG ON sys.dba_scheduler_job_run_details TO ewopd
/
GRANT DELETE ON sys.dba_scheduler_job_run_details TO ewopd
/
GRANT FLASHBACK ON sys.dba_scheduler_job_run_details TO ewopd
/
GRANT INSERT ON sys.dba_scheduler_job_run_details TO ewopd
/
GRANT MERGE VIEW ON sys.dba_scheduler_job_run_details TO ewopd
/
GRANT ON COMMIT REFRESH ON sys.dba_scheduler_job_run_details TO ewopd
/
GRANT QUERY REWRITE ON sys.dba_scheduler_job_run_details TO ewopd
/
GRANT REFERENCES ON sys.dba_scheduler_job_run_details TO ewopd
/
GRANT SELECT ON sys.dba_scheduler_job_run_details TO ewopd
/
GRANT UPDATE ON sys.dba_scheduler_job_run_details TO ewopd
/
GRANT DEBUG ON sys.dba_scheduler_running_jobs TO ewopd
/
GRANT DELETE ON sys.dba_scheduler_running_jobs TO ewopd
/
GRANT FLASHBACK ON sys.dba_scheduler_running_jobs TO ewopd
/
GRANT INSERT ON sys.dba_scheduler_running_jobs TO ewopd
/
GRANT MERGE VIEW ON sys.dba_scheduler_running_jobs TO ewopd
/
GRANT ON COMMIT REFRESH ON sys.dba_scheduler_running_jobs TO ewopd
/
GRANT QUERY REWRITE ON sys.dba_scheduler_running_jobs TO ewopd
/
GRANT REFERENCES ON sys.dba_scheduler_running_jobs TO ewopd
/
GRANT SELECT ON sys.dba_scheduler_running_jobs TO ewopd
/
GRANT UPDATE ON sys.dba_scheduler_running_jobs TO ewopd
/
GRANT DEBUG ON sys.dba_scheduler_schedules TO ewopd
/
GRANT DELETE ON sys.dba_scheduler_schedules TO ewopd
/
GRANT FLASHBACK ON sys.dba_scheduler_schedules TO ewopd
/
GRANT INSERT ON sys.dba_scheduler_schedules TO ewopd
/
GRANT MERGE VIEW ON sys.dba_scheduler_schedules TO ewopd
/
GRANT ON COMMIT REFRESH ON sys.dba_scheduler_schedules TO ewopd
/
GRANT QUERY REWRITE ON sys.dba_scheduler_schedules TO ewopd
/
GRANT REFERENCES ON sys.dba_scheduler_schedules TO ewopd
/
GRANT SELECT ON sys.dba_scheduler_schedules TO ewopd
/
GRANT UPDATE ON sys.dba_scheduler_schedules TO ewopd
/
GRANT SELECT ON sys.dba_sys_privs TO ewopd
/
GRANT DEBUG ON sys.dba_tables TO ewopd
/
GRANT DELETE ON sys.dba_tables TO ewopd
/
GRANT FLASHBACK ON sys.dba_tables TO ewopd
/
GRANT INSERT ON sys.dba_tables TO ewopd
/
GRANT MERGE VIEW ON sys.dba_tables TO ewopd
/
GRANT ON COMMIT REFRESH ON sys.dba_tables TO ewopd
/
GRANT QUERY REWRITE ON sys.dba_tables TO ewopd
/
GRANT REFERENCES ON sys.dba_tables TO ewopd
/
GRANT SELECT ON sys.dba_tables TO ewopd
/
GRANT UPDATE ON sys.dba_tables TO ewopd
/
GRANT DEBUG ON sys.dba_tab_columns TO ewopd
/
GRANT DELETE ON sys.dba_tab_columns TO ewopd
/
GRANT FLASHBACK ON sys.dba_tab_columns TO ewopd
/
GRANT INSERT ON sys.dba_tab_columns TO ewopd
/
GRANT MERGE VIEW ON sys.dba_tab_columns TO ewopd
/
GRANT ON COMMIT REFRESH ON sys.dba_tab_columns TO ewopd
/
GRANT QUERY REWRITE ON sys.dba_tab_columns TO ewopd
/
GRANT REFERENCES ON sys.dba_tab_columns TO ewopd
/
GRANT SELECT ON sys.dba_tab_columns TO ewopd
/
GRANT UPDATE ON sys.dba_tab_columns TO ewopd
/
GRANT SELECT ON sys.dba_tab_privs TO ewopd
/
GRANT DEBUG ON sys.dbms_alert TO ewopd
/
GRANT DEBUG ON sys.dbms_alert TO ewopd
/
GRANT EXECUTE ON sys.dbms_alert TO ewopd
/
GRANT EXECUTE ON sys.dbms_alert TO ewopd
/
GRANT EXECUTE ON sys.dbms_aq TO ewopd
/
GRANT EXECUTE ON sys.dbms_aq TO ewopd
/
GRANT EXECUTE ON sys.dbms_ijob TO ewopd
/
GRANT EXECUTE ON sys.dbms_ijob TO ewopd
/
GRANT EXECUTE ON sys.dbms_job TO ewopd
/
GRANT EXECUTE ON sys.dbms_job TO ewopd
/
GRANT EXECUTE ON sys.dbms_lock TO ewopd
/
GRANT EXECUTE ON sys.dbms_lock TO ewopd
/
GRANT EXECUTE ON sys.dbms_pipe TO ewopd
/
GRANT EXECUTE ON sys.dbms_pipe TO ewopd
/
GRANT EXECUTE ON sys.utl_recomp TO ewopd
/
GRANT EXECUTE ON sys.utl_recomp TO ewopd
/
GRANT DEBUG ON sys.utl_xml TO ewopd
/
GRANT DEBUG ON sys.utl_xml TO ewopd
/
GRANT EXECUTE ON sys.utl_xml TO ewopd
/
GRANT EXECUTE ON sys.utl_xml TO ewopd
/
GRANT SELECT ON sys.v_$database TO ewopd
/
GRANT SELECT ON sys.v_$mystat TO ewopd
/
GRANT DEBUG ON sys.v_$parameter TO ewopd
/
GRANT DELETE ON sys.v_$parameter TO ewopd
/
GRANT FLASHBACK ON sys.v_$parameter TO ewopd
/
GRANT INSERT ON sys.v_$parameter TO ewopd
/
GRANT MERGE VIEW ON sys.v_$parameter TO ewopd
/
GRANT ON COMMIT REFRESH ON sys.v_$parameter TO ewopd
/
GRANT QUERY REWRITE ON sys.v_$parameter TO ewopd
/
GRANT REFERENCES ON sys.v_$parameter TO ewopd
/
GRANT SELECT ON sys.v_$parameter TO ewopd
/
GRANT UPDATE ON sys.v_$parameter TO ewopd
/
GRANT SELECT ON sys.v_$session TO ewopd
/
GRANT SELECT ON sys.v_$sesstat TO ewopd
/
GRANT SELECT ON sys.v_$statname TO ewopd
/
GRANT SELECT ON system.def$_aqcall TO ewopd
WITH GRANT OPTION
/
GRANT SELECT ON system.def$_aqcall TO ewopd
WITH GRANT OPTION
/
GRANT SELECT ON system.def$_calldest TO ewopd
WITH GRANT OPTION
/
GRANT SELECT ON system.def$_destination TO ewopd
WITH GRANT OPTION
/
GRANT SELECT ON system.def$_error TO ewopd
WITH GRANT OPTION
/
GRANT SELECT ON system.def$_lob TO ewopd
WITH GRANT OPTION
/
GRANT SELECT ON system.mview_evaluations TO ewopd
WITH GRANT OPTION
/
GRANT SELECT ON system.mview_exceptions TO ewopd
WITH GRANT OPTION
/
GRANT SELECT ON system.mview_filter TO ewopd
WITH GRANT OPTION
/
GRANT SELECT ON system.mview_filterinstance TO ewopd
WITH GRANT OPTION
/
GRANT SELECT ON system.mview_log TO ewopd
WITH GRANT OPTION
/
GRANT SELECT ON system.mview_recommendations TO ewopd
WITH GRANT OPTION
/
GRANT SELECT ON system.mview_workload TO ewopd
WITH GRANT OPTION
/
GRANT SELECT ON system.repcat$_repprop TO ewopd
WITH GRANT OPTION
/
GRANT SELECT ON system.repcat$_repschema TO ewopd
WITH GRANT OPTION
/


-- End of DDL Script for User EWOPD

Here is spool from running tests as EWOPD:

**** SCRIPT STARTED Session: [email protected](3) 10.03.2020 13:53:51 ****
begin
ut.run('FELLES');
end;
==>
PL/SQL block executed
addresses
  Address import testing
    Import Address List [.094 sec]
    Import Address List with BR [.078 sec]
    Import Address List with summary [.063 sec]
    Import Address List with UTF8 [.078 sec]
 
framework
  Logg Framework testing
    Debug logging [.015 sec]
    Error logging [0 sec]
    Fatal logging [0 sec]
    Info logging [.016 sec]
    Warn logging [0 sec]
    CLOB logging [.11 sec]
 
Finished in .485 seconds
10 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)
 
--------------------------------------------------------------------------------
**** SCRIPT ENDED 10.03.2020 13:53:52 ****
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Here is spool from running tests as UTP3:

**** SCRIPT STARTED Session: [email protected](6) 12.03.2020 09:14:49 ****
begin
ut.run('FELLES');
end;
==>
PL/SQL block executed
Finished in 0 seconds
0 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)
 
--------------------------------------------------------------------------------
**** SCRIPT ENDED 12.03.2020 09:14:52 ****
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

After this, there is no content in utp3.ut_annotation.cache
Running the tests again from EWOPD gives no tests:

**** SCRIPT STARTED Session: [email protected](3) 12.03.2020 09:35:07 ****
begin
ut.run('FELLES');
end;
==>
PL/SQL block executed
Finished in 0 seconds
0 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)
 
--------------------------------------------------------------------------------
**** SCRIPT ENDED 12.03.2020 09:35:07 ****
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

@jgebal
Copy link
Member

jgebal commented Mar 12, 2020

Can you confirm version of utPLSQL youre on?
select ut.version() from dual;

@hkorsvoll
Copy link
Author

**** SCRIPT STARTED Session: [email protected](3) 12.03.2020 11:48:38 ****
select ut.version() from dual
==>
UT.VERSION()                                                                                         
---------------------------------------------------------------------------------------------------- 
v3.1.9.3270                                                                                          
-------- End of Data --------
1 row(s) fetched
--------------------------------------------------------------------------------
**** SCRIPT ENDED 12.03.2020 11:48:38 ****
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

@jgebal
Copy link
Member

jgebal commented Mar 12, 2020

Please update to 3.1.10
It's fixed there.

@jgebal
Copy link
Member

jgebal commented Mar 12, 2020

@hkorsvoll
Sorry for dry reply previously - I was replying from my mobile.
In v3.1.10 I did quite a bit of work to make cache more reliable and self-managed.
Those changes also addressed some uncovered bugs.
It seems that the issue you're reporting is no longer reproducible on v3.1.10.

To be sure, I'll give a try to your test scenario on both 3.1.10 and 3.1.9 and will get back to you with results.

If you could update to v3.1.10 and let me know if that solves your issues - that would be great too.

@jgebal
Copy link
Member

jgebal commented Mar 12, 2020

confirmed.
Issue occurs on 3.1.9
It does not occur anymore on 3.1.10

Even better.
If you simply uninstall 3.1.9 and install 3.1.10, all should start to work well.
Cache will get auto-populated on first run and so no manual refresh_cache is needed after upgrade/install of 3.1.10

@jgebal jgebal modified the milestones: 3.1.11, 3.1.10 Mar 12, 2020
@hkorsvoll
Copy link
Author

No problem. I'm sorry I didn't check the version before. I specifically asked our DBA to install the latest version, and was quite confident we did have the latest one.
I asked our DBA to install it because I wanted to have a separate tablespace for the tool. I just thought that would be a good idea if utplsql store the test run history and we end up storing a lot of data in the schema. I don't know if there is any point doing this. Maybe you have some recommendations.
Anyway, I'll install the latest version as soon as I can.

@jgebal
Copy link
Member

jgebal commented Mar 12, 2020

utPLSQL v3 is DB-agnostic in a way that it doesn't store test results or test config in DB.
We have cache but it is there only for performance.
utPLSQL delegates test tracking to external, dedicated tools like Jenkins, Teamcity, Sonar etc.
utPLSQL config us fully embedded in test package spec and/or runtime parameters.

Thus is huge difference as opposed to previous incarnation (v2.x)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants