benches.py 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. from __future__ import absolute_import, unicode_literals
  2. from django.test import TestCase
  3. from django.urls import reverse
  4. from django.utils import timezone
  5. from wagtail.core.models import Page, Site
  6. from wagtail.tests.benchmark import Benchmark
  7. from wagtail.tests.testapp.models import SingleEventPage, StreamPage
  8. from wagtail.tests.utils import WagtailTestUtils
  9. class BenchPageExplorerWith50LargePages(Benchmark, WagtailTestUtils, TestCase):
  10. """
  11. Creates 50 pages with large body content and benches the explorer.
  12. This will be slow if the body content is being loaded from the database.
  13. """
  14. def setUp(self):
  15. self.root_page = Page.objects.get(id=1)
  16. # Add a site so the URLs render correctly
  17. Site.objects.create(is_default_site=True, root_page=self.root_page)
  18. # Create a large piece of body text
  19. body = '[' + ','.join(['{"type": "text", "value": "%s"}' % ('foo' * 2000)] * 100) + ']'
  20. # Create 50 simple pages with long content fields
  21. for i in range(50):
  22. self.root_page.add_child(instance=StreamPage(
  23. title="Page {}".format(i + 1),
  24. slug=str(i + 1),
  25. body=body,
  26. ))
  27. self.login()
  28. def bench(self):
  29. response = self.client.get(reverse('wagtailadmin_explore', args=(self.root_page.id, )))
  30. # Check the response was good
  31. self.assertEqual(response.status_code, 200)
  32. # Check every single page was rendered
  33. self.assertContains(response, "Page 1")
  34. self.assertContains(response, "Page 49")
  35. class BenchPageExplorerWithCustomURLPages(Benchmark, WagtailTestUtils, TestCase):
  36. """
  37. Creates 50 pages of a class with a customised the .url property.
  38. This will check how long it takes to generate URLs for all of these
  39. pages.
  40. """
  41. def setUp(self):
  42. self.root_page = Page.objects.get(id=1)
  43. # Add a site so the URLs render correctly
  44. Site.objects.create(is_default_site=True, root_page=self.root_page)
  45. # Create 50 blog pages
  46. for i in range(50):
  47. self.root_page.add_child(instance=SingleEventPage(
  48. title="Event {}".format(i + 1),
  49. slug=str(i + 1),
  50. date_from=timezone.now(),
  51. audience="public",
  52. location="reykjavik",
  53. cost="cost",
  54. ))
  55. self.login()
  56. def bench(self):
  57. response = self.client.get(reverse('wagtailadmin_explore', args=(self.root_page.id, )))
  58. # Check the response was good
  59. self.assertEqual(response.status_code, 200)
  60. # Check every single page was rendered
  61. self.assertContains(response, "Event 1")
  62. self.assertContains(response, "Event 49")
  63. # Check the URLs were rendered correctly
  64. self.assertContains(response, 'a href="http:///49/pointless-suffix/"')