@@ -732,7 +732,7 @@ class IncrementalProfile(ThroughputProfile):
732732 increment_factor : PositiveFloat = Field (
733733 description = "Factor by which to increase the rate over time" ,
734734 )
735- rate_limit : PositiveInt | None = Field (
735+ rate_limit : PositiveFloat | None = Field (
736736 default = None ,
737737 description = "Maximum rate cap after which load remains constant" ,
738738 )
@@ -750,48 +750,47 @@ def resolve_args(
750750 rate_type : str ,
751751 rate : list [float ] | None ,
752752 random_seed : int ,
753- start_rate : float | None = None ,
754753 increment_factor : float | None = None ,
755- rate_limit : int | None = None ,
754+ rate_limit : float | None = None ,
756755 ** kwargs : Any ,
757756 ) -> dict [str , Any ]:
758757 """
759758 Resolve arguments for incremental profile construction.
760759
761760 :param rate_type: Profile type identifier
762- :param rate: Rate parameter (must be None for incremental)
761+ :param rate: Start rate in requests per second
763762 :param random_seed: Random seed (ignored)
764- :param start_rate: Initial rate in requests per second
765763 :param increment_factor: Rate increase factor over time
766764 :param rate_limit: Optional maximum rate cap
767765 :param kwargs: Additional arguments passed through unchanged
768766 :return: Resolved arguments dictionary
769- :raises ValueError: If rate is not None or required params missing
767+ :raises ValueError: If required params missing or invalid
770768 """
771769 _ = random_seed # unused
772770 if rate_type != "incremental" :
773771 raise ValueError ("Rate type must be 'incremental' for incremental profile" )
774772
775- if rate is not None :
773+ # For incremental profile, rate is used as start_rate
774+ start_rate = rate [0 ] if isinstance (rate , list ) and rate else rate
775+ if start_rate is None :
776776 raise ValueError (
777- "rate does not apply to incremental profile, it must be set to None "
778- "or not set at all. Use start_rate and increment_factor instead."
777+ "rate is required for incremental profile (used as start_rate)"
779778 )
780779
781- if start_rate is None :
782- raise ValueError ("start_rate is required for incremental profile" )
783-
784780 if increment_factor is None :
785- raise ValueError ("increment_factor is required for incremental profile" )
781+ raise ValueError (
782+ "increment_factor is required for incremental profile. "
783+ "Pass it via --profile-kwargs '{\" increment_factor\" : <value>}'"
784+ )
786785
787786 if start_rate <= 0 :
788- raise ValueError ("start_rate must be a positive number" )
787+ raise ValueError ("rate ( start_rate) must be a positive number" )
789788
790789 if increment_factor <= 0 :
791790 raise ValueError ("increment_factor must be a positive number" )
792791
793792 if rate_limit is not None and rate_limit <= 0 :
794- raise ValueError ("rate_limit must be a positive integer " )
793+ raise ValueError ("rate_limit must be a positive number " )
795794
796795 kwargs ["start_rate" ] = start_rate
797796 kwargs ["increment_factor" ] = increment_factor
0 commit comments