Skip to content

Commit

Permalink
Merge pull request #411 from jedwards4b/batch_fix_reorder_scripts_reg…
Browse files Browse the repository at this point in the history
…ression_tests

Batch fix reorder scripts regression tests



Reorder tests in scripts_regression_tests (fast first slower later)
Test suite: scripts regression tests
Test baseline:
Test namelist changes:
Test status: 1 known failure in TestTestScheduler
Fixes #401

User interface changes?:

Code review:
  • Loading branch information
jgfouca authored Aug 16, 2016
2 parents 756d13e + b4bf40a commit 212b185
Show file tree
Hide file tree
Showing 6 changed files with 35 additions and 28 deletions.
2 changes: 1 addition & 1 deletion cime_config/acme/config_files.xml
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@

<entry id="CONFIG_TESTS_FILE">
<type>char</type>
<default_value>$CIMEROOT/scripts/Testing/Testcases/config_tests.xml</default_value>
<default_value>$CIMEROOT/cime_config/config_tests.xml</default_value>
<group>test</group>
<file>env_test.xml</file>
<desc>file containing system test descriptions </desc>
Expand Down
2 changes: 1 addition & 1 deletion cime_config/cesm/config_files.xml
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@

<entry id="CONFIG_TESTS_FILE">
<type>char</type>
<default_value>$CIMEROOT/scripts/Testing/Testcases/config_tests.xml</default_value>
<default_value>$CIMEROOT/cime_config/config_tests.xml</default_value>
<group>test</group>
<file>env_test.xml</file>
<desc>file containing system test descriptions </desc>
Expand Down
3 changes: 2 additions & 1 deletion cime_config/cesm/machines/config_batch.xml
Original file line number Diff line number Diff line change
Expand Up @@ -424,7 +424,8 @@

<batch_system MACH="yellowstone" type="lsf" version="9.1">
<queues>
<queue walltimemax="24:00" jobmin="1" jobmax="8">caldera</queue>
<queue walltimemax="24:00" jobmin="1" jobmax="1" jobname="case.lt_archive">hpss</queue>
<queue walltimemax="24:00" jobmin="1" jobmax="8" >caldera</queue>
<queue walltimemax="12:00" jobmin="9" jobmax="16384" default="true">regular</queue>
<queue walltimemax="12:00" jobmin="16385" jobmax="65536">capability</queue>
</queues>
Expand Down
File renamed without changes.
12 changes: 9 additions & 3 deletions utils/python/CIME/XML/env_batch.py
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,7 @@ def set_job_defaults(self, bjobs, pesize=None, walltime=None, force_queue=None):
else:
task_count = int(task_count)

queue = force_queue if force_queue is not None else self.select_best_queue(task_count)
queue = force_queue if force_queue is not None else self.select_best_queue(task_count, job)
self.set_value("JOB_QUEUE", queue, subgroup=job)

walltime = self.get_max_walltime(queue) if walltime is None else walltime
Expand Down Expand Up @@ -330,6 +330,8 @@ def get_submit_args(self, case, job):
if name is None:
submitargs+=" %s"%flag
else:
if name.startswith("$"):
name = name[1:]
val = case.get_value(name,subgroup=job)
if val is None:
val = case.get_resolved_value(name)
Expand Down Expand Up @@ -464,7 +466,7 @@ def get_job_id(self, output):
jobid = re.search(jobid_pattern, output).group(1)
return jobid

def select_best_queue(self, num_pes):
def select_best_queue(self, num_pes, job=None):
# Make sure to check default queue first.
all_queues = []
all_queues.append( self.get_default_queue())
Expand All @@ -473,8 +475,12 @@ def select_best_queue(self, num_pes):
if queue is not None:
jobmin = queue.get("jobmin")
jobmax = queue.get("jobmax")
jobname = queue.get("jobname")
if jobname is not None:
if job == jobname:
return queue.text
# if the fullsum is between the min and max # jobs, then use this queue.
if jobmin is not None and jobmax is not None and num_pes >= int(jobmin) and num_pes <= int(jobmax):
elif jobmin is not None and jobmax is not None and num_pes >= int(jobmin) and num_pes <= int(jobmax):
return queue.text
return None

