/* * Copyright (c) 2000 Silicon Graphics, Inc. All Rights Reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as * published by the Free Software Foundation. * * This program is distributed in the hope that it would be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * Further, this software is distributed without any warranty that it is * free of the rightful claim of any third person regarding infringement * or the like. Any license provided herein, whether implied or * otherwise, applies only to this software file. Patent licenses, if * any, provided herein do not apply to combinations of this program with * other software, or any other product whatsoever. * * You should have received a copy of the GNU General Public License along * with this program; if not, write the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy, * Mountain View, CA 94043, or: * * http://www.sgi.com * * For further information regarding this notice, see: * * http://oss.sgi.com/projects/GenInfo/NoticeExplan/ * */ /* $Id: ltp-scanner.c,v 1.1 2009/05/19 09:39:11 subrata_modak Exp $ */ /* * An RTS/pan driver output processing program. * * This program reads an RTS/pan driver output format file, parses it using lex * and saves the information into an in-memory hierarchical keyword table. * * The reporting segment of the program reads that keyword table to produce * it's reports. * * Synopsis: * ltp-scanner [ -e ] [ -D area:level ] [ -h ] * * Description: * Scanner is part of the RTS 2.0 reporting mechanism or pan. * It processes RTS/pan driver format output and produces a single simple report * of each test tag executed, the TCIDs it executed, and their testcases. * * Options: * -e * use an "extended" output format * * -D * enable debug statements. Areas are listed in report2.h and levels * are in the code. Must be compiled with "-DDEBUGGING" * * -h * print out a command usage statement and exit. * * INPUT * The input must conform to the RTS/pan driver format. * * Report Format * A single report style is used. It consists of a header made of all * keywords in the rts_keywords fields of the driver output, and the test * information. * interpretation of CUTS "number of testcases" field when there are * multiple TCIDs. It must be the sum of all TCIDs' testcases. * * System Configuration: * ARCHITECTURE IOS_MODEL_E CRAY_YMP YMP7XX * CONFIG JOBCNTL AVL BMD EMA HPM SECURE TFM_UDB_6 SDS SSD * RELEASE 82 * UNAME sn1703c cool 8.2.0ae d82.25 * date 03/24/94 * * tag tcid testcase status contact * ------------------------------------------------------------------------ * * When a report is made for only a tag, the TCID and Testcase fields * contain a dash ( "-" ). The intention is that the output be usable * by other Unix programs. * * When a report is made for all TCIDs and Testcases, a star ( "*" ) is used. * * When in extended mode, an additional output line is produced for each * tag. * * This line is identified with a "!" in the TCID and Testcase fields. * * It has no minimum and maximum field widths, so the output does not * line up in columns * * the "status" field contains the initiation status * * the "contact" field does not expand multiple comma-separated contacts * * fields: * tag, tcid, testcase, status, contact, * start time, duration, termination type, termination id, * output starting line, output ending line * * RELATED DOCUMENTS * Regression Test System Phase 2 Test Result Reporting System * * AUTHOR * Glen Overby wrote the code. * * Internal Data Format * All data is maintained in a hierarchical key database. While there are * many available databases, this impliments a simple ASCII comma-separated * keyed database. * * Key Naming * - The top-level keys are named after the RTS or pan test tags. * - The top-level key named "_RTS" contains the RTS Keywords * - Each tag has a "_keys" tag that contains the key fields from * the TEST_START and EXECUTION_STATUS fields. */ #include <getopt.h> #include <stdarg.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include "scan.h" #include "debug.h" #include "reporter.h" #include "symbol.h" char *cnf; /* current filename */ int extended = 0; /* -e option */ int main(int argc, char *argv[]) { SYM tags; /* tag data */ int c; while ((c = getopt(argc, argv, "D:ehi")) != -1) { switch (c) { case 'i': set_iscanner(); break; case 'D': set_debug(optarg); break; case 'e': extended++; break; case 'h': fprintf(stderr, "%s [-e] [-i] [ -D area, level ] input-filenames\n", argv[0]); exit(0); default: fprintf(stderr, "invalid argument, %c\n", c); exit(1); } } lex_files(&argv[optind]); /* I hope that argv[argc+1] == NULL */ tags = sym_open(0, 0, 0); scanner(tags); #ifdef DEBUGGING DEBUG(D_INIT, 1) sym_dump_s(tags, 0); #endif reporter(tags); exit(0); }