mirror of
https://github.com/planetmint/planetmint.git
synced 2025-07-07 05:02:29 +00:00
fixed testcases
Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com>
This commit is contained in:
parent
358a4ff027
commit
8323035af3
@ -31,6 +31,8 @@ EVENTS_ENDPOINT_BLOCKS = "/api/v1/streams/valid_blocks"
|
|||||||
|
|
||||||
|
|
||||||
async def access_queue(app):
|
async def access_queue(app):
|
||||||
|
if app["event_source"] == None:
|
||||||
|
return
|
||||||
in_queue = app["event_source"]
|
in_queue = app["event_source"]
|
||||||
tx_source = Dispatcher.get_queue_on_demand(app, "tx_source")
|
tx_source = Dispatcher.get_queue_on_demand(app, "tx_source")
|
||||||
blk_source = Dispatcher.get_queue_on_demand(app, "blk_source")
|
blk_source = Dispatcher.get_queue_on_demand(app, "blk_source")
|
||||||
|
@ -16,6 +16,7 @@ from transactions.common import crypto
|
|||||||
from planetmint.ipc import events
|
from planetmint.ipc import events
|
||||||
from planetmint.web.websocket_server import init_app, EVENTS_ENDPOINT, EVENTS_ENDPOINT_BLOCKS
|
from planetmint.web.websocket_server import init_app, EVENTS_ENDPOINT, EVENTS_ENDPOINT_BLOCKS
|
||||||
from ipld import multihash, marshal
|
from ipld import multihash, marshal
|
||||||
|
from planetmint.web.websocket_dispatcher import Dispatcher
|
||||||
|
|
||||||
|
|
||||||
class MockWebSocket:
|
class MockWebSocket:
|
||||||
@ -75,52 +76,13 @@ def test_simplified_block_works():
|
|||||||
assert blk_event == expected_event
|
assert blk_event == expected_event
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
|
||||||
async def test_bridge_sync_async_queue():
|
|
||||||
from planetmint.web.websocket_server import _multiprocessing_to_asyncio
|
|
||||||
|
|
||||||
sync_queue = queue.Queue()
|
|
||||||
async_queue = asyncio.Queue()
|
|
||||||
async_queue2 = asyncio.Queue()
|
|
||||||
|
|
||||||
bridge = threading.Thread(
|
|
||||||
target=_multiprocessing_to_asyncio,
|
|
||||||
args=(sync_queue, async_queue, async_queue2, asyncio.get_event_loop()),
|
|
||||||
daemon=True,
|
|
||||||
)
|
|
||||||
bridge.start()
|
|
||||||
|
|
||||||
sync_queue.put("fahren")
|
|
||||||
sync_queue.put("auf")
|
|
||||||
sync_queue.put("der")
|
|
||||||
sync_queue.put("Autobahn")
|
|
||||||
|
|
||||||
result = await async_queue.get()
|
|
||||||
assert result == "fahren"
|
|
||||||
|
|
||||||
result = await async_queue.get()
|
|
||||||
assert result == "auf"
|
|
||||||
|
|
||||||
result = await async_queue.get()
|
|
||||||
assert result == "der"
|
|
||||||
|
|
||||||
result = await async_queue.get()
|
|
||||||
assert result == "Autobahn"
|
|
||||||
|
|
||||||
print(f" queue ({async_queue.qsize()}): {async_queue} ")
|
|
||||||
assert async_queue.qsize() == 0
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
async def test_websocket_block_event(aiohttp_client):
|
async def test_websocket_block_event(aiohttp_client):
|
||||||
user_priv, user_pub = crypto.generate_key_pair()
|
user_priv, user_pub = crypto.generate_key_pair()
|
||||||
tx = Create.generate([user_pub], [([user_pub], 1)])
|
tx = Create.generate([user_pub], [([user_pub], 1)])
|
||||||
tx = tx.sign([user_priv])
|
tx = tx.sign([user_priv])
|
||||||
|
|
||||||
app = aiohttp.web.Application()
|
app = init_app(None)
|
||||||
blk_source = asyncio.Queue()
|
|
||||||
tx_source = asyncio.Queue()
|
|
||||||
app = await init_app(app, tx_source, blk_source)
|
|
||||||
client = await aiohttp_client(app)
|
client = await aiohttp_client(app)
|
||||||
ws = await client.ws_connect(EVENTS_ENDPOINT_BLOCKS)
|
ws = await client.ws_connect(EVENTS_ENDPOINT_BLOCKS)
|
||||||
block = {
|
block = {
|
||||||
@ -129,7 +91,8 @@ async def test_websocket_block_event(aiohttp_client):
|
|||||||
"transactions": [tx],
|
"transactions": [tx],
|
||||||
}
|
}
|
||||||
block_event = events.Event(events.EventTypes.BLOCK_VALID, block)
|
block_event = events.Event(events.EventTypes.BLOCK_VALID, block)
|
||||||
|
blk_source = Dispatcher.get_queue_on_demand(app, "blk_source")
|
||||||
|
tx_source = Dispatcher.get_queue_on_demand(app, "tx_source")
|
||||||
await blk_source.put(block_event)
|
await blk_source.put(block_event)
|
||||||
|
|
||||||
result = await ws.receive()
|
result = await ws.receive()
|
||||||
@ -140,6 +103,7 @@ async def test_websocket_block_event(aiohttp_client):
|
|||||||
assert json_result["transaction_ids"][0] == tx.id
|
assert json_result["transaction_ids"][0] == tx.id
|
||||||
|
|
||||||
await blk_source.put(events.POISON_PILL)
|
await blk_source.put(events.POISON_PILL)
|
||||||
|
await tx_source.put(events.POISON_PILL)
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
@ -148,13 +112,12 @@ async def test_websocket_transaction_event(aiohttp_client):
|
|||||||
tx = Create.generate([user_pub], [([user_pub], 1)])
|
tx = Create.generate([user_pub], [([user_pub], 1)])
|
||||||
tx = tx.sign([user_priv])
|
tx = tx.sign([user_priv])
|
||||||
|
|
||||||
app = aiohttp.web.Application()
|
app = init_app(None)
|
||||||
blk_source = asyncio.Queue()
|
|
||||||
tx_source = asyncio.Queue()
|
|
||||||
app = await init_app(app, tx_source, blk_source)
|
|
||||||
client = await aiohttp_client(app)
|
client = await aiohttp_client(app)
|
||||||
ws = await client.ws_connect(EVENTS_ENDPOINT)
|
ws = await client.ws_connect(EVENTS_ENDPOINT)
|
||||||
block = {"height": 1, "transactions": [tx]}
|
block = {"height": 1, "transactions": [tx]}
|
||||||
|
blk_source = Dispatcher.get_queue_on_demand(app, "blk_source")
|
||||||
|
tx_source = Dispatcher.get_queue_on_demand(app, "tx_source")
|
||||||
block_event = events.Event(events.EventTypes.BLOCK_VALID, block)
|
block_event = events.Event(events.EventTypes.BLOCK_VALID, block)
|
||||||
|
|
||||||
await tx_source.put(block_event)
|
await tx_source.put(block_event)
|
||||||
@ -167,6 +130,7 @@ async def test_websocket_transaction_event(aiohttp_client):
|
|||||||
assert json_result["asset_ids"] == [tx.id]
|
assert json_result["asset_ids"] == [tx.id]
|
||||||
assert json_result["height"] == block["height"]
|
assert json_result["height"] == block["height"]
|
||||||
|
|
||||||
|
await blk_source.put(events.POISON_PILL)
|
||||||
await tx_source.put(events.POISON_PILL)
|
await tx_source.put(events.POISON_PILL)
|
||||||
|
|
||||||
|
|
||||||
@ -175,13 +139,13 @@ async def test_websocket_string_event(aiohttp_client):
|
|||||||
from planetmint.ipc.events import POISON_PILL
|
from planetmint.ipc.events import POISON_PILL
|
||||||
from planetmint.web.websocket_server import init_app, EVENTS_ENDPOINT
|
from planetmint.web.websocket_server import init_app, EVENTS_ENDPOINT
|
||||||
|
|
||||||
app = aiohttp.web.Application()
|
app = init_app(None)
|
||||||
blk_source = asyncio.Queue()
|
|
||||||
tx_source = asyncio.Queue()
|
|
||||||
app = await init_app(app, tx_source, blk_source)
|
|
||||||
client = await aiohttp_client(app)
|
client = await aiohttp_client(app)
|
||||||
ws = await client.ws_connect(EVENTS_ENDPOINT)
|
ws = await client.ws_connect(EVENTS_ENDPOINT)
|
||||||
|
|
||||||
|
blk_source = Dispatcher.get_queue_on_demand(app, "blk_source")
|
||||||
|
tx_source = Dispatcher.get_queue_on_demand(app, "tx_source")
|
||||||
|
|
||||||
await tx_source.put("hack")
|
await tx_source.put("hack")
|
||||||
await tx_source.put("the")
|
await tx_source.put("the")
|
||||||
await tx_source.put("planet!")
|
await tx_source.put("planet!")
|
||||||
@ -195,7 +159,8 @@ async def test_websocket_string_event(aiohttp_client):
|
|||||||
result = await ws.receive()
|
result = await ws.receive()
|
||||||
assert result.data == "planet!"
|
assert result.data == "planet!"
|
||||||
|
|
||||||
await tx_source.put(POISON_PILL)
|
await blk_source.put(events.POISON_PILL)
|
||||||
|
await tx_source.put(events.POISON_PILL)
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.skip("Processes are not stopping properly, and the whole test suite would hang")
|
@pytest.mark.skip("Processes are not stopping properly, and the whole test suite would hang")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user