server-tools/auditlog/tests/test_autovacuum.py

45 lines
1.6 KiB
Python

# Copyright 2016 ABF OSIELL <https://osiell.com>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
import time
from odoo.tests.common import TransactionCase
class TestAuditlogAutovacuum(TransactionCase):
def setUp(self):
super(TestAuditlogAutovacuum, self).setUp()
self.groups_model_id = self.env.ref("base.model_res_groups").id
self.groups_rule = self.env["auditlog.rule"].create(
{
"name": "testrule for groups",
"model_id": self.groups_model_id,
"log_read": True,
"log_create": True,
"log_write": True,
"log_unlink": True,
"state": "subscribed",
"log_type": "full",
}
)
def tearDown(self):
self.groups_rule.unlink()
super(TestAuditlogAutovacuum, self).tearDown()
def test_autovacuum(self):
log_model = self.env["auditlog.log"]
autovacuum_model = self.env["auditlog.autovacuum"]
group = self.env["res.groups"].create({"name": "testgroup1"})
nb_logs = log_model.search_count(
[("model_id", "=", self.groups_model_id), ("res_id", "=", group.id)]
)
self.assertGreater(nb_logs, 0)
# Milliseconds are ignored by autovacuum, waiting 1s ensure that
# the logs generated will be processed by the vacuum
time.sleep(1)
autovacuum_model.autovacuum(days=0)
nb_logs = log_model.search_count(
[("model_id", "=", self.groups_model_id), ("res_id", "=", group.id)]
)
self.assertEqual(nb_logs, 0)