bool ert_test_context_install_workflow( ert_test_context_type * test_context , const char * workflow_name , const char * workflow_file) { if (util_file_exists( workflow_file )) { enkf_main_type * enkf_main = ert_test_context_get_main( test_context ); ert_workflow_list_type * workflow_list = enkf_main_get_workflow_list( enkf_main ); ert_workflow_list_add_workflow( workflow_list , workflow_file , workflow_name ); return ert_workflow_list_has_workflow( workflow_list , workflow_name); } else return false; }
void qc_module_set_workflow( qc_module_type * qc_module , const char * qc_workflow ) { char * workflow_name; util_alloc_file_components( qc_workflow , NULL , &workflow_name , NULL ); { workflow_type * workflow = ert_workflow_list_add_workflow( qc_module->workflow_list , qc_workflow , workflow_name); if (workflow != NULL) { ert_workflow_list_add_alias( qc_module->workflow_list , workflow_name , QC_WORKFLOW_NAME ); qc_module->qc_workflow = workflow; } } free( workflow_name ); }
void test_add_alias( const char * job) { test_work_area_type * work_area = test_work_area_alloc( "workflow_list/alias" ); ert_workflow_list_type * wf_list = ert_workflow_list_alloc( NULL ); ert_workflow_list_add_job( wf_list , "JOB" , job ); { FILE * stream = util_fopen("WF1" , "w"); fprintf(stream , "SCALE_STD 0.25\n"); fclose(stream); } { FILE * stream = util_fopen("WF2" , "w"); fprintf(stream , "SCALE_STD 0.25\n"); fclose(stream); } test_assert_true( workflow_is_instance( ert_workflow_list_add_workflow( wf_list , "WF1" , "WF"))); test_assert_int_equal( 1 , ert_workflow_list_get_size( wf_list )); test_assert_false( ert_workflow_list_has_workflow( wf_list , "WF1")); test_assert_true( ert_workflow_list_has_workflow( wf_list , "WF")); ert_workflow_list_add_alias( wf_list , "WF" , "alias"); test_assert_int_equal( 2 , ert_workflow_list_get_size( wf_list )); test_assert_true( ert_workflow_list_has_workflow( wf_list , "WF")); test_assert_true( ert_workflow_list_has_workflow( wf_list , "alias")); test_assert_true( workflow_is_instance( ert_workflow_list_get_workflow( wf_list , "WF"))); test_assert_true( workflow_is_instance( ert_workflow_list_get_workflow( wf_list , "alias"))); test_assert_true( workflow_is_instance( ert_workflow_list_add_workflow( wf_list , "WF2" , "WF"))); test_assert_int_equal( 2 , ert_workflow_list_get_size( wf_list )); test_assert_true( ert_workflow_list_has_workflow( wf_list , "WF")); test_assert_true( ert_workflow_list_has_workflow( wf_list , "alias")); test_assert_true( workflow_is_instance( ert_workflow_list_get_workflow( wf_list , "WF"))); test_assert_true( workflow_is_instance( ert_workflow_list_get_workflow( wf_list , "alias"))); test_work_area_free( work_area ); }
void hook_manager_init_hook( hook_manager_type * hook_manager , const config_content_type * config) { if (config_content_has_item( config , HOOK_WORKFLOW_KEY)) { const char * file_name = config_content_iget( config , HOOK_WORKFLOW_KEY, 0, 0 ); char * workflow_name; util_alloc_file_components( file_name , NULL , &workflow_name , NULL ); { workflow_type * workflow = ert_workflow_list_add_workflow( hook_manager->workflow_list , file_name , workflow_name); if (workflow != NULL) { ert_workflow_list_add_alias( hook_manager->workflow_list , workflow_name , HOOK_WORKFLOW_KEY ); hook_workflow_set_workflow( hook_manager->hook_workflow , workflow); } hook_workflow_set_run_mode( hook_manager->hook_workflow , config_content_iget( config , HOOK_WORKFLOW_KEY, 0, 1 )); } } }
void hook_manager_init_post_hook( hook_manager_type * hook_manager , const config_content_type * config) { if (config_content_has_item( config , QC_PATH_KEY )) hook_manager_set_path( hook_manager, config_content_get_value( config , QC_PATH_KEY )); if (config_content_has_item( config , QC_WORKFLOW_KEY)) { const char * file_name = config_content_get_value_as_path(config , QC_WORKFLOW_KEY); char * workflow_name; util_alloc_file_components( file_name , NULL , &workflow_name , NULL ); { workflow_type * workflow = ert_workflow_list_add_workflow( hook_manager->workflow_list , file_name , workflow_name); if (workflow != NULL) { ert_workflow_list_add_alias( hook_manager->workflow_list , workflow_name , QC_WORKFLOW_NAME ); hook_workflow_set_workflow( hook_manager->post_hook_workflow, workflow ); } hook_workflow_set_run_mode( hook_manager->post_hook_workflow, RUN_MODE_POST_SIMULATION_NAME); } } }
void ert_workflow_list_init( ert_workflow_list_type * workflow_list , config_content_type * config ) { /* Adding jobs */ { if (config_content_has_item( config , WORKFLOW_JOB_DIRECTORY_KEY)) { const config_content_item_type * jobpath_item = config_content_get_item( config , WORKFLOW_JOB_DIRECTORY_KEY); for (int i=0; i < config_content_item_get_size( jobpath_item ); i++) { config_content_node_type * path_node = config_content_item_iget_node( jobpath_item , i ); for (int j=0; j < config_content_node_get_size( path_node ); j++) ert_workflow_list_add_jobs_in_directory( workflow_list , config_content_node_iget_as_abspath( path_node , j ) ); } } } { if (config_content_has_item( config , LOAD_WORKFLOW_JOB_KEY)) { const config_content_item_type * job_item = config_content_get_item( config , LOAD_WORKFLOW_JOB_KEY); for (int i=0; i < config_content_item_get_size( job_item ); i++) { config_content_node_type * job_node = config_content_item_iget_node( job_item , i ); const char * config_file = config_content_node_iget_as_path( job_node , 0 ); const char * job_name = config_content_node_safe_iget( job_node , 1 ); ert_workflow_list_add_job( workflow_list , job_name , config_file); } } } /* Adding workflows */ { if (config_content_has_item( config , LOAD_WORKFLOW_KEY)) { const config_content_item_type * workflow_item = config_content_get_item( config , LOAD_WORKFLOW_KEY); for (int i=0; i < config_content_item_get_size( workflow_item ); i++) { config_content_node_type * workflow_node = config_content_item_iget_node( workflow_item , i ); const char * workflow_file = config_content_node_iget_as_path( workflow_node , 0 ); const char * workflow_name = config_content_node_safe_iget( workflow_node , 1 ); ert_workflow_list_add_workflow( workflow_list , workflow_file , workflow_name ); } } } }