[IMP] test_performance: add test of reversed BaseModel

task-2687953

Part-of: odoo/odoo#79622
This commit is contained in:
Rémy Voet (ryv)
2022-01-12 10:17:35 +00:00
parent 10a3df3511
commit 7968030e62
2 changed files with 66 additions and 1 deletions
+51 -1
View File
@@ -3,7 +3,7 @@
from odoo import api, models, Command
from odoo.addons.base.tests.common import SavepointCaseWithUserDemo
from odoo.tools import mute_logger
from odoo.tools import mute_logger, unique
from odoo.exceptions import AccessError
@@ -382,6 +382,56 @@ class TestAPI(SavepointCaseWithUserDemo):
self.assertIn('company_type', partner1._cache)
self.assertNotIn('company_type', partner2._cache)
def test_60_reversed(self):
records = self.partners
self.assertGreater(len(records), 1)
# check order
self.assertEqual(list(reversed(records)), list(reversed(list(records))))
first = next(iter(records))
last = next(reversed(records))
self.assertEqual(first, records[0])
self.assertEqual(last, records[-1])
# check prefetching
prefetch_ids = records.ids
reversed_ids = [record.id for record in reversed(records)]
self.assertEqual(list(first._prefetch_ids), prefetch_ids)
self.assertEqual(list(last._prefetch_ids), reversed_ids)
self.assertEqual(list(reversed(first._prefetch_ids)), reversed_ids)
self.assertEqual(list(reversed(last._prefetch_ids)), prefetch_ids)
# check prefetching across many2one field
prefetch_ids = records.state_id.ids
reversed_ids = list(unique(
record.state_id.id
for record in reversed(records)
if record.state_id
))
self.assertEqual(list(first.state_id._prefetch_ids), prefetch_ids)
self.assertEqual(list(last.state_id._prefetch_ids), reversed_ids)
self.assertEqual(list(reversed(first.state_id._prefetch_ids)), reversed_ids)
self.assertEqual(list(reversed(last.state_id._prefetch_ids)), prefetch_ids)
# check prefetching across x2many field
prefetch_ids = records.child_ids.ids
reversed_ids = list(unique(
child.id
for record in reversed(records)
for child in record.child_ids
))
self.assertEqual(list(first.child_ids._prefetch_ids), prefetch_ids)
self.assertEqual(list(last.child_ids._prefetch_ids), reversed_ids)
self.assertEqual(list(reversed(first.child_ids._prefetch_ids)), reversed_ids)
self.assertEqual(list(reversed(last.child_ids._prefetch_ids)), prefetch_ids)
@mute_logger('odoo.models')
def test_70_one(self):
""" Check method one(). """
@@ -66,6 +66,21 @@ class TestPerformance(SavepointCaseWithUserDemo):
for record in records:
record.value_pc
@users('__system__', 'demo')
@warmup
def test_reversed_read_base(self):
records = self.env['test_performance.base'].search([])
self.assertEqual(len(records), 5)
with self.assertQueryCount(__system__=5, demo=5):
# without cache
for record in reversed(records):
record.partner_id
with self.assertQueryCount(__system__=5, demo=5):
# without cache
for record in reversed(records):
record.value_ctx
@warmup
def test_read_base_depends_context(self):
""" Compute in batch even when in cache in another context. """