You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ry...@apache.org on 2012/03/02 21:17:07 UTC
svn commit: r1296434 - in
/lucene/dev/trunk/solr/core/src/test/org/apache/solr/search:
ReturnFieldsTest.java TestSolrQueryParser.java
Author: ryan
Date: Fri Mar 2 20:17:07 2012
New Revision: 1296434
URL: http://svn.apache.org/viewvc?rev=1296434&view=rev
Log:
SOLR-2719: adding test, with @Ignore for regressions
Added:
lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/ReturnFieldsTest.java
Modified:
lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java
Added: lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/ReturnFieldsTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/ReturnFieldsTest.java?rev=1296434&view=auto
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/ReturnFieldsTest.java (added)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/ReturnFieldsTest.java Fri Mar 2 20:17:07 2012
@@ -0,0 +1,267 @@
+/**
+ * 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.search;
+
+import org.apache.solr.SolrTestCaseJ4;
+import org.apache.solr.response.transform.*;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+
+/**
+ * See: https://issues.apache.org/jira/browse/SOLR-2719
+ *
+ * This has tests for fields that should work, but are currently broken
+ */
+public class ReturnFieldsTest extends SolrTestCaseJ4 {
+
+ @BeforeClass
+ public static void beforeClass() throws Exception {
+ initCore("solrconfig.xml", "schema12.xml");
+ createIndex();
+ }
+
+ private static void createIndex() {
+ String v;
+ v="how now brown cow";
+ assertU(adoc("id","1", "text",v, "text_np",v));
+ v="now cow";
+ assertU(adoc("id","2", "text",v, "text_np",v));
+ assertU(commit());
+ }
+
+ @Test
+ public void testSeparators() {
+ ReturnFields rf = new ReturnFields( req("fl", "id name test subject score") );
+ assertTrue( rf.wantsScore() );
+ assertTrue( rf.wantsField( "id" ) );
+ assertTrue( rf.wantsField( "name" ) );
+ assertTrue( rf.wantsField( "test" ) );
+ assertTrue( rf.wantsField( "subject" ) );
+ assertTrue( rf.wantsField( "score" ) );
+ assertFalse( rf.wantsAllFields() );
+ assertFalse( rf.wantsField( "xxx" ) );
+ assertTrue( rf.getTransformer() instanceof ScoreAugmenter);
+
+ rf = new ReturnFields( req("fl", "id,name,test,subject,score") );
+ assertTrue( rf.wantsScore() );
+ assertTrue( rf.wantsField( "id" ) );
+ assertTrue( rf.wantsField( "name" ) );
+ assertTrue( rf.wantsField( "test" ) );
+ assertTrue( rf.wantsField( "subject" ) );
+ assertTrue( rf.wantsField( "score" ) );
+ assertFalse( rf.wantsAllFields() );
+ assertFalse( rf.wantsField( "xxx" ) );
+ assertTrue( rf.getTransformer() instanceof ScoreAugmenter);
+
+ rf = new ReturnFields( req("fl", "id,name test,subject score") );
+ assertTrue( rf.wantsScore() );
+ assertTrue( rf.wantsField( "id" ) );
+ assertTrue( rf.wantsField( "name" ) );
+ assertTrue( rf.wantsField( "test" ) );
+ assertTrue( rf.wantsField( "subject" ) );
+ assertTrue( rf.wantsField( "score" ) );
+ assertFalse( rf.wantsAllFields() );
+ assertFalse( rf.wantsField( "xxx" ) );
+ assertTrue( rf.getTransformer() instanceof ScoreAugmenter);
+
+ rf = new ReturnFields( req("fl", "id, name test , subject,score") );
+ assertTrue( rf.wantsScore() );
+ assertTrue( rf.wantsField( "id" ) );
+ assertTrue( rf.wantsField( "name" ) );
+ assertTrue( rf.wantsField( "test" ) );
+ assertTrue( rf.wantsField( "subject" ) );
+ assertTrue( rf.wantsField( "score" ) );
+ assertFalse( rf.wantsAllFields() );
+ assertFalse( rf.wantsField( "xxx" ) );
+ assertTrue( rf.getTransformer() instanceof ScoreAugmenter);
+ }
+
+ @Test
+ public void testWilcards() {
+ ReturnFields rf = new ReturnFields( req("fl", "*") );
+ assertFalse( rf.wantsScore() );
+ assertTrue( rf.wantsField( "xxx" ) );
+ assertTrue( rf.wantsAllFields() );
+ assertNull( rf.getTransformer() );
+
+ rf = new ReturnFields( req("fl", " * ") );
+ assertFalse( rf.wantsScore() );
+ assertTrue( rf.wantsField( "xxx" ) );
+ assertTrue( rf.wantsAllFields() );
+ assertNull( rf.getTransformer() );
+
+ // Check that we want wildcards
+ rf = new ReturnFields( req("fl", "id,aaa*,*bbb") );
+ assertTrue( rf.wantsField( "id" ) );
+ assertTrue( rf.wantsField( "aaaxxx" ) );
+ assertFalse(rf.wantsField("xxxaaa"));
+ assertTrue( rf.wantsField( "xxxbbb" ) );
+ assertFalse(rf.wantsField("bbbxxx"));
+ assertFalse( rf.wantsField( "aa" ) );
+ assertFalse( rf.wantsField( "bb" ) );
+ }
+
+ @Test
+ public void testManyParameters() {
+ ReturnFields rf = new ReturnFields( req("fl", "id name", "fl", "test subject", "fl", "score") );
+ assertTrue( rf.wantsScore() );
+ assertTrue( rf.wantsField( "id" ) );
+ assertTrue( rf.wantsField( "name" ) );
+ assertTrue( rf.wantsField( "test" ) );
+ assertTrue( rf.wantsField( "subject" ) );
+ assertTrue( rf.wantsField( "score" ) );
+ assertFalse( rf.wantsAllFields() );
+ assertFalse( rf.wantsField( "xxx" ) );
+ assertTrue( rf.getTransformer() instanceof ScoreAugmenter);
+ }
+
+ @Test
+ public void testFunctions() {
+ ReturnFields rf = new ReturnFields( req("fl", "id sum(1,1)") );
+ assertFalse(rf.wantsScore());
+ assertTrue( rf.wantsField( "id" ) );
+ assertFalse( rf.wantsAllFields() );
+ assertFalse( rf.wantsField( "xxx" ) );
+ assertTrue( rf.getTransformer() instanceof ValueSourceAugmenter);
+ assertEquals("sum(1,1)", ((ValueSourceAugmenter) rf.getTransformer()).name);
+ }
+
+ @Test
+ public void testTransformers() {
+ ReturnFields rf = new ReturnFields( req("fl", "[explain]") );
+ assertFalse( rf.wantsScore() );
+ assertFalse(rf.wantsField("id"));
+ assertFalse(rf.wantsAllFields());
+ assertEquals( "[explain]", rf.getTransformer().getName() );
+
+ rf = new ReturnFields( req("fl", "[shard],id") );
+ assertFalse( rf.wantsScore() );
+ assertTrue(rf.wantsField("id"));
+ assertFalse(rf.wantsField("xxx"));
+ assertFalse(rf.wantsAllFields());
+ assertEquals( "[shard]", rf.getTransformer().getName() );
+
+ rf = new ReturnFields( req("fl", "[docid]") );
+ assertFalse( rf.wantsScore() );
+ assertFalse( rf.wantsField( "id" ) );
+ assertFalse(rf.wantsField("xxx"));
+ assertFalse(rf.wantsAllFields());
+ assertEquals( "[docid]", rf.getTransformer().getName() );
+
+ rf = new ReturnFields( req("fl", "[docid][shard]") );
+ assertFalse( rf.wantsScore() );
+ assertFalse(rf.wantsField("xxx"));
+ assertFalse(rf.wantsAllFields());
+ assertTrue( rf.getTransformer() instanceof DocTransformers);
+ assertEquals(2, ((DocTransformers)rf.getTransformer()).size());
+
+ rf = new ReturnFields( req("fl", "[xxxxx]") );
+ assertFalse( rf.wantsScore() );
+ assertFalse( rf.wantsField( "id" ) );
+ assertFalse(rf.wantsAllFields());
+ assertNull(rf.getTransformer());
+ }
+
+ @Test
+ public void testAliases() {
+ ReturnFields rf = new ReturnFields( req("fl", "newId:id newName:name newTest:test newSubject:subject") );
+ assertTrue(rf.wantsField("id"));
+ assertTrue(rf.wantsField("name"));
+ assertTrue(rf.wantsField("test"));
+ assertTrue(rf.wantsField("subject"));
+ assertFalse(rf.wantsField("xxx"));
+ assertFalse(rf.wantsAllFields());
+ assertTrue( rf.getTransformer() instanceof RenameFieldsTransformer);
+
+ rf = new ReturnFields( req("fl", "newId:id newName:name newTest:test newSubject:subject score") );
+ assertTrue(rf.wantsField("id"));
+ assertTrue(rf.wantsField("name"));
+ assertTrue(rf.wantsField("test"));
+ assertTrue(rf.wantsField("subject"));
+ assertFalse(rf.wantsField("xxx"));
+ assertFalse(rf.wantsAllFields());
+ assertTrue( rf.getTransformer() instanceof DocTransformers);
+ assertEquals(2, ((DocTransformers)rf.getTransformer()).size());
+ }
+
+ @Ignore
+ @Test
+ public void testTrailingHyphenInFieldName() {
+ //java.lang.NumberFormatException: For input string: "-"
+ ReturnFields rf = new ReturnFields(req("fl", "id-test"));
+ assertFalse(rf.wantsScore());
+ assertTrue(rf.wantsField("id-test"));
+ assertFalse(rf.wantsField("xxx"));
+ assertFalse(rf.wantsAllFields());
+ }
+
+ @Ignore
+ @Test
+ public void testLeadingHyphenInFieldName() {
+ //java.lang.NumberFormatException: For input string: "-"
+ ReturnFields rf = new ReturnFields(req("fl", "-idtest"));
+ assertFalse(rf.wantsScore());
+ assertTrue(rf.wantsField("id-test"));
+ assertFalse(rf.wantsField("xxx"));
+ assertFalse(rf.wantsAllFields());
+ }
+
+ @Ignore
+ @Test
+ public void testTrailingDollarInFieldName() {
+ ReturnFields rf = new ReturnFields(req("fl", "id$test"));
+ assertFalse(rf.wantsScore());
+ assertTrue(rf.wantsField("id$test"));
+ assertFalse(rf.wantsField("xxx"));
+ assertFalse(rf.wantsAllFields());
+ }
+
+ @Ignore
+ @Test
+ public void testLeadingDollarInFieldName() {
+ //throws Missing param idtest while parsing function '$idtest'
+ ReturnFields rf = new ReturnFields(req("fl", "$idtest"));
+ assertFalse(rf.wantsScore());
+ assertTrue(rf.wantsField("id$test"));
+ assertFalse(rf.wantsField("xxx"));
+ assertFalse(rf.wantsAllFields());
+ }
+
+ @Ignore
+ @Test
+ public void testTrailingTildeInFieldName() {
+ //Error parsing fieldname: Expected identifier at pos 0 str='~test'
+ ReturnFields rf = new ReturnFields(req("fl", "id~test"));
+ assertFalse(rf.wantsScore());
+ assertTrue(rf.wantsField("id$test"));
+ assertFalse(rf.wantsField("xxx"));
+ assertFalse(rf.wantsAllFields());
+ }
+
+ @Ignore
+ @Test
+ public void testLeadingTildeInFieldName() {
+ //Error parsing fieldname: Expected identifier at pos 0 str='~idtest'
+ ReturnFields rf = new ReturnFields(req("fl", "~idtest"));
+ assertFalse(rf.wantsScore());
+ assertTrue(rf.wantsField("id$test"));
+ assertFalse(rf.wantsField("xxx"));
+ assertFalse(rf.wantsAllFields());
+ }
+}
Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java?rev=1296434&r1=1296433&r2=1296434&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java Fri Mar 2 20:17:07 2012
@@ -49,33 +49,4 @@ public class TestSolrQueryParser extends
,"//*[@numFound='2']"
);
}
-
- @Test
- public void testReturnFields() {
- ReturnFields rf = new ReturnFields( req("fl", "id,score") );
- assertTrue( rf.wantsScore() );
- assertTrue( rf.wantsField( "score" ) );
- assertTrue( rf.wantsField( "id" ) );
- assertFalse( rf.wantsField( "xxx" ) );
- assertTrue( rf.getTransformer() instanceof ScoreAugmenter );
-
- rf = new ReturnFields( req("fl", "*") );
- assertFalse( rf.wantsScore() );
- assertTrue( rf.wantsField( "xxx" ) );
- assertTrue( rf.wantsAllFields() );
- assertNull( rf.getTransformer() );
-
- rf = new ReturnFields( req("fl", "[explain]") );
- assertFalse( rf.wantsScore() );
- assertFalse( rf.wantsField( "id" ) );
- assertEquals( "[explain]", rf.getTransformer().getName() );
-
- // Check that we want wildcards
- rf = new ReturnFields( req("fl", "id,aaa*,*bbb") );
- assertTrue( rf.wantsField( "id" ) );
- assertTrue( rf.wantsField( "aaaa" ) );
- assertTrue( rf.wantsField( "xxxbbb" ) );
- assertFalse( rf.wantsField( "aa" ) );
- assertFalse( rf.wantsField( "bb" ) );
- }
}