Skip to content
This repository was archived by the owner on Jul 18, 2024. It is now read-only.
This repository was archived by the owner on Jul 18, 2024. It is now read-only.

FAILED tests/integ/test_events.py::test_table_update - AssertionError #203

Description

@fintechee

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>

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:
          assert found == True

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions