@ -19,13 +19,19 @@ import logging
import mock
import mock
from synapse . api . errors import SynapseError
from synapse . api . errors import SynapseError
from synapse . util import logcontext
from synapse . util import logcontext
from twisted . internet import defer
from twisted . internet import defer , reactor
from synapse . util . caches import descriptors
from synapse . util . caches import descriptors
from tests import unittest
from tests import unittest
logger = logging . getLogger ( __name__ )
logger = logging . getLogger ( __name__ )
def run_on_reactor ( ) :
d = defer . Deferred ( )
reactor . callLater ( 0 , d . callback , 0 )
return logcontext . make_deferred_yieldable ( d )
class CacheTestCase ( unittest . TestCase ) :
class CacheTestCase ( unittest . TestCase ) :
def test_invalidate_all ( self ) :
def test_invalidate_all ( self ) :
cache = descriptors . Cache ( " testcache " )
cache = descriptors . Cache ( " testcache " )
@ -194,6 +200,8 @@ class DescriptorTestCase(unittest.TestCase):
def fn ( self , arg1 ) :
def fn ( self , arg1 ) :
@defer . inlineCallbacks
@defer . inlineCallbacks
def inner_fn ( ) :
def inner_fn ( ) :
# we want this to behave like an asynchronous function
yield run_on_reactor ( )
raise SynapseError ( 400 , " blah " )
raise SynapseError ( 400 , " blah " )
return inner_fn ( )
return inner_fn ( )
@ -203,7 +211,12 @@ class DescriptorTestCase(unittest.TestCase):
with logcontext . LoggingContext ( ) as c1 :
with logcontext . LoggingContext ( ) as c1 :
c1 . name = " c1 "
c1 . name = " c1 "
try :
try :
yield obj . fn ( 1 )
d = obj . fn ( 1 )
self . assertEqual (
logcontext . LoggingContext . current_context ( ) ,
logcontext . LoggingContext . sentinel ,
)
yield d
self . fail ( " No exception thrown " )
self . fail ( " No exception thrown " )
except SynapseError :
except SynapseError :
pass
pass