Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Time::Mock(3)	      User Contributed Perl Documentation	 Time::Mock(3)

NAME
       Time::Mock - shift and scale time

SYNOPSIS
       Speed up	your sleep(), alarm(), and time() calls.

	 use Time::Mock	throttle => 100;
	 use Your::Code;

ABOUT
       Test::MockTime is nice, but doesn't allow you to	accelerate the
       timestep	and doesn't deal with Time::HiRes or give you any way to
       change the time across forks.

       TODO: replace Time::HiRes functions with	wrappers

       TODO: finish the	interfaces to real time/sleep/alarm

Replaces
       These core functions are	replaced.

       Eventually, much	of the same bits from Time::HiRes will be
       correspondingly overwritten.

       time
       localtime
       gmtime
       sleep
	   Sleeps for 1/$throttle.

       alarm
	   Alarm happens in 1/$throttle.

Class Methods
       These are the knobs on your time	machine, but note that it is probably
       best to adjust them only	once: see caveats.  For	convenience, import()
       takes will call these methods with each key in its argument list.

	 perl -MTime::Mock=throttle,600,set,"2009-11-01	00:59" dst_bug.pl

   throttle
       Get or set the throttle.

	 Time::Mock->throttle(10_000);

   offset
       Get or set the offset.

	 Time::Mock->offset(120);

   set
       Set the time to a given value.  This may	be a numeric time or anything
       parseable by Date::Parse::str2time() (you need to install Date::Parse
       to enable this.)

	 Time::Mock->set("2009-11-01 00:59");

Caveats
       This package remembers the actual system	time when it was loaded	and
       makes adjustments from there.

       Future versions might change this behavior if I can think of a good
       reason and scheme for that.

   forks and threads
       The throttle value will hold across forks, but there is no support for
       propagating changes to child processes.	So, set	the knobs only before
       you fork!

       Don't ask about threads unless you're asking about me applying your
       patch thanks.

   Networking and System stuff
       We're only lying	about the clock	inside of Perl,	not magically messing
       with the	universe.

   Time	Travel is Dangerous
       I suggest that you set the knobs	at import() and	don't mess with	them
       after that unless you're	well aware of how your code is using time.

       Messing with the	throttle during	runtime	could also give	your code the
       illusion	of time	going backwards.  If your code tries to	do math	with
       the return values of time() before and after a slow-down, there could
       be trouble.

       Changing	the throttle while an alarm() is set won't change the original
       alarm time.  There would	be a similar caveat about sleep() if I hadn't
       already mentioned forks ;-)

       Finally,	don't ever let your past self see your future self.

AUTHOR
       Eric Wilhelm @ <ewilhelm	at cpan	dot org>

       http://scratchcomputing.com/

BUGS
       If you found this module	on CPAN, please	report any bugs	or feature
       requests	through	the web	interface at <http://rt.cpan.org>.  I will be
       notified, and then you'll automatically be notified of progress on your
       bug as I	make changes.

       If you pulled this development version from my /svn/, please contact me
       directly.

COPYRIGHT
       Copyright (C) 2008 Eric L. Wilhelm, All Rights Reserved.

NO WARRANTY
       Absolutely, positively NO WARRANTY, neither express or implied, is
       offered with this software.  You	use this software at your own risk.
       In case of loss,	no person or entity owes you anything whatsoever.  You
       have been warned.

LICENSE
       This program is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.

perl v5.32.1			  2021-03-01			 Time::Mock(3)

NAME | SYNOPSIS | ABOUT | Replaces | Class Methods | Caveats | AUTHOR | BUGS | COPYRIGHT | NO WARRANTY | LICENSE

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Time::Mock&sektion=3&manpath=FreeBSD+13.0-RELEASE+and+Ports>

home | help