Commit e98c5580 by Christine Lytwynec

split unittests into shards for in jenkins

parent 81d51f96
...@@ -19,13 +19,15 @@ __test__ = False # do not collect ...@@ -19,13 +19,15 @@ __test__ = False # do not collect
("mode=", "m", "dev or run"), ("mode=", "m", "dev or run"),
("coverage", "c", "Run test under coverage"), ("coverage", "c", "Run test under coverage"),
("port=", "p", "Port to run test server on (dev mode only)"), ("port=", "p", "Port to run test server on (dev mode only)"),
]) ('skip_clean', 'C', 'skip cleaning repository before running tests'),
], share_with=["pavelib.utils.tests.utils.clean_reports_dir"])
def test_js(options): def test_js(options):
""" """
Run the JavaScript tests Run the JavaScript tests
""" """
mode = getattr(options, 'mode', 'run') mode = getattr(options, 'mode', 'run')
port = None port = None
skip_clean = getattr(options, 'skip_clean', False)
if mode == 'run': if mode == 'run':
suite = getattr(options, 'suite', 'all') suite = getattr(options, 'suite', 'all')
...@@ -46,7 +48,7 @@ def test_js(options): ...@@ -46,7 +48,7 @@ def test_js(options):
) )
return return
test_suite = JsTestSuite(suite, mode=mode, with_coverage=coverage, port=port) test_suite = JsTestSuite(suite, mode=mode, with_coverage=coverage, port=port, skip_clean=skip_clean)
test_suite.run() test_suite.run()
......
...@@ -29,10 +29,11 @@ __test__ = False # do not collect ...@@ -29,10 +29,11 @@ __test__ = False # do not collect
("fasttest", "a", "Run without collectstatic"), ("fasttest", "a", "Run without collectstatic"),
('extra_args=', 'e', 'adds as extra args to the test command'), ('extra_args=', 'e', 'adds as extra args to the test command'),
('cov_args=', 'c', 'adds as args to coverage for the test run'), ('cov_args=', 'c', 'adds as args to coverage for the test run'),
('skip_clean', 'C', 'skip cleaning repository before running tests'),
make_option("--verbose", action="store_const", const=2, dest="verbosity"), make_option("--verbose", action="store_const", const=2, dest="verbosity"),
make_option("-q", "--quiet", action="store_const", const=0, dest="verbosity"), make_option("-q", "--quiet", action="store_const", const=0, dest="verbosity"),
make_option("-v", "--verbosity", action="count", dest="verbosity", default=1), make_option("-v", "--verbosity", action="count", dest="verbosity", default=1),
]) ], share_with=['pavelib.utils.test.utils.clean_reports_dir'])
def test_system(options): def test_system(options):
""" """
Run tests on our djangoapps for lms and cms Run tests on our djangoapps for lms and cms
...@@ -47,6 +48,7 @@ def test_system(options): ...@@ -47,6 +48,7 @@ def test_system(options):
'verbosity': getattr(options, 'verbosity', 1), 'verbosity': getattr(options, 'verbosity', 1),
'extra_args': getattr(options, 'extra_args', ''), 'extra_args': getattr(options, 'extra_args', ''),
'cov_args': getattr(options, 'cov_args', ''), 'cov_args': getattr(options, 'cov_args', ''),
'skip_clean': getattr(options, 'skip_clean', False),
} }
if test_id: if test_id:
...@@ -79,10 +81,11 @@ def test_system(options): ...@@ -79,10 +81,11 @@ def test_system(options):
("fail_fast", "x", "Run only failed tests"), ("fail_fast", "x", "Run only failed tests"),
('extra_args=', 'e', 'adds as extra args to the test command'), ('extra_args=', 'e', 'adds as extra args to the test command'),
('cov_args=', 'c', 'adds as args to coverage for the test run'), ('cov_args=', 'c', 'adds as args to coverage for the test run'),
('skip_clean', 'C', 'skip cleaning repository before running tests'),
make_option("--verbose", action="store_const", const=2, dest="verbosity"), make_option("--verbose", action="store_const", const=2, dest="verbosity"),
make_option("-q", "--quiet", action="store_const", const=0, dest="verbosity"), make_option("-q", "--quiet", action="store_const", const=0, dest="verbosity"),
make_option("-v", "--verbosity", action="count", dest="verbosity", default=1), make_option("-v", "--verbosity", action="count", dest="verbosity", default=1),
]) ], share_with=['pavelib.utils.test.utils.clean_reports_dir'])
def test_lib(options): def test_lib(options):
""" """
Run tests for common/lib/ and pavelib/ (paver-tests) Run tests for common/lib/ and pavelib/ (paver-tests)
...@@ -96,6 +99,7 @@ def test_lib(options): ...@@ -96,6 +99,7 @@ def test_lib(options):
'verbosity': getattr(options, 'verbosity', 1), 'verbosity': getattr(options, 'verbosity', 1),
'extra_args': getattr(options, 'extra_args', ''), 'extra_args': getattr(options, 'extra_args', ''),
'cov_args': getattr(options, 'cov_args', ''), 'cov_args': getattr(options, 'cov_args', ''),
'skip_clean': getattr(options, 'skip_clean', False),
} }
if test_id: if test_id:
...@@ -151,6 +155,9 @@ def test_python(options): ...@@ -151,6 +155,9 @@ def test_python(options):
'pavelib.utils.test.utils.clean_reports_dir', 'pavelib.utils.test.utils.clean_reports_dir',
) )
@cmdopts([ @cmdopts([
("suites", "s", "List of unit test suites to run. (js, lib, cms, lms)"),
('extra_args=', 'e', 'adds as extra args to the test command'),
('cov_args=', 'c', 'adds as args to coverage for the test run'),
make_option("--verbose", action="store_const", const=2, dest="verbosity"), make_option("--verbose", action="store_const", const=2, dest="verbosity"),
make_option("-q", "--quiet", action="store_const", const=0, dest="verbosity"), make_option("-q", "--quiet", action="store_const", const=0, dest="verbosity"),
make_option("-v", "--verbosity", action="count", dest="verbosity", default=1), make_option("-v", "--verbosity", action="count", dest="verbosity", default=1),
...@@ -160,7 +167,9 @@ def test(options): ...@@ -160,7 +167,9 @@ def test(options):
Run all tests Run all tests
""" """
opts = { opts = {
'verbosity': getattr(options, 'verbosity', 1) 'verbosity': getattr(options, 'verbosity', 1),
'extra_args': getattr(options, 'extra_args', ''),
'cov_args': getattr(options, 'cov_args', ''),
} }
# Subsuites to be added to the main suite # Subsuites to be added to the main suite
python_suite = suites.PythonTestSuite('Python Tests', **opts) python_suite = suites.PythonTestSuite('Python Tests', **opts)
......
...@@ -90,6 +90,7 @@ class AcceptanceTestSuite(TestSuite): ...@@ -90,6 +90,7 @@ class AcceptanceTestSuite(TestSuite):
def __enter__(self): def __enter__(self):
super(AcceptanceTestSuite, self).__enter__() super(AcceptanceTestSuite, self).__enter__()
if not self.skip_clean:
test_utils.clean_test_files() test_utils.clean_test_files()
if not self.fasttest: if not self.fasttest:
......
...@@ -51,6 +51,8 @@ class BokChoyTestSuite(TestSuite): ...@@ -51,6 +51,8 @@ class BokChoyTestSuite(TestSuite):
self.har_dir.makedirs_p() self.har_dir.makedirs_p()
self.report_dir.makedirs_p() self.report_dir.makedirs_p()
test_utils.clean_reports_dir() test_utils.clean_reports_dir()
if not self.skip_clean:
test_utils.clean_test_files() test_utils.clean_test_files()
msg = colorize('green', "Checking for mongo, memchache, and mysql...") msg = colorize('green', "Checking for mongo, memchache, and mysql...")
......
...@@ -32,6 +32,7 @@ class JsTestSuite(TestSuite): ...@@ -32,6 +32,7 @@ class JsTestSuite(TestSuite):
def __enter__(self): def __enter__(self):
super(JsTestSuite, self).__enter__() super(JsTestSuite, self).__enter__()
self.report_dir.makedirs_p() self.report_dir.makedirs_p()
if not self.skip_clean:
test_utils.clean_test_files() test_utils.clean_test_files()
if self.mode == 'run' and not self.run_under_coverage: if self.mode == 'run' and not self.run_under_coverage:
......
...@@ -21,7 +21,7 @@ class PythonTestSuite(TestSuite): ...@@ -21,7 +21,7 @@ class PythonTestSuite(TestSuite):
def __enter__(self): def __enter__(self):
super(PythonTestSuite, self).__enter__() super(PythonTestSuite, self).__enter__()
if not self.fasttest: if not (self.fasttest or self.skip_clean):
test_utils.clean_test_files() test_utils.clean_test_files()
@property @property
......
...@@ -22,6 +22,7 @@ class TestSuite(object): ...@@ -22,6 +22,7 @@ class TestSuite(object):
self.subsuites = kwargs.get('subsuites', []) self.subsuites = kwargs.get('subsuites', [])
self.failed_suites = [] self.failed_suites = []
self.verbosity = kwargs.get('verbosity', 1) self.verbosity = kwargs.get('verbosity', 1)
self.skip_clean = kwargs.get('skip_clean', False)
def __enter__(self): def __enter__(self):
""" """
......
""" """
Helper functions for test tasks Helper functions for test tasks
""" """
from paver.easy import sh, task from paver.easy import sh, task, cmdopts
from pavelib.utils.envs import Env from pavelib.utils.envs import Env
import os import os
import subprocess import subprocess
...@@ -33,10 +33,17 @@ def clean_dir(directory): ...@@ -33,10 +33,17 @@ def clean_dir(directory):
@task @task
def clean_reports_dir(): @cmdopts([
('skip_clean', 'C', 'skip cleaning repository before running tests'),
])
def clean_reports_dir(options):
""" """
Clean coverage files, to ensure that we don't use stale data to generate reports. Clean coverage files, to ensure that we don't use stale data to generate reports.
""" """
if getattr(options, 'skip_clean', False):
print('--skip_clean is set, skipping...')
return
# We delete the files but preserve the directory structure # We delete the files but preserve the directory structure
# so that coverage.py has a place to put the reports. # so that coverage.py has a place to put the reports.
reports_dir = Env.REPORT_DIR.makedirs_p() reports_dir = Env.REPORT_DIR.makedirs_p()
......
...@@ -126,9 +126,23 @@ END ...@@ -126,9 +126,23 @@ END
;; ;;
"unit") "unit")
case "$SHARD" in
"lms")
paver test_system -s lms
paver coverage
;;
"other")
paver test_system -s cms
paver test_js --coverage --skip_clean
paver test_lib --skip_clean
paver coverage
;;
*)
paver test paver test
paver coverage paver coverage
;; ;;
esac
;;
"lms-acceptance") "lms-acceptance")
case "$SHARD" in case "$SHARD" in
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment