summaryrefslogtreecommitdiff
path: root/addons/test_mass_mailing/tests/test_performance.py
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/test_mass_mailing/tests/test_performance.py
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/test_mass_mailing/tests/test_performance.py')
-rw-r--r--addons/test_mass_mailing/tests/test_performance.py98
1 files changed, 98 insertions, 0 deletions
diff --git a/addons/test_mass_mailing/tests/test_performance.py b/addons/test_mass_mailing/tests/test_performance.py
new file mode 100644
index 00000000..680eacf5
--- /dev/null
+++ b/addons/test_mass_mailing/tests/test_performance.py
@@ -0,0 +1,98 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo.addons.mail.tests.common import mail_new_test_user
+from odoo.tests.common import TransactionCase, users, warmup
+from odoo.tests import tagged
+from odoo.tools import mute_logger
+
+
+class TestMassMailPerformanceBase(TransactionCase):
+
+ def setUp(self):
+ super(TestMassMailPerformanceBase, self).setUp()
+
+ self.user_employee = mail_new_test_user(
+ self.env, login='emp',
+ groups='base.group_user',
+ name='Ernest Employee', notification_type='inbox')
+
+ self.user_marketing = mail_new_test_user(
+ self.env, login='marketing',
+ groups='base.group_user,mass_mailing.group_mass_mailing_user',
+ name='Martial Marketing', signature='--\nMartial')
+
+ # patch registry to simulate a ready environment
+ self.patch(self.env.registry, 'ready', True)
+
+
+@tagged('mail_performance')
+class TestMassMailPerformance(TestMassMailPerformanceBase):
+
+ def setUp(self):
+ super(TestMassMailPerformance, self).setUp()
+ values = [{
+ 'name': 'Recipient %s' % x,
+ 'email_from': 'Recipient <rec.%s@example.com>' % x,
+ } for x in range(0, 50)]
+ self.mm_recs = self.env['mailing.performance'].create(values)
+
+ @users('__system__', 'marketing')
+ @warmup
+ @mute_logger('odoo.addons.mail.models.mail_mail', 'odoo.models.unlink', 'odoo.tests')
+ def test_send_mailing(self):
+ mailing = self.env['mailing.mailing'].create({
+ 'name': 'Test',
+ 'subject': 'Test',
+ 'body_html': '<p>Hello <a role="button" href="https://www.example.com/foo/bar?baz=qux">quux</a><a role="button" href="/unsubscribe_from_list">Unsubscribe</a></p>',
+ 'reply_to_mode': 'email',
+ 'mailing_model_id': self.ref('test_mass_mailing.model_mailing_performance'),
+ 'mailing_domain': [('id', 'in', self.mm_recs.ids)],
+ })
+
+ # runbot needs +51 compared to local
+ with self.assertQueryCount(__system__=1715, marketing=1716): # test_mass_mailing_only: 1664 - 1665
+ mailing.action_send_mail()
+
+ self.assertEqual(mailing.sent, 50)
+ self.assertEqual(mailing.delivered, 50)
+
+
+@tagged('mail_performance')
+class TestMassMailBlPerformance(TestMassMailPerformanceBase):
+
+ def setUp(self):
+ """ In this setup we prepare 20 blacklist entries. We therefore add
+ 20 recipients compared to first test in order to have comparable results. """
+ super(TestMassMailBlPerformance, self).setUp()
+ values = [{
+ 'name': 'Recipient %s' % x,
+ 'email_from': 'Recipient <rec.%s@example.com>' % x,
+ } for x in range(0, 62)]
+ self.mm_recs = self.env['mailing.performance.blacklist'].create(values)
+
+ for x in range(1, 13):
+ self.env['mail.blacklist'].create({
+ 'email': 'rec.%s@example.com' % (x * 5)
+ })
+ self.env['mailing.performance.blacklist'].flush()
+
+ @users('__system__', 'marketing')
+ @warmup
+ @mute_logger('odoo.addons.mail.models.mail_mail', 'odoo.models.unlink', 'odoo.tests')
+ def test_send_mailing_w_bl(self):
+ mailing = self.env['mailing.mailing'].create({
+ 'name': 'Test',
+ 'subject': 'Test',
+ 'body_html': '<p>Hello <a role="button" href="https://www.example.com/foo/bar?baz=qux">quux</a><a role="button" href="/unsubscribe_from_list">Unsubscribe</a></p>',
+ 'reply_to_mode': 'email',
+ 'mailing_model_id': self.ref('test_mass_mailing.model_mailing_performance_blacklist'),
+ 'mailing_domain': [('id', 'in', self.mm_recs.ids)],
+ })
+
+ # runbot needs +63 compared to local
+ with self.assertQueryCount(__system__=1992, marketing=1993): # test_mass_mailing only: 1929 - 1930
+ mailing.action_send_mail()
+
+ self.assertEqual(mailing.sent, 50)
+ self.assertEqual(mailing.delivered, 50)