Remove @asyncio.coroutine decorators

Signed-off-by: David Dashyan <mail@davie.li>
This commit is contained in:
David Dashyan 2020-09-15 12:25:09 +03:00
parent 5166fa6b46
commit 8630e74f77
2 changed files with 27 additions and 32 deletions

View File

@ -96,12 +96,11 @@ class Dispatcher:
del self.subscribers[uuid]
@asyncio.coroutine
def publish(self):
async def publish(self):
"""Publish new events to the subscribers."""
while True:
event = yield from self.event_source.get()
event = await self.event_source.get()
str_buffer = []
if event == POISON_PILL:
@ -115,23 +114,22 @@ class Dispatcher:
for str_item in str_buffer:
for _, websocket in self.subscribers.items():
yield from websocket.send_str(str_item)
await websocket.send_str(str_item)
@asyncio.coroutine
def websocket_handler(request):
async def websocket_handler(request):
"""Handle a new socket connection."""
logger.debug('New websocket connection.')
websocket = web.WebSocketResponse()
yield from websocket.prepare(request)
await websocket.prepare(request)
uuid = uuid4()
request.app['dispatcher'].subscribe(uuid, websocket)
while True:
# Consume input buffer
try:
msg = yield from websocket.receive()
msg = await websocket.receive()
except RuntimeError as e:
logger.debug('Websocket exception: %s', str(e))
break

View File

@ -52,8 +52,7 @@ def test_eventify_block_works_with_any_transaction():
assert event == expected
@asyncio.coroutine
def test_bridge_sync_async_queue(loop):
async def test_bridge_sync_async_queue(loop):
from bigchaindb.web.websocket_server import _multiprocessing_to_asyncio
sync_queue = queue.Queue()
@ -69,16 +68,16 @@ def test_bridge_sync_async_queue(loop):
sync_queue.put('der')
sync_queue.put('Autobahn')
result = yield from async_queue.get()
result = await async_queue.get()
assert result == 'fahren'
result = yield from async_queue.get()
result = await async_queue.get()
assert result == 'auf'
result = yield from async_queue.get()
result = await async_queue.get()
assert result == 'der'
result = yield from async_queue.get()
result = await async_queue.get()
assert result == 'Autobahn'
assert async_queue.qsize() == 0
@ -110,33 +109,31 @@ def test_start_creates_an_event_loop(queue_mock, get_event_loop_mock,
)
@asyncio.coroutine
def test_websocket_string_event(test_client, loop):
async def test_websocket_string_event(test_client, loop):
from bigchaindb.web.websocket_server import init_app, POISON_PILL, EVENTS_ENDPOINT
event_source = asyncio.Queue(loop=loop)
app = init_app(event_source, loop=loop)
client = yield from test_client(app)
ws = yield from client.ws_connect(EVENTS_ENDPOINT)
client = await test_client(app)
ws = await client.ws_connect(EVENTS_ENDPOINT)
yield from event_source.put('hack')
yield from event_source.put('the')
yield from event_source.put('planet!')
await event_source.put('hack')
await event_source.put('the')
await event_source.put('planet!')
result = yield from ws.receive()
result = await ws.receive()
assert result.data == 'hack'
result = yield from ws.receive()
result = await ws.receive()
assert result.data == 'the'
result = yield from ws.receive()
result = await ws.receive()
assert result.data == 'planet!'
yield from event_source.put(POISON_PILL)
await event_source.put(POISON_PILL)
@asyncio.coroutine
def test_websocket_block_event(b, test_client, loop):
async def test_websocket_block_event(b, test_client, loop):
from bigchaindb import events
from bigchaindb.web.websocket_server import init_app, POISON_PILL, EVENTS_ENDPOINT
from bigchaindb.models import Transaction
@ -148,22 +145,22 @@ def test_websocket_block_event(b, test_client, loop):
event_source = asyncio.Queue(loop=loop)
app = init_app(event_source, loop=loop)
client = yield from test_client(app)
ws = yield from client.ws_connect(EVENTS_ENDPOINT)
client = await test_client(app)
ws = await client.ws_connect(EVENTS_ENDPOINT)
block = {'height': 1, 'transactions': [tx]}
block_event = events.Event(events.EventTypes.BLOCK_VALID, block)
yield from event_source.put(block_event)
await event_source.put(block_event)
for tx in block['transactions']:
result = yield from ws.receive()
result = await ws.receive()
json_result = json.loads(result.data)
assert json_result['transaction_id'] == tx.id
# Since the transactions are all CREATEs, asset id == transaction id
assert json_result['asset_id'] == tx.id
assert json_result['height'] == block['height']
yield from event_source.put(POISON_PILL)
await event_source.put(POISON_PILL)
@pytest.mark.skip('Processes are not stopping properly, and the whole test suite would hang')