1+ from profile import Profile
12from unittest .mock import MagicMock
23
34import numpy
910 ProfileGenerationMode ,
1011 ProfileGenerator ,
1112 SweepProfileGenerator ,
12- profile_generator ,
1313)
1414from guidellm .scheduler import LoadGenerationMode
1515
1616# Fixed Rate Profile Generator
1717
1818
1919def test_fixed_rate_profile_generator_creation ():
20- rates = [1 ]
20+ rates = [1.0 ]
2121 load_gen_mode = LoadGenerationMode .CONSTANT
22- profile_generator = ProfileGenerator .create (
22+ test_profile_generator = ProfileGenerator .create (
2323 ProfileGenerationMode .FIXED_RATE ,
2424 ** ({"rates" : rates , "load_gen_mode" : load_gen_mode }),
2525 )
26- assert isinstance (profile_generator , FixedRateProfileGenerator )
27- assert profile_generator ._rates == rates
28- assert profile_generator ._load_gen_mode . name == load_gen_mode . name
29- assert profile_generator ._rate_index == 0
26+ assert isinstance (test_profile_generator , FixedRateProfileGenerator )
27+ assert test_profile_generator ._rates == rates
28+ assert test_profile_generator ._load_gen_mode == load_gen_mode
29+ assert test_profile_generator ._rate_index == 0
3030
3131
3232def test_synchronous_mode_rate_list_error ():
33- rates = [1 ]
33+ rates = [1.0 ]
3434 load_gen_mode = LoadGenerationMode .SYNCHRONOUS
3535 with pytest .raises (
3636 ValueError , match = "custom rates are not supported in synchronous mode"
@@ -42,69 +42,75 @@ def test_synchronous_mode_rate_list_error():
4242
4343
4444def test_next_with_multiple_rates ():
45- rates = [1 , 2 ]
45+ rates = [1.0 , 2.0 ]
4646 load_gen_mode = LoadGenerationMode .CONSTANT
47- profile_generator = ProfileGenerator .create (
47+ test_profile_generator = ProfileGenerator .create (
4848 ProfileGenerationMode .FIXED_RATE ,
4949 ** ({"rates" : rates , "load_gen_mode" : load_gen_mode }),
5050 )
5151 mock_report = MagicMock (spec = TextGenerationBenchmarkReport )
52- for rates in rates :
53- current_profile = profile_generator .next (mock_report )
54- assert current_profile .load_gen_rate == rates
55- assert current_profile .load_gen_mode .name == LoadGenerationMode .CONSTANT .name
56- assert profile_generator .next (mock_report ) == None
52+ for rate in rates :
53+ current_profile = test_profile_generator .next (mock_report )
54+ assert current_profile is not None
55+ assert current_profile .load_gen_rate == rate
56+ assert current_profile .load_gen_mode == LoadGenerationMode .CONSTANT
57+ assert test_profile_generator .next (mock_report ) is None
5758
5859
5960def test_next_with_sync_mode ():
6061 load_gen_mode = LoadGenerationMode .SYNCHRONOUS
61- profile_generator = ProfileGenerator .create (
62+ test_profile_generator = ProfileGenerator .create (
6263 ProfileGenerationMode .FIXED_RATE , ** ({"load_gen_mode" : load_gen_mode })
6364 )
6465 mock_report = MagicMock (spec = TextGenerationBenchmarkReport )
65- current_profile = profile_generator .next (mock_report )
66- assert current_profile .load_gen_rate == None
67- assert current_profile .load_gen_mode .name == LoadGenerationMode .SYNCHRONOUS .name
68- assert profile_generator .next (mock_report ) == None
66+ current_profile = test_profile_generator .next (mock_report )
67+ assert current_profile is not None
68+ assert current_profile .load_gen_rate is None
69+ assert current_profile .load_gen_mode == LoadGenerationMode .SYNCHRONOUS
70+ assert test_profile_generator .next (mock_report ) is None
6971
7072
7173# Sweep Profile Generator
7274
7375
7476def test_sweep_profile_generator_creation ():
75- profile_generator = ProfileGenerator .create (ProfileGenerationMode .SWEEP , ** ({}))
76- assert isinstance (profile_generator , SweepProfileGenerator )
77- assert profile_generator ._sync_run == False
78- assert profile_generator ._max_found == False
79- assert profile_generator ._pending_rates == None
80- assert profile_generator ._pending_rates == None
77+ test_profile_generator = ProfileGenerator .create (
78+ ProfileGenerationMode .SWEEP , ** ({})
79+ )
80+ assert isinstance (test_profile_generator , SweepProfileGenerator )
81+ assert not test_profile_generator ._sync_run
82+ assert not test_profile_generator ._max_found
83+ assert test_profile_generator ._pending_rates is None
84+ assert test_profile_generator ._pending_rates is None
8185
8286
8387def test_first_profile_is_synchronous ():
84- profile_generator = ProfileGenerator .create (ProfileGenerationMode .SWEEP )
88+ test_profile_generator = ProfileGenerator .create (ProfileGenerationMode .SWEEP )
8589 mock_report = MagicMock (spec = TextGenerationBenchmarkReport )
86- profile = profile_generator .next (mock_report )
87- assert profile .load_gen_rate == None
88- assert profile .load_gen_mode .name == LoadGenerationMode .SYNCHRONOUS .name
90+ profile = test_profile_generator .next (mock_report )
91+ assert profile is not None
92+ assert profile .load_gen_rate is None
93+ assert profile .load_gen_mode == LoadGenerationMode .SYNCHRONOUS
8994
9095
9196def test_rate_doubles ():
92- profile_generator = ProfileGenerator .create (ProfileGenerationMode .SWEEP )
97+ test_profile_generator = ProfileGenerator .create (ProfileGenerationMode .SWEEP )
9398 mock_report = MagicMock (spec = TextGenerationBenchmarkReport )
9499 mock_benchmark = MagicMock (spec = TextGenerationBenchmark )
95100 mock_benchmark .overloaded = False
96101 mock_benchmark .rate = 2.0
97102 mock_benchmark .request_rate = 2.0
98103 benchmarks = [mock_benchmark ]
99104 mock_report .benchmarks = benchmarks
100- profile = profile_generator .next (mock_report )
105+ test_profile_generator .next (mock_report )
101106
102- profile = profile_generator .next (mock_report )
107+ profile = test_profile_generator .next (mock_report )
108+ assert profile is not None
103109 assert profile .load_gen_rate == 4.0
104110
105111
106112def test_max_found ():
107- profile_generator = ProfileGenerator .create (ProfileGenerationMode .SWEEP )
113+ test_profile_generator = ProfileGenerator .create (ProfileGenerationMode .SWEEP )
108114 mock_report = MagicMock (spec = TextGenerationBenchmarkReport )
109115 mock_benchmark = MagicMock (spec = TextGenerationBenchmark )
110116 mock_benchmark .overloaded = False
@@ -117,15 +123,16 @@ def test_max_found():
117123 benchmarks = [mock_benchmark , mock_overloaded_benchmark ]
118124 mock_report .benchmarks = benchmarks
119125
120- profile_generator .next (mock_report )
121- profile = profile_generator .next (mock_report )
126+ test_profile_generator .next (mock_report )
127+ profile = test_profile_generator .next (mock_report )
128+ assert profile is not None
122129
123130 # if benchmark wasn't overloaded, rates would have doubled to 8
124131 assert profile .load_gen_rate == 2.0
125132
126133
127134def test_pending_rates ():
128- profile_generator = ProfileGenerator .create (ProfileGenerationMode .SWEEP )
135+ test_profile_generator = ProfileGenerator .create (ProfileGenerationMode .SWEEP )
129136 mock_report = MagicMock (spec = TextGenerationBenchmarkReport )
130137 mock_benchmark = MagicMock (spec = TextGenerationBenchmark )
131138 mock_benchmark .overloaded = False
@@ -137,7 +144,8 @@ def test_pending_rates():
137144 mock_overloaded_benchmark .request_rate = 8.0
138145 benchmarks = [mock_benchmark , mock_overloaded_benchmark ]
139146 mock_report .benchmarks = benchmarks
140- profile = profile_generator .next (mock_report )
147+ profile = test_profile_generator .next (mock_report )
148+ assert profile is not None
141149 for expected_rate in numpy .linspace (2.0 , 8.0 , 10 ):
142- profile = profile_generator .next (mock_report )
150+ profile = test_profile_generator .next (mock_report )
143151 assert profile .load_gen_rate == expected_rate
0 commit comments