Exemple #1
0
int ckpmon_run(char *arg)
{
	extern lua_State *L;

	gchar *pmon_input = NULL;
	char *pmon_buf = NULL;
	gsize length = 0;
	GRegex *regex;
	GMatchInfo *match_info;
	GError *err = NULL;

	printPrompt("PMON版本输入格式如下例:\"1.3.6\"\n请输入\n");

	// get pmon spec version: pmon_input
	int len = getTableNumElement(L, "con", "PMONVER_LEN");
	pmon_input = getNCharsPrompt("PMON版本条码", len, TRUE);

	if (pmon_input == NULL) {
		printPrompt("未输入\n");
		return 1;
	}

	printPrompt("输入版本号为:");
	printMsg(pmon_input);
	printMsg("\n");

	// get pmon env version: pmon_env
	g_file_get_contents ("/proc/cmdline", &pmon_buf, &length, NULL);

	regex = g_regex_new (PMON_STR,
				G_REGEX_NO_AUTO_CAPTURE | G_REGEX_OPTIMIZE | G_REGEX_DUPNAMES,
				0, &err);

	g_regex_match (regex, pmon_buf, 0, &match_info);
	gchar *pmon_named = g_match_info_fetch_named(match_info, "pmonver");
	g_print ("%s\n", pmon_named);

	// cmp
	gchar *text_pmon_env = g_strdup_printf("本机的版本号[cmdline]为:%s\n", pmon_named);
	printPrompt(g_string_chunk_insert_const(text_chunk, text_pmon_env));
	g_free(text_pmon_env);

	if (strcasecmp(pmon_input, (const char *)pmon_named)) {
		printNG("机器当前PMON版本号与标准不相符!\n");
		return 1;
	} else {
		printOK("PMON版本号相符。\n");
	}

	g_free(pmon_input);	// TODO: here free g_strdup, but have not test
	g_free (pmon_named);
	g_match_info_free (match_info);
	g_regex_unref (regex);

	return 0;
}
Exemple #2
0
int go_burnin_ctl_thread(void *pdata)
{
	extern lua_State *L;
	extern int burnin_run;
        extern int burnin_kill;	
        extern int leave;
        extern int fresh_display;
                
        char tmpstr[128]={0};
        char *tmp = NULL;
	int hours = 0;
	time_t now;
	FILE *fp = NULL;
	
	gettimeofday(&t1, NULL);        
        hours = getTableNumElement(L, "con", "BURNIN_RUN_TIME");
        printf("I will burnin for %d hours.\n", hours);
        
        system( "mkdir -p /root/logs/");
        if ((fp = fopen( "/root/logs/control.txt", "w")) == NULL) {
                printf("Error when create control.txt\n");
                exit(1);
        }

        time( &now);
        sprintf( tmpstr, "start: %s\n", ctime( &now));
        printf( "               %s \n", tmpstr);

        fprintf(fp, "%s\n", tmpstr);
	fflush(fp);
	fclose(fp);	
        
        sleep(2);
        // for test
        gettimeofday(&t2, NULL);
        gettimeofday(&t3, NULL);
        
        while(1) {
	        gettimeofday(&t2, NULL);
                if( burnin_kill || (t2.tv_sec - t1.tv_sec)> 60 * hours ) {
                        
                        if ( (t2.tv_sec -t3.tv_sec)/60 >= 10){
                                t3 = t2;
                        
                                if ((fp = fopen( "/root/logs/control.txt", "a")) == NULL) {
                                        printf("Error when create control.txt\n");
                                        exit(1);
                                }
        
                                time( &now);
                                sprintf( tmpstr, "run  : %s\n", ctime( &now));
                                printf( "               %s\n", tmpstr);

                                fprintf(fp, "%s\n", tmpstr);
                                fflush(fp);
                                fclose(fp);
                        }	


                        extern int ITEM_NUMBER;
                        int i = 0;
                        
                        char run_file[1024] = {0};
                        char *path = (char *)getTableElement(L, "con", "PATH");
                        sprintf( run_file, "%sburnin/control/run.lua",path);
                        // clear the global running flag
                        burnin_kill = 0;
                        burnin_run = 0;
                        fresh_display = 0;
                        
                        SDL_Delay(1000);
                        
                        for (i=0; i < ITEM_NUMBER; i++) {
                        	if (threads[i]) {
                        		SDL_KillThread(threads[i]);
                        		threads[i] = NULL;
                        	}
                        }
                        printf("Burnin threads have been killed!\n");
                        
                        SDL_Delay(500);
                        // control the life time of other thread
                        run(L, run_file);
                        
                        break;
                }
                SDL_Delay(5000);
        }
        char *pnt = "ALL Items are OK!!";
        
        printCStr( pnt, (W_WIDTH - (strlen(pnt)*8))/2, W_HEIGHT / 2, 0x00008000);
       	printf("Control thread exit!\n");
       	
        refreshWin();
        SDL_Delay(1000);
        
        if ((fp = fopen( "/root/logs/control.txt", "a")) == NULL) {
                printf("Error when create control.txt\n");
                exit(1);
        }
        
        time( &now);
        sprintf( tmpstr, "end  : %s\n", ctime( &now));
        printf( "               %s\n", tmpstr);

        fprintf(fp, "%s\n", tmpstr);
	fflush(fp);
	fclose(fp);	

        
        leave = 1;
        SDL_Delay(30000);
        refreshWin();
	return 0;
}
Exemple #3
0
int go_burnin_thread(void *pdata)
{
	extern lua_State *L;
	extern char *radios[];
	extern int burnin_run;
        	
	FR_THD_PARG *data = (FR_THD_PARG *)pdata;
	
	int r;
	int x, y, x_start, y_start, y_print;
	int x_num, y_num;
	int x_range, y_range;
	int isprint = 0;
	char buf[128] = {0};
	SDL_Widget *label = NULL;
	
	x_num = getTableNumElement(L, "con", "BURNIN_SPLIT_X_NUM");
	y_num = getTableNumElement(L, "con", "BURNIN_SPLIT_Y_NUM");
	
	x_range =  getTableNumElement(L, "con", "BURNIN_SPLIT_X");
	y_range =  getTableNumElement(L, "con", "BURNIN_SPLIT_Y");
	
	x_start = 0;
	y_start =  getTableNumElement(L, "con", "BURNIN_SPLIT_Y_START");
	
        x = 0; 
        y = 0; 
        y_print = 0;
	
	//printStr( "hello world!!", 200, 200);
        refreshWin();
        	
	if( x_num * y_num > data->flow_number)
        {
                isprint = 1;
                x = x_range * ( data->flow_number % x_num);
                y = y_start + y_range * ( data->flow_number / x_num);
                y_print = getTableNumElement(L, "con", "BURNIN_SPLIT_PRINT");
        }
	printf( "x %d, y %d, y_pint %d \n", x, y, y_print);
	
        if( isprint)
        {	
	        sprintf(buf, "%s TEST is running.",  radios[ data->flow_number]);
                label = printStr( buf, x, y);
                y += y_print;
                refreshWin();
        }

        char run_file[1024] = {0};
        char *path = (char *)getTableElement(L, "con", "PATH");
        sprintf( run_file, "%sburnin/%s/run.lua",path,radios[ data->flow_number]);
        printf( "go-run.lua: %s\n", run_file);
        
        /*
	printf( "go_burnin_thread: %d, %s \n", data->flow_number, radios[ data->flow_number]);
        char path[128] = {0};
        sprintf( path, "./%s/run.lua", radios[ data->flow_number]);
        printf( "go_burnin_thread: %s \n", path);
        */
        
        while(burnin_run)
        {
/*                r = run( L, path);*/
                r = run( L, run_file);
                if( r)
                {
                        if ( isprint && burnin_run)
                        { 
                                sprintf( buf, "%s TEST ....Error.", radios[ data->flow_number]);
                                printStr( buf, x, y);
                                y += y_print;
                                refreshWin();
                        }
                        break;
                }
        }
/*        
        if( isprint )
        {
                sprintf( buf, "%s TEST ....OK.", radios[ data->flow_number]);
                printStr( buf, x, y);
                y += y_print;
                refreshWin();
        }                      	
*/
	data->ret_value = r;
	return 0;	
}