Skip to content

tbarker/TimeWarp

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 

TimeWarp

A simple package for winding back (and forward) the Oracle system clock for testing. Very useful when combined with plunit.

Usage

SQL> EXEC timewarp.jump( '12-APR-1971' );

PL/SQL procedure successfully completed.


SQL> select sysdate from dual;

SYSDATE
---------
12-APR-71

SQL> EXEC timewarp.fwd( -3 );

PL/SQL procedure successfully completed.

SQL> select sysdate from dual;

SYSDATE
---------
09-APR-71

SQL> EXEC timewarp.reset;

PL/SQL procedure successfully completed.

SQL> select sysdate from dual;

SYSDATE
---------
23-JAN-11

SQL> EXEC timewarp.fastfwd( sysdate - 3, sysdate + 1, 'BEGIN dbms_output.put_line( sysdate ); END;', 0.7 );
[FAST FWD] Starting at 20-JAN-11
20-JAN-11
21-JAN-11
21-JAN-11
22-JAN-11
23-JAN-11
23-JAN-11
[FAST FWD] Ending with 24-JAN-11
[FAST FWD] Reset to 23-JAN-11

PL/SQL procedure successfully completed.

SQL> 

Installation

Just run the script.

$ sqlplus / as sysdba @timewarp

Should be installed as SYS. "Normal" test accounts can then be granted execute permissions. The script also installs two system triggers to ensure the system clock is reset to the current time on logoff or on startup.

Warning

Obviously a horrible mess will happen if test user is not the sole active database user. Please do not let this code near a production environment!

About

A simple utility package for testing time dependent PL/SQL.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published