Expand Down
44 changes: 22 additions & 22 deletions utils/python/tests/scripts_regression_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -113,15 +113,15 @@ def setup_proxy():
return False

###############################################################################
class B_TestCreateNewcase(unittest.TestCase):
class J_TestCreateNewcase(unittest.TestCase):
###############################################################################
def setUp(self):
self._testroot = MACHINE.get_value("CESMSCRATCHROOT")
self._testdirs = []
self._do_teardown = []

def test_createnewcase(self):
testdir = os.path.join(self._testroot, 'scripts_regression_tests.testcreatenewcase')
testdir = os.path.join(self._testroot, 'scripts_regression_tests.testcreatenewcase.%s'% CIME.utils.get_utc_timestamp())
if os.path.exists(testdir):
shutil.rmtree(testdir)
self._testdirs.append(testdir)
Expand All @@ -137,7 +137,7 @@ def test_createnewcase(self):
self._do_teardown.append(testdir)

def test_user_mods(self):
testdir = os.path.join(self._testroot, 'scripts_regression_tests.testusermods')
testdir = os.path.join(self._testroot, 'scripts_regression_tests.testusermods.%s'% CIME.utils.get_utc_timestamp())
if os.path.exists(testdir):
shutil.rmtree(testdir)
self._testdirs.append(testdir)
Expand All @@ -162,17 +162,17 @@ def tearDown(self):
elif do_teardown:
shutil.rmtree(tfile)
###############################################################################
class D_TestWaitForTests(unittest.TestCase):
class M_TestWaitForTests(unittest.TestCase):
###############################################################################

###########################################################################
def setUp(self):
###########################################################################
self._testroot = MACHINE.get_value("CESMSCRATCHROOT")
self._testdir_all_pass = os.path.join(self._testroot, 'scripts_regression_tests.testdir_all_pass')
self._testdir_with_fail = os.path.join(self._testroot, 'scripts_regression_tests.testdir_with_fail')
self._testdir_unfinished = os.path.join(self._testroot, 'scripts_regression_tests.testdir_unfinished')
self._testdir_unfinished2 = os.path.join(self._testroot, 'scripts_regression_tests.testdir_unfinished2')
self._testdir_all_pass = os.path.join(self._testroot, 'scripts_regression_tests.testdir_all_pass.%s'% CIME.utils.get_utc_timestamp())
self._testdir_with_fail = os.path.join(self._testroot, 'scripts_regression_tests.testdir_with_fail.%s'% CIME.utils.get_utc_timestamp())
self._testdir_unfinished = os.path.join(self._testroot, 'scripts_regression_tests.testdir_unfinished.%s'% CIME.utils.get_utc_timestamp())
self._testdir_unfinished2 = os.path.join(self._testroot, 'scripts_regression_tests.testdir_unfinished2.%s'% CIME.utils.get_utc_timestamp())
testdirs = [self._testdir_all_pass, self._testdir_with_fail, self._testdir_unfinished, self._testdir_unfinished2]
for testdir in testdirs:
if os.path.exists(testdir):
Expand Down Expand Up @@ -417,7 +417,7 @@ def tearDown(self):
os.remove(file_to_clean)

###############################################################################
class C_TestCreateTest(TestCreateTestCommon):
class N_TestCreateTest(TestCreateTestCommon):
###############################################################################

###########################################################################
Expand Down Expand Up @@ -472,7 +472,7 @@ def test_create_test_rebless_namelist(self):
self.simple_test(True, "-c -n -b %s -t %s-%s" % (self._baseline_name, self._baseline_name, CIME.utils.get_utc_timestamp()))

###############################################################################
class E_TestTestScheduler(TestCreateTestCommon):
class O_TestTestScheduler(TestCreateTestCommon):
###############################################################################

###########################################################################
Expand Down Expand Up @@ -609,7 +609,7 @@ def test_b_full(self):
self.assertEqual(ts.get_status(MEMLEAK_PHASE), TEST_PASS_STATUS)

###############################################################################
class TestJenkinsGenericJob(TestCreateTestCommon):
class P_TestJenkinsGenericJob(TestCreateTestCommon):
###############################################################################

