blob: 407a4832ff42c6040851c141020f170f05d54f6e [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.solr;
import org.apache.solr.common.params.CommonParams;
import org.apache.solr.request.*;
import org.apache.solr.util.*;
import org.junit.BeforeClass;
import org.junit.Test;
/**
* This is an example of how to write a JUnit tests for Solr using the
* SolrTestCaseJ4
*/
public class SampleTest extends SolrTestCaseJ4 {
/**
* All subclasses of SolrTestCaseJ4 should initialize the core.
*
* <p>
* Note that different tests can use different schemas/configs by referring
* to any crazy path they want (as long as it works).
* </p>
*/
@BeforeClass
public static void beforeClass() throws Exception {
initCore("solr/crazy-path-to-config.xml","solr/crazy-path-to-schema.xml");
}
/**
* Demonstration of some of the simple ways to use the base class
*/
@Test
public void testSimple() {
lrf.args.put(CommonParams.VERSION,"2.2");
assertU("Simple assertion that adding a document works",
adoc("id", "4055",
"subject", "Hoss the Hoss man Hostetter"));
/* alternate syntax, no label */
assertU(adoc("id", "4056",
"subject", "Some Other Guy"));
assertU(commit());
assertU(optimize());
assertQ("couldn't find subject hoss",
req("subject:Hoss")
,"//result[@numFound=1]"
,"//str[@name='id'][.='4055']"
);
}
/**
* Demonstration of some of the more complex ways to use the base class
*/
@Test
public void testAdvanced() throws Exception {
lrf.args.put(CommonParams.VERSION,"2.2");
assertU("less common case, a complex addition with options",
add(doc("id", "4059",
"subject", "Who Me?"),
"overwrite", "false"));
assertU("or just make the raw XML yourself",
"<add overwrite=\"false\">" +
doc("id", "4059",
"subject", "Who Me Again?") + "</add>");
/* or really make the xml yourself */
assertU("<add><doc><field name=\"id\">4055</field>"
+"<field name=\"subject\">Hoss the Hoss man Hostetter</field>"
+"</doc></add>");
assertU("<commit/>");
assertU("<optimize/>");
/* access the default LocalRequestFactory directly to make a request */
SolrQueryRequest req = lrf.makeRequest( "subject:Hoss" );
assertQ("couldn't find subject hoss",
req
,"//result[@numFound=1]"
,"//str[@name='id'][.='4055']"
);
/* make your own LocalRequestFactory to build a request
*
* Note: the qt proves we are using our custom config...
*/
TestHarness.LocalRequestFactory l = h.getRequestFactory
("/crazy_custom_qt",100,200,CommonParams.VERSION,"2.2");
assertQ("how did i find Mack Daddy? ",
l.makeRequest( "Mack Daddy" )
,"//result[@numFound=0]"
);
/* you can access the harness directly as well*/
assertNull("how did i find Mack Daddy? ",
h.validateQuery(l.makeRequest( "Mack Daddy" )
,"//result[@numFound=0]"
));
}
}