diff options
author | Richard van der Hoff <1389908+richvdh@users.noreply.github.com> | 2018-11-27 03:00:33 +0100 |
---|---|---|
committer | Amber Brown <hawkowl@atleastfornow.net> | 2018-11-27 13:00:33 +1100 |
commit | de8772a655e49fc57138d91e6bb184dadeac838a (patch) | |
tree | 19428021c7907a6a6a1d5ee6eeebd4985d493aa4 /tests | |
parent | Merge pull request #4214 from matrix-org/rav/ignore_pycache (diff) | |
download | synapse-de8772a655e49fc57138d91e6bb184dadeac838a.tar.xz |
Do a GC after each test to fix logcontext leaks (#4227)
* Some words about garbage collections and logcontexts * Do a GC after each test to fix logcontext leaks This feels like an awful hack, but... * changelog
Diffstat (limited to 'tests')
-rw-r--r-- | tests/unittest.py | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/tests/unittest.py b/tests/unittest.py index a9ce57da9a..2049187fd9 100644 --- a/tests/unittest.py +++ b/tests/unittest.py @@ -13,7 +13,7 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. - +import gc import hashlib import hmac import logging @@ -31,7 +31,7 @@ from synapse.http.server import JsonResource from synapse.http.site import SynapseRequest from synapse.server import HomeServer from synapse.types import UserID, create_requester -from synapse.util.logcontext import LoggingContextFilter +from synapse.util.logcontext import LoggingContext, LoggingContextFilter from tests.server import get_clock, make_request, render, setup_test_homeserver from tests.utils import default_config @@ -115,6 +115,17 @@ class TestCase(unittest.TestCase): logging.getLogger().setLevel(level) return orig() + @around(self) + def tearDown(orig): + ret = orig() + + # force a GC to workaround problems with deferreds leaking logcontexts when + # they are GCed (see the logcontext docs) + gc.collect() + LoggingContext.set_current_context(LoggingContext.sentinel) + + return ret + def assertObjectHasAttributes(self, attrs, obj): """Asserts that the given object has each of the attributes given, and that the value of each matches according to assertEquals.""" |