Skip to content

Commit e5ff41e

Browse files
committed
tests: memfault: Use chronicler API
The old eventlog API was deprecated. Signed-off-by: Jorgen Kvalvaag <jorgen.kvalvaag@nordicsemi.no>
1 parent f2fa530 commit e5ff41e

File tree

1 file changed

+39
-19
lines changed

1 file changed

+39
-19
lines changed

tests/on_target/tests/test_functional/test_memfault.py

Lines changed: 39 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import os
77
import requests
8-
import datetime
8+
from datetime import datetime, timezone, timedelta
99
import time
1010
from utils.flash_tools import flash_device, reset_device
1111
from utils.logger import get_logger
@@ -21,36 +21,56 @@
2121
url = "https://api.memfault.com/api/v0"
2222
auth = ("", MEMFAULT_ORG_TOKEN)
2323

24-
def get_event_log():
25-
response = requests.get(f"{url}/organizations/{MEMFAULT_ORG}/projects/{MEMFAULT_PROJ}/event-log", auth=auth)
26-
response.raise_for_status()
27-
return response.json()
24+
def get_chronicler_events(
25+
device_serial=None,
26+
device_id=None,
27+
event_types=("ReceivedDataRebootEvent", "ReceivedDataHeartbeatEvent", "ReceivedDataTraceEvent"),
28+
levels=("INFO", "ERROR"),
29+
start=None, end=None
30+
):
31+
if not start:
32+
start = datetime.now(timezone.utc) - timedelta(hours=1)
33+
if not end:
34+
end = datetime.now(timezone.utc)
2835

29-
def get_latest_events(event_type, device_id):
30-
data = get_event_log()
31-
latest_events = [
32-
x
33-
for x in data["data"]
34-
if x["device_serial"] == str(device_id) and x["type"] == event_type
35-
]
36-
return latest_events
36+
params = {
37+
"device_id": device_id,
38+
"device_serial": device_serial,
39+
"event_types": event_types,
40+
"levels": levels,
41+
"start": datetime.isoformat(start),
42+
"end": datetime.isoformat(end)
43+
}
44+
45+
r = requests.get(
46+
f"{url}/organizations/{MEMFAULT_ORG}/projects/{MEMFAULT_PROJ}/chronicler-logs",
47+
auth=auth,
48+
params=params,
49+
timeout=10
50+
)
51+
r.raise_for_status()
52+
return r.json()["data"]
53+
54+
def get_latest_heartbeat_events(device_serial):
55+
return get_chronicler_events(
56+
device_serial=device_serial,
57+
event_types=["ReceivedDataHeartbeatEvent"]
58+
)
3759

3860
def timestamp(event):
39-
return datetime.datetime.strptime(
40-
event["captured_date"], "%Y-%m-%dT%H:%M:%S.%f%z"
41-
)
61+
return datetime.fromisoformat(event["event_data"]["received_event"]["captured_date"])
4262

4363
def wait_for_heartbeat(timestamp_old_heartbeat_evt):
4464
new_heartbeat_found = False
4565
start = time.time()
4666
while time.time() - start < MEMFAULT_TIMEOUT:
4767
logger.debug("Looking for latest heartbeat events")
4868
time.sleep(5)
49-
new_heartbeat_events = get_latest_events("HEARTBEAT", IMEI)
69+
new_heartbeat_events = get_latest_heartbeat_events(IMEI)
5070
if not new_heartbeat_events:
5171
continue
5272
try:
53-
unexpected_reboot_count = new_heartbeat_events[0]["summary"]["event_info"]["metrics"]["MemfaultSdkMetric_UnexpectedRebootCount"]
73+
unexpected_reboot_count = new_heartbeat_events[0]["event_data"]["received_event"]["event_info"]["metrics"]["MemfaultSdkMetric_UnexpectedRebootCount"]
5474
except (KeyError, ValueError):
5575
continue
5676
if unexpected_reboot_count < 1:
@@ -75,7 +95,7 @@ def test_memfault(t91x_board, hex_file):
7595
]
7696

7797
# Save timestamp of latest heartbeat event
78-
heartbeat_events = get_latest_events("HEARTBEAT", IMEI)
98+
heartbeat_events = get_latest_heartbeat_events(IMEI)
7999
timestamp_old_heartbeat_evt = timestamp(heartbeat_events[0]) if heartbeat_events else None
80100

81101
t91x_board.uart.flush()

0 commit comments

Comments
 (0)