• 
      

    Speed up unit tests for projects that use extensions.

    Review Request #5905 — Created May 30, 2014 and submitted

    Information

    Djblets
    release-0.8.x
    aef6ccf...

    Reviewers

    Projects supporting extensions that used the test HTTP client would end
    up reloading all extensions, creating RegisteredExtension entries, every
    time a request was performed. This added up quite a bit over time.

    This change does two things to address this problem.

    1. The RegisteredExtension creation code has been improved. Instead of
    using get_or_create, we attempt a create and fall back on a get. This
    chops the number of queries in half, since we no longer are assuming
    there's an entry in the database already (which is a bad assumption,
    since earlier in the function, we checked and didn't see any).

    While here, I also fixed a bug where the wrong value was being
    used for the stored extension name, due to a scoping issue.

    2. ExtensionsMiddleware no longer performs expiration checks if
    settings.RUNNING_TEST is True. It's up to the projects to set this
    for the test run, though.

    Ran the Review Board test suite. It went down from ~147.78 seconds to
    ~125.45 seconds -- a ~22 second savings. That's with 9 extensions
    installed (not enabled) on the system.

    reviewbot
    1. This is a review from Review Bot.
        Tool: PEP8 Style Checker
        Processed Files:
          djblets/extensions/manager.py
          djblets/extensions/middleware.py
        Ignored Files:
      
      
    2. 
        
    reviewbot
    1. This is a review from Review Bot.
        Tool: Pyflakes
        Processed Files:
          djblets/extensions/manager.py
          djblets/extensions/middleware.py
        Ignored Files:
      
      
    2. 
        
    david
    1. Ship It!

    2. 
        
    chipx86
    Review request changed
    Status:
    Completed
    Change Summary:
    Pushed to release-0.8.x (b059f6f)