From 487ca41207d5592281357eacf5c283bd8e89884b Mon Sep 17 00:00:00 2001 From: BitterPanda Date: Thu, 12 Jun 2025 14:25:54 +0200 Subject: [PATCH 1/3] Add e2e test to validate packages --- end2end/django_mysql_test.py | 3 ++- end2end/server/check_events_from_mock.py | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/end2end/django_mysql_test.py b/end2end/django_mysql_test.py index 0520da672..1e9273650 100644 --- a/end2end/django_mysql_test.py +++ b/end2end/django_mysql_test.py @@ -88,5 +88,6 @@ def test_initial_heartbeat(): "method": "POST", "path": "/app/create" }], - {"aborted":0,"attacksDetected":{"blocked":2,"total":2},"total":3} + {"aborted":0,"attacksDetected":{"blocked":2,"total":2},"total":3}, + {"django", "aikido_zen"} ) diff --git a/end2end/server/check_events_from_mock.py b/end2end/server/check_events_from_mock.py index 8da473f3a..7828ac4c6 100644 --- a/end2end/server/check_events_from_mock.py +++ b/end2end/server/check_events_from_mock.py @@ -21,7 +21,10 @@ def validate_started_event(event, stack, dry_mode=False, serverless=False, os_na # if stack is not None: # assert set(event["agent"]["stack"]) == set(stack) -def validate_heartbeat(event, routes, req_stats): +def validate_heartbeat(event, routes, req_stats, packages=None): + if packages: + package_names = set(map(lambda x: x["name"], event["packages"])) + assert package_names == packages, f"Expected {packages} but got {package_names}" assert event["type"] == "heartbeat", f"Expected event type 'heartbeat', but got '{event['type']}'" assert event["routes"] == routes, f"Expected routes '{routes}', but got '{event['routes']}'" assert event["stats"]["requests"] == req_stats, f"Expected request stats '{req_stats}', but got '{event['stats']['requests']}'" From 94f846a1e6d402ea563d4503107dd7d8b861df4d Mon Sep 17 00:00:00 2001 From: BitterPanda Date: Thu, 12 Jun 2025 14:42:08 +0200 Subject: [PATCH 2/3] add packages to e2e test --- end2end/django_mysql_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/end2end/django_mysql_test.py b/end2end/django_mysql_test.py index 1e9273650..db6060195 100644 --- a/end2end/django_mysql_test.py +++ b/end2end/django_mysql_test.py @@ -89,5 +89,5 @@ def test_initial_heartbeat(): "path": "/app/create" }], {"aborted":0,"attacksDetected":{"blocked":2,"total":2},"total":3}, - {"django", "aikido_zen"} + {'asgiref', 'regex', 'mysqlclient', 'sqlparse', 'aikido_zen', 'django'} ) From ecad2e537dffe227b46d162f47fd0ebc7c802b58 Mon Sep 17 00:00:00 2001 From: BitterPanda Date: Thu, 12 Jun 2025 14:44:08 +0200 Subject: [PATCH 3/3] make the check_events_from_mock a bit more versatile --- end2end/server/check_events_from_mock.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/end2end/server/check_events_from_mock.py b/end2end/server/check_events_from_mock.py index 7828ac4c6..d648c47ce 100644 --- a/end2end/server/check_events_from_mock.py +++ b/end2end/server/check_events_from_mock.py @@ -21,11 +21,13 @@ def validate_started_event(event, stack, dry_mode=False, serverless=False, os_na # if stack is not None: # assert set(event["agent"]["stack"]) == set(stack) -def validate_heartbeat(event, routes, req_stats, packages=None): +def validate_heartbeat(event, routes=None, req_stats=None, packages=None): + assert event["type"] == "heartbeat", f"Expected event type 'heartbeat', but got '{event['type']}'" if packages: package_names = set(map(lambda x: x["name"], event["packages"])) assert package_names == packages, f"Expected {packages} but got {package_names}" - assert event["type"] == "heartbeat", f"Expected event type 'heartbeat', but got '{event['type']}'" - assert event["routes"] == routes, f"Expected routes '{routes}', but got '{event['routes']}'" - assert event["stats"]["requests"] == req_stats, f"Expected request stats '{req_stats}', but got '{event['stats']['requests']}'" + if routes: + assert event["routes"] == routes, f"Expected routes '{routes}', but got '{event['routes']}'" + if req_stats: + assert event["stats"]["requests"] == req_stats, f"Expected request stats '{req_stats}', but got '{event['stats']['requests']}'"