From 37e048f07c6f17255812fc32c842fd0496e653bd Mon Sep 17 00:00:00 2001 From: GioeleB00 Date: Wed, 13 Aug 2025 17:19:26 +0200 Subject: [PATCH] Added pybuilder and unit tests --- docs/dev_workflow_guide.md | 1 + examples/single_server_pybuilder.png | Bin 0 -> 164870 bytes examples/single_server_pybuilder.py | 293 ++++++++++++++++++ src/app/pybuilder/input_builder.py | 127 ++++++++ .../system_topology/full_system_topology.py | 37 ++- tests/unit/pybuilder/test_input_builder.py | 280 +++++++++++++++++ 6 files changed, 734 insertions(+), 4 deletions(-) create mode 100644 examples/single_server_pybuilder.png create mode 100644 examples/single_server_pybuilder.py create mode 100644 src/app/pybuilder/input_builder.py create mode 100644 tests/unit/pybuilder/test_input_builder.py diff --git a/docs/dev_workflow_guide.md b/docs/dev_workflow_guide.md index d1379db..c0a9705 100644 --- a/docs/dev_workflow_guide.md +++ b/docs/dev_workflow_guide.md @@ -38,6 +38,7 @@ fastsim-backend/ │ │ ├── rqs_state.py # RequestState & Hop │ │ ├── simulation_runner.py # logic to initialize the whole simulation | └── actors/ # SimPy “actors”: Edge, Server, Client, RqsGenerator + ├── pybuilder/ # Pythonic way to build the simulation payload │ ├── samplers/ # stochastic samplers (Gaussian-Poisson, etc.) │ ├── schemas/ # Pydantic input/output models ├── poetry.lock diff --git a/examples/single_server_pybuilder.png b/examples/single_server_pybuilder.png new file mode 100644 index 0000000000000000000000000000000000000000..e851f7bceebc2d08377411fc450446bef225fc26 GIT binary patch literal 164870 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%0A3{Qv*hPjplR!)qgL)o{#o;asQKn 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 zÐ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 literal 0 HcmV?d00001 diff --git a/examples/single_server_pybuilder.py b/examples/single_server_pybuilder.py new file mode 100644 index 0000000..4d8b757 --- /dev/null +++ b/examples/single_server_pybuilder.py @@ -0,0 +1,293 @@ +#!/usr/bin/env python3 +""" +Didactic example: build and run a FastSim scenario **without** YAML, +using the 'pybuilder' (AsyncFlow) to assemble the SimulationPayload. + +Scenario reproduced (same as the previous YAML): + generator ──edge──> client ──edge──> server ──edge──> client + +Load: + ~100 active users, 20 req/min each. + +Server: + 1 CPU core, 2GB RAM, endpoint with steps: + CPU(1ms) → RAM(100MB) → IO(100ms) + +Network: + 3ms mean (exponential) latency on each edge. + +What this script does: + 1) Build Pydantic models (generator, client, server, edges, settings). + 2) Compose the final SimulationPayload via AsyncFlow (builder pattern). + 3) Run the simulation with SimulationRunner. + 4) Print latency stats, throughput timeline, and a sampled-metrics preview. + 5) (Optional) Visualize the topology with Matplotlib. + +Run: + python run_with_pybuilder.py +""" + +from __future__ import annotations + +from pathlib import Path +from typing import Dict, Iterable, List, Mapping, Tuple + +import numpy as np +import simpy + +# ── FastSim domain imports ─────────────────────────────────────────────────── +from app.pybuilder.input_builder import AsyncFlow +from app.runtime.simulation_runner import SimulationRunner +from app.metrics.analyzer import ResultsAnalyzer +from app.schemas.full_simulation_input import SimulationPayload +from app.schemas.rqs_generator_input import RqsGeneratorInput +from app.schemas.simulation_settings_input import SimulationSettings +from app.schemas.system_topology.endpoint import Endpoint +from app.schemas.system_topology.full_system_topology import ( + Client, + Edge, + Server, +) + +from app.config.constants import LatencyKey, SampledMetricName + + +# ───────────────────────────────────────────────────────────── +# Pretty printers (compact, readable output) +# ───────────────────────────────────────────────────────────── +def print_latency_stats(res: ResultsAnalyzer) -> None: + """Print latency statistics calculated by the analyzer.""" + stats: Mapping[LatencyKey, float] = res.get_latency_stats() + print("\n════════ LATENCY STATS ════════") + if not stats: + print("(empty)") + return + + order: List[LatencyKey] = [ + LatencyKey.TOTAL_REQUESTS, + LatencyKey.MEAN, + LatencyKey.MEDIAN, + LatencyKey.STD_DEV, + LatencyKey.P95, + LatencyKey.P99, + LatencyKey.MIN, + LatencyKey.MAX, + ] + for key in order: + if key in stats: + print(f"{key.name:<20} = {stats[key]:.6f}") + + +def print_throughput(res: ResultsAnalyzer) -> None: + """Print the 1-second throughput buckets.""" + timestamps, rps = res.get_throughput_series() + print("\n════════ THROUGHPUT (req/sec) ════════") + if not timestamps: + print("(empty)") + return + + for t, rate in zip(timestamps, rps): + print(f"t={t:4.1f}s → {rate:6.2f} rps") + + +def print_sampled_preview(res: ResultsAnalyzer) -> None: + """ + Print a small preview for each sampled metric series (first 5 values). + This helps verify that sampler pipelines are running. + """ + sampled = res.get_sampled_metrics() + print("\n════════ SAMPLED METRICS (preview) ════════") + if not sampled: + print("(empty)") + return + + for metric, series in sampled.items(): + metric_name = ( + metric.name if isinstance(metric, SampledMetricName) else str(metric) + ) + print(f"\n📈 {metric_name}:") + for entity, vals in series.items(): + head = list(vals[:5]) if vals else [] + print(f" - {entity}: len={len(vals)}, first={head}") + + +# ───────────────────────────────────────────────────────────── +# Tiny helpers for sanity checks (optional) +# ───────────────────────────────────────────────────────────── +def _mean(series: Iterable[float]) -> float: + """Numerically stable mean for a generic float iterable.""" + arr = np.asarray(list(series), dtype=float) + return float(np.mean(arr)) if arr.size else 0.0 + + +def run_sanity_checks( + runner: SimulationRunner, + res: ResultsAnalyzer, +) -> None: + """ + Back-of-the-envelope checks to compare rough expectations vs observations. + These are intentionally simplistic approximations. + """ + print("\n════════ SANITY CHECKS (rough) ════════") + w = runner.simulation_input.rqs_input + lam_rps = ( + float(w.avg_active_users.mean) + * float(w.avg_request_per_minute_per_user.mean) + / 60.0 + ) + + # Observed throughput + _, rps_series = res.get_throughput_series() + rps_observed = _mean(rps_series) + print(f"• Mean throughput (rps) expected≈{lam_rps:.3f} " + f"observed={rps_observed:.3f}") + + # A few sampled signals (RAM, queues) just to show they are populated. + sampled = res.get_sampled_metrics() + ram_series = sampled.get(SampledMetricName.RAM_IN_USE, {}) + ioq_series = sampled.get(SampledMetricName.EVENT_LOOP_IO_SLEEP, {}) + ready_series = sampled.get(SampledMetricName.READY_QUEUE_LEN, {}) + + ram_mean = _mean([_mean(v) for v in ram_series.values()]) if ram_series else 0.0 + ioq_mean = _mean([_mean(v) for v in ioq_series.values()]) if ioq_series else 0.0 + ready_mean = ( + _mean([_mean(v) for v in ready_series.values()]) if ready_series else 0.0 + ) + + print(f"• Mean RAM in use (MB) observed={ram_mean:.3f}") + print(f"• Mean I/O queue length observed={ioq_mean:.3f}") + print(f"• Mean ready queue length observed={ready_mean:.3f}") + + +# ───────────────────────────────────────────────────────────── +# Build the same scenario via AsyncFlow (pybuilder) +# ───────────────────────────────────────────────────────────── +def build_payload_with_pybuilder() -> SimulationPayload: + """ + Construct the SimulationPayload programmatically using the builder. + + This mirrors the YAML: + - Generator (100 users, 20 rpm each) + - Client + - One server with a single endpoint (CPU → RAM → IO) + - Three edges with exponential latency (3ms mean) + - Simulation settings: 500s total, sample period 50ms + """ + # 1) Request generator + generator = RqsGeneratorInput( + id="rqs-1", + avg_active_users={"mean": 100}, + avg_request_per_minute_per_user={"mean": 20}, + user_sampling_window=60, + ) + + # 2) Client + client = Client(id="client-1") + + # 3) Server (1 CPU core, 2GB RAM) with one endpoint and three steps + # We let Pydantic coerce nested dicts for the endpoint steps. + endpoint = Endpoint( + endpoint_name="ep-1", + probability=1.0, + steps=[ + {"kind": "initial_parsing", "step_operation": {"cpu_time": 0.001}}, + {"kind": "ram", "step_operation": {"necessary_ram": 100}}, + {"kind": "io_wait", "step_operation": {"io_waiting_time": 0.1}}, + ], + ) + + server = Server( + id="srv-1", + server_resources={"cpu_cores": 1, "ram_mb": 2048}, + endpoints=[endpoint], + ) + + # 4) Edges: exponential latency with 3ms mean (same as YAML) + e_gen_client = Edge( + id="gen-to-client", + source="rqs-1", + target="client-1", + latency={"mean": 0.003, "distribution": "exponential"}, + ) + e_client_server = Edge( + id="client-to-server", + source="client-1", + target="srv-1", + latency={"mean": 0.003, "distribution": "exponential"}, + ) + e_server_client = Edge( + id="server-to-client", + source="srv-1", + target="client-1", + latency={"mean": 0.003, "distribution": "exponential"}, + ) + + # 5) Simulation settings + settings = SimulationSettings( + total_simulation_time=500, + sample_period_s=0.05, + enabled_sample_metrics=[ + "ready_queue_len", + "event_loop_io_sleep", + "ram_in_use", + "edge_concurrent_connection", + ], + enabled_event_metrics=["rqs_clock"], + ) + + # 6) Assemble the payload via the builder (AsyncFlow). + # The builder will validate the final structure on build. + flow = ( + AsyncFlow() + .add_generator(generator) + .add_client(client) + .add_servers(server) + .add_edges(e_gen_client, e_client_server, e_server_client) + .add_simulation_settings(settings) + ) + + return flow.build_payload() + + +# ───────────────────────────────────────────────────────────── +# Main entry-point +# ───────────────────────────────────────────────────────────── +def main() -> None: + """ + Build → wire → run the simulation, then print diagnostics. + Mirrors run_from_yaml.py but uses the pybuilder to construct the input. + Also saves a 2x2 plot figure (latency, throughput, server queues, RAM). + """ + env = simpy.Environment() + payload = build_payload_with_pybuilder() + + runner = SimulationRunner(env=env, simulation_input=payload) + results: ResultsAnalyzer = runner.run() + + # Human-friendly diagnostics + print_latency_stats(results) + print_throughput(results) + print_sampled_preview(results) + + # Optional sanity checks (very rough) + run_sanity_checks(runner, results) + + # Save plots (2x2 figure), same layout as in the YAML-based example + try: + from matplotlib import pyplot as plt # noqa: PLC0415 + + fig, axes = plt.subplots(2, 2, figsize=(12, 8)) + results.plot_latency_distribution(axes[0, 0]) + results.plot_throughput(axes[0, 1]) + results.plot_server_queues(axes[1, 0]) + results.plot_ram_usage(axes[1, 1]) + fig.tight_layout() + + out_path = Path(__file__).parent / "single_server_pybuilder.png" + fig.savefig(out_path) + print(f"\n🖼️ Plots saved to: {out_path}") + except Exception as exc: # Matplotlib not installed or plotting failed + print(f"\n[plotting skipped] {exc!r}") + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/src/app/pybuilder/input_builder.py b/src/app/pybuilder/input_builder.py new file mode 100644 index 0000000..223cd32 --- /dev/null +++ b/src/app/pybuilder/input_builder.py @@ -0,0 +1,127 @@ +"""Definition of the input of the simulation through python object""" + +from __future__ import annotations + +from typing import Self + +from app.schemas.full_simulation_input import SimulationPayload +from app.schemas.rqs_generator_input import RqsGeneratorInput +from app.schemas.simulation_settings_input import SimulationSettings +from app.schemas.system_topology.full_system_topology import ( + Client, + Edge, + LoadBalancer, + Server, + TopologyGraph, + TopologyNodes, +) + + +class AsyncFlow: + """class with method to create the input for the simulation""" + + def __init__(self) -> None: + """Instance attributes necessary to define the simulation payload""" + self._generator: RqsGeneratorInput | None = None + self._client: Client | None = None + self._servers: list[Server] | None = None + self._edges: list[Edge] | None = None + self._sim_settings: SimulationSettings | None = None + self._load_balancer: LoadBalancer | None = None + + def add_generator(self, rqs_generator: RqsGeneratorInput) -> Self: + """Method to instantiate the generator""" + if not isinstance(rqs_generator, RqsGeneratorInput): + msg = "You must add a RqsGeneratorInput instance" + raise TypeError(msg) + self._generator = rqs_generator + return self + + def add_client(self, client: Client) -> Self: + """Method to instantiate the client""" + if not isinstance(client, Client): + msg = "You must add a Client instance" + raise TypeError(msg) + + self._client = client + return self + + def add_servers(self, *servers: Server) -> Self: + """Method to instantiate the server list""" + if self._servers is None: + self._servers = [] + + for server in servers: + if not isinstance(server, Server): + msg = "All the instances must be of the type Server" + raise TypeError(msg) + self._servers.append(server) + return self + + def add_edges(self, *edges: Edge) -> Self: + """Method to instantiate the list of edges""" + if self._edges is None: + self._edges = [] + + for edge in edges: + if not isinstance(edge, Edge): + msg = "All the instances must be of the type Edge" + raise TypeError(msg) + self._edges.append(edge) + return self + + def add_simulation_settings(self, sim_settings: SimulationSettings) -> Self: + """Method to instantiate the settings for the simulation""" + if not isinstance(sim_settings, SimulationSettings): + msg = "The instance must be of the type SimulationSettings" + raise TypeError(msg) + + self._sim_settings = sim_settings + return self + + def add_load_balancer(self, load_balancer: LoadBalancer) -> Self: + """Method to instantiate a load balancer""" + if not isinstance(load_balancer, LoadBalancer): + msg = "The instance must be of the type LoadBalancer" + raise TypeError(msg) + + self._load_balancer = load_balancer + return self + + def build_payload(self) -> SimulationPayload: + """Method to build the payload for the simulation""" + if self._generator is None: + msg = "The generator input must be instantiated before the simulation" + raise ValueError(msg) + if self._client is None: + msg = "The client input must be instantiated before the simulation" + raise ValueError(msg) + if not self._servers: + msg = "You must instantiate at least one server before the simulation" + raise ValueError(msg) + if not self._edges: + msg = "You must instantiate edges before the simulation" + raise ValueError(msg) + if self._sim_settings is None: + msg = "The simulation settings must be instantiated before the simulation" + raise ValueError(msg) + + nodes = TopologyNodes( + servers=self._servers, + client=self._client, + load_balancer=self._load_balancer, + ) + + graph = TopologyGraph( + nodes = nodes, + edges=self._edges, + ) + + return SimulationPayload.model_validate({ + "rqs_input": self._generator, + "topology_graph": graph, + "sim_settings": self._sim_settings, + }) + + + diff --git a/src/app/schemas/system_topology/full_system_topology.py b/src/app/schemas/system_topology/full_system_topology.py index ddd4c5f..f70b16c 100644 --- a/src/app/schemas/system_topology/full_system_topology.py +++ b/src/app/schemas/system_topology/full_system_topology.py @@ -155,6 +155,10 @@ def unique_ids( ) -> "TopologyNodes": """Check that all id are unique""" ids = [server.id for server in model.servers] + [model.client.id] + + if model.load_balancer is not None: + ids.append(model.load_balancer.id) + counter = Counter(ids) duplicate = [node_id for node_id, value in counter.items() if value > 1] if duplicate: @@ -193,7 +197,6 @@ class Edge(BaseModel): source: str target: str latency: RVConfig - probability: float = Field(1.0, ge=0.0, le=1.0) edge_type: SystemEdges = SystemEdges.NETWORK_CONNECTION dropout_rate: float = Field( NetworkParameters.DROPOUT_RATE, @@ -230,7 +233,7 @@ def ensure_latency_is_non_negative( if variance is not None and variance < 0: # Variance can be zero msg = ( f"The variance of the latency of the edge {edge_id}" - "must be positive" + "must be non negative" ) raise ValueError(msg) return v @@ -327,7 +330,7 @@ def edge_refs_valid( @model_validator(mode="after") # type: ignore[arg-type] def valid_load_balancer(cls, model: "TopologyGraph") -> "TopologyGraph": # noqa: N805 """ - Check de validity of the load balancer: first we check + Check the validity of the load balancer: first we check if is present in the simulation, second we check if the LB list is a proper subset of the server sets of ids, then we check if edge from LB to the servers are well defined @@ -343,7 +346,7 @@ def valid_load_balancer(cls, model: "TopologyGraph") -> "TopologyGraph": # noqa: if missing: msg = (f"Load balancer '{lb.id}'" - "references unknown servers: {sorted(missing)}") + f"references unknown servers: {sorted(missing)}") raise ValueError(msg) # edge are well defined @@ -360,3 +363,29 @@ def valid_load_balancer(cls, model: "TopologyGraph") -> "TopologyGraph": # noqa: return model + @model_validator(mode="after") # type: ignore[arg-type] + def no_fanout_except_lb(cls, model: "TopologyGraph") -> "TopologyGraph": # noqa: N805 + """Ensure only the LB (declared node) can have multiple outgoing edges.""" + lb_id = model.nodes.load_balancer.id if model.nodes.load_balancer else None + + # let us consider only nodes declared in the topology + node_ids: set[str] = {server.id for server in model.nodes.servers} + node_ids.add(model.nodes.client.id) + if lb_id: + node_ids.add(lb_id) + + counts: dict[str, int] = {} + for edge in model.edges: + if edge.source not in node_ids: + continue + counts[edge.source] = counts.get(edge.source, 0) + 1 + + offenders = [src for src, c in counts.items() if c > 1 and src != lb_id] + if offenders: + msg = ( + "Only the load balancer can have multiple outgoing edges. " + f"Offending sources: {offenders}" + ) + raise ValueError(msg) + + return model diff --git a/tests/unit/pybuilder/test_input_builder.py b/tests/unit/pybuilder/test_input_builder.py new file mode 100644 index 0000000..1bdddf8 --- /dev/null +++ b/tests/unit/pybuilder/test_input_builder.py @@ -0,0 +1,280 @@ +""" +Unit tests for the AsyncFlow builder. + +The goal is to verify that: +- The builder enforces types on each `add_*` method. +- Missing components produce clear ValueError exceptions on `build_payload()`. +- A valid, minimal scenario builds a `SimulationPayload` successfully. +- Methods return `self` to support fluent chaining. +- Servers and edges can be added in multiples and preserve order. +""" + +from __future__ import annotations + +import pytest + +from app.pybuilder.input_builder import AsyncFlow +from app.schemas.full_simulation_input import SimulationPayload +from app.schemas.rqs_generator_input import RqsGeneratorInput +from app.schemas.simulation_settings_input import SimulationSettings +from app.schemas.system_topology.endpoint import Endpoint +from app.schemas.system_topology.full_system_topology import Client, Edge, Server + + +# --------------------------------------------------------------------------- # +# Helpers: build minimal, valid components # +# --------------------------------------------------------------------------- # +def make_generator() -> RqsGeneratorInput: + """Return a minimal valid request generator.""" + return RqsGeneratorInput( + id="rqs-1", + avg_active_users={"mean": 10}, + avg_request_per_minute_per_user={"mean": 30}, + user_sampling_window=60, + ) + + +def make_client() -> Client: + """Return a minimal valid client.""" + return Client(id="client-1") + + +def make_endpoint() -> Endpoint: + """Return a minimal endpoint with CPU and IO steps.""" + return Endpoint( + endpoint_name="ep-1", + probability=1.0, + steps=[ + {"kind": "initial_parsing", "step_operation": {"cpu_time": 0.001}}, + {"kind": "io_wait", "step_operation": {"io_waiting_time": 0.001}}, + ], + ) + + +def make_server(server_id: str = "srv-1") -> Server: + """Return a minimal valid server with 1 core, 2GB RAM, and one endpoint.""" + return Server( + id=server_id, + server_resources={"cpu_cores": 1, "ram_mb": 2048}, + endpoints=[make_endpoint()], + ) + + +def make_edges() -> list[Edge]: + """Return a valid edge triplet for the minimal single-server scenario.""" + e1 = Edge( + id="gen-to-client", + source="rqs-1", + target="client-1", + latency={"mean": 0.003, "distribution": "exponential"}, + ) + e2 = Edge( + id="client-to-server", + source="client-1", + target="srv-1", + latency={"mean": 0.003, "distribution": "exponential"}, + ) + e3 = Edge( + id="server-to-client", + source="srv-1", + target="client-1", + latency={"mean": 0.003, "distribution": "exponential"}, + ) + return [e1, e2, e3] + + +def make_settings() -> SimulationSettings: + """Return minimal simulation settings within validation bounds.""" + return SimulationSettings( + total_simulation_time=5.0, # lower bound is 5 seconds + sample_period_s=0.1, + enabled_sample_metrics=[ + "ready_queue_len", + "event_loop_io_sleep", + "ram_in_use", + "edge_concurrent_connection", + ], + enabled_event_metrics=["rqs_clock"], + ) + + +# --------------------------------------------------------------------------- # +# Positive / “happy path” # +# --------------------------------------------------------------------------- # +def test_builder_happy_path_returns_payload() -> None: + """Building a minimal scenario returns a validated SimulationPayload.""" + flow = AsyncFlow() + generator = make_generator() + client = make_client() + server = make_server() + e1, e2, e3 = make_edges() + settings = make_settings() + + payload = ( + flow.add_generator(generator) + .add_client(client) + .add_servers(server) + .add_edges(e1, e2, e3) + .add_simulation_settings(settings) + .build_payload() + ) + + assert isinstance(payload, SimulationPayload) + assert payload.topology_graph.nodes.client.id == client.id + assert len(payload.topology_graph.nodes.servers) == 1 + assert {e.id for e in payload.topology_graph.edges} == { + "gen-to-client", + "client-to-server", + "server-to-client", + } + + +def test_add_methods_return_self_for_chaining() -> None: + """Every add_* method returns `self` to support fluent chaining.""" + flow = AsyncFlow() + ret = ( + flow.add_generator(make_generator()) + .add_client(make_client()) + .add_servers(make_server()) + .add_edges(*make_edges()) + .add_simulation_settings(make_settings()) + ) + assert ret is flow + + +def test_add_servers_accepts_multiple_and_keeps_order() -> None: + """Adding multiple servers keeps insertion order.""" + flow = AsyncFlow().add_generator(make_generator()).add_client(make_client()) + s1 = make_server("srv-1") + s2 = make_server("srv-2") + s3 = make_server("srv-3") + + flow.add_servers(s1, s2).add_servers(s3) + e1, e2, e3 = make_edges() + settings = make_settings() + payload = ( + flow.add_edges(e1, e2, e3) + .add_simulation_settings(settings) + .build_payload() + ) + + ids = [srv.id for srv in payload.topology_graph.nodes.servers] + assert ids == ["srv-1", "srv-2", "srv-3"] + + +# --------------------------------------------------------------------------- # +# Negative cases: missing components # +# --------------------------------------------------------------------------- # +def test_build_without_generator_raises() -> None: + """Building without a generator fails with a clear error.""" + flow = AsyncFlow() + flow.add_client(make_client()) + flow.add_servers(make_server()) + flow.add_edges(*make_edges()) + flow.add_simulation_settings(make_settings()) + + with pytest.raises( + ValueError, + match="The generator input must be instantiated before the simulation", + ): + flow.build_payload() + + +def test_build_without_client_raises() -> None: + """Building without a client fails with a clear error.""" + flow = AsyncFlow() + flow.add_generator(make_generator()) + flow.add_servers(make_server()) + flow.add_edges(*make_edges()) + flow.add_simulation_settings(make_settings()) + + with pytest.raises( + ValueError, + match="The client input must be instantiated before the simulation", + ): + flow.build_payload() + + +def test_build_without_servers_raises() -> None: + """Building without servers fails with a clear error.""" + flow = AsyncFlow() + flow.add_generator(make_generator()) + flow.add_client(make_client()) + flow.add_edges(*make_edges()) + flow.add_simulation_settings(make_settings()) + + with pytest.raises( + ValueError, + match="You must instantiate at least one server before the simulation", + ): + flow.build_payload() + + +def test_build_without_edges_raises() -> None: + """Building without edges fails with a clear error.""" + flow = AsyncFlow() + flow.add_generator(make_generator()) + flow.add_client(make_client()) + flow.add_servers(make_server()) + flow.add_simulation_settings(make_settings()) + + with pytest.raises( + ValueError, + match="You must instantiate edges before the simulation", + ): + flow.build_payload() + + +def test_build_without_settings_raises() -> None: + """Building without settings fails with a clear error.""" + flow = AsyncFlow() + flow.add_generator(make_generator()) + flow.add_client(make_client()) + flow.add_servers(make_server()) + flow.add_edges(*make_edges()) + + with pytest.raises( + ValueError, + match="The simulation settings must be instantiated before the simulation", + ): + flow.build_payload() + + +# --------------------------------------------------------------------------- # +# Negative cases: type enforcement in add_* methods # +# --------------------------------------------------------------------------- # +def test_add_generator_rejects_wrong_type() -> None: + """`add_generator` rejects non-RqsGeneratorInput instances.""" + flow = AsyncFlow() + with pytest.raises(TypeError): + flow.add_generator("not-a-generator") # type: ignore[arg-type] + + +def test_add_client_rejects_wrong_type() -> None: + """`add_client` rejects non-Client instances.""" + flow = AsyncFlow() + with pytest.raises(TypeError): + flow.add_client(1234) # type: ignore[arg-type] + + +def test_add_servers_rejects_wrong_type() -> None: + """`add_servers` rejects any non-Server in the varargs.""" + flow = AsyncFlow() + good = make_server() + with pytest.raises(TypeError): + flow.add_servers(good, "not-a-server") # type: ignore[arg-type] + + +def test_add_edges_rejects_wrong_type() -> None: + """`add_edges` rejects any non-Edge in the varargs.""" + flow = AsyncFlow() + good = make_edges()[0] + with pytest.raises(TypeError): + flow.add_edges(good, 3.14) # type: ignore[arg-type] + + +def test_add_settings_rejects_wrong_type() -> None: + """`add_simulation_settings` rejects non-SimulationSettings instances.""" + flow = AsyncFlow() + with pytest.raises(TypeError): + flow.add_simulation_settings({"total_simulation_time": 1.0}) # type: ignore[arg-type]