GeezerVison is showing github.com — Running tests from UT3 user in other schema corrupts annotation cache · Issue #1051 · utPLSQL/utPLSQL
Running tests from UT3 user in other schema corrupts annotation cache #1051DescriptionHi
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. Activityjgebal commented on 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 commented on Mar 10, 2020 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 commented on 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 commented on Mar 10, 2020 Great, if you add this information in the Readme, you can close this issue :) jgebal commented on Mar 10, 2020 I will move that issue to utPLSQL main project as it is a framework issue, not utPLSQL-cli only. jgebal commented on Mar 10, 2020 I think it would be best to address the root cause and allow for test execution from UT3 user. changed the title [-]Switch for forcing rebuild of annotation cache[/-] [+]Running tests from UT3 user in other schema corrupts annotation cache[/+] on Mar 10, 2020jgebal commented on 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. hkorsvoll commented on Mar 11, 2020 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. Reacted by Samuel Nitsche and jrfrank08 Reacted by Samuel Nitsche hkorsvoll commented on Mar 11, 2020 Steps to reproduce.
- We installed utPLSQL in an Oracle 12.1.0.2 DB, headleass (public synonyms), with DDL trigger.
- I created one test package in Schema1 using a user AS SYSDBA
- Test sucessfully running from this session
- Running utplsql-cli run UTP3/****@db -p Schema1
- No test running.
jgebal commented on 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.
- install utPLSQL 3.1.10 using all defaults with script
install_headless_with_trigger.sql
- 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;
- 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;
- 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)
- 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)
- 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
- 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)
- 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 |
- 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 commented on 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 commented on Mar 12, 2020 Can you confirm version of utPLSQL youre on?
select ut.version() from dual; hkorsvoll commented on Mar 12, 2020 **** 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 commented on Mar 12, 2020 Please update to 3.1.10
It's fixed there. jgebal commented on 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 commented on 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 hkorsvoll commented on Mar 12, 2020 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 commented on 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) added a commit that references this issue on Mar 12, 2020This issue will close once commit 63f17a2 is merged into the 'develop' branch.63f17a2
MetadataMetadataDevelopmentNo branches or pull requestsIssue actions
|