def test_invalid_bad_data_type(self): print '\n'; print_message('---- Starting Test: {} ----'.format(inspect.stack()[0][3]), 'ok') config_path = 'tests/test_configs/invalid_config_bad_img_hosting.cfg' config = ConfigObj(config_path) messages = verify_config(config) self.assertTrue('image hosting is turned on, but no img_host_server specified' in messages) self.assertTrue('image hosting is turned on, but no host_directory specified' in messages)
def test_invalid_missing_project(self): print '\n'; print_message('---- Starting Test: {} ----'.format(inspect.stack()[0][3]), 'ok') config_path = 'tests/test_configs/invalid_config_no_project_path.cfg' config = ConfigObj(config_path) messages = verify_config(config) self.assertTrue('no project_path in global options' in messages) self.assertTrue('No data_types section found in config' in messages)
def test_invalid_missing_global(self): print '\n'; print_message('---- Starting Test: {} ----'.format(inspect.stack()[0][3]), 'ok') config_path = 'tests/test_configs/invalid_config_no_global.cfg' config = ConfigObj(config_path) messages = verify_config(config) self.assertTrue('No global section found in config' in messages) self.assertTrue('No simulations section found in config' in messages)
def test_invalid_bad_data_type(self): print '\n'; print_message('---- Starting Test: {} ----'.format(inspect.stack()[0][3]), 'ok') config_path = 'tests/test_configs/invalid_config_data_job_type.cfg' config = ConfigObj(config_path) messages = verify_config(config) self.assertTrue('atm has no file_format' in messages) self.assertTrue('atm has no remote_path' in messages) self.assertTrue('atm has no local_path' in messages)
def test_invalid_bad_regrid(self): print '\n'; print_message('---- Starting Test: {} ----'.format(inspect.stack()[0][3]), 'ok') config_path = 'tests/test_configs/invalid_config_bad_regrid.cfg' config = ConfigObj(config_path) messages = verify_config(config) self.assertTrue('no source_grid_path given for lnd regrid' in messages) self.assertTrue('no destination_grid_path given for lnd regrid' in messages) self.assertTrue('no destination_grid_name given for lnd regrid' in messages) self.assertTrue('regrid is set to run on data_type ocn, but this type is not set in simulation 20180129.DECKv1b_piControl.ne30_oEC.edison' in messages)
def test_invalid_bad_transfer(self): print '\n'; print_message('---- Starting Test: {} ----'.format(inspect.stack()[0][3]), 'ok') config_path = 'tests/test_configs/invalid_config_bad_transfer.cfg' config = ConfigObj(config_path) messages = verify_config(config) self.assertTrue('20180129.DECKv1b_piControl.ne30_oEC.edison is missing trasfer_type, if the data is local, set transfer_type to \'local\'' in messages) self.assertTrue('case test.case.2 is set for local data, but no local_path is set' in messages) self.assertTrue('no data_types found for test.case.2, set to \'all\' to select all types, or list only data_types desired' in messages) self.assertTrue('case test.case.3 has transfer_type of sftp, but is missing remote_hostname' in messages) self.assertTrue('case test.case.3 has non-local data, but no remote_path given' in messages) self.assertTrue('case test.case.4 has transfer_type of globus, but is missing remote_uuid' in messages) self.assertTrue('case test.case.4 is set to use globus, but no local_globus_uuid was set in the global options' in messages)
def test_cmor_valid_completed(self): """ tests that a valid config on a completed case will mark itself as already being run and not start """ print_message( '\n---- Starting Test: {} ----'.format(inspect.stack()[0][3]), 'ok') config = ConfigObj(self.valid_config_path) config['post-processing']['cmor']['variable_list'] = [ config['post-processing']['cmor']['variable_list'] ] case_name = '20180129.DECKv1b_piControl.ne30_oEC.edison' case = config['simulations'][case_name] messages = verify_config(config) self.assertEqual(len(messages), 0) config['global']['resource_path'] = 'resources/' filemanager = FileManager(config=config, event_list=EventList()) filemanager.populate_file_list() filemanager.update_local_status() timeseries = Timeseries(short_name=case['short_name'], case=case_name, start=config['simulations']['start_year'], end=config['simulations']['end_year'], config=config, run_type='atm') timeseries.check_data_ready(filemanager=filemanager) timeseries.setup_data(config=config, filemanager=filemanager, case=case_name) timeseries.execute(config=config, event_list=EventList()) timeseries.handle_completion(filemanager=filemanager, config=config, event_list=EventList()) cmor = Cmor(short_name=case['short_name'], case=case_name, start=config['simulations']['start_year'], end=config['simulations']['end_year'], config=config) cmor.check_data_ready(filemanager=filemanager) cmor.setup_data(config=config, filemanager=filemanager, case=case_name) self.assertTrue(cmor.postvalidate(config=config)) self.assertTrue(cmor.execute(config=config, event_list=EventList())) self.assertEquals(cmor.status, JobStatus.COMPLETED) self.assertTrue( cmor.handle_completion(filemanager=filemanager, event_list=EventList(), config=config))
def test_invalid_bad_job_type(self): print '\n'; print_message('---- Starting Test: {} ----'.format(inspect.stack()[0][3]), 'ok') config_path = 'tests/test_configs/invalid_config_bad_job_type.cfg' config = ConfigObj(config_path) messages = verify_config(config) self.assertTrue('20180129.DECKv1b_piControl.ne30_oEC.edison is set to run job beepboop, but this run type is not in either the post-processing or diags config sections' in messages)
def test_invalid_missing_comparisons(self): print '\n'; print_message('---- Starting Test: {} ----'.format(inspect.stack()[0][3]), 'ok') config_path = 'tests/test_configs/invalid_config_missing_comparisons.cfg' config = ConfigObj(config_path) messages = verify_config(config) self.assertTrue('no comparisons specified' in messages)
def test_invalid_missing_climo(self): print '\n'; print_message('---- Starting Test: {} ----'.format(inspect.stack()[0][3]), 'ok') config_path = 'tests/test_configs/invalid_config_missing_climo.cfg' config = ConfigObj(config_path) messages = verify_config(config) self.assertTrue('amwg is set to run at frequency 2 but no climo job for this frequency is set' in messages)
def test_invalid_missing_lnd_data(self): print '\n'; print_message('---- Starting Test: {} ----'.format(inspect.stack()[0][3]), 'ok') config_path = 'tests/test_configs/invalid_config_missing_lnd.cfg' config = ConfigObj(config_path) messages = verify_config(config) self.assertTrue('20180129.DECKv1b_piControl.ne30_oEC.edison is set to use data_type lnd, but this data type is not in the data_types config option' in messages)
def test_valid(self): print '\n'; print_message('---- Starting Test: {} ----'.format(inspect.stack()[0][3]), 'ok') config_path = 'tests/test_configs/test_amwg_complete.cfg' config = ConfigObj(config_path) messages = verify_config(config) self.assertEquals(len(messages), 0)