awx/awx/main/tests/functional/models/test_execution_environment.py
Alan Rominger b70793db5c
Consolidate cleanup actions under new ansible-runner worker cleanup command (#11160)
* Primary development of integrating runner cleanup command

* Fixup image cleanup signals and their tests

* Use alphabetical sort to solve the cluster coordination problem

* Update test to new pattern

* Clarity edits to interface with ansible-runner cleanup method

* Another change corresponding to ansible-runner CLI updates

* Fix incomplete implementation of receptor remote cleanup

* Share receptor utils code between worker_info and cleanup

* Complete task logging from calling runner cleanup command

* Wrap up unit tests and some contract changes that fall out of those

* Fix bug in CLI construction

* Fix queryset filter bug
2021-10-05 16:32:03 -04:00

47 lines
1.7 KiB
Python

import pytest
from awx.main.models.execution_environments import ExecutionEnvironment
@pytest.fixture
def cleanup_patch(mocker):
return mocker.patch('awx.main.signals.handle_removed_image')
@pytest.mark.django_db
def test_image_unchanged_no_delete_task(cleanup_patch):
"""When an irrelevant EE field is changed, we do not run the image cleanup task"""
execution_environment = ExecutionEnvironment.objects.create(name='test-ee', image='quay.io/foo/bar')
execution_environment.description = 'foobar'
execution_environment.save()
cleanup_patch.delay.assert_not_called()
@pytest.mark.django_db
def test_image_changed_creates_delete_task(cleanup_patch):
execution_environment = ExecutionEnvironment.objects.create(name='test-ee', image='quay.io/foo/bar')
execution_environment.image = 'quay.io/new/image'
execution_environment.save()
cleanup_patch.delay.assert_called_once_with(remove_images=['quay.io/foo/bar'])
@pytest.mark.django_db
def test_image_still_in_use(cleanup_patch):
"""When an image is still in use by another EE, we do not clean it up"""
ExecutionEnvironment.objects.create(name='unrelated-ee', image='quay.io/foo/bar')
execution_environment = ExecutionEnvironment.objects.create(name='test-ee', image='quay.io/foo/bar')
execution_environment.image = 'quay.io/new/image'
execution_environment.save()
cleanup_patch.delay.assert_not_called()
@pytest.mark.django_db
def test_image_deletion_creates_delete_task(cleanup_patch):
execution_environment = ExecutionEnvironment.objects.create(name='test-ee', image='quay.io/foo/bar')
execution_environment.delete()
cleanup_patch.delay.assert_called_once_with(remove_images=['quay.io/foo/bar'])