from log_analyzer.streamer import aggregate_results, stream_results


def test_stream_basic():
    template = {"version": "1.0", "source": "default"}
    records = [
        {"id": 1, "value": "a"},
        {"id": 2, "value": "b", "source": "custom"},
    ]
    result = stream_results(records, template)
    assert len(result) == 2


def test_stream_large_batch():
    """Large batch — this function is too slow."""
    template = {
        "version": "1.0",
        "metadata": {
            "region": "us-east",
            "env": "prod",
            "settings": {
                "retry": {"count": 3, "backoff": [1, 2, 4, 8]},
                "timeouts": {"connect": 5, "read": 30, "write": 10},
            },
        },
        "tags": ["log", "processed", "v2", "analytics"],
        "schema": {
            "fields": [
                {"name": "id", "type": "int", "required": True},
                {"name": "value", "type": "string", "required": True},
                {"name": "timestamp", "type": "datetime", "required": True},
                {"name": "source", "type": "string", "required": False},
                {"name": "priority", "type": "int", "required": False},
            ],
        },
    }
    records = []
    for i in range(50_000):
        records.append(
            {
                "id": i,
                "value": f"data-{i}",
                "timestamp": f"2024-01-{(i % 28) + 1:02d}",
            }
        )
    result = stream_results(records, template)
    assert len(result) == 50_000

    summary = aggregate_results(result)
    assert summary["id"]["count"] == 50_000
