mirror of
https://pagure.io/fm-orchestrator.git
synced 2026-04-23 18:21:42 +08:00
Transition stale failed builds to the "garbage" state and untag their components
This commit is contained in:
@@ -337,3 +337,42 @@ class TestPoller(unittest.TestCase):
|
||||
|
||||
# Ensure we did *not* process any of the non-waiting builds.
|
||||
self.assertEquals(consumer.incoming.qsize(), 0)
|
||||
|
||||
def test_cleanup_stale_failed_builds(self, create_builder, koji_get_session,
|
||||
global_consumer, dbg):
|
||||
""" Test that one of the two module builds gets to the garbage state when running
|
||||
cleanup_stale_failed_builds.
|
||||
"""
|
||||
module_build_one = models.ModuleBuild.query.get(1)
|
||||
module_build_two = models.ModuleBuild.query.get(2)
|
||||
module_build_one.state = models.BUILD_STATES['failed']
|
||||
module_build_one.time_modified = datetime.utcnow()
|
||||
module_build_two.state = models.BUILD_STATES['failed']
|
||||
module_build_two.time_modified = datetime.utcnow() - timedelta(
|
||||
days=conf.cleanup_failed_builds_time + 1)
|
||||
db.session.add(module_build_one)
|
||||
db.session.add(module_build_two)
|
||||
db.session.commit()
|
||||
db.session.expire(module_build_two)
|
||||
|
||||
consumer = mock.MagicMock()
|
||||
consumer.incoming = queue.Queue()
|
||||
global_consumer.return_value = consumer
|
||||
hub = mock.MagicMock()
|
||||
poller = MBSProducer(hub)
|
||||
|
||||
# Ensure the queue is empty before we start
|
||||
self.assertEquals(consumer.incoming.qsize(), 0)
|
||||
poller.cleanup_stale_failed_builds(conf, db.session)
|
||||
db.session.refresh(module_build_two)
|
||||
# Make sure module_build_two was transitioned to garbage
|
||||
self.assertEqual(module_build_two.state, models.BUILD_STATES['garbage'])
|
||||
state_reason = ('The module was garbage collected since it has failed over {0} day(s) ago'
|
||||
.format(conf.cleanup_failed_builds_time))
|
||||
self.assertEqual(module_build_two.state_reason, state_reason)
|
||||
# Make sure all the components are marked as untagged in the database
|
||||
for component in module_build_two.component_builds:
|
||||
self.assertFalse(component.tagged)
|
||||
self.assertFalse(component.tagged_in_final)
|
||||
# Make sure module_build_one stayed the same
|
||||
self.assertEqual(module_build_one.state, models.BUILD_STATES['failed'])
|
||||
|
||||
Reference in New Issue
Block a user