from inferscale import compare_topologies, design_space_search def test_topology_comparison_has_four_scenarios(): result = compare_topologies({ "model": "Qwen2.5-3B", "accelerator": "L4", "prefill_accelerator": "L4", "decode_accelerator": "L4", "quantization": "int8", "duration_s": 3, "request_rate_rps": 1, "prompt_tokens_mean": 64, "output_tokens_mean": 4, "prefix_reuse_fraction": 0.5, "shared_prefix_tokens": 32, }) assert len(result["rows"]) == 4 assert {row["topology"] for row in result["rows"]} == {"colocated", "disaggregated_pd"} assert all(row["goodput_per_accelerator"] >= 0 for row in result["rows"]) def test_design_space_marks_pareto_candidates(): result = design_space_search({ "model": "Qwen2.5-3B", "accelerator": "L4", "prefill_accelerator": "L4", "decode_accelerator": "L4", "quantization": "int8", "duration_s": 2, "request_rate_rps": 0.8, "prompt_tokens_mean": 64, "output_tokens_mean": 4, "shared_prefix_tokens": 32, "prefix_reuse_fraction": 0.5, }, include_disaggregated=False) assert result["candidate_count"] == 10 assert result["pareto_count"] >= 1 assert result["efficiency_pareto_count"] >= 1 assert any(row["pareto"] for row in result["rows"]) assert any(row["efficiency_pareto"] for row in result["rows"])