Files
rea/experiments/analysis-efficiency/test_frida_status_delivery.py
T
gensokyo-dev 4bfdadb7de perf(frida): add retained summaries for session status (#5661)
Add opt-in Frida session status summaries linked to complete retained Evidence. Share canonical session facts across contracts and preserve observed state, source identity and capture truncation.

Validated with native SDK/client workflows, default delivery compatibility, lifecycle and provenance tests. The completed large-history task uses 50.9% fewer estimated request tokens; no general CPU or latency improvement is claimed.

Fixes #5640
2026-10-21 03:21:30 +08:00

49 lines
3.3 KiB
Python

"""Reject incomplete status delivery and incorrect retained-source claims."""
from copy import deepcopy
import unittest
from frida_status_delivery import verify_frida_delivery
class FridaDelivery(unittest.TestCase):
def fixture(self):
session = {'session_id': 'selected', 'pid': 12}
payloads = [{'kind': 'module', 'pid': 12, 'total': 1001}, {'kind': 'exports', 'offset': 0, 'items': [None] * 1001}, {'kind': 'complete', 'total': 1001}]
facts = {**session, 'state': 'running', 'messages_truncated': False, 'messages': [{'type': 'send', 'payload': p} for p in payloads]}
parent = {'evidence_id': 'ev_parent', 'operation': 'frida_session_status', 'authority': 'external-service', 'environment': None, 'raw_result': None, 'subject': None, 'parameters': {'session_id': 'selected'}, 'provider': {'id': 'frida'}, 'normalized_result': facts}
summary = {'evidence_id': 'ev_summary', 'subject': None, 'raw_result': None, 'authority': 'external-service', 'normalized_result': {
'parent_evidence_id': 'ev_parent', 'parent_digest': 'parent', 'parent_operation': 'frida_session_status', 'artifact': None,
'source_parameters': parent['parameters'], 'source_provider': parent['provider'], 'unknowns': ['historical snapshot'], 'limitations': ['parent retained'],
'summary': {**{k: v for k, v in facts.items() if k != 'messages'}, 'messages_retained': 3}}}
return session, parent, summary
def test_truncated_summary_never_qualifies(self):
truncated = {'_invalid_json_payload': 'truncated'}
self.assertIsNone(verify_frida_delivery(truncated, {}, 'complete', 0, {}))
for mode, budget in [('summary', 0), ('summary', 300000), ('complete', 300000)]:
with self.subTest(mode=mode, budget=budget), self.assertRaises(AssertionError):
verify_frida_delivery(truncated, {}, mode, budget, {})
def test_complete_and_summary_require_correct_facts_and_source(self):
session, parent, summary = self.fixture()
for mode, delivered in [('complete', parent), ('summary', summary)]:
self.assertEqual(verify_frida_delivery(delivered, {'records': [parent, summary]}, mode, 300000, session)['exports'], 1001)
for field in ['messages_retained', 'state', 'messages', 'source_parameters', 'parent_digest', 'source_provider']:
broken = deepcopy(summary)
target = broken['normalized_result']['summary'] if field in ['messages_retained', 'state', 'messages'] else broken['normalized_result']
target[field] = 'incorrect'
with self.subTest(field=field), self.assertRaises(AssertionError):
verify_frida_delivery(broken, {'records': [parent, broken]}, 'summary', 0, session)
def test_missing_native_chunk_and_wrong_session_fail(self):
session, parent, _ = self.fixture()
broken = deepcopy(parent)
broken['normalized_result']['messages'][1]['payload']['items'].pop()
with self.assertRaises(AssertionError):
verify_frida_delivery(broken, {'records': [broken]}, 'complete', 300000, session)
with self.assertRaises(AssertionError):
verify_frida_delivery(parent, {'records': [parent]}, 'complete', 300000, {**session, 'session_id': 'other'})
if __name__ == '__main__':
unittest.main()