int main(void) { int failures = 0; failures += simpletest(); failures += updatetest(); failures += writetest(); failures += seektest(); return (failures); }
int main(int argc,char *argv[]) { int err, opt, removefiles, list; char *file1, *file2; verbose = 0; list = 0; removefiles = 1; getoptinit(); while((opt=getopt(argc,argv,"lrv")) != -1) { switch(opt) { case 'l': list = 1; break; case 'r': removefiles = 0; break; case 'v': verbose++; break; default: usage(0); } } if (argc != optind+2) usage("Bad arg count"); /* Test all aspects of TFS API calls: */ file1 = argv[optind]; file2 = argv[optind+1]; if ((!strcmp(file1,TMPFILE)) || (!strcmp(file2,TMPFILE))) usage(TMPFILE); if (verbose) mon_printf("tfstest %s %s...\n",file1,file2); /* * Start by removing files to be created later... */ if (mon_tfsstat(TMPFILE)) { if (verbose) mon_printf("Removing %s...\n",TMPFILE); err = mon_tfsunlink(TMPFILE); if (err != TFS_OKAY) tfsdie(err); } if (mon_tfsstat(file1)) { if (verbose) mon_printf("Removing %s...\n",file1); err = mon_tfsunlink(file1); if (err != TFS_OKAY) tfsdie(err); } if (mon_tfsstat(file2)) { if (verbose) mon_printf("Removing %s...\n",file2); err = mon_tfsunlink(file2); if (err != TFS_OKAY) tfsdie(err); } /* * Create a file... */ if (verbose) mon_printf("Creating %s...\n",file1); err = mon_tfsadd(file1,"data1","2",data1,strlen(data1)); if (err != TFS_OKAY) tfsdie(err); /* * Basic getline test... */ if (verbose) mon_printf("Checking 'getline'...\n"); getlinetest(file1,data1); /* * Now copy the file... */ if (verbose) mon_printf("Copying %s to %s...\n",file1,file2); cp(file2,file1); /* * Now compare the two... * (they should be identical) */ if (verbose) mon_printf("Comparing %s to %s...\n",file1,file2); if (cmp(file1,file2) != 0) die(); /* * Seek test... * Verify that data at a specified offset is as expected based on the * file (file1) initially created from the data1 array... */ if (verbose) mon_printf("Running seek test on %s...\n",file1); seektest(file1,38,data1[38]); /* * Truncateion test... * Truncate a file and verify. */ if (verbose) mon_printf("Running truncation test on %s...\n",file1); trunctest(file1,data1); /* * Tfsctrl() function test... */ if (verbose) mon_printf("Running tfsctrl test...\n"); ctrltest(file1,data1); /* * Write test... * Modify a file in a few different ways and verify the modification... * Note that after this point, file1 and data1 are not the same. * The content of file1 will be the same as the new_data1 array. */ if (verbose) mon_printf("Running write test on %s...\n",file1); writetest(file1,new_data1); /* * File in-use test... * Verify that if a file is in-use, it cannot be removed. */ if (verbose) mon_printf("Running in-use test on %s...\n",file1); inusetest(file1); /* * Append test... * Verify that a file can be properly appended to. */ if (verbose) mon_printf("Running append test on %s...\n",file1); appendtest(file1,"this_is_some_data","this_is_the_appended_data"); /* * If the -r option is not set, then remove the files... */ if (removefiles) { if (mon_tfsstat(file1)) { err = mon_tfsunlink(file1); if (err != TFS_OKAY) tfsdie(err); } if (mon_tfsstat(file2)) { err = mon_tfsunlink(file2); if (err != TFS_OKAY) tfsdie(err); } if (mon_tfsstat(TMPFILE)) { err = mon_tfsunlink(TMPFILE); if (err != TFS_OKAY) tfsdie(err); } } if (list) ls(); /* All error cases checked above would have resulted in an exit * of this application, so if we got here, the testing must * have succeeded... */ mon_printf("TFS test on %s & %s PASSED\n",file1,file2); mon_appexit(0); return(0); }