[FIX] tests, base: gc filestore at the end of a tests
During the tests, many attachment can be created and unlink. They will be eventually cleaned up if the cron is ran but this is usually not the case during tests. The disk usage can increase to reach more than one 1 Go when design theme is installed. This can lead to unnecessary big database dumps. This is also a problem on odoosh where the filestore max size is limited to 1Go. The gc should be quite fast if nothing was changed since it will just check the content of an empty directory. The method is made accessible in the test case in order to be able to gc on demand. This may be useful in the test_01_crawl_every_themes that can generate around 600~ Mo of attachment in the loop. X-original-commit: 187309f5a39f8fef9b07959fd73475fd6732efb3 Part-of: odoo/odoo#102502
This commit is contained in:
@@ -809,9 +809,23 @@ class TransactionCase(BaseCase):
|
||||
env: api.Environment = None
|
||||
cr: Cursor = None
|
||||
|
||||
|
||||
@classmethod
|
||||
def _gc_filestore(cls):
|
||||
# attachment can be created or unlink during the tests.
|
||||
# they can addup during test and take some disc space.
|
||||
# since cron are not running during tests, we need to gc manually
|
||||
# We need to check the status of the file system outside of the test cursor
|
||||
with odoo.registry(get_db_name()).cursor() as cr:
|
||||
gc_env = api.Environment(cr, odoo.SUPERUSER_ID, {})
|
||||
gc_env['ir.attachment']._gc_file_store_unsafe()
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super().setUpClass()
|
||||
|
||||
cls.addClassCleanup(cls._gc_filestore)
|
||||
|
||||
cls.registry = odoo.registry(get_db_name())
|
||||
cls.addClassCleanup(cls.registry.reset_changes)
|
||||
cls.addClassCleanup(cls.registry.clear_caches)
|
||||
|
||||
Reference in New Issue
Block a user