You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Jul 18, 2024. It is now read-only.
def test_table_update(table_name, metadata, products, listener):
"""
Test that the TableUpdate function reacts to changes to DynamoDB and sends
events to EventBridge
"""
metadata = copy.deepcopy(metadata)
# Create packaging request in DynamoDB
table = boto3.resource("dynamodb").Table(table_name) # pylint: disable=no-member
with table.batch_writer() as batch:
for product in products:
batch.put_item(Item=product)
batch.put_item(Item=metadata)
# Mark the packaging as completed
metadata["status"] = "COMPLETED"
# Listen for messages on EventBridge
listener(
"ecommerce.warehouse",
lambda: table.put_item(Item=metadata),
lambda m: metadata["orderId"] in m["resources"] and m["detail-type"] == "PackageCreated"
)
tests/integ/test_events.py:84:
../shared/tests/integ/fixtures.py:120: in _listener
return asyncio.run(_listen())
../../.pyenv/versions/3.9.7/lib/python3.9/asyncio/runners.py:44: in run
return loop.run_until_complete(main)
../../.pyenv/versions/3.9.7/lib/python3.9/asyncio/base_events.py:642: in run_until_complete
return future.result()
async def _listen() -> List[dict]:
# Generate SigV4 headers
headers = signed_url_headers(listener_api_url)
# Connects to API
async with websockets.connect(listener_api_url, extra_headers=headers) as websocket:
# Send to which service we are subscribing
await websocket.send(
json.dumps({"action": "register", "serviceName": service_name})
)
# Run the function that will produce messages
gen_function()
# Listen to messages through the WebSockets API
found = False
messages = []
# Since asyncio.wait_for timeout parameter takes an integer, we need to
# calculate the value. For this, we calculate the datetime until we want to
# wait in the worst case, then calculate the timeout integer value based on
# that.
timeout = datetime.datetime.utcnow() + datetime.timedelta(seconds=wait_time)
while datetime.datetime.utcnow() < timeout:
try:
message = json.loads(await asyncio.wait_for(
websocket.recv(),
timeout=(timeout - datetime.datetime.utcnow()).total_seconds()
))
print(message)
messages.append(message)
# Run the user-provided test
if test_function is not None and test_function(message):
found = True
break
except asyncio.exceptions.TimeoutError:
# Timeout exceeded
break
if test_function is not None:
Hi,
I met this error while running "make all".
"sless_ec" is the root folder.
[*] tests-integ orders
make[3]: Entering directory '/home/ubuntu/sless_ec/orders'
============================= test session starts ==============================
platform linux -- Python 3.9.7, pytest-5.4.3, py-1.11.0, pluggy-0.13.1
rootdir: /home/ubuntu/sless_ec/warehouse
plugins: requests-mock-1.9.3, cov-2.8.1
collected 2 items
tests/integ/test_events.py F [ 50%]
tests/integ/test_on_order_events.py . [100%]
=================================== FAILURES ===================================
______________________________ test_table_update _______________________________
table_name = 'ecommerce-dev-warehouse-Table-1NKQ7PBKTM1VH'
metadata = {'modifiedDate': '2022-04-07T03:24:49.534936', 'orderId': '372337dc-0acf-4aba-9882-e600ec498b7e', 'productId' : '__metadata', 'status': 'COMPLETED'}
products = [{'name': 'PRODUCT_NAME', 'orderId': '372337dc-0acf-4aba-9882-e600ec498b7e', 'package': {'height': 50, 'lengt h': 100, 'weight': 1000, 'width': 200}, 'price': 500, ...}]
listener = <function listener.._listener at 0x7f287b52e700>
tests/integ/test_events.py:84:
../shared/tests/integ/fixtures.py:120: in _listener
return asyncio.run(_listen())
../../.pyenv/versions/3.9.7/lib/python3.9/asyncio/runners.py:44: in run
return loop.run_until_complete(main)
../../.pyenv/versions/3.9.7/lib/python3.9/asyncio/base_events.py:642: in run_until_complete
return future.result()
E AssertionError
../shared/tests/integ/fixtures.py:116: AssertionError
---- generated xml file: /home/ubuntu/sless_ec/reports/warehouse-integ.xml -----
=========================== short test summary info ============================
FAILED tests/integ/test_events.py::test_table_update - AssertionError
========================= 1 failed, 1 passed in 37.07s =========================
make[3]: *** [Makefile:37: tests-integ] Error 1
make[3]: Leaving directory '/home/ubuntu/sless_ec/warehouse'
make[2]: *** [Makefile:103: tests-integ-warehouse] Error 2
make[2]: Leaving directory '/home/ubuntu/sless_ec'
make[1]: *** [Makefile:34: all-warehouse] Error 2
make[1]: *** Waiting for unfinished jobs....
make[3]: Leaving directory '/home/ubuntu/sless_ec/orders'
make[2]: Leaving directory '/home/ubuntu/sless_ec'
make[1]: Leaving directory '/home/ubuntu/sless_ec'
make: *** [Makefile:24: all] Error 1
I'm completely newbie to this repo.
I want to know what caused the failure, how to solve it.
Many thanks.
The text was updated successfully, but these errors were encountered: