1 /* 2 * Copyright (c) 2011 Alex Hornung <alex@alexhornung.com>. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 9 * 1. Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 2. Redistributions in binary form must reproduce the above copyright 12 * notice, this list of conditions and the following disclaimer in 13 * the documentation and/or other materials provided with the 14 * distribution. 15 * 16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 17 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 18 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 19 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 20 * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 21 * INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, 22 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 23 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 24 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 25 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 26 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 * SUCH DAMAGE. 28 */ 29 30 #include <sys/resource.h> 31 #include <sys/time.h> 32 #include <sys/types.h> 33 #include <sys/wait.h> 34 35 #include <errno.h> 36 #include <signal.h> 37 #include <stdio.h> 38 #include <stdlib.h> 39 #include <stdint.h> 40 #include <string.h> 41 #include <unistd.h> 42 #include <pwd.h> 43 44 #include <err.h> 45 46 #include <libprop/proplib.h> 47 48 #include "parser.h" 49 #include "testcase.h" 50 #include "runlist.h" 51 #include <dfregress.h> 52 53 54 static void 55 usage(void) 56 { 57 fprintf(stderr, "Usage: dfregress -o <output plist file> \n" 58 " -t <testcase directory>\n" 59 " -p <pre/post command directory>\n" 60 " -r <input runlist file>\n"); 61 exit(1); 62 } 63 64 int 65 main(int argc, char *argv[]) 66 { 67 const char *runlist_file = "runlist.run"; 68 int ch; 69 70 while ((ch = getopt(argc, argv, "h?o:r:t:p:")) != -1) { 71 switch (ch) { 72 case 'o': 73 output_file = optarg; 74 break; 75 76 case 't': 77 testcase_dir = optarg; 78 break; 79 80 case 'r': 81 runlist_file = optarg; 82 break; 83 84 case 'p': 85 prepost_dir = optarg; 86 break; 87 88 case '?': 89 case 'h': 90 usage(); 91 /* NOTREACHED */ 92 break; 93 } 94 } 95 96 argc -= optind; 97 argv += optind; 98 99 prop_array_t runlist = runlist_load_from_text(runlist_file); 100 runlist_iterate(runlist, runlist_run_test, runlist); 101 102 return 0; 103 } 104