|
TestGate |
|
1 /* 2 * TestGate.java 3 * 4 * Copyright (c) 1998-2001, The University of Sheffield. 5 * 6 * This file is part of GATE (see http://gate.ac.uk/), and is free 7 * software, licenced under the GNU Library General Public License, 8 * Version 2, June 1991 (in the distribution as file licence.html, 9 * and also available at http://gate.ac.uk/gate/licence.html). 10 * 11 * Hamish Cunningham, 21/Jan/00 12 * 13 * $Id: TestGate.java,v 1.160 2002/03/05 15:09:19 valyt Exp $ 14 */ 15 16 package gate; 17 18 import java.util.*; 19 import java.net.*; 20 import java.io.*; 21 import junit.framework.*; 22 import gnu.getopt.*; 23 24 import gate.*; 25 import gate.annotation.*; 26 import gate.corpora.*; 27 import gate.creole.*; 28 import gate.creole.tokeniser.*; 29 import gate.creole.gazetteer.*; 30 import gate.jape.*; 31 import gate.xml.*; 32 import gate.email.*; 33 import gate.html.*; 34 import gate.sgml.*; 35 import gate.util.*; 36 import gate.config.*; 37 import gate.persist.*; 38 import gate.security.*; 39 import com.ontotext.gate.gazetteer.*; 40 41 /** Top-level entry point for GATE test suite; 42 * "main" will run the JUnit test runner interface. 43 * <P> 44 * Many tests require access to files; generally these files are located 45 * on Web servers. In cases where there is no net connection, or the 46 * Web servers are down, the test files are searched for in the file system 47 * or Jar code base that the system has been loaded from. The search 48 * order for test files is like this: 49 * <UL> 50 * <LI> 51 * <A HREF=http://derwent.dcs.shef.ac.uk:80/gate.ac.uk/> 52 * http://derwent.dcs.shef.ac.uk:80/gate.ac.uk/</A> 53 * <LI> 54 * <A HREF=http://gate.ac.uk:80/>http://gate.ac.uk:80/</A> 55 * <LI> 56 * <A HREF=http://localhost:80/gate.ac.uk/>http://localhost:80/gate.ac.uk/</A> 57 * <LI> 58 * the file system location that the classes came from, e.g. 59 * <TT>z:\gate\classes</TT>, or <TT>jar:....gate.jar</TT>. 60 * </UL> 61 * This search order can be modified by parameters to the main 62 * function (see below). 63 */ 64 65 public class TestGate { 66 67 /** Debug flag */ 68 private static final boolean DEBUG = false; 69 70 /** Status flag for normal exit. */ 71 private static final int STATUS_NORMAL = 0; 72 73 /** Status flag for error exit. */ 74 private static final int STATUS_ERROR = 1; 75 76 private static final String 77 defOracleDriver = "jdbc:oracle:thin:@derwent:1521:dbgate"; 78 private static final String 79 saiOracleDriver = "jdbc:oracle:thin:GATEUSER/gate@192.168.128.7:1521:GATE04"; 80 private static final String 81 defPSQLDriver = "jdbc:postgresql://redmires/gate"; 82 private static final String 83 saiPSQLDriver = "jdbc:postgresql://sirma/gate"; 84 85 86 public static String oracleDriver = defOracleDriver; 87 public static String psqlDriver = defPSQLDriver; 88 89 /** Main routine for the GATE test suite. 90 * Command-line arguments: 91 * <UL> 92 * <LI> 93 * <B>-a</B> means run the test runner in automatic class reload mode 94 * <LI> 95 * <B>-n</B> means assume there's no net connection 96 * <LI> 97 * <B>-t</B> means run the test runner in text mode 98 * (useful for 99 * debugging, as there's less confusion to do with threads and 100 * class loaders). 101 * <LI> 102 * <B>-i file</B> additional initialisation file (probably called 103 * <TT>gate.xml</TT>). Used for site-wide initialisation by the 104 * start-up scripts. 105 * </UL> 106 */ 107 public static void main(String[] args) throws Exception { 108 boolean textMode = false; 109 boolean autoloadingMode = false; 110 111 // process command-line options 112 Getopt g = new Getopt("GATE test suite", args, "tnNasi:"); 113 int c; 114 while( (c = g.getopt()) != -1 ) 115 switch(c) { 116 case 't': 117 textMode = true; 118 break; 119 case 'n': 120 Gate.setNetConnected(false); 121 break; 122 case 'N': 123 Gate.setNetConnected(false); 124 Gate.setLocalWebServer(false); 125 break; 126 case 'a': 127 autoloadingMode = true; 128 break; 129 case 's': 130 oracleDriver = saiOracleDriver; 131 psqlDriver = saiPSQLDriver; 132 break; 133 // -i gate.xml site-wide init file 134 case 'i': 135 String optionString = g.getOptarg(); 136 URL u = null; 137 File f = new File(optionString); 138 try { 139 u = f.toURL(); 140 } catch(MalformedURLException e) { 141 Err.prln("Bad initialisation file: " + optionString); 142 Err.prln(e); 143 System.exit(STATUS_ERROR); 144 } 145 Gate.setSiteConfigFile(f); 146 Out.prln( 147 "Initialisation file " + optionString + 148 " recorded for initialisation" 149 ); 150 break; 151 case '?': 152 // leave the warning to getopt 153 return; 154 default: 155 Err.prln("getopt() returned " + c + "\n"); 156 } // switch 157 158 // set up arguments for the JUnit test runner 159 String junitArgs[] = new String[2]; 160 junitArgs[0] = "-noloading"; 161 junitArgs[1] = "gate.TestGate"; 162 163 // use the next line if you're running with output to console in text mode: 164 // junitArgs[1] = "-wait"; 165 166 // execute the JUnit test runner 167 if(textMode) { // text runner mode 168 junit.textui.TestRunner.main(junitArgs); 169 } else if(autoloadingMode) { // autoloading mode 170 junitArgs[0] = "gate.TestGate"; 171 junitArgs[1] = ""; 172 173 // NOTE: the DB tests fail under this one (doesn't load oracle driver, 174 // even after the Class.forName call) 175 Class clazz = null; 176 clazz = Class.forName("oracle.jdbc.driver.OracleDriver"); 177 clazz = null; 178 junit.swingui.TestRunner.main(junitArgs); 179 180 } else { // by default us the single-run GUI version 181 junit.swingui.TestRunner.main(junitArgs); 182 } 183 184 } // main 185 186 /** GATE test suite. Every test case class has to be 187 * registered here. 188 */ 189 public static Test suite() throws Exception { 190 // inialise the library. we re-throw any exceptions thrown by 191 // init, after printing them out, because the junit gui doesn't 192 // say anything more informative than "can't invoke suite" if there's 193 // an exception here... 194 try { 195 Gate.init(); 196 } catch(GateException e) { 197 Out.prln("can't initialise GATE library! exception = " + e); 198 throw(e); 199 } 200 201 TestSuite suite = new TestSuite(); 202 203 try { 204 //////////////////////////////////////////////// 205 // Test bench 206 //////////////////////////////////////////////// 207 // set this true to run all tests; false to run the just one below 208 boolean allTests = true; 209 210 if(! allTests){ 211 suite.addTest(TestPR.suite()); 212 } else { 213 suite.addTest(TestPersist.suite()); 214 suite.addTest(TestBumpyStack.suite()); 215 suite.addTest(TestControllers.suite()); 216 suite.addTest(TestSecurity.suite()); 217 suite.addTest(TestAnnotationDiff.suite()); 218 suite.addTest(TestConfig.suite()); 219 suite.addTest(TestAnnotation.suite()); 220 suite.addTest(TestEmail.suite()); 221 suite.addTest(TestXml.suite()); 222 suite.addTest(TestHtml.suite()); 223 suite.addTest(TestSgml.suite()); 224 suite.addTest(TestXSchema.suite()); 225 suite.addTest(TestCreole.suite()); 226 suite.addTest(CookBook.suite()); 227 suite.addTest(TestFiles.suite()); 228 suite.addTest(TestJavac.suite()); 229 suite.addTest(TestJdk.suite()); 230 suite.addTest(TestJape.suite()); 231 suite.addTest(TestTemplate.suite()); 232 suite.addTest(TestJacl.suite()); 233 suite.addTest(TestDocument.suite()); 234 suite.addTest(TestRBTreeMap.suite()); 235 suite.addTest(TestCorpus.suite()); 236 suite.addTest(TestSerialCorpus.suite()); 237 //no longer needed as replaced by testPR 238 // suite.addTest(TestTokeniser.suite()); 239 // suite.addTest(TestGazetteer.suite()); 240 // suite.addTest(TestSplitterTagger.suite()); 241 suite.addTest(TestFeatureMap.suite()); 242 suite.addTest(TestPR.suite()); 243 244 //test ontotext gazetteer 245 suite.addTest(TestNaturalGazetteer.suite()); 246 247 } // if(allTests) 248 249 } catch(Exception e) { 250 Out.prln("can't add tests! exception = " + e); 251 throw(e); 252 } 253 254 return suite; 255 } // suite 256 257 } // class TestGate 258
|
TestGate |
|