001: /**
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */package org.apache.solr;
017:
018: import org.apache.solr.request.*;
019: import org.apache.solr.util.*;
020:
021: import java.util.*;
022: import java.io.IOException;
023:
024: /**
025: * This is an example of how to write a JUnit tests for Solr using the
026: * AbstractSolrTestCase
027: */
028: public class SampleTest extends AbstractSolrTestCase {
029:
030: /**
031: * All subclasses of AbstractSolrTestCase must define this method.
032: *
033: * <p>
034: * Note that different tests can use different schemas by refering
035: * to any crazy path they want (as long as it works).
036: * </p>
037: */
038: public String getSchemaFile() {
039: return "solr/crazy-path-to-schema.xml";
040: }
041:
042: /**
043: * All subclasses of AbstractSolrTestCase must define this method
044: *
045: * <p>
046: * Note that different tests can use different configs by refering
047: * to any crazy path they want (as long as it works).
048: * </p>
049: */
050: public String getSolrConfigFile() {
051: return "solr/crazy-path-to-config.xml";
052: }
053:
054: /**
055: * Demonstration of some of the simple ways to use the base class
056: */
057: public void testSimple() {
058: lrf.args.put("version", "2.0");
059: assertU("Simple assertion that adding a document works", adoc(
060: "id", "4055", "subject", "Hoss the Hoss man Hostetter"));
061:
062: /* alternate syntax, no label */
063: assertU(adoc("id", "4056", "subject", "Some Other Guy"));
064:
065: assertU(commit());
066: assertU(optimize());
067:
068: assertQ("couldn't find subject hoss", req("subject:Hoss"),
069: "//result[@numFound=1]", "//int[@name='id'][.='4055']");
070: }
071:
072: /**
073: * Demonstration of some of the more complex ways to use the base class
074: */
075: public void testAdvanced() throws Exception {
076: lrf.args.put("version", "2.0");
077: assertU("less common case, a complex addition with options",
078: add(doc("id", "4059", "subject", "Who Me?"),
079: "allowDups", "true"));
080:
081: assertU("or just make the raw XML yourself",
082: "<add allowDups=\"true\">"
083: + doc("id", "4059", "subject", "Who Me Again?")
084: + "</add>");
085:
086: /* or really make the xml yourself */
087: assertU("<add><doc><field name=\"id\">4055</field>"
088: + "<field name=\"subject\">Hoss the Hoss man Hostetter</field>"
089: + "</doc></add>");
090:
091: assertU("<commit/>");
092: assertU("<optimize/>");
093:
094: /* access the default LocalRequestFactory directly to make a request */
095: SolrQueryRequest req = lrf.makeRequest("subject:Hoss");
096: assertQ("couldn't find subject hoss", req,
097: "//result[@numFound=1]", "//int[@name='id'][.='4055']");
098:
099: /* make your own LocalRequestFactory to build a request
100: *
101: * Note: the qt proves we are using our custom config...
102: */
103: TestHarness.LocalRequestFactory l = h.getRequestFactory(
104: "crazy_custom_qt", 100, 200, "version", "2.1");
105: assertQ("how did i find Mack Daddy? ", l
106: .makeRequest("Mack Daddy"), "//result[@numFound=0]");
107:
108: /* you can access the harness directly as well*/
109: assertNull("how did i find Mack Daddy? ", h.validateQuery(l
110: .makeRequest("Mack Daddy"), "//result[@numFound=0]"));
111:
112: }
113: }
|