diff --git a/src/server/distrend.c b/src/server/distrend.c --- a/src/server/distrend.c +++ b/src/server/distrend.c @@ -80,10 +80,7 @@ struct general_info ********************************************* */ /* ************General Functions************* */ -// int xml_dump(); int distrend_do(); -int start_data(struct general_info *general_info); -int mortition(struct general_info *geninfo, struct distrenjob *job); void frame_watchdog(struct distrenjob *distrenjob_head); int distrend_do_config(int argc, char *argv[], struct distrend_config **config); int distrend_config_free(struct distrend_config *config); @@ -91,20 +88,10 @@ int distrend_config_free(struct distrend /* **************XML Functions**************** */ void update_general_info(struct general_info *geninfo); int import_general_info(struct general_info *general_info); -int restore_distrenjob(struct general_info *geninfo, struct distrenjob **distrenjob, jobnum_t jobnum); -int updateJobStatsXML(struct distrenjob *job); int update_xml_joblist(struct general_info *geninfo); -int createQueueFromXML(struct general_info *geninfo); -int reCreateQueueFromXML(struct general_info *geninfo, xmlDocPtr doc, xmlNodePtr current); /* **************Test Functions**************** */ -int printFrameInfo(struct frameset *frame); -int printJob(struct distrenjob *job); -int printJobInfo(struct distrenjob *job); -int printAllJobnums(struct distrenjob *head); -int interactiveTest(int test, struct general_info general_info); -int job_getserialfilename(char **filename, struct general_info *geninfo, unsigned int jobnum, int createdir); -int distren_mkdir_recurse(char *dirname); +int interactiveTest(int test, struct general_info general_info, distrend_mysql_conn_t conn); /* **************** Main ********************* */ int main(int argc, char *argv[]) @@ -122,7 +109,7 @@ int main(int argc, char *argv[]) CLIENTSTATUS_IDLE = 2 } clientstatus; - xmlinit(); + // xmlinit(); for(counter = 0; counter < argc; counter ++) { @@ -148,14 +135,16 @@ int main(int argc, char *argv[]) general_info.config->datadir); /** MySQL Connection */ + fprintf(stderr,"Connecting to mysql...\n"); if(mysqlConnect(&general_info.conn)) { fprintf(stderr, "%s:%d: mysqlConnect() failed\n", __FILE__, __LINE__); return 1; } + fprintf(stderr,"Finished connecting!\n"); /** Execute test function */ - // interactiveTest(test, general_info); + interactiveTest(test, general_info, general_info.conn); distrend_listen(general_info.config, &clients); @@ -426,202 +415,68 @@ int update_xml_joblist(struct general_in /* ************************** Test Functions ************************* */ -/** Prints info about frames in a frameset */ -int printFrameInfo(struct frameset *frame) -{ - char *status; - - status = NULL; - - switch(frame->status) - { - case FRAMESETSTATUS_UNASSIGNED: - _distren_asprintf(&status, "%s", "unassigned"); - break; - case FRAMESETSTATUS_ASSIGNED: - _distren_asprintf(&status, "%s", "assigned"); - break; - case FRAMESETSTATUS_DONE: - _distren_asprintf(&status, "%s", "completed"); - break; - case FRAMESETSTATUS_CANCELED: - _distren_asprintf(&status, "%s", "canceled"); - } - - printf("frame #: %d --> %s\n", frame->num, status); - free(status); - - return 0; -} - -/** Prints information about all frames in a job */ -int printJob(struct distrenjob *job) -{ - int counter; - fprintf(stderr, "frame_num: status\n"); - for(counter = 0; counter < job->total_frames; counter++) - { - printFrameInfo(&job->frameset[counter]); - } - - return 1; -} - -/** Prints information about a job */ -int printJobInfo(struct distrenjob *job) -{ - fprintf(stderr, "type: %d\n", job->type); - fprintf(stderr, "name: %s\n", job->name); - fprintf(stderr, "submitter: %s\n", job->submitter); - fprintf(stderr, "priority: %d\n", job->priority); - fprintf(stderr, "completed: %d\n", job->completed_frames); - fprintf(stderr, "assigned: %d\n", job->assigned_frames); - fprintf(stderr, "total: %d\n", job->total_frames); - fprintf(stderr, "watchdog: %d\n", job->watchdog_forgiveness); - fprintf(stderr, "hibernate: %d\n", job->hibernate); - fprintf(stderr, "prev_frame: %d\n", job->prev_frame_index); - fprintf(stderr, "render power: %ld\n", job->assigned_render_power); - - return 1; -} - -/** Print all jobnums in the queue */ -int printAllJobnums(struct distrenjob *head) -{ - struct distrenjob *current_job; - int total_jobs; - fprintf(stderr, "job numbers in the order they will be processed:\n"); - - total_jobs = 0; - for(current_job = head->next; current_job; current_job = current_job->next) - { - fprintf(stderr, "%d: %s\n", current_job->jobnum, current_job->name); - total_jobs++; - } - - fprintf(stderr, "\n%d jobs in queue\n\n", total_jobs); - - return 1; -} /** Interactive test for the queuing system */ -/* @QUEUE: Test uses methods not present in C code using mysql web-based system -int interactiveTest(int test, struct general_info general_info){ +/* @QUEUE: Test uses methods not present in C code using mysql web-based system */ +int interactiveTest(int test, struct general_info general_info, distrend_mysql_conn_t conn){ int command; - jobnum_t jobnum; - struct distrenjob *tmp_job; - struct frameset *tmp_frame; - int type; - char *name; - char *submitter; - char *email; - int priority; - int width; - int height; - int start_frame; - int end_frame; - size_t read_buf; + fprintf(stderr,"Hello!\n"); + int32_t slaveKey = 0; + int32_t jobKey = 0; + int32_t frameNum = 0; + int32_t newPriority = 0; + int tmp = 0; while(test == 1) { fprintf(stderr, "Welcome to DistRen Alpha Interactive Test Mode\n\n"); - fprintf(stderr, "\t1 \tPrint all frames in a job\n"); - fprintf(stderr, "\t2 \tExamine certain job\n"); - fprintf(stderr, "\t3 \tGet a frame to render\n"); - fprintf(stderr, "\t4 \tAdd a job\n"); - fprintf(stderr, "\t5 \tDelete a job\n"); - fprintf(stderr, "\t6 \tPrint jobnums in queue\n"); - fprintf(stderr, "\t7 \tPrint general info\n"); - fprintf(stderr, "\t8 \tQuit\n"); + fprintf(stderr, "\t1 \tGet a frame to render\n"); + fprintf(stderr, "\t2 \tChange job priority\n"); + fprintf(stderr, "\t3 \tSet frame finished\n"); + fprintf(stderr, "\t4 \tQuit\n"); scanf("%d", &command); switch(command) { case 1: - fprintf(stderr, "Job number: "); - scanf("%d", &jobnum); - printJob(distrenjob_get(&general_info.head, jobnum)); + fprintf(stderr, "Got frame: "); + find_jobframe(conn, slaveKey, jobKey, frameNum); + fprintf(stderr, "jobKey: %d, frameNum: %d\n",jobKey,frameNum); break; case 2: - fprintf(stderr, "Job number: "); - scanf("%d", &jobnum); - printJobInfo(distrenjob_get(&general_info.head, jobnum)); + fprintf(stderr,"Job key: "); + scanf("%d", &tmp); + jobKey = tmp; + + fprintf(stderr,"New priority: "); + scanf("%d", &tmp); + newPriority = tmp; + + change_job_priority(conn, jobKey, newPriority); + fprintf(stderr,"Changed!"); break; case 3: - general_info.total_render_power ++; - if(!find_jobframe_again(&general_info, -1, 1, &tmp_job, &tmp_frame)) - { - fprintf(stderr, "frame was found, details below\n"); - fprintf(stderr, "Job#:%d\n", tmp_job->jobnum); - fprintf(stderr, "Frame#:%d\n", tmp_frame->num); - } + fprintf(stderr,"Slave Key: "); + scanf("%d", &tmp); + slaveKey = tmp; + fprintf(stderr,"Job Key: "); + scanf("%d", &tmp); + jobKey = tmp; + + fprintf(stderr,"Frame Number: "); + scanf("%d", &tmp); + frameNum = tmp; + + finish_frame(conn, slaveKey, jobKey, frameNum); + fprintf(stderr,"Finished Frame!\n"); break; case 4: - name = NULL; - submitter = NULL; - email = NULL; - - fprintf(stderr, "\nType: \n\t 1 \t blender\n\t 2 \t povray\n"); scanf("%d", &type); - fprintf(stderr, "\nName: "); scanf("\n"); getline(&name, &read_buf, stdin); - fprintf(stderr, "\nSubmitter: "); getline(&submitter, &read_buf, stdin); - fprintf(stderr, "\nEmail: "); getline(&email, &read_buf, stdin); - fprintf(stderr, "\nPriority: "); scanf("%d", &priority); - fprintf(stderr, "\nStart frame: "); scanf("%d", &start_frame); - fprintf(stderr, "\nEnd frame: "); scanf("%d", &end_frame); - fprintf(stderr, "\nWidth: "); scanf("%d", &width); - fprintf(stderr, "\nHeight: "); scanf("%d", &height); - prepare_distrenjob(&general_info, type, name, submitter, priority, start_frame, end_frame, width, height); + return 0; break; - case 5: - fprintf(stderr, "\nJob number: "); - scanf("%d", &jobnum); - distrenjob_remove(&general_info, distrenjob_get(&general_info.head, jobnum)); - break; - case 6: - printAllJobnums(&general_info.head); - break; - case 7: - fprintf(stderr, "\nHighest job number: %d", general_info.highest_jobnum); - fprintf(stderr, "\nJobs in queue: %d", general_info.jobs_in_queue); - fprintf(stderr, "\nTotal frames rendered: %d", general_info.total_frames_rendered); - fprintf(stderr, "\nTimestamp: %lu", (long)general_info.timestamp); - fprintf(stderr, "\nTotal priority pieces: %ld", general_info.total_priority_pieces); - fprintf(stderr, "\nTotal render power: %ld\n", general_info.total_render_power); - break; - case 8: - fprintf(stderr,"Goodbye.\n"); - test = 0; - default: - fprintf(stderr, "Invalid input, please try again.\n"); } + return 0; } return 0; } -*/ - - -/** - @TODO: reuse for constructing data paths? - constructs the filename for a distrenjob's serialized XML - to be stored/retrieved from/in. - @arg filename pointer to filename allocated using something - malloc() and free() compatible. Must be free()ed by the - caller - @return 0 on success - */ -int job_getserialfilename(char **filename, struct general_info *geninfo, unsigned int jobnum, int createdir) -{ - _distren_asprintf(filename, "%s/stor/job/%d/distrenjob.xml", - geninfo->config->datadir, - jobnum); - if(!*filename) - return 1; - - if(createdir) - return distren_mkdir_recurse(*filename); - - return 0; -} - diff --git a/src/server/mysql.c b/src/server/mysql.c --- a/src/server/mysql.c +++ b/src/server/mysql.c @@ -85,9 +85,9 @@ int mysqlConnect(distrend_mysql_conn_t * { MYSQL *mysqlconn; - char *server = "zserver1"; + char *server = "zserver2"; char *user = "distren"; - char *password = "secretpassword"; + char *password = "HwLxuBqTvJ6J7FWj"; char *database = "distren"; mysqlconn = mysql_init(NULL); diff --git a/src/server/slavefuncs.c b/src/server/slavefuncs.c --- a/src/server/slavefuncs.c +++ b/src/server/slavefuncs.c @@ -330,3 +330,11 @@ int distren_mkdir_recurse(char *dirname) return 0; } + +/** + @TODO: Use for constructing path to job data locally and/or on data.distren.org + */ +int job_build_path(char *filename, unsigned int jobnum) +{ + return 0; +} diff --git a/src/server/slavefuncs.h b/src/server/slavefuncs.h --- a/src/server/slavefuncs.h +++ b/src/server/slavefuncs.h @@ -45,4 +45,6 @@ int exec_blender(char *input, char *outp void xmlinit(); void xmlcleanup(); int distren_mkdir_recurse(char *dirname); +int job_build_path(char *filename, unsigned int jobnum); + #endif