|
2 | 2 |
|
3 | 3 | import threading |
4 | 4 | import time |
5 | | -from unittest.mock import patch |
6 | 5 |
|
7 | 6 | from laygo import ErrorHandler |
8 | 7 | from laygo import PipelineContext |
9 | 8 | from laygo import ThreadedTransformer |
10 | | -from laygo import Transformer |
11 | 9 | from laygo.transformers.threaded import createThreadedTransformer |
12 | 10 | from laygo.transformers.transformer import createTransformer |
13 | 11 |
|
@@ -170,48 +168,6 @@ def test_unordered_vs_ordered_same_elements(self): |
170 | 168 | assert ordered_result == [x * 2 for x in data] # Ordered maintains sequence |
171 | 169 |
|
172 | 170 |
|
173 | | -class TestThreadedTransformerPerformance: |
174 | | - """Test performance aspects of parallel transformer.""" |
175 | | - |
176 | | - def test_concurrent_performance_improvement(self): |
177 | | - """Test that concurrent execution improves performance for slow operations.""" |
178 | | - |
179 | | - def slow_operation(x: int) -> int: |
180 | | - time.sleep(0.01) # 10ms delay |
181 | | - return x * 2 |
182 | | - |
183 | | - data = list(range(8)) # 8 items, 80ms total sequential time |
184 | | - |
185 | | - # Sequential execution |
186 | | - start_time = time.time() |
187 | | - sequential = Transformer[int, int](chunk_size=4) |
188 | | - seq_result = list(sequential.map(slow_operation)(data)) |
189 | | - seq_time = time.time() - start_time |
190 | | - |
191 | | - # Concurrent execution |
192 | | - start_time = time.time() |
193 | | - concurrent = ThreadedTransformer[int, int](max_workers=4, chunk_size=4) |
194 | | - conc_result = list(concurrent.map(slow_operation)(data)) |
195 | | - conc_time = time.time() - start_time |
196 | | - |
197 | | - assert seq_result == conc_result |
198 | | - assert conc_time < seq_time * 0.8 # At least 20% faster |
199 | | - |
200 | | - def test_thread_pool_management(self): |
201 | | - """Test that thread pool is properly created and cleaned up.""" |
202 | | - with patch("laygo.transformers.threaded.ThreadPoolExecutor") as mock_executor: |
203 | | - mock_executor.return_value.__enter__.return_value = mock_executor.return_value |
204 | | - mock_executor.return_value.__exit__.return_value = None |
205 | | - mock_executor.return_value.submit.return_value.result.return_value = [2, 4] |
206 | | - |
207 | | - transformer = ThreadedTransformer[int, int](max_workers=2, chunk_size=2) |
208 | | - list(transformer([1, 2])) |
209 | | - |
210 | | - mock_executor.assert_called_with(max_workers=2) |
211 | | - mock_executor.return_value.__enter__.assert_called_once() |
212 | | - mock_executor.return_value.__exit__.assert_called_once() |
213 | | - |
214 | | - |
215 | 171 | class TestThreadedTransformerChunking: |
216 | 172 | """Test chunking behavior with concurrent execution.""" |
217 | 173 |
|
|
0 commit comments