stas        01/10/18 23:52:57

  Modified:    ModPerl-Registry/t closure.t
  Log:
  - port the test to work with same interpteter setup; now the test passes
  with more than 1 interpreter as well
  
  Revision  Changes    Path
  1.4       +37 -30    modperl-2.0/ModPerl-Registry/t/closure.t
  
  Index: closure.t
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/ModPerl-Registry/t/closure.t,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- closure.t 2001/10/17 05:34:38     1.3
  +++ closure.t 2001/10/19 06:52:57     1.4
  @@ -2,12 +2,16 @@
   use warnings FATAL => 'all';
   
   use Apache::Test;
  -use File::Spec::Functions;
   use Apache::TestUtil;
  +use Apache::TestRequest;
  +use File::Spec::Functions;
   
   # this test tests how various registry packages cache and flush the
   # scripts their run, and whether they check modification on the disk
  -# or not
  +# or not. We don't test the closure side effect, but we use it as a
  +# test aid. The tests makes sure that they run through the same
  +# interpreter all the time (in case that the server is running more
  +# than one interpreter)
   
   my @modules = qw(registry registry_ng registry_bb perlrun);
   
  @@ -27,15 +31,16 @@
       # always flush
       # no cache
   
  -    my $url = "/perlrun/$file";
  +    my $url = "/same_interp/perlrun/$file";
  +    my $same_interp = Apache::TestRequest::same_interp_tie($url);
   
       # should be no closure effect, always returns 1
  -    my $first  = $cfg->http_raw_get($url);
  -    my $second = $cfg->http_raw_get($url);
  +    my $first  = req($same_interp, $url);
  +    my $second = req($same_interp, $url);
       ok t_cmp(
                0,
  -             $second - $first,
  -             "never a closure problem",
  +             $first && $second && ($second - $first),
  +             "never the closure problem",
               );
   
       # modify the file
  @@ -44,78 +49,73 @@
       # it doesn't matter, since the script is not cached anyway
       ok t_cmp(
                1,
  -             $cfg->http_raw_get($url),
  -             "never a closure problem",
  +             req($same_interp, $url),
  +             "never the closure problem",
               );
   
   }
   
  -
  -
   {
       # ModPerl::Registry
       # no flush
       # cache, but reload on modification
  -    my $url = "/registry/$file";
  +    my $url = "/same_interp/registry/$file";
  +    my $same_interp = Apache::TestRequest::same_interp_tie($url);
   
       # we don't know what other test has called this uri before, so we
       # check the difference between two subsequent calls. In this case
       # the difference should be 1.
  -    my $first  = $cfg->http_raw_get($url);
  -    my $second = $cfg->http_raw_get($url);
  +    my $first  = req($same_interp, $url);
  +    my $second = req($same_interp, $url);
       ok t_cmp(
                1,
                $second - $first,
  -             "closure problem should exist",
  +             "the closure problem should exist",
               );
   
       # modify the file
       sleep_and_touch_file($path);
   
  -    # should no notice closure effect on first request
  +    # should no notice closure effect on the first request
       ok t_cmp(
                1,
  -             $cfg->http_raw_get($url),
  +             req($same_interp, $url),
                "no closure on the first request",
               );
   
   }
   
  -
  -
  -
   {
       # ModPerl::RegistryBB
       # no flush
       # cache once, don't check for mods
  -    my $url = "/registry_bb/$file";
  +    my $url = "/same_interp/registry_bb/$file";
  +    my $same_interp = Apache::TestRequest::same_interp_tie($url);
   
       # we don't know what other test has called this uri before, so we
       # check the difference between two subsequent calls. In this case
  -    # the difference should be 0.
  -    my $first  = $cfg->http_raw_get($url);
  -    my $second = $cfg->http_raw_get($url);
  +    # the difference should be 1.
  +    my $first  = req($same_interp, $url);
  +    my $second = req($same_interp, $url);
       ok t_cmp(
                1,
                $second - $first,
  -             "closure problem should exist",
  +             "the closure problem should exist",
               );
   
       # modify the file
       sleep_and_touch_file($path);
   
  -    # 
  -    my $third = $cfg->http_raw_get($url);
  +    # modification shouldn't be noticed
  +    my $third = req($same_interp, $url);
       ok t_cmp(
                1,
                $third - $second,
  -             "no reload on mod, closure persist",
  +             "no reload on mod, the closure problem persists",
               );
   
   }
   
  -
  -
   sub sleep_and_touch_file {
       my $file = shift;
       # need to wait at least 1 whole sec, so -M will notice the
  @@ -124,4 +124,11 @@
       select undef, undef, undef, 1.00; # sure 1 sec
       my $now = time;
       utime $now, $now, $file;
  +}
  +
  +sub req {
  +    my($same_interp, $url) = @_;
  +    my $res = Apache::TestRequest::same_interp_do($same_interp,
  +                                                  \&GET, $url);
  +    return $res ? $res->content : undef;
   }
  
  
  


Reply via email to