diff --git a/tests/test_verifier_contract.py b/tests/test_verifier_contract.py index 9f8784a..0ab2683 100644 --- a/tests/test_verifier_contract.py +++ b/tests/test_verifier_contract.py @@ -4,6 +4,7 @@ import io import json import sys import unittest +from pathlib import Path from types import SimpleNamespace from unittest.mock import Mock, patch @@ -27,6 +28,44 @@ class TestVerifierContract(unittest.TestCase): with patch.object(generate_traffic, "fetch_json", return_value={"pipeline": {"worker_status": "unreachable"}}): self.assertIsNone(generate_traffic.stats_snapshot("http://unused")) + def test_stats_snapshot_keeps_received_and_acknowledged_counts_separate(self): + response = { + "pipeline": { + "total_received": 1570, + "total_acknowledged": 1540, + "total_processed": 1520, + "total_dlq": 50, + "in_flight_buffer": 0, + }, + "breakdown": {"dlq_by_reason": {}}, + } + with patch.object(generate_traffic, "fetch_json", return_value=response): + snapshot = generate_traffic.stats_snapshot("http://unused") + self.assertEqual(snapshot["total_received"], 1570) + self.assertEqual(snapshot["total_acknowledged"], 1540) + + def test_assessment_metric_deltas_match_received_and_acknowledged_contract(self): + before = { + "total_received": 10, + "total_acknowledged": 8, + "total_processed": 7, + "total_dlq": 2, + } + after = { + "total_received": 1580, + "total_acknowledged": 1548, + "total_processed": 1527, + "total_dlq": 52, + } + self.assertTrue(generate_traffic.assessment_metrics_match(before, after)) + after["total_acknowledged"] += 1 + self.assertFalse(generate_traffic.assessment_metrics_match(before, after)) + + def test_k6_latency_guardrail_is_opt_in(self): + script = (Path(__file__).parents[1] / "scripts" / "load_test.js").read_text() + self.assertIn("__ENV.P95_MS ?", script) + self.assertNotIn("__ENV.P95_MS || 50", script) + def test_overflowing_json_float_is_rejected_even_in_extra_fields(self): with self.assertRaises(PayloadError): parse_payload(b'{"extra":1e400}')