diff --git a/src/server/slave.c b/src/server/slave.c --- a/src/server/slave.c +++ b/src/server/slave.c @@ -63,7 +63,7 @@ int main(int argc, char *argv[]) char curopt; - while(((char)-1) != (curopt = getopt(argc, argv, "u:h"))) + while(((char)-1) != (curopt = getopt(argc, argv, "u:th"))) { if(curopt == ':') { @@ -77,9 +77,14 @@ int main(int argc, char *argv[]) } else if(curopt == 'h') { - fprintf(stderr, "Usage: distrenslave [option] \nStarts a distren slave\n\t-u\tset username (run after fresh install)\n\t-h\tshow this help\n"); + fprintf(stderr, "Usage: distrenslave [option] \nStarts a distren slave\n\t-u\tset username (run after fresh install)\n\t-t\tEnter test mode\n\t-h\tshow this help\n"); return 2; } + else if(curopt == 't') + { + slaveTest(); + return 0; + } else if(curopt == 'u') username = strdup(optarg); fprintf(stderr, "Putting username \"%s\" in distrenslave.conf\n", username); diff --git a/src/server/slavefuncs.c b/src/server/slavefuncs.c --- a/src/server/slavefuncs.c +++ b/src/server/slavefuncs.c @@ -352,7 +352,7 @@ int downloadTar(char *url, char *destina // Download the Tar if( curlget(url, destinationPath) == 0){ fprintf(stderr, "Job data retrieved successfully\n"); - free(url); + // free(url); @FIXME: causes doublefree! Curl must free the url? return 0; } else { @@ -479,3 +479,63 @@ int checkUsername(char *username){ return 1; } } + +void slaveTest(){ + int command; + int test = 1; + int jobnum = 0; + fprintf(stderr,"Hello!\n"); + char tmpString1[100] = ""; + char tmpString2[100] = ""; + + while(test == 1) + { + fprintf(stderr, "Welcome to DistRenSlave Alpha Interactive Test Mode\n\n"); + fprintf(stderr, "\t1 \tTest posting (uploading) data\n"); + fprintf(stderr, "\t2 \tTest getting frame from server\n"); + fprintf(stderr, "\t3 \tTest data downloading\n"); + fprintf(stderr, "\t4 \tTest archive decompression\n"); + fprintf(stderr, "\t5 \tQuit\n"); + + scanf("%d", &command); + + switch(command) + { + case 1: + fprintf(stderr,"Path to file to upload: "); + scanf("%99s", tmpString1); + fprintf(stderr,"URL to upload to: "); + scanf("%99s", tmpString2); + uploadOutput(tmpString1, tmpString2); + break; + case 2: + fprintf(stderr,"Remotio not implemented yet!\n"); + break; + case 3: + fprintf(stderr,"URL to file: "); + scanf("%s", tmpString1); + fprintf(stderr,"Local save path (including filename): "); + scanf("%s", tmpString2); + if(downloadTar(tmpString1, tmpString2)) + fprintf(stderr,"Error downloading!\n"); + else + fprintf(stderr,"Success!\n"); + break; + case 4: + fprintf(stderr,"Jobnum to decompress: "); + scanf("%d", jobnum); + fprintf(stderr,"Path to compressed data: "); + scanf("%d", tmpString2); + unpackJob(tmpString1, jobnum); + + break; + case 5: + test = 0; + break; + default: + fprintf(stderr, "Invalid input, please try again.\n"); + break; + } + } +} + diff --git a/src/server/slavefuncs.h b/src/server/slavefuncs.h --- a/src/server/slavefuncs.h +++ b/src/server/slavefuncs.h @@ -51,5 +51,6 @@ int uploadOutput(char *pathtoOutput, cha int unpackJob(char *pathtoTar, int jobnum); void prepareJobPaths(int jobnum,char *datadir, char **urltoTar,char **pathtoTar,char **pathtoJobfile,char **urltoOutput,char **pathtoXml); int checkUsername(char *username); +void slaveTest(); #endif