@@ -697,19 +697,33 @@ create or replace package body test_ut_run is
697697 execute immediate q'[drop package empty_suite]';
698698 end;
699699
700- procedure create_test_suite is
700+ procedure create_db_link is
701701 l_service_name varchar2(100);
702702 pragma autonomous_transaction;
703703 begin
704704 select global_name into l_service_name from global_name;
705705 execute immediate
706- 'create public database link db_loopback connect to ut3_tester identified by ut3
707- using ''(DESCRIPTION=
708- (ADDRESS=(PROTOCOL=TCP)
709- (HOST='||sys_context('userenv','SERVER_HOST')||')
706+ 'create public database link db_loopback connect to ut3_tester identified by ut3
707+ using ''(DESCRIPTION=
708+ (ADDRESS=(PROTOCOL=TCP)
709+ (HOST='||sys_context('userenv','SERVER_HOST')||')
710710 (PORT=1521)
711711 )
712712 (CONNECT_DATA=(SERVICE_NAME='||l_service_name||')))''';
713+ end;
714+
715+ procedure drop_db_link is
716+ begin
717+ execute immediate 'drop public database link db_loopback';
718+ exception
719+ when others then
720+ null;
721+ end;
722+
723+ procedure create_test_suite is
724+ pragma autonomous_transaction;
725+ begin
726+ create_db_link;
713727 execute immediate q'[
714728 create or replace package stateful_package as
715729 function get_state return varchar2;
@@ -794,9 +808,9 @@ Failures:%
794808 procedure drop_test_suite is
795809 pragma autonomous_transaction;
796810 begin
811+ drop_db_link;
797812 execute immediate 'drop package stateful_package';
798813 execute immediate 'drop package test_stateful';
799- begin execute immediate 'drop public database link db_loopback'; exception when others then null; end;
800814 end;
801815
802816 procedure run_in_invalid_state is
@@ -919,28 +933,84 @@ Failures:%
919933
920934 procedure create_bad_annot is
921935 pragma autonomous_transaction;
922- begin
923- execute immediate q'[
924- create or replace package bad_annotations as
925- --%suite
936+ begin
937+ execute immediate q'[
938+ create or replace package bad_annotations as
939+ --%suite
926940
927- --%context
941+ --%context
928942
929- --%test(invalidspecs)
930- procedure test1;
943+ --%test(invalidspecs)
944+ procedure test1;
931945
932- end;]';
946+ end;]';
933947
934- execute immediate q'[
935- create or replace package body bad_annotations as
936- procedure test1 is begin ut.expect(1).to_equal(1); end;
937- end;]';
948+ execute immediate q'[
949+ create or replace package body bad_annotations as
950+ procedure test1 is begin ut.expect(1).to_equal(1); end;
951+ end;]';
952+
953+ end;
938954
939- end;
940955 procedure drop_bad_annot is
941956 pragma autonomous_transaction;
942957 begin
943958 execute immediate 'drop package bad_annotations';
944959 end;
960+
961+ procedure savepoints_on_db_links is
962+ l_results clob;
963+ begin
964+ ut3.ut.run('test_distributed_savepoint');
965+ l_results := core.get_dbms_output_as_clob();
966+ ut.expect(l_results).to_be_like('%1 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)%');
967+ end;
968+
969+ procedure create_suite_with_link is
970+ pragma autonomous_transaction;
971+ begin
972+ create_db_link;
973+ execute immediate 'create table tst(id number(18,0))';
974+ execute immediate q'[
975+ create or replace package test_distributed_savepoint is
976+ --%suite
977+ --%suitepath(alltests)
978+
979+ --%beforeall
980+ procedure setup;
981+
982+ --%test
983+ procedure test;
984+ end;]';
985+
986+ execute immediate q'[
987+ create or replace package body test_distributed_savepoint is
988+
989+ g_expected constant integer := 1;
990+
991+ procedure setup is
992+ begin
993+ insert into tst@db_loopback values(g_expected);
994+ end;
995+
996+ procedure test is
997+ l_actual integer := 0;
998+ begin
999+ select id into l_actual from tst@db_loopback;
1000+
1001+ ut.expect(l_actual).to_equal(g_expected);
1002+ end;
1003+
1004+ end;]';
1005+ end;
1006+
1007+ procedure drop_suite_with_link is
1008+ pragma autonomous_transaction;
1009+ begin
1010+ drop_db_link;
1011+ execute immediate 'drop table tst';
1012+ execute immediate 'drop package test_distributed_savepoint';
1013+ end;
1014+
9451015end;
9461016/
0 commit comments