1313 push_notification , drain_notifications , REDIS_KEY_PREFIX ,
1414 process_notifications , finalize_stack , check_timeout ,
1515 discover_cameras , StackingSupervisor )
16+ from banzai .scheduling import process_subframe
1617from banzai .main import SubframeListener
1718
1819pytestmark = pytest .mark .smart_stacking
@@ -48,7 +49,6 @@ def mock_redis():
4849# Database operations
4950# ---------------------------------------------------------------------------
5051
51- @pytest .mark .smart_stacking
5252class TestDBOperations :
5353
5454 def test_insert_and_query (self , db_address ):
@@ -100,7 +100,6 @@ def test_update_stack_frame_filepath(self, db_address):
100100# Status transitions
101101# ---------------------------------------------------------------------------
102102
103- @pytest .mark .smart_stacking
104103class TestStatusTransitions :
105104
106105 def test_status_active_to_complete (self , db_address ):
@@ -134,7 +133,6 @@ def test_status_active_to_timeout(self, db_address):
134133# Timeout
135134# ---------------------------------------------------------------------------
136135
137- @pytest .mark .smart_stacking
138136class TestTimeout :
139137
140138 def test_timeout_finalizes_stale_stacks (self , db_address ):
@@ -154,7 +152,6 @@ def test_timeout_finalizes_stale_stacks(self, db_address):
154152# Redis notifications
155153# ---------------------------------------------------------------------------
156154
157- @pytest .mark .smart_stacking
158155class TestRedisNotifications :
159156
160157 def test_push_notification (self , mock_redis ):
@@ -175,7 +172,6 @@ def test_drain_for_camera(self, mock_redis):
175172# Multiple concurrent stacks
176173# ---------------------------------------------------------------------------
177174
178- @pytest .mark .smart_stacking
179175class TestConcurrentStacks :
180176
181177 def test_concurrent_stacks_same_camera (self , db_address ):
@@ -203,7 +199,6 @@ def test_concurrent_stacks_same_camera(self, db_address):
203199# check_stack_complete
204200# ---------------------------------------------------------------------------
205201
206- @pytest .mark .smart_stacking
207202class TestCheckStackComplete :
208203
209204 @staticmethod
@@ -237,7 +232,6 @@ def test_empty_frames(self):
237232# Retention / cleanup
238233# ---------------------------------------------------------------------------
239234
240- @pytest .mark .smart_stacking
241235class TestRetention :
242236
243237 def test_cleanup_old_records (self , db_address ):
@@ -276,7 +270,6 @@ def test_cleanup_preserves_recent(self, db_address):
276270# SubframeListener on_message
277271# ---------------------------------------------------------------------------
278272
279- @pytest .mark .smart_stacking
280273class TestSubframeListenerOnMessage :
281274 """on_message dispatches to Celery; no FITS I/O or DB work here."""
282275
@@ -320,7 +313,6 @@ def test_on_message_invalid_no_dispatch(self, mock_task):
320313# process_subframe Celery task
321314# ---------------------------------------------------------------------------
322315
323- @pytest .mark .smart_stacking
324316class TestProcessSubframe :
325317 """Test the Celery task that does the actual subframe processing."""
326318
@@ -352,7 +344,6 @@ def _make_mock_image(output_dir='/data/processed', output_filename='frame-e09.fi
352344 ])
353345 @patch ('banzai.scheduling.stage_utils.run_pipeline_stages' )
354346 def test_process_subframe (self , mock_run_stages , last_frame_val , expected_is_last , db_address , mock_redis ):
355- from banzai .scheduling import process_subframe
356347
357348 mock_image = self ._make_mock_image ()
358349 mock_run_stages .return_value = [mock_image ]
@@ -385,7 +376,6 @@ def test_process_subframe(self, mock_run_stages, last_frame_val, expected_is_las
385376# Supervisor
386377# ---------------------------------------------------------------------------
387378
388- @pytest .mark .smart_stacking
389379class TestSupervisor :
390380
391381 def test_discover_cameras (self , db_address ):
0 commit comments