TEST(analytics_genex, get_monitor_no_match) { opal_list_t* event_list; orcm_analytics_base_module_t *imod = (orcm_analytics_base_module_t*)malloc(sizeof(orcm_analytics_base_module_t)); orcm_analytics_genex_module.api.init(imod); orcm_workflow_caddy_t* caddy = create_caddy(); genex_workflow_value_t *wf_value = create_workflow(); wf_value->msg_regex = strdup("no Match"); wf_value->severity = strdup("crit"); int rc = monitor_genex(wf_value, caddy, event_list); SAFE_FREE(wf_value); destroy_caddy(caddy); orcm_analytics_genex_module.api.finalize(imod); ASSERT_EQ(ORCM_SUCCESS, rc); }
TEST(analytics_genex, get_monitor_wrong_regex_input) { opal_list_t* event_list; orcm_workflow_caddy_t *caddy; caddy = analytics_util::create_caddy(NULL, NULL, NULL, NULL, NULL); genex_workflow_value_t *wf_value = create_workflow(); wf_value = create_workflow(); wf_value->msg_regex = strdup("(()"); wf_value->severity = strdup("crit"); int rc = monitor_genex(wf_value, caddy, event_list); SAFE_OBJ_FREE(caddy); SAFE_FREE(wf_value); ASSERT_EQ(ORCM_ERROR, rc); }
TEST(analytics_genex, get_genex_policy_wfvalue_null_input) { genex_workflow_value_t *wf_value = create_workflow(); int rc = get_genex_policy(NULL, wf_value); SAFE_FREE(wf_value); ASSERT_EQ(ORCM_ERROR, rc); }
TEST(analytics_genex, get_genex_policy_wrong_cbdata_input) { void *cbdata = malloc(1024); genex_workflow_value_t *wf_value = create_workflow(); int rc = get_genex_policy(cbdata, wf_value); SAFE_FREE(wf_value); SAFE_FREE(cbdata); ASSERT_EQ(ORCM_ERROR, rc); }
TEST(analytics_genex, get_genenx_policy_duplicate_wf_data) { opal_list_t* event_list; orcm_analytics_base_module_t *mod = (orcm_analytics_base_module_t*)malloc(sizeof(orcm_analytics_base_module_t)); orcm_analytics_genex_module.api.init(mod); orcm_workflow_caddy_t* caddy = create_caddy(); caddy->imod = (orcm_analytics_base_module_t*)mod; genex_workflow_value_t *wf_value = create_workflow(); wf_value->msg_regex = strdup("hello"); wf_value->severity = strdup("crit"); wf_value->notifier = strdup("smtp"); wf_value->db = strdup("yes"); void *cbdata = (void*)caddy; caddy->wf = OBJ_NEW(orcm_workflow_t); caddy->wf_step = OBJ_NEW(orcm_workflow_step_t); analytics_util::fill_attribute(&(caddy->wf_step->attributes), "msg_regex", "hello1"); analytics_util::fill_attribute(&(caddy->wf_step->attributes), "severity", "crit1"); analytics_util::fill_attribute(&(caddy->wf_step->attributes), "notifier", "smtp1"); analytics_util::fill_attribute(&(caddy->wf_step->attributes), "db" , "yes1"); analytics_util::fill_attribute(&(caddy->wf_step->attributes), "msg_regex", "hello2"); analytics_util::fill_attribute(&(caddy->wf_step->attributes), "severity", "crit2"); analytics_util::fill_attribute(&(caddy->wf_step->attributes), "notifier", "smtp2"); analytics_util::fill_attribute(&(caddy->wf_step->attributes), "db" , "yes2"); int rc = get_genex_policy(cbdata, wf_value); SAFE_FREE(wf_value); SAFE_OBJ_FREE(caddy->wf); SAFE_OBJ_FREE(caddy->wf_step); destroy_caddy(caddy); orcm_analytics_genex_module.api.finalize(mod); ASSERT_EQ(ORCM_SUCCESS, rc); }
int main( int argc , char ** argv) { const char * exjob_file = "job"; const char * bin_path = argv[1]; const char * internal_workflow = argv[2]; test_work_area_type * work_area = test_work_area_alloc( "job_workflow_test" ); signal(SIGSEGV , util_abort_signal); create_exjob( exjob_file , bin_path ); { int int_value = rand(); int read_value = 100; workflow_joblist_type * joblist = workflow_joblist_alloc(); if (!workflow_joblist_add_job_from_file( joblist , "CREATE_FILE" , exjob_file)) { remove( exjob_file ); { config_type * job_config = workflow_joblist_get_job_config( joblist ); config_fprintf_errors( job_config , true , stdout ); } test_error_exit("Loading job CREATE_FILE failed\n"); } else remove( exjob_file ); if (!workflow_joblist_add_job_from_file( joblist , "READ_FILE" , internal_workflow)) test_error_exit("Loading job READ_FILE failed\n"); { config_type * workflow_compiler = workflow_joblist_get_compiler( joblist ); if (config_get_schema_size( workflow_compiler ) != 2) test_error_exit("Config compiler - wrong size \n"); } { const char * workflow_file = "workflow"; const char * tmp_file = "fileX"; workflow_type * workflow; create_workflow( workflow_file , tmp_file , int_value ); workflow = workflow_alloc(workflow_file , joblist ); unlink( workflow_file ); { bool runOK; runOK = workflow_run( workflow , &read_value , false , NULL); if (runOK) { if (int_value != read_value) test_error_exit("Wrong numeric value read back \n"); test_assert_int_equal( workflow_get_stack_size( workflow ) , 2 ); test_assert_not_NULL( workflow_iget_stack_ptr( workflow , 0 ) ); test_assert_NULL( workflow_iget_stack_ptr( workflow , 1 ) ); { void * return_value = workflow_iget_stack_ptr( workflow , 0 ); int return_int = *((int *) return_value); if (int_value != return_int) test_error_exit("Wrong numeric value read back \n"); test_assert_not_NULL( workflow_pop_stack( workflow )); test_assert_NULL( workflow_pop_stack( workflow )); test_assert_int_equal( workflow_get_stack_size( workflow ) , 0 ); free( return_value ); } } else { config_type * workflow_compiler = workflow_joblist_get_compiler( joblist ); config_fprintf_errors( workflow_compiler , true ,stdout); unlink( tmp_file ); test_error_exit("Workflow did not run\n"); } unlink( tmp_file ); } } workflow_joblist_free( joblist ); } { workflow_joblist_type * joblist = workflow_joblist_alloc(); const char * workflow_file = "workflow"; const char * tmp_file = "fileX"; int read_value; int int_value = 100; workflow_type * workflow; create_workflow( workflow_file , tmp_file , int_value ); workflow = workflow_alloc(workflow_file , joblist ); unlink( workflow_file ); test_assert_false( workflow_run( workflow , &read_value , false , NULL) ); test_assert_int_equal( workflow_get_stack_size( workflow ) , 0 ); } test_work_area_free( work_area ); exit(0); }