diff --git a/lms/djangoapps/ccx/tests/test_field_override_performance.py b/lms/djangoapps/ccx/tests/test_field_override_performance.py index a9a6f5f707fe7dd3b0965b368b0b49c028cd0cdf..f2fada59fe71de2e53b3647302fcf1faae006664 100644 --- a/lms/djangoapps/ccx/tests/test_field_override_performance.py +++ b/lms/djangoapps/ccx/tests/test_field_override_performance.py @@ -244,7 +244,7 @@ class TestFieldOverrideMongoPerformance(FieldOverridePerformanceTestCase): __test__ = True # TODO: decrease query count as part of REVO-28 - QUERY_COUNT = 36 + QUERY_COUNT = 32 TEST_DATA = { # (providers, course_width, enable_ccx, view_as_ccx): ( # # of sql queries to default, @@ -273,7 +273,7 @@ class TestFieldOverrideSplitPerformance(FieldOverridePerformanceTestCase): __test__ = True # TODO: decrease query count as part of REVO-28 - QUERY_COUNT = 36 + QUERY_COUNT = 32 TEST_DATA = { ('no_overrides', 1, True, False): (QUERY_COUNT, 3), diff --git a/lms/djangoapps/course_api/blocks/tests/test_api.py b/lms/djangoapps/course_api/blocks/tests/test_api.py index cc7ba99694377d26644f35d4b1ef6b1aef4a2ae7..4abbbd3942a433d7eb5425b7c59be2b10d97d444 100644 --- a/lms/djangoapps/course_api/blocks/tests/test_api.py +++ b/lms/djangoapps/course_api/blocks/tests/test_api.py @@ -244,7 +244,7 @@ class TestGetBlocksQueryCounts(TestGetBlocksQueryCountsBase): self._get_blocks( course, expected_mongo_queries=0, - expected_sql_queries=14 if with_storage_backing else 13, + expected_sql_queries=13 if with_storage_backing else 12, ) @ddt.data( @@ -261,9 +261,9 @@ class TestGetBlocksQueryCounts(TestGetBlocksQueryCountsBase): clear_course_from_cache(course.id) if with_storage_backing: - num_sql_queries = 24 + num_sql_queries = 23 else: - num_sql_queries = 14 + num_sql_queries = 13 self._get_blocks( course, diff --git a/lms/djangoapps/courseware/tests/test_access.py b/lms/djangoapps/courseware/tests/test_access.py index 882578850829e4fbc04e3f29c9fa60be6566e9e6..99047b8a4c2a32069f55a9395782b2a17a1ad33f 100644 --- a/lms/djangoapps/courseware/tests/test_access.py +++ b/lms/djangoapps/courseware/tests/test_access.py @@ -849,7 +849,7 @@ class CourseOverviewAccessTestCase(ModuleStoreTestCase): num_queries = 1 elif user_attr_name == 'user_normal' and action == 'see_exists': if course_attr_name == 'course_started': - num_queries = 7 + num_queries = 6 else: # checks staff role and enrollment data num_queries = 2 diff --git a/lms/djangoapps/courseware/tests/test_course_info.py b/lms/djangoapps/courseware/tests/test_course_info.py index 5702a03f3d9a4d8f38da7b171fe32355d5d2296c..d92afca16a2cdde94220948a60f89a77c0444d59 100644 --- a/lms/djangoapps/courseware/tests/test_course_info.py +++ b/lms/djangoapps/courseware/tests/test_course_info.py @@ -431,8 +431,8 @@ class SelfPacedCourseInfoTestCase(LoginEnrollmentTestCase, SharedModuleStoreTest def test_num_queries_instructor_paced(self): # TODO: decrease query count as part of REVO-28 - self.fetch_course_info_with_queries(self.instructor_paced_course, 45, 3) + self.fetch_course_info_with_queries(self.instructor_paced_course, 43, 3) def test_num_queries_self_paced(self): # TODO: decrease query count as part of REVO-28 - self.fetch_course_info_with_queries(self.self_paced_course, 45, 3) + self.fetch_course_info_with_queries(self.self_paced_course, 43, 3) diff --git a/lms/djangoapps/courseware/tests/test_views.py b/lms/djangoapps/courseware/tests/test_views.py index 17cd089b58b2cca586ad9137a80d7edda5a57365..03702e996004b4c2595e32141fd17e19d4453f32 100644 --- a/lms/djangoapps/courseware/tests/test_views.py +++ b/lms/djangoapps/courseware/tests/test_views.py @@ -225,8 +225,8 @@ class IndexQueryTestCase(ModuleStoreTestCase): NUM_PROBLEMS = 20 @ddt.data( - (ModuleStoreEnum.Type.mongo, 10, 186), - (ModuleStoreEnum.Type.split, 4, 180), + (ModuleStoreEnum.Type.mongo, 10, 179), + (ModuleStoreEnum.Type.split, 4, 175), ) @ddt.unpack def test_index_query_counts(self, store_type, expected_mongo_query_count, expected_mysql_query_count): @@ -1459,8 +1459,8 @@ class ProgressPageTests(ProgressPageBaseTests): self.assertContains(resp, u"Download Your Certificate") @ddt.data( - (True, 56), - (False, 55) + (True, 52), + (False, 51) ) @ddt.unpack def test_progress_queries_paced_courses(self, self_paced, query_count): @@ -1473,8 +1473,8 @@ class ProgressPageTests(ProgressPageBaseTests): @patch.dict(settings.FEATURES, {'ASSUME_ZERO_GRADE_IF_ABSENT_FOR_ALL_TESTS': False}) @ddt.data( - (False, 64, 44), - (True, 55, 39) + (False, 60, 40), + (True, 51, 35) ) @ddt.unpack def test_progress_queries(self, enable_waffle, initial, subsequent): diff --git a/lms/djangoapps/discussion/django_comment_client/base/tests.py b/lms/djangoapps/discussion/django_comment_client/base/tests.py index a4f6737ceadf713f3e364891d74680ccd64bd2ed..3c9f502a4a407fa16a25387f9eba7b3eec2ca7c6 100644 --- a/lms/djangoapps/discussion/django_comment_client/base/tests.py +++ b/lms/djangoapps/discussion/django_comment_client/base/tests.py @@ -405,8 +405,8 @@ class ViewsQueryCountTestCase( return inner @ddt.data( - (ModuleStoreEnum.Type.mongo, 3, 4, 41), - (ModuleStoreEnum.Type.split, 3, 13, 41), + (ModuleStoreEnum.Type.mongo, 3, 4, 40), + (ModuleStoreEnum.Type.split, 3, 13, 40), ) @ddt.unpack @count_queries @@ -414,8 +414,8 @@ class ViewsQueryCountTestCase( self.create_thread_helper(mock_request) @ddt.data( - (ModuleStoreEnum.Type.mongo, 3, 3, 37), - (ModuleStoreEnum.Type.split, 3, 10, 37), + (ModuleStoreEnum.Type.mongo, 3, 3, 36), + (ModuleStoreEnum.Type.split, 3, 10, 36), ) @ddt.unpack @count_queries diff --git a/lms/djangoapps/discussion/tests/test_views.py b/lms/djangoapps/discussion/tests/test_views.py index d477150742df0bf470719aa92d83ec0a581aad45..d1c3944b0c80598a094ead696e5c4e984f317c5d 100644 --- a/lms/djangoapps/discussion/tests/test_views.py +++ b/lms/djangoapps/discussion/tests/test_views.py @@ -464,18 +464,18 @@ class SingleThreadQueryCountTestCase(ForumsEnableMixin, ModuleStoreTestCase): # course is outside the context manager that is verifying the number of queries, # and with split mongo, that method ends up querying disabled_xblocks (which is then # cached and hence not queried as part of call_single_thread). - (ModuleStoreEnum.Type.mongo, False, 1, 5, 2, 24, 9), - (ModuleStoreEnum.Type.mongo, False, 50, 5, 2, 24, 9), + (ModuleStoreEnum.Type.mongo, False, 1, 5, 2, 23, 8), + (ModuleStoreEnum.Type.mongo, False, 50, 5, 2, 23, 8), # split mongo: 3 queries, regardless of thread response size. - (ModuleStoreEnum.Type.split, False, 1, 3, 3, 24, 9), - (ModuleStoreEnum.Type.split, False, 50, 3, 3, 24, 9), + (ModuleStoreEnum.Type.split, False, 1, 3, 3, 23, 8), + (ModuleStoreEnum.Type.split, False, 50, 3, 3, 23, 8), # Enabling Enterprise integration should have no effect on the number of mongo queries made. - (ModuleStoreEnum.Type.mongo, True, 1, 5, 2, 24, 9), - (ModuleStoreEnum.Type.mongo, True, 50, 5, 2, 24, 9), + (ModuleStoreEnum.Type.mongo, True, 1, 5, 2, 23, 8), + (ModuleStoreEnum.Type.mongo, True, 50, 5, 2, 23, 8), # split mongo: 3 queries, regardless of thread response size. - (ModuleStoreEnum.Type.split, True, 1, 3, 3, 24, 9), - (ModuleStoreEnum.Type.split, True, 50, 3, 3, 24, 9), + (ModuleStoreEnum.Type.split, True, 1, 3, 3, 23, 8), + (ModuleStoreEnum.Type.split, True, 50, 3, 3, 23, 8), ) @ddt.unpack def test_number_of_mongo_queries( diff --git a/lms/djangoapps/grades/tests/test_course_grade_factory.py b/lms/djangoapps/grades/tests/test_course_grade_factory.py index b4d5ff87378d60002b1cd594ab98403bcde00ba9..e69577d209cb005c1b5350cdc2effc8e38366602 100644 --- a/lms/djangoapps/grades/tests/test_course_grade_factory.py +++ b/lms/djangoapps/grades/tests/test_course_grade_factory.py @@ -97,35 +97,35 @@ class TestCourseGradeFactory(GradeTestBase): [self.sequence.display_name, self.sequence2.display_name] ) - with self.assertNumQueries(4), mock_get_score(1, 2): + with self.assertNumQueries(3), mock_get_score(1, 2): _assert_read(expected_pass=False, expected_percent=0) # start off with grade of 0 - num_queries = 47 + num_queries = 46 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(5): + with self.assertNumQueries(4): _assert_read(expected_pass=True, expected_percent=0.5) # updated to grade of .5 - num_queries = 9 + num_queries = 8 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(5): + with self.assertNumQueries(4): _assert_read(expected_pass=True, expected_percent=0.5) # NOT updated to grade of .25 - num_queries = 26 + num_queries = 25 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(5): + with self.assertNumQueries(4): _assert_read(expected_pass=True, expected_percent=1.0) # updated to grade of 1.0 - num_queries = 30 + num_queries = 29 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(5): + with self.assertNumQueries(4): _assert_read(expected_pass=False, expected_percent=0.0) # updated to grade of 0.0 @patch.dict(settings.FEATURES, {'ASSUME_ZERO_GRADE_IF_ABSENT_FOR_ALL_TESTS': False}) diff --git a/lms/djangoapps/grades/tests/test_tasks.py b/lms/djangoapps/grades/tests/test_tasks.py index 6d92d19b48796051b1799220f4390e110725cf07..f70441e1018704430425673ef8fc6657f373ef34 100644 --- a/lms/djangoapps/grades/tests/test_tasks.py +++ b/lms/djangoapps/grades/tests/test_tasks.py @@ -165,10 +165,10 @@ class RecalculateSubsectionGradeTest(HasCourseWithProblemsMixin, ModuleStoreTest self.assertEquals(mock_block_structure_create.call_count, 1) @ddt.data( - (ModuleStoreEnum.Type.mongo, 1, 38, True), - (ModuleStoreEnum.Type.mongo, 1, 38, False), - (ModuleStoreEnum.Type.split, 3, 38, True), - (ModuleStoreEnum.Type.split, 3, 38, False), + (ModuleStoreEnum.Type.mongo, 1, 37, True), + (ModuleStoreEnum.Type.mongo, 1, 37, False), + (ModuleStoreEnum.Type.split, 3, 37, True), + (ModuleStoreEnum.Type.split, 3, 37, False), ) @ddt.unpack def test_query_counts(self, default_store, num_mongo_calls, num_sql_calls, create_multiple_subsections): @@ -180,8 +180,8 @@ class RecalculateSubsectionGradeTest(HasCourseWithProblemsMixin, ModuleStoreTest self._apply_recalculate_subsection_grade() @ddt.data( - (ModuleStoreEnum.Type.mongo, 1, 38), - (ModuleStoreEnum.Type.split, 3, 38), + (ModuleStoreEnum.Type.mongo, 1, 37), + (ModuleStoreEnum.Type.split, 3, 37), ) @ddt.unpack def test_query_counts_dont_change_with_more_content(self, default_store, num_mongo_calls, num_sql_calls): @@ -226,8 +226,8 @@ class RecalculateSubsectionGradeTest(HasCourseWithProblemsMixin, ModuleStoreTest ) @ddt.data( - (ModuleStoreEnum.Type.mongo, 1, 21), - (ModuleStoreEnum.Type.split, 3, 21), + (ModuleStoreEnum.Type.mongo, 1, 20), + (ModuleStoreEnum.Type.split, 3, 20), ) @ddt.unpack def test_persistent_grades_not_enabled_on_course(self, default_store, num_mongo_queries, num_sql_queries): @@ -241,8 +241,8 @@ class RecalculateSubsectionGradeTest(HasCourseWithProblemsMixin, ModuleStoreTest self.assertEqual(len(PersistentSubsectionGrade.bulk_read_grades(self.user.id, self.course.id)), 0) @ddt.data( - (ModuleStoreEnum.Type.mongo, 1, 39), - (ModuleStoreEnum.Type.split, 3, 39), + (ModuleStoreEnum.Type.mongo, 1, 38), + (ModuleStoreEnum.Type.split, 3, 38), ) @ddt.unpack def test_persistent_grades_enabled_on_course(self, default_store, num_mongo_queries, num_sql_queries): diff --git a/openedx/core/djangoapps/config_model_utils/utils.py b/openedx/core/djangoapps/config_model_utils/utils.py index 50a986b1092ee3cfc5d0672a5960a80ce3e4c92e..56bbb0c1fadebfab50dd7cd0556d3205d476cb40 100644 --- a/openedx/core/djangoapps/config_model_utils/utils.py +++ b/openedx/core/djangoapps/config_model_utils/utils.py @@ -1,8 +1,6 @@ """utils for feature-based enrollments""" from __future__ import absolute_import -from experiments.models import ExperimentData -from openedx.features.course_duration_limits.config import EXPERIMENT_DATA_HOLDBACK_KEY, EXPERIMENT_ID from student.models import FBEEnrollmentExclusion @@ -11,17 +9,6 @@ def is_in_holdback(user, enrollment): Return true if given user is in holdback expermiment """ in_holdback = False - if user and user.is_authenticated: - try: - holdback_value = ExperimentData.objects.get( - user=user, - experiment_id=EXPERIMENT_ID, - key=EXPERIMENT_DATA_HOLDBACK_KEY, - ).value - in_holdback = holdback_value == 'True' - except ExperimentData.DoesNotExist: - pass - if enrollment is not None: try: if enrollment.fbeenrollmentexclusion: diff --git a/openedx/features/content_type_gating/tests/test_access.py b/openedx/features/content_type_gating/tests/test_access.py index 79144fde808f40d6be4fb370bba530a0280312ad..e69230a92952ab8cdd7dfd20d1fb830078a4f996 100644 --- a/openedx/features/content_type_gating/tests/test_access.py +++ b/openedx/features/content_type_gating/tests/test_access.py @@ -48,8 +48,7 @@ from openedx.core.lib.url_utils import quote_slashes from openedx.features.content_type_gating.helpers import CONTENT_GATING_PARTITION_ID, CONTENT_TYPE_GATE_GROUP_IDS from openedx.features.content_type_gating.models import ContentTypeGatingConfig from openedx.features.content_type_gating.partitions import ContentTypeGatingPartition -from openedx.features.course_duration_limits.config import EXPERIMENT_DATA_HOLDBACK_KEY, EXPERIMENT_ID -from student.models import CourseEnrollment +from student.models import CourseEnrollment, FBEEnrollmentExclusion from student.roles import CourseInstructorRole from student.tests.factories import TEST_PASSWORD, CourseEnrollmentFactory, UserFactory from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase, SharedModuleStoreTestCase @@ -638,15 +637,9 @@ class TestProblemTypeAccess(SharedModuleStoreTestCase): Test that putting a user in the content gating holdback disables content gating. """ user = UserFactory.create() + enrollment = CourseEnrollment.enroll(user, self.course.id) if put_user_in_holdback: - ExperimentData.objects.create( - user=user, - experiment_id=EXPERIMENT_ID, - key=EXPERIMENT_DATA_HOLDBACK_KEY, - value='True' - ) - - CourseEnrollment.enroll(user, self.course.id) + FBEEnrollmentExclusion.objects.create(enrollment=enrollment) graded, has_score, weight = True, True, 1 block = self.graded_score_weight_blocks[(graded, has_score, weight)] diff --git a/openedx/features/content_type_gating/tests/test_models.py b/openedx/features/content_type_gating/tests/test_models.py index 902762aae02a865aea0fb42ac46e307191f1f41f..6951bc3f86aa18d079c6b7a0c1f52e3d85a84a24 100644 --- a/openedx/features/content_type_gating/tests/test_models.py +++ b/openedx/features/content_type_gating/tests/test_models.py @@ -70,7 +70,7 @@ class TestContentTypeGatingConfig(CacheIsolationTestCase): user = self.user course_key = self.course_overview.id - query_count = 8 + query_count = 7 with self.assertNumQueries(query_count): enabled = ContentTypeGatingConfig.enabled_for_enrollment( diff --git a/openedx/features/course_duration_limits/tests/test_course_expiration.py b/openedx/features/course_duration_limits/tests/test_course_expiration.py index ed67022b86c0df9c9b2682c8427dd01d0080f8c5..bff04bf91c6e8e7dcddae32458217f9459667df8 100644 --- a/openedx/features/course_duration_limits/tests/test_course_expiration.py +++ b/openedx/features/course_duration_limits/tests/test_course_expiration.py @@ -34,10 +34,9 @@ from openedx.core.djangoapps.django_comment_common.models import ( from openedx.core.djangoapps.schedules.tests.factories import ScheduleFactory from openedx.features.content_type_gating.helpers import CONTENT_GATING_PARTITION_ID, CONTENT_TYPE_GATE_GROUP_IDS from openedx.features.course_duration_limits.access import MAX_DURATION, MIN_DURATION, get_user_course_expiration_date -from openedx.features.course_duration_limits.config import EXPERIMENT_DATA_HOLDBACK_KEY, EXPERIMENT_ID from openedx.features.course_duration_limits.models import CourseDurationLimitConfig from openedx.features.course_experience.tests.views.helpers import add_course_mode -from student.models import CourseEnrollment +from student.models import CourseEnrollment, FBEEnrollmentExclusion from student.roles import CourseInstructorRole from student.tests.factories import TEST_PASSWORD, CourseEnrollmentFactory, UserFactory from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase @@ -250,17 +249,12 @@ class CourseExpirationTestCase(ModuleStoreTestCase): def test_masquerade_in_holdback(self, mock_get_course_run_details): mock_get_course_run_details.return_value = {'weeks_to_complete': 12} audit_student = UserFactory(username='audit') - CourseEnrollmentFactory.create( + enrollment = CourseEnrollmentFactory.create( user=audit_student, course_id=self.course.id, mode='audit' ) - ExperimentData.objects.create( - user=audit_student, - experiment_id=EXPERIMENT_ID, - key=EXPERIMENT_DATA_HOLDBACK_KEY, - value='True' - ) + FBEEnrollmentExclusion.objects.create(enrollment=enrollment) CourseDurationLimitConfig.objects.create( enabled=True, course=CourseOverview.get_from_id(self.course.id), @@ -268,7 +262,7 @@ class CourseExpirationTestCase(ModuleStoreTestCase): ) instructor = UserFactory.create(username='instructor') - CourseEnrollmentFactory.create( + enrollment = CourseEnrollmentFactory.create( user=instructor, course_id=self.course.id, mode='audit' diff --git a/openedx/features/course_duration_limits/tests/test_models.py b/openedx/features/course_duration_limits/tests/test_models.py index 18eaafb45e8cc43379b3cf04ff3114ddbbeccb9c..a842151e896c18808a2615ae5a3bf1c85c4a4057 100644 --- a/openedx/features/course_duration_limits/tests/test_models.py +++ b/openedx/features/course_duration_limits/tests/test_models.py @@ -75,7 +75,7 @@ class TestCourseDurationLimitConfig(CacheIsolationTestCase): user = self.user course_key = self.course_overview.id - query_count = 7 + query_count = 6 with self.assertNumQueries(query_count): enabled = CourseDurationLimitConfig.enabled_for_enrollment( diff --git a/openedx/features/course_experience/tests/views/test_course_home.py b/openedx/features/course_experience/tests/views/test_course_home.py index 09aea9fa429015870a85a136ab65304e217d5671..df3e3d2f09194bf1146b7e66ed5e91fe8e467dc9 100644 --- a/openedx/features/course_experience/tests/views/test_course_home.py +++ b/openedx/features/course_experience/tests/views/test_course_home.py @@ -48,7 +48,6 @@ from openedx.core.djangoapps.django_comment_common.models import ( from openedx.core.djangoapps.schedules.tests.factories import ScheduleFactory from openedx.core.djangoapps.waffle_utils.testutils import WAFFLE_TABLES, override_waffle_flag from openedx.core.djangolib.markup import HTML -from openedx.features.course_duration_limits.config import EXPERIMENT_DATA_HOLDBACK_KEY, EXPERIMENT_ID from openedx.features.course_duration_limits.models import CourseDurationLimitConfig from openedx.features.course_experience import ( COURSE_ENABLE_UNENROLLED_ACCESS_FLAG, @@ -56,7 +55,7 @@ from openedx.features.course_experience import ( SHOW_UPGRADE_MSG_ON_COURSE_HOME, UNIFIED_COURSE_TAB_FLAG ) -from student.models import CourseEnrollment +from student.models import CourseEnrollment, FBEEnrollmentExclusion from student.tests.factories import UserFactory from util.date_utils import strftime_localized from xmodule.course_module import COURSE_VISIBILITY_PRIVATE, COURSE_VISIBILITY_PUBLIC, COURSE_VISIBILITY_PUBLIC_OUTLINE @@ -220,7 +219,7 @@ class TestCourseHomePage(CourseHomePageTestCase): # Fetch the view and verify the query counts # TODO: decrease query count as part of REVO-28 - with self.assertNumQueries(97, table_blacklist=QUERY_COUNT_TABLE_BLACKLIST): + with self.assertNumQueries(88, table_blacklist=QUERY_COUNT_TABLE_BLACKLIST): with check_mongo_calls(4): url = course_home_url(self.course) self.client.get(url) @@ -659,11 +658,8 @@ class TestCourseHomePageAccess(CourseHomePageTestCase): self.client.login(username=audit_user.username, password=self.TEST_PASSWORD) audit_enrollment = CourseEnrollment.enroll(audit_user, course.id, mode=CourseMode.AUDIT) ScheduleFactory(start=THREE_YEARS_AGO, enrollment=audit_enrollment) - ExperimentData.objects.create( - user=audit_user, - experiment_id=EXPERIMENT_ID, - key=EXPERIMENT_DATA_HOLDBACK_KEY, - value='True' + FBEEnrollmentExclusion.objects.create( + enrollment=audit_enrollment ) response = self.client.get(url) diff --git a/openedx/features/course_experience/tests/views/test_course_updates.py b/openedx/features/course_experience/tests/views/test_course_updates.py index e56705cfa1871378a0ef33fd83aae17d23e22a5b..3f76daa366b88f86ba9b53ed114fd81dcbca42b6 100644 --- a/openedx/features/course_experience/tests/views/test_course_updates.py +++ b/openedx/features/course_experience/tests/views/test_course_updates.py @@ -134,7 +134,7 @@ class TestCourseUpdatesPage(SharedModuleStoreTestCase): # Fetch the view and verify that the query counts haven't changed # TODO: decrease query count as part of REVO-28 - with self.assertNumQueries(56, table_blacklist=QUERY_COUNT_TABLE_BLACKLIST): + with self.assertNumQueries(53, table_blacklist=QUERY_COUNT_TABLE_BLACKLIST): with check_mongo_calls(4): url = course_updates_url(self.course) self.client.get(url)