From e649d2d782f744f7f610592fc7b0845564d5c2cb Mon Sep 17 00:00:00 2001 From: Troy Sankey Date: Wed, 24 Jan 2018 15:53:16 -0500 Subject: [PATCH] Shim query count assertions due to added SAVEPOINTs --- .../course_api/blocks/tests/test_api.py | 16 +++++++- .../grades/tests/test_course_grade_factory.py | 41 +++++++++++++++++-- 2 files changed, 51 insertions(+), 6 deletions(-) diff --git a/lms/djangoapps/course_api/blocks/tests/test_api.py b/lms/djangoapps/course_api/blocks/tests/test_api.py index 3c3d3eef08..913bc1a085 100644 --- a/lms/djangoapps/course_api/blocks/tests/test_api.py +++ b/lms/djangoapps/course_api/blocks/tests/test_api.py @@ -5,8 +5,8 @@ Tests for Blocks api.py from itertools import product import ddt +import django from django.test.client import RequestFactory - from openedx.core.djangoapps.content.block_structure.api import clear_course_from_cache from openedx.core.djangoapps.content.block_structure.config import STORAGE_BACKING_FOR_CACHE, waffle from student.tests.factories import UserFactory @@ -161,8 +161,20 @@ class TestGetBlocksQueryCounts(SharedModuleStoreTestCase): with waffle().override(STORAGE_BACKING_FOR_CACHE, active=with_storage_backing): course = self._create_course(store_type) clear_course_from_cache(course.id) + + if with_storage_backing: + # TODO: Remove Django 1.11 upgrade shim + # SHIM: Django 1.11 results in a few more SAVEPOINTs due to: + # https://github.com/django/django/commit/d44afd88#diff-5b0dda5eb9a242c15879dc9cd2121379L485 + if django.VERSION >= (1, 11): + num_sql_queries = 16 + else: + num_sql_queries = 14 + else: + num_sql_queries = 6 + self._get_blocks( course, expected_mongo_queries, - expected_sql_queries=14 if with_storage_backing else 6, + expected_sql_queries=num_sql_queries, ) diff --git a/lms/djangoapps/grades/tests/test_course_grade_factory.py b/lms/djangoapps/grades/tests/test_course_grade_factory.py index cc2e8c683a..c762899bb1 100644 --- a/lms/djangoapps/grades/tests/test_course_grade_factory.py +++ b/lms/djangoapps/grades/tests/test_course_grade_factory.py @@ -2,6 +2,7 @@ import itertools from nose.plugins.attrib import attr import ddt +import django from courseware.access import has_access from django.conf import settings from lms.djangoapps.grades.config.tests.utils import persistent_grades_feature_flags @@ -94,25 +95,57 @@ class TestCourseGradeFactory(GradeTestBase): with self.assertNumQueries(2), mock_get_score(1, 2): _assert_read(expected_pass=False, expected_percent=0) # start off with grade of 0 - with self.assertNumQueries(29), mock_get_score(1, 2): + # TODO: Remove Django 1.11 upgrade shim + # SHIM: Django 1.11 results in a few more SAVEPOINTs due to: + # https://github.com/django/django/commit/d44afd88#diff-5b0dda5eb9a242c15879dc9cd2121379L485 + if django.VERSION >= (1, 11): + num_queries = 37 + else: + num_queries = 29 + + with self.assertNumQueries(num_queries), mock_get_score(1, 2): grade_factory.update(self.request.user, self.course, force_update_subsections=True) with self.assertNumQueries(2): _assert_read(expected_pass=True, expected_percent=0.5) # updated to grade of .5 - with self.assertNumQueries(4), mock_get_score(1, 4): + # TODO: Remove Django 1.11 upgrade shim + # SHIM: Django 1.11 results in a few more SAVEPOINTs due to: + # https://github.com/django/django/commit/d44afd88#diff-5b0dda5eb9a242c15879dc9cd2121379L485 + if django.VERSION >= (1, 11): + num_queries = 6 + else: + num_queries = 4 + + with self.assertNumQueries(num_queries), mock_get_score(1, 4): grade_factory.update(self.request.user, self.course, force_update_subsections=False) with self.assertNumQueries(2): _assert_read(expected_pass=True, expected_percent=0.5) # NOT updated to grade of .25 - with self.assertNumQueries(12), mock_get_score(2, 2): + # TODO: Remove Django 1.11 upgrade shim + # SHIM: Django 1.11 results in a few more SAVEPOINTs due to: + # https://github.com/django/django/commit/d44afd88#diff-5b0dda5eb9a242c15879dc9cd2121379L485 + if django.VERSION >= (1, 11): + num_queries = 20 + else: + num_queries = 12 + + with self.assertNumQueries(num_queries), mock_get_score(2, 2): grade_factory.update(self.request.user, self.course, force_update_subsections=True) with self.assertNumQueries(2): _assert_read(expected_pass=True, expected_percent=1.0) # updated to grade of 1.0 - with self.assertNumQueries(12), mock_get_score(0, 0): # the subsection now is worth zero + # TODO: Remove Django 1.11 upgrade shim + # SHIM: Django 1.11 results in a few more SAVEPOINTs due to: + # https://github.com/django/django/commit/d44afd88#diff-5b0dda5eb9a242c15879dc9cd2121379L485 + if django.VERSION >= (1, 11): + num_queries = 20 + else: + num_queries = 12 + + with self.assertNumQueries(num_queries), mock_get_score(0, 0): # the subsection now is worth zero grade_factory.update(self.request.user, self.course, force_update_subsections=True) with self.assertNumQueries(2):