tealet_t *random_new_tealet(tealet_t* cur) { int i = got_index; assert(i == (ptrdiff_t)(cur->data)); assert(i > 0 && i < ARRAYSIZE); assert(tealetarray[i] == NULL); tealetarray[i] = cur; random_run(cur, i); tealetarray[i] = NULL; tealet_delete(cur); i = rand() % ARRAYSIZE; if (tealetarray[i] == NULL) { assert(tealetarray[0] != NULL); i = 0; } got_index = i; return tealetarray[i]; }
static void parse_command_option(gint argc, gchar **argv) { if(argc<2 || g_strcmp0("help", argv[1])==0){ print_help_page(); }else{ if(g_strcmp0("list", argv[1])==0){ case_tree_init(); if(argc==2){ qa_frame_print_case_list(); }else if(argc==3){ qa_frame_print_case_list_by_ID(argv[2]); }else print_help_page(); }else if(g_strcmp0("random", argv[1])==0){ int i=2; while(i<argc){ if(g_strcmp0("-t", argv[i])==0){ if((i+1)<argc && g_ascii_isdigit(argv[i+1][0])) g_sys_state.uiMaxSteps = ((guint)g_ascii_strtod(argv[i+1], NULL)); else{ printf("Bad parameter for '-t' option.\n"); g_sys_state.uiMaxSteps = 0; break; } i = i+2; }else if(g_strcmp0("-r", argv[i])==0){ if((i+1)<argc && g_ascii_isdigit(argv[i+1][0])) g_sys_state.uiRandSeed = ((guint)g_ascii_strtod(argv[i+1], NULL)); else{ printf("Bad parameter for '-r' option.\n"); g_sys_state.uiRandSeed = 0; break; } i = i+2; }else if(g_ascii_isdigit(argv[i][0])){ case_tree_init(); parse_case_ids(argv[i]); break; }else{ printf("Bad parameters. see manual page.\n"); break; } } if(g_sys_state.pCurModule!=NULL && g_sys_state.uiMaxSteps>0 && g_sys_state.uiRandSeed>0) random_run(); else printf("Bad parameters.\n"); }else if(g_strcmp0("all", argv[1])==0){ int priority=CASE_WEIGHT_P1|CASE_WEIGHT_P2|CASE_WEIGHT_P3; if(argc==4 && g_strcmp0("-priority", argv[2])==0){ if(g_strcmp0("P1", argv[3])==0 || g_strcmp0("p1", argv[3])==0) priority = CASE_WEIGHT_P1; else if(g_strcmp0("P2", argv[3])==0 || g_strcmp0("p2", argv[3])==0) priority = CASE_WEIGHT_P2; else if(g_strcmp0("P3", argv[3])==0 || g_strcmp0("p3", argv[3])==0) priority = CASE_WEIGHT_P3; else{ printf("The parameters of priority is bad, see manual page.\n"); return; } } printf("START ===[MCA_TS]===\n[test_bed][MCA_TS][Init][starting MCA_TS][end]\n"); case_tree_init(); qa_frame_run_all_cases(priority); printf("END ====[MCA_TS]=====\n[test_bed][MCA_TS][Exit][O_tb_exit()][end]\n"); }else{ int priority=CASE_WEIGHT_P1|CASE_WEIGHT_P2|CASE_WEIGHT_P3; if(argc==4 && g_strcmp0("-priority", argv[2])==0){ if(g_strcmp0("P1", argv[3])==0 || g_strcmp0("p1", argv[3])==0) priority = CASE_WEIGHT_P1; else if(g_strcmp0("P2", argv[3])==0 || g_strcmp0("p2", argv[3])==0) priority = CASE_WEIGHT_P2; else if(g_strcmp0("P3", argv[3])==0 || g_strcmp0("p3", argv[3])==0) priority = CASE_WEIGHT_P3; else{ printf("The parameters of priority is bad, see manual page.\n"); return; } } QA_PRINT(3, ("priority=%d", priority)); printf("START ===[MCA_TS]===\n[test_bed][MCA_TS][Init][starting MCA_TS][end]\n"); case_tree_init(); qa_frame_run_case_by_list(argv[1], priority); printf("END ====[MCA_TS]=====\n[test_bed][MCA_TS][Exit][O_tb_exit()][end]\n"); } } }