    1   /* SettingsFrameworkTestCase
    2    *
    3    * $Id: SettingsFrameworkTestCase.java 4928 2007-02-21 10:19:40Z gojomo $
    4    *
    5    * Created on Feb 2, 2004
    6    *
    7    * Copyright (C) 2004 Internet Archive.
    8    *
    9    * This file is part of the Heritrix web crawler (crawler.archive.org).
    10   *
    11   * Heritrix is free software; you can redistribute it and/or modify
    12   * it under the terms of the GNU Lesser Public License as published by
    13   * the Free Software Foundation; either version 2.1 of the License, or
    14   * any later version.
    15   *
    16   * Heritrix is distributed in the hope that it will be useful,
    17   * but WITHOUT ANY WARRANTY; without even the implied warranty of
    18   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    19   * GNU Lesser Public License for more details.
    20   *
    21   * You should have received a copy of the GNU Lesser Public License
    22   * along with Heritrix; if not, write to the Free Software
    23   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    24   */
    25  package org.archive.crawler.settings;
    26
    27  import java.io.File;
    28
    29  import javax.management.Attribute;
    30
    31  import org.archive.crawler.datamodel.CrawlOrder;
    32  import org.archive.crawler.datamodel.CrawlURI;
    33  import org.archive.crawler.datamodel.ServerCache;
    34  import org.archive.crawler.settings.Constraint.FailedCheck;
    35  import org.archive.net.UURIFactory;
    36  import org.archive.util.TmpDirTestCase;
    37
    38  /*** Set up a couple of settings to test different functions of the settings
    39   * framework.
    40   *
    41   * @author John Erik Halse
    42   */
    43  public abstract class SettingsFrameworkTestCase extends TmpDirTestCase implements
    44          ValueErrorHandler {
    45      private File orderFile;
    46      private File settingsDir;
    47      private CrawlerSettings globalSettings;
    48      private CrawlerSettings perDomainSettings;
    49      private CrawlerSettings perHostSettings;
    50      protected XMLSettingsHandler settingsHandler;
    51      private CrawlURI unMatchedURI;
    52      private CrawlURI matchDomainURI;
    53      private CrawlURI matchHostURI;
    54
    55      /*
    56       * @see TmpDirTestCase#setUp()
    57       */
    58      protected void setUp() throws Exception {
    59          super.setUp();
    60          orderFile = new File(getTmpDir(), "SETTINGS_order.xml");
    61          String settingsDirName = "SETTINGS_per_host_settings";
    62          settingsDir = new File(orderFile, settingsDirName);
    63          settingsHandler = new XMLSettingsHandler(orderFile);
    64          settingsHandler.initialize();
    65          settingsHandler.getOrder().setAttribute(
    66            new Attribute(CrawlOrder.ATTR_SETTINGS_DIRECTORY, settingsDirName));
    67
    68          globalSettings = settingsHandler.getSettingsObject(null);
    69          perDomainSettings = settingsHandler.getOrCreateSettingsObject("archive.org");
    70          perHostSettings = settingsHandler.getOrCreateSettingsObject("www.archive.org");
    71
    72          new ServerCache(getSettingsHandler());
    73
    74          unMatchedURI = new CrawlURI(
    75              UURIFactory.getInstance("http://localhost.com/index.html"));
    76
    77          matchDomainURI = new CrawlURI(
    78              UURIFactory.getInstance("http://audio.archive.org/index.html"));
    79
    80          matchHostURI = new CrawlURI(
    81              UURIFactory.getInstance("http://www.archive.org/index.html"));
    82
    83          // Write legit email and url so we avoid warnings if tests are reading
    84          // and writing order files.
    85          MapType httpHeaders = (MapType)globalSettings.
    86              getModule(CrawlOrder.ATTR_NAME).
    87                  getAttribute(CrawlOrder.ATTR_HTTP_HEADERS);
    88          httpHeaders.setAttribute(globalSettings,
    89              new Attribute(CrawlOrder.ATTR_USER_AGENT,
    90                  "unittest (+http://testing.one.two.three)"));
    91          httpHeaders.setAttribute(globalSettings,
    92                  new Attribute(CrawlOrder.ATTR_FROM,
    93                      "unittestingtesting@one.two.three"));
    94      }
    95
    96      /*
    97       * @see TmpDirTestCase#tearDown()
    98       */
    99      protected void tearDown() throws Exception {
    100         super.tearDown();
    101         cleanUpOldFiles("SETTINGS");
    102     }
    103
    104     /***
    105      * @return global settings
    106      */
    107     public CrawlerSettings getGlobalSettings() {
    108         return globalSettings;
    109     }
    110
    111     /***
    112      * @return per domain settings
    113      */
    114     public CrawlerSettings getPerDomainSettings() {
    115         return perDomainSettings;
    116     }
    117
    118     /***
    119      * @return per host settings
    120      */
    121     public CrawlerSettings getPerHostSettings() {
    122         return perHostSettings;
    123     }
    124
    125     /***
    126      * @return settings handler
    127      */
    128     public XMLSettingsHandler getSettingsHandler() {
    129         return settingsHandler;
    130     }
    131
    132     /***
    133      * @return the order file
    134      */
    135     public File getOrderFile() {
    136         return orderFile;
    137     }
    138
    139     /***
    140      * @return the settings directory
    141      */
    142     public File getSettingsDir() {
    143         return settingsDir;
    144     }
    145
    146     /***
    147      * @return a uri matching the domain settings
    148      */
    149     public CrawlURI getMatchDomainURI() {
    150         return matchDomainURI;
    151     }
    152
    153     /***
    154      * @return a uri matching the per host settings
    155      */
    156     public CrawlURI getMatchHostURI() {
    157         return matchHostURI;
    158     }
    159
    160     /***
    161      * @return a uri that doesn't match any settings object except globals.
    162      */
    163     public CrawlURI getUnMatchedURI() {
    164         return unMatchedURI;
    165     }
    166
    167     /* (non-Javadoc)
    168      * @see org.archive.crawler.settings.ValueErrorHandler#handleValueError(org.archive.crawler.settings.Constraint.FailedCheck)
    169      */
    170     public void handleValueError(FailedCheck error) {
    171         // TODO Auto-generated method stub
    172     }
    173
    174 }