Trent Nelson wrote on Tue, Jan 24, 2012 at 10:17:24 -0500:
> On Tue, Jan 24, 2012 at 03:44:04AM -0800, Daniel Shahaf wrote:
> > Trent Nelson wrote on Mon, Jan 23, 2012 at 15:07:20 -0500:
> > > Index: subversion/bindings/swig/python/tests/mergeinfo.py
> > > ===================================================================
> > > --- subversion/bindings/swig/python/tests/mergeinfo.py    (revision 
> > > 1234786)
> > > +++ subversion/bindings/swig/python/tests/mergeinfo.py    (working copy)
> > > +  def test_mergeinfo_leakage__lingering_range_t_objects_after_del(self):
> > > +    """Ensure that there are no svn_merge_range_t objects being tracked 
> > > by
> > > +       the garbage collector after we explicitly `del` the results 
> > > returned
> > > +       by svn_mergeinfo_parse().  We disable gc before the 
> > > svn_mergeinfo_parse
> > > +       call and force an explicit collection cycle straight after the 
> > > `del`;
> > > +       if our reference counts are correct, the allocated 
> > > svn_merge_range_t
> > > +       objects will be garbage collected and thus, not appear in the 
> > > list of
> > > +       objects returned by gc.get_objects()."""
> > > +    gc.disable()
> > > +    mergeinfo = core.svn_mergeinfo_parse(self.TEXT_MERGEINFO1)
> > > +    del mergeinfo
> > > +    gc.collect()
> >
> > It seems you need a gc.enable() call as well, to prevent the test from
> > having effects on global state.
> 
>     You know what, you can get rid of that gc.disable() call.  I put it
>     in by habit; when I was trying to find the leak, I had breakpoints
>     set within the CPython garbage collection routines -- if I didn't
>     disable automatic collection, they'd trigger at extremely annoying
>     times ;-)
> 
>     The gc.collect() call is sufficient.
> 

Okay.  Given that, and that it seems a good idea to add a regression
test for a bug that can cost many MB of memory if it repeats, I've
committed the testsuite part too: r1235296, and will nominate for
backport.

> > Do the swig-py tests support parallelized running?  The testsuite for
> > 'svn' does, and if the testsuite for swig-py does too then the 'gc' call
> > have effects on other threads.
> 
>     I have... no idea :-)  Given that check-swig-py basically just calls
>     `python subversion/bindings/swig/python/tests/run_all.py', and that
>     file just uses the standard Python unit test facilities... I'd say
>     no, they're not currently designed to support parallel running.
> 
>     I'm sure we could totally shave that 40s test run time down a few
>     notches if they, though ;-)
> 

I think the ROI will be better on optimizing the test suite of 'svn'
itself (build/run_tests.py and subversion/tests/cmdline/) :-)

>         Trent.
> 

Thanks,

Daniel

Reply via email to