diff --git a/tests/v1/metrics/test_stats.py b/tests/v1/metrics/test_stats.py new file mode 100644 index 0000000000000..3a25c69c5a2f4 --- /dev/null +++ b/tests/v1/metrics/test_stats.py @@ -0,0 +1,21 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright contributors to the vLLM project +from vllm.v1.metrics.stats import IterationStats + + +def test_iteration_stats_repr(): + iteration_stats = IterationStats() + iteration_stats.iteration_timestamp = 0 + expected_repr = ("IterationStats(" + "iteration_timestamp=0, " + "num_generation_tokens=0, " + "num_prompt_tokens=0, " + "num_preempted_reqs=0, " + "finished_requests=[], " + "max_num_generation_tokens_iter=[], " + "n_params_iter=[], " + "time_to_first_tokens_iter=[], " + "inter_token_latencies_iter=[], " + "waiting_lora_adapters={}, " + "running_lora_adapters={})") + assert repr(iteration_stats) == expected_repr diff --git a/vllm/v1/metrics/stats.py b/vllm/v1/metrics/stats.py index a0d571318ba0d..489b8da5c04e5 100644 --- a/vllm/v1/metrics/stats.py +++ b/vllm/v1/metrics/stats.py @@ -111,6 +111,11 @@ class IterationStats: self.waiting_lora_adapters: dict[str, int] = {} self.running_lora_adapters: dict[str, int] = {} + def __repr__(self) -> str: + field_to_value_str = ", ".join(f"{k}={v}" + for k, v in vars(self).items()) + return f"{self.__class__.__name__}({field_to_value_str})" + def _time_since(self, start: float) -> float: """Calculate an interval relative to this iteration's timestamp.""" return self.iteration_timestamp - start