Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

comment on

( [id://3333]=superdoc: print w/replies, xml ) Need Help??
Wrap whatever thing you're doing that times out in a alarm and eval block.

You can do one of 2 things (or both):

a. BAIL_OUT, or

b. check $@ outside of the eval with an ok.

In some case, you may actually want it to time out.

However, that you're timing tells me that what is timing out should probably mocked. It also tells me that you may want to have a more robust wrapper around whatever it is that is timing out - because it may time out when run for real. Throwing Exception::Class is always good - and you can even test that you handle things like timeouts properly using Test::Exception.

A quick and easy way to mock whatever it is that is timing out is to use a typeglob:

# mock returned data *Package::method = sub { return 'some expected data' };
Similarly, you can force a timeout:
# mock a timeout, but wrap this in an eval/alarm my $a_long_time = 900; # seconds *Package::method = sub { sleep $a_long_time; return; };
Or just straight up die throw an exception (i.e., from Exception::Class):
# mock a die from timeout, but wrap this in an eval/alarm *Package::method = sub { die "Timed out!\n"; };
# mock a timeout exception, but wrap this in an eval/alarm *Package::method = sub { throw My::Exception::Timeout; };

In reply to Re: Timeout on prove by perlfan
in thread Timeout on prove by chrestomanci

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":



  • Are you posting in the right place? Check out Where do I post X? to know for sure.
  • Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
    <code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>
  • Snippets of code should be wrapped in <code> tags not <pre> tags. In fact, <pre> tags should generally be avoided. If they must be used, extreme care should be taken to ensure that their contents do not have long lines (<70 chars), in order to prevent horizontal scrolling (and possible janitor intervention).
  • Want more info? How to link or How to display code and escape characters are good places to start.
Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others chanting in the Monastery: (3)
As of 2024-04-25 05:21 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found