1 23 package org.archive.crawler.selftest; 24 25 import java.io.File ; 26 import java.util.ArrayList ; 27 import java.util.Date ; 28 import java.util.List ; 29 import java.util.logging.Logger ; 30 31 import junit.framework.Test; 32 import junit.framework.TestResult; 33 34 import org.archive.crawler.Heritrix; 35 import org.archive.crawler.admin.CrawlJob; 36 import org.archive.crawler.admin.CrawlJobHandler; 37 import org.archive.crawler.datamodel.CrawlURI; 38 import org.archive.crawler.event.CrawlURIDispositionListener; 39 40 41 48 49 public class SelfTestCrawlJobHandler extends CrawlJobHandler 50 implements CrawlURIDispositionListener { 51 54 private static final String SELFTEST_WEBAPP = "selftest"; 55 56 private static Logger logger = 57 Logger.getLogger("org.archive.crawler.admin.SelftestCrawlJobHandler"); 58 59 64 private String selfTestName = null; 65 66 private String selfTestUrl = null; 67 68 69 private SelfTestCrawlJobHandler() { 70 this(null, null, null); 71 } 72 73 public SelfTestCrawlJobHandler(final File jobsDir, 74 final String selfTestName, final String url) { 75 super(jobsDir, false, false); 77 this.selfTestName = selfTestName; 78 this.selfTestUrl = url; 79 } 80 81 @Override 82 public void crawlStarted(String message) { 83 super.crawlStarted(message); 84 this.getCurrentJob().getController(). 85 addCrawlURIDispositionListener(this); 86 } 87 88 public void crawlEnded(String sExitMessage) { 89 TestResult result = null; 90 try { 91 super.crawlEnded(sExitMessage); 92 93 List completedCrawlJobs = getCompletedJobs(); 96 if (completedCrawlJobs == null || completedCrawlJobs.size() <= 0) { 97 logger.severe("Selftest job did not complete."); 98 } else { 99 CrawlJob job = (CrawlJob)completedCrawlJobs. 100 get(completedCrawlJobs.size()-1); 101 Test test = null; 102 if (this.selfTestName != null && 103 this.selfTestName.length() > 0) { 104 String thisClassName = this.getClass().getName(); 108 String pkg = thisClassName. 109 substring(0, thisClassName.lastIndexOf('.')); 110 String selftestClass = pkg + '.' + this.selfTestName + 112 "SelfTest"; 113 List <Class <?>> classList = new ArrayList <Class <?>>(); 115 classList.add(Class.forName(selftestClass)); 116 test = AllSelfTestCases.suite(this.selfTestUrl, 117 job, job.getDirectory(), Heritrix.getHttpServer(). 118 getWebappPath(SELFTEST_WEBAPP), classList); 119 } else { 120 test = AllSelfTestCases.suite(this.selfTestUrl, 122 job, job.getDirectory(), Heritrix.getHttpServer(). 123 getWebappPath(SELFTEST_WEBAPP)); 124 } 125 result = junit.textui.TestRunner.run(test); 126 } 127 } catch (Exception e) { 128 logger.info("Failed running selftest analysis: " + e.getMessage()); 129 } finally { 130 logger.info((new Date ()).toString() + " Selftest " + 136 (result != null && result.wasSuccessful()? "PASSED": "FAILED")); 137 stop(); 138 Heritrix.shutdown(((result != null) && result.wasSuccessful())? 139 0: 1); 140 } 141 } 142 143 public void crawledURIDisregard(CrawlURI curi) { 144 } 146 147 public void crawledURIFailure(CrawlURI curi) { 148 } 150 151 public void crawledURINeedRetry(CrawlURI curi) { 152 } 154 155 public void crawledURISuccessful(CrawlURI curi) { 156 if (curi.toString().endsWith("/Checkpoint/")) { 158 this.getCurrentJob().getController().requestCrawlCheckpoint(); 159 } 160 } 161 } | Popular Tags |