Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_breaker(self):
class MyBreaker(CircuitBreaker):
def run(self):
assert not getattr(self, 'fail', False)
breaker = MyBreaker(4, 600)
self.assertTrue(breaker.is_ready())
breaker()
self.assertFalse(breaker.failures)
breaker.open_circuit()
self.assertFalse(breaker.is_ready())
breaker.error_expiration = datetime.datetime.now()
breaker()
self.assertTrue(breaker.is_ready())
breaker.fail = True
for i in range(3):
try:
breaker()
for i in range(3):
try:
breaker()
except AssertionError:
self.assertTrue(breaker.is_ready())
else:
self.fail('Should have raised an exception')
try:
breaker()
except AssertionError:
self.assertFalse(breaker.is_ready())
else:
self.fail('Should have raised an exception')
try:
breaker()
except CircuitOpen:
pass
else:
self.fail('Wrong exception?')
breaker.error_expiration = datetime.datetime.now()
try:
breaker()
except:
pass
self.assertFalse(breaker.is_ready()) #we failed so we're not ready yet
breaker.fail = False
breaker.error_expiration = datetime.datetime.now()
breaker()
self.assertTrue(breaker.is_ready())
@circuit(failure_threshold=5, expected_exception=ConnectionError)
def __place_order_exchange(self, request):
print("[{}] {} placing order to stock exchange".format(
request, self.name))
response = requests.get('https://jsonplaceholder.typicode.com/posts/1')
return json.dumps({'code': response.status_code, 'body': response.text})
@circuit(failure_threshold=5, expected_exception=ConnectionError)
def __place_order_exchange(self, uuid):
self.logger.info("placing order in the exchange", extra={
"uuid": uuid})
response = requests.get('https://jsonplaceholder.typicode.com/posts/1')
return json.dumps({'code': response.status_code, 'body': response.text})
@circuit(failure_threshold=5, expected_exception=ConnectionError)
def __place_order_exchange(self, request):
print("[{}] {} placing order to stock exchange".format(
request, self.name))
response = requests.get('https://jsonplaceholder.typicode.com/posts/1')
return json.dumps({'code': response.status_code, 'body': response.text})