###########################################################################
Expand Down Expand Up @@ -705,7 +705,7 @@ def test_jenkins_generic_job_kill(self):
assert_dashboard_has_build(self, build_name)

###############################################################################
class TestBlessTestResults(TestCreateTestCommon):
class Q_TestBlessTestResults(TestCreateTestCommon):
###############################################################################

_test_name = "TESTRUNDIFF_Mmpi-serial.f19_g16_rx1.A"
Expand Down Expand Up @@ -761,7 +761,7 @@ def test_bless_test_results(self):

###############################################################################
@unittest.skip("Disabling this test until we figure out how to integrate ACME tests and CIME xml files.")
class TestUpdateACMETests(unittest.TestCase):
class R_TestUpdateACMETests(unittest.TestCase):
###############################################################################

###########################################################################
Expand Down Expand Up @@ -868,7 +868,7 @@ def test_full_system(self):
self.assertTrue(test_time > 0, msg="test time was zero for %s" % test_status)

###############################################################################
class TestCimeCase(TestCreateTestCommon):
class K_TestCimeCase(TestCreateTestCommon):
###############################################################################

###########################################################################
Expand Down Expand Up @@ -910,7 +910,7 @@ def test_cime_case(self):
self.assertEqual(case.get_value("PIO_TYPENAME"), "netcdf")

###############################################################################
class TestSingleSubmit(TestCreateTestCommon):
class X_TestSingleSubmit(TestCreateTestCommon):
###############################################################################

###########################################################################
Expand All @@ -933,7 +933,7 @@ def test_single_submit(self):
msg="COMMAND SHOULD HAVE WORKED\nwait_for_tests output:\n%s\n\nerrput:\n%s\n\ncode: %d" % (output, errput, stat))

###############################################################################
class TestSaveTimings(TestCreateTestCommon):
class L_TestSaveTimings(TestCreateTestCommon):
###############################################################################

###########################################################################
Expand All @@ -954,7 +954,7 @@ def test_save_timings(self):
msg="COMMAND SHOULD HAVE WORKED\nwait_for_tests output:\n%s\n\nerrput:\n%s\n\ncode: %d" % (output, errput, stat))

###############################################################################
class TestXMLQuery(unittest.TestCase):
class C_TestXMLQuery(unittest.TestCase):
# Testing command line scripts
###############################################################################

Expand All @@ -964,7 +964,7 @@ def setUp(self):
self._testdirs = []
self._do_teardown = []

testdir = os.path.join(self._testroot, 'scripts_regression_tests.testscripts')
testdir = os.path.join(self._testroot, 'scripts_regression_tests.testscripts.%s'% CIME.utils.get_utc_timestamp())
machine = 'melvin'
if os.path.exists(testdir):
shutil.rmtree(testdir)
Expand Down Expand Up @@ -1037,7 +1037,7 @@ def test_subgroup(self):
self.assertEqual(searchObj.group() , group_out)

###############################################################################
class CheckCode(unittest.TestCase):
class B_CheckCode(unittest.TestCase):
###############################################################################

###########################################################################
Expand Down Expand Up @@ -1283,7 +1283,7 @@ def assert_variable_matches(self, var_name, regex, env=None, var=None):


###############################################################################
class TestMacrosBasic(unittest.TestCase):
class G_TestMacrosBasic(unittest.TestCase):
###############################################################################

"""Basic infrastructure tests.
Expand Down Expand Up @@ -1317,7 +1317,7 @@ def test_script_rejects_bad_build_system(self):


###############################################################################
class TestMakeMacros(unittest.TestCase):
class H_TestMakeMacros(unittest.TestCase):
###############################################################################

"""Makefile macros tests.
Expand Down Expand Up @@ -1592,7 +1592,7 @@ def test_variable_insertion_with_machine_specific_setting(self):

###############################################################################
@unittest.skipIf(FAST_ONLY, "Skipping slow CMake tests.")
class TestCMakeMacros(TestMakeMacros):
class I_TestCMakeMacros(H_TestMakeMacros):
###############################################################################

"""CMake macros tests.
Expand Down

0 comments on commit 212b185

Please sign in to comment.