Esempio n. 1
0
File: shell.c Progetto: jimiszm/peos
void list_actions()
{
    peos_action_t *alist;
    int i=0;
    int j;
    
    char ** result = peos_list_instances();
	
    printf("process action (status)\n");
    while((i <= PEOS_MAX_PID)) {
	int num_actions;    
	if (result[i] != NULL) {
            alist = peos_list_actions(i,&num_actions);
	    if(alist) {
	        for(j = 0; j < num_actions; j++) {
	            printf("%d  %s  %s\n",i,alist[j].name,
			   act_state_name(alist[j].state));
	        }
	    }
	    i++;
	}
    }
}    
Esempio n. 2
0
int
main(int argc, char *argv[])
{
    FILE *fp,*fp1,*fp2,*fp3;

    peos_action_t *alist;
    int num_actions;
    int j;


    fprintf(stderr, "Testing list_action API ...\n");
    
    /*create model file */

    fp = fopen("test_list_action_API.pml", "w");
    fprintf(fp, "process p {\n");
    fprintf(fp, "action act_1 {\n");
    fprintf(fp, "requires {test_list_action_API_res1}\n");
    fprintf(fp, "provides {test_list_action_API_res2}}\n");
    fprintf(fp, "action act_2 {\n");
    fprintf(fp, "requires {test_list_action_API_res2}\n");
    fprintf(fp, "provides {test_list_action_API_res3}}\n");
    fprintf(fp, "action act_3 {\n");
    fprintf(fp, "requires {test_list_action_API_res3}\n");
    fprintf(fp, "provides {test_list_action_API_res4}}}\n");
    fclose(fp);

    unlink("proc_table.dat");
    unlink("proc_table.dat.xml");


    system("more ./../peos_init.tcl > peos_init.tcl");

    /* Create a process */

    if (create_process("test_list_action_API.pml") < 0) {
        fprintf(stderr, "Error executing list instances API test\n");
        exit(EXIT_FAILURE);
    }

    /* bind resources */

    if (peos_set_resource_binding(0, "test_list_action_API_res1", "test_list_action_API_res1_val") < 0) { 
        fprintf(stderr, "Error executing list instances API test\n");
        exit(EXIT_FAILURE);
    }

    if (peos_set_resource_binding(0, "test_list_action_API_res2", "test_list_action_API_res2_val") < 0) { 
        fprintf(stderr, "Error executing list instances API test\n");
	exit(EXIT_FAILURE);
    }

    if (peos_set_resource_binding(0, "test_list_action_API_res3", "test_list_action_API_res3_val") < 0) { 
        fprintf(stderr, "Error executing list instances API test\n");
        exit(EXIT_FAILURE);
    }

    /* create the resources so that their predicates evaluate to true */
    fp1 = fopen("test_list_action_API_res1_val", "w");
    fp2 = fopen("test_list_action_API_res2_val", "w");
    fp3 = fopen("test_list_action_API_res3_val", "w");
    
    /*
     *  now do list instances -- the process should be updated to make 
     * actions act_1, act_2, and act_3 AVAILABLE 
     * 
     */
    
    
    alist = peos_list_actions(0,&num_actions);
    if(alist) {
        for(j = 0; j < num_actions; j++) {
            if(strcmp(alist[j].name,"act_1") == 0) {
	        if(alist[j].state != ACT_SATISFIED) {
		    fprintf(stderr, "LIST ACTION API TEST FAIL -- act_1 not READY");
		}
	    }
    		
            if(strcmp(alist[j].name,"act_2") == 0) {
	        if(alist[j].state != ACT_SATISFIED) {
		    fprintf(stderr, "LIST ACTION API TEST FAIL -- act_2 not AVAILABLE");
		}
	    }

            if(strcmp(alist[j].name,"act_3") == 0) {
	        if(alist[j].state != ACT_AVAILABLE) {
		    fprintf(stderr, "LIST ACTION API TEST FAIL -- act_3 not AVAILABLE");
		}
	    }
    		
        }
    }
    else {
        fprintf(stderr, "Error executing list instances API test\n");
	exit(EXIT_FAILURE);
    }

    /* clean up */

    fclose(fp1);
    fclose(fp2);
    fclose(fp3);
    unlink("test_list_action_API_res1_val");
    unlink("test_list_action_API_res2_val");
    unlink("test_list_action_API_res3_val");
    unlink("test_list_action_API.pml");
    unlink("proc_table.dat");
    unlink("proc_table.dat.xml");
    system("rm peos_init.tcl");
    
    fprintf(stderr, "done .. \n");
    return 0;


}