Introduce another bok-choy shard.
Bok choy will now be broken as follows: * shard 1 * shard 2 * shard 3 * default shard (i.e. 'none of the above') We use our shards to break up work and reduce overall test time by leveraging multiple test systems.
This commit is contained in:
@@ -9,6 +9,7 @@ from pymongo import MongoClient
|
||||
|
||||
from pytz import UTC, utc
|
||||
from bok_choy.promise import EmptyPromise
|
||||
from nose.plugins.attrib import attr
|
||||
from .helpers import CohortTestMixin
|
||||
from ..helpers import UniqueCourseTest, create_user_partition_json
|
||||
from xmodule.partitions.partitions import Group
|
||||
@@ -21,6 +22,7 @@ from ...pages.studio.settings_group_configurations import GroupConfigurationsPag
|
||||
import uuid
|
||||
|
||||
|
||||
@attr('shard_3')
|
||||
class CohortConfigurationTest(UniqueCourseTest, CohortTestMixin):
|
||||
"""
|
||||
Tests for cohort management on the LMS Instructor Dashboard
|
||||
@@ -464,6 +466,7 @@ class CohortConfigurationTest(UniqueCourseTest, CohortTestMixin):
|
||||
self.assertEquals(expected_message, messages[0])
|
||||
|
||||
|
||||
@attr('shard_3')
|
||||
class CohortContentGroupAssociationTest(UniqueCourseTest, CohortTestMixin):
|
||||
"""
|
||||
Tests for linking between content groups and cohort in the instructor dashboard.
|
||||
|
||||
@@ -5,6 +5,7 @@ End-to-end tests for LibraryContent block in LMS
|
||||
import ddt
|
||||
import textwrap
|
||||
|
||||
from nose.plugins.attrib import attr
|
||||
from ..helpers import UniqueCourseTest
|
||||
from ...pages.studio.auto_auth import AutoAuthPage
|
||||
from ...pages.studio.overview import CourseOutlinePage
|
||||
@@ -20,6 +21,7 @@ SUBSECTION_NAME = 'Test Subsection'
|
||||
UNIT_NAME = 'Test Unit'
|
||||
|
||||
|
||||
@attr('shard_3')
|
||||
class LibraryContentTestBase(UniqueCourseTest):
|
||||
""" Base class for library content block tests """
|
||||
USERNAME = "STUDENT_TESTER"
|
||||
@@ -140,6 +142,7 @@ class LibraryContentTestBase(UniqueCourseTest):
|
||||
|
||||
|
||||
@ddt.ddt
|
||||
@attr('shard_3')
|
||||
class LibraryContentTest(LibraryContentTestBase):
|
||||
"""
|
||||
Test courseware.
|
||||
@@ -191,6 +194,7 @@ class LibraryContentTest(LibraryContentTestBase):
|
||||
|
||||
|
||||
@ddt.ddt
|
||||
@attr('shard_3')
|
||||
class StudioLibraryContainerCapaFilterTest(LibraryContentTestBase):
|
||||
"""
|
||||
Test Library Content block in LMS
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
Tests the "preview" selector in the LMS that allows changing between Staff, Student, and Content Groups.
|
||||
"""
|
||||
|
||||
from nose.plugins.attrib import attr
|
||||
from ..helpers import UniqueCourseTest, create_user_partition_json
|
||||
from ...pages.studio.auto_auth import AutoAuthPage
|
||||
from ...pages.lms.courseware import CoursewarePage
|
||||
@@ -13,6 +14,7 @@ from xmodule.partitions.partitions import Group
|
||||
from textwrap import dedent
|
||||
|
||||
|
||||
@attr('shard_3')
|
||||
class StaffViewTest(UniqueCourseTest):
|
||||
"""
|
||||
Tests that verify the staff view.
|
||||
@@ -50,6 +52,7 @@ class StaffViewTest(UniqueCourseTest):
|
||||
return staff_page
|
||||
|
||||
|
||||
@attr('shard_3')
|
||||
class CourseWithoutContentGroupsTest(StaffViewTest):
|
||||
"""
|
||||
Setup for tests that have no content restricted to specific content groups.
|
||||
@@ -80,6 +83,7 @@ class CourseWithoutContentGroupsTest(StaffViewTest):
|
||||
)
|
||||
|
||||
|
||||
@attr('shard_3')
|
||||
class StaffViewToggleTest(CourseWithoutContentGroupsTest):
|
||||
"""
|
||||
Tests for the staff view toggle button.
|
||||
@@ -96,6 +100,7 @@ class StaffViewToggleTest(CourseWithoutContentGroupsTest):
|
||||
self.assertFalse(course_page.has_tab('Instructor'))
|
||||
|
||||
|
||||
@attr('shard_3')
|
||||
class StaffDebugTest(CourseWithoutContentGroupsTest):
|
||||
"""
|
||||
Tests that verify the staff debug info.
|
||||
@@ -227,6 +232,7 @@ class StaffDebugTest(CourseWithoutContentGroupsTest):
|
||||
'for user {}'.format(self.USERNAME), msg)
|
||||
|
||||
|
||||
@attr('shard_3')
|
||||
class CourseWithContentGroupsTest(StaffViewTest):
|
||||
"""
|
||||
Verifies that changing the "View this course as" selector works properly for content groups.
|
||||
|
||||
@@ -5,6 +5,7 @@ from datetime import datetime, timedelta
|
||||
import itertools
|
||||
from pytz import UTC
|
||||
from bok_choy.promise import EmptyPromise
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
from ...pages.studio.overview import CourseOutlinePage, ContainerPage, ExpandCollapseLinkState
|
||||
from ...pages.studio.utils import add_discussion, drag, verify_ordering
|
||||
@@ -67,6 +68,7 @@ class CourseOutlineTest(StudioCourseTest):
|
||||
verify_ordering(self, outline_page, expected_ordering)
|
||||
|
||||
|
||||
@attr('shard_3')
|
||||
class CourseOutlineDragAndDropTest(CourseOutlineTest):
|
||||
"""
|
||||
Tests of drag and drop within the outline page.
|
||||
@@ -121,6 +123,7 @@ class CourseOutlineDragAndDropTest(CourseOutlineTest):
|
||||
self.drag_and_verify(self.seq_1_vert_2_handle, self.chap_1_seq_2_handle, expected_ordering, course_outline_page)
|
||||
|
||||
|
||||
@attr('shard_3')
|
||||
class WarningMessagesTest(CourseOutlineTest):
|
||||
"""
|
||||
Feature: Warning messages on sections, subsections, and units
|
||||
@@ -325,6 +328,7 @@ class WarningMessagesTest(CourseOutlineTest):
|
||||
unit.toggle_staff_lock()
|
||||
|
||||
|
||||
@attr('shard_3')
|
||||
class EditingSectionsTest(CourseOutlineTest):
|
||||
"""
|
||||
Feature: Editing Release date, Due date and grading type.
|
||||
@@ -472,6 +476,7 @@ class EditingSectionsTest(CourseOutlineTest):
|
||||
self.assertIn(release_text, self.course_outline_page.section_at(0).subsection_at(0).release_date)
|
||||
|
||||
|
||||
@attr('shard_3')
|
||||
class StaffLockTest(CourseOutlineTest):
|
||||
"""
|
||||
Feature: Sections, subsections, and units can be locked and unlocked from the course outline.
|
||||
@@ -853,6 +858,7 @@ class StaffLockTest(CourseOutlineTest):
|
||||
self._remove_staff_lock_and_verify_warning(subsection, False)
|
||||
|
||||
|
||||
@attr('shard_3')
|
||||
class EditNamesTest(CourseOutlineTest):
|
||||
"""
|
||||
Feature: Click-to-edit section/subsection names
|
||||
@@ -968,6 +974,7 @@ class EditNamesTest(CourseOutlineTest):
|
||||
self.assertTrue(self.course_outline_page.section_at(0).is_collapsed)
|
||||
|
||||
|
||||
@attr('shard_3')
|
||||
class CreateSectionsTest(CourseOutlineTest):
|
||||
"""
|
||||
Feature: Create new sections/subsections/units
|
||||
@@ -1054,6 +1061,7 @@ class CreateSectionsTest(CourseOutlineTest):
|
||||
self.assertTrue(unit_page.is_inline_editing_display_name())
|
||||
|
||||
|
||||
@attr('shard_3')
|
||||
class DeleteContentTest(CourseOutlineTest):
|
||||
"""
|
||||
Feature: Deleting sections/subsections/units
|
||||
@@ -1165,6 +1173,7 @@ class DeleteContentTest(CourseOutlineTest):
|
||||
self.assertTrue(self.course_outline_page.has_no_content_message)
|
||||
|
||||
|
||||
@attr('shard_3')
|
||||
class ExpandCollapseMultipleSectionsTest(CourseOutlineTest):
|
||||
"""
|
||||
Feature: Courses with multiple sections can expand and collapse all sections.
|
||||
@@ -1296,6 +1305,7 @@ class ExpandCollapseMultipleSectionsTest(CourseOutlineTest):
|
||||
self.verify_all_sections(collapsed=False)
|
||||
|
||||
|
||||
@attr('shard_3')
|
||||
class ExpandCollapseSingleSectionTest(CourseOutlineTest):
|
||||
"""
|
||||
Feature: Courses with a single section can expand and collapse all sections.
|
||||
@@ -1335,6 +1345,7 @@ class ExpandCollapseSingleSectionTest(CourseOutlineTest):
|
||||
self.assertFalse(self.course_outline_page.section_at(0).subsection_at(1).is_collapsed)
|
||||
|
||||
|
||||
@attr('shard_3')
|
||||
class ExpandCollapseEmptyTest(CourseOutlineTest):
|
||||
"""
|
||||
Feature: Courses with no sections initially can expand and collapse all sections after addition.
|
||||
@@ -1372,6 +1383,7 @@ class ExpandCollapseEmptyTest(CourseOutlineTest):
|
||||
self.assertFalse(self.course_outline_page.section_at(0).is_collapsed)
|
||||
|
||||
|
||||
@attr('shard_3')
|
||||
class DefaultStatesEmptyTest(CourseOutlineTest):
|
||||
"""
|
||||
Feature: Misc course outline default states/actions when starting with an empty course
|
||||
@@ -1396,6 +1408,7 @@ class DefaultStatesEmptyTest(CourseOutlineTest):
|
||||
self.assertTrue(self.course_outline_page.bottom_add_section_button.is_present())
|
||||
|
||||
|
||||
@attr('shard_3')
|
||||
class DefaultStatesContentTest(CourseOutlineTest):
|
||||
"""
|
||||
Feature: Misc course outline default states/actions when starting with a course with content
|
||||
@@ -1420,6 +1433,7 @@ class DefaultStatesContentTest(CourseOutlineTest):
|
||||
self.assertEqual(courseware.xblock_component_type(2), 'discussion')
|
||||
|
||||
|
||||
@attr('shard_3')
|
||||
class UnitNavigationTest(CourseOutlineTest):
|
||||
"""
|
||||
Feature: Navigate to units
|
||||
@@ -1440,6 +1454,7 @@ class UnitNavigationTest(CourseOutlineTest):
|
||||
self.assertTrue(unit.is_browser_on_page)
|
||||
|
||||
|
||||
@attr('shard_3')
|
||||
class PublishSectionTest(CourseOutlineTest):
|
||||
"""
|
||||
Feature: Publish sections.
|
||||
|
||||
@@ -175,12 +175,17 @@ END
|
||||
;;
|
||||
|
||||
"3")
|
||||
paver test_bokchoy --extra_args="-a shard_1=False,shard_2=False"
|
||||
paver test_bokchoy --extra_args="-a 'shard_3'"
|
||||
paver bokchoy_coverage
|
||||
;;
|
||||
|
||||
"4")
|
||||
paver test_bokchoy --extra_args="-a shard_1=False,shard_2=False,shard_3=False"
|
||||
paver bokchoy_coverage
|
||||
;;
|
||||
|
||||
# Default case because if we later define another bok-choy shard on Jenkins
|
||||
# (e.g. Shard 4) in the multi-config project and expand this file
|
||||
# (e.g. Shard 5) in the multi-config project and expand this file
|
||||
# with an additional case condition, old branches without that commit
|
||||
# would not execute any tests on the worker assigned to that shard
|
||||
# and thus their build would fail.
|
||||
|
||||
Reference in New Issue
Block a user