Indeed, I had. Sorry for the inconvenience. :-) On Mon, Apr 9, 2018 at 5:10 PM, Alan Woodward <romseyg...@gmail.com> wrote:
> Hey Ishan, I think you inadvertently committed the patch file as well? > > > On 9 Apr 2018, at 12:07, is...@apache.org wrote: > > > > Repository: lucene-solr > > Updated Branches: > > refs/heads/branch_7x 918ecb84c -> 91bd3e1f1 > > > > > > SOLR-12096: Fixed inconsistent results format of subquery transformer > for distributed search (multi-shard) > > > > > > Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo > > Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/ > 91bd3e1f > > Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/91bd3e1f > > Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/91bd3e1f > > > > Branch: refs/heads/branch_7x > > Commit: 91bd3e1f1febf1d0953186be8cbc9b4e2146e579 > > Parents: 918ecb8 > > Author: Ishan Chattopadhyaya <is...@apache.org> > > Authored: Mon Apr 9 16:36:07 2018 +0530 > > Committer: Ishan Chattopadhyaya <is...@apache.org> > > Committed: Mon Apr 9 16:36:49 2018 +0530 > > > > ---------------------------------------------------------------------- > > SOLR-12096.patch | 217 +++++++++++++++++++ > > solr/CHANGES.txt | 3 + > > .../solr/response/GeoJSONResponseWriter.java | 3 +- > > .../solr/response/JSONResponseWriter.java | 6 +- > > .../apache/solr/response/JSONWriterTest.java | 24 +- > > .../TestSubQueryTransformerDistrib.java | 59 +++-- > > 6 files changed, 289 insertions(+), 23 deletions(-) > > ---------------------------------------------------------------------- > > > > > > http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ > 91bd3e1f/SOLR-12096.patch > > ---------------------------------------------------------------------- > > diff --git a/SOLR-12096.patch b/SOLR-12096.patch > > new file mode 100644 > > index 0000000..9ed1ad7 > > --- /dev/null > > +++ b/SOLR-12096.patch > > @@ -0,0 +1,217 @@ > > +diff --git > > a/solr/core/src/java/org/apache/solr/response/GeoJSONResponseWriter.java > b/solr/core/src/java/org/apache/solr/response/GeoJSONResponseWriter.java > > +index 43fd7b4..012290e 100644 > > +--- a/solr/core/src/java/org/apache/solr/response/ > GeoJSONResponseWriter.java > > ++++ b/solr/core/src/java/org/apache/solr/response/ > GeoJSONResponseWriter.java > > +@@ -166,7 +166,8 @@ class GeoJSONWriter extends JSONWriter { > > + > > + // SolrDocument will now have multiValued fields represented as > a Collection, > > + // even if only a single value is returned for this document. > > +- if (val instanceof List) { > > ++ // For SolrDocumentList, use writeVal instead of writeArray > > ++ if (!(val instanceof SolrDocumentList) && val instanceof List) { > > + // shortcut this common case instead of going through writeVal > again > > + writeArray(name,((Iterable)val).iterator()); > > + } else { > > +diff --git > > a/solr/core/src/java/org/apache/solr/response/JSONResponseWriter.java > b/solr/core/src/java/org/apache/solr/response/JSONResponseWriter.java > > +index 513df4e..5f6e2f2 100644 > > +--- a/solr/core/src/java/org/apache/solr/response/ > JSONResponseWriter.java > > ++++ b/solr/core/src/java/org/apache/solr/response/ > JSONResponseWriter.java > > +@@ -25,10 +25,11 @@ import java.util.Map; > > + import java.util.Set; > > + > > + import org.apache.solr.common.IteratorWriter; > > ++import org.apache.solr.common.MapWriter; > > + import org.apache.solr.common.MapWriter.EntryWriter; > > + import org.apache.solr.common.PushWriter; > > + import org.apache.solr.common.SolrDocument; > > +-import org.apache.solr.common.MapWriter; > > ++import org.apache.solr.common.SolrDocumentList; > > + import org.apache.solr.common.params.SolrParams; > > + import org.apache.solr.common.util.NamedList; > > + import org.apache.solr.common.util.SimpleOrderedMap; > > +@@ -367,7 +368,8 @@ class JSONWriter extends TextResponseWriter { > > + > > + // SolrDocument will now have multiValued fields represented as > a Collection, > > + // even if only a single value is returned for this document. > > +- if (val instanceof List) { > > ++ // For SolrDocumentList, use writeVal instead of writeArray > > ++ if (!(val instanceof SolrDocumentList) && val instanceof List) { > > + // shortcut this common case instead of going through writeVal > again > > + writeArray(name,((Iterable)val).iterator()); > > + } else { > > +diff --git > > a/solr/core/src/test/org/apache/solr/response/JSONWriterTest.java > b/solr/core/src/test/org/apache/solr/response/JSONWriterTest.java > > +index 1b53150..68cebd2 100644 > > +--- a/solr/core/src/test/org/apache/solr/response/JSONWriterTest.java > > ++++ b/solr/core/src/test/org/apache/solr/response/JSONWriterTest.java > > +@@ -22,7 +22,10 @@ import java.lang.reflect.Method; > > + import java.lang.reflect.Modifier; > > + import java.nio.charset.StandardCharsets; > > + import java.util.ArrayList; > > ++import java.util.Arrays; > > + import java.util.List; > > ++ > > ++import org.apache.solr.JSONTestUtil; > > + import org.apache.solr.SolrTestCaseJ4; > > + import org.apache.solr.common.SolrDocument; > > + import org.apache.solr.common.SolrDocumentList; > > +@@ -130,9 +133,9 @@ public class JSONWriterTest extends SolrTestCaseJ4 { > > + } > > + > > + @Test > > +- public void testJSONSolrDocument() throws IOException { > > ++ public void testJSONSolrDocument() throws Exception { > > + SolrQueryRequest req = req(CommonParams.WT,"json", > > +- CommonParams.FL,"id,score"); > > ++ CommonParams.FL,"id,score,_ > children_,path"); > > + SolrQueryResponse rsp = new SolrQueryResponse(); > > + JSONResponseWriter w = new JSONResponseWriter(); > > + > > +@@ -141,11 +144,22 @@ public class JSONWriterTest extends > SolrTestCaseJ4 { > > + > > + StringWriter buf = new StringWriter(); > > + > > ++ SolrDocument childDoc = new SolrDocument(); > > ++ childDoc.addField("id", "2"); > > ++ childDoc.addField("score", "0.4"); > > ++ childDoc.addField("path", Arrays.asList("a>b", "a>b>c")); > > ++ > > ++ SolrDocumentList childList = new SolrDocumentList(); > > ++ childList.setNumFound(1); > > ++ childList.setStart(0); > > ++ childList.add(childDoc); > > ++ > > + SolrDocument solrDoc = new SolrDocument(); > > + solrDoc.addField("id", "1"); > > + solrDoc.addField("subject", "hello2"); > > + solrDoc.addField("title", "hello3"); > > + solrDoc.addField("score", "0.7"); > > ++ solrDoc.setField("_children_", childList); > > + > > + SolrDocumentList list = new SolrDocumentList(); > > + list.setNumFound(1); > > +@@ -163,8 +177,12 @@ public class JSONWriterTest extends SolrTestCaseJ4 > { > > + result.contains("\"title\"")); > > + assertTrue("response doesn't contain expected fields: " + result, > > + result.contains("\"id\"") && > > +- result.contains("\"score\"")); > > ++ result.contains("\"score\"") && > result.contains("_children_")); > > + > > ++ String expectedResult = "{'response':{'numFound':1,' > start':0,'maxScore':0.7,'docs':[{'id':'1', 'score':'0.7'," + > > ++ " '_children_':{'numFound':1,'start':0,'docs':[{'id':'2', > 'score':'0.4', 'path':['a>b', 'a>b>c']}] }}] }}"; > > ++ String error = JSONTestUtil.match(result, "=="+expectedResult); > > ++ assertNull("response validation failed with error: " + error, > error); > > + > > + req.close(); > > + } > > +diff --git a/solr/core/src/test/org/apache/solr/response/transform/ > TestSubQueryTransformerDistrib.java b/solr/core/src/test/org/ > apache/solr/response/transform/TestSubQueryTransformerDistrib.java > > +index 620cac0..f6d0a38 100644 > > +--- a/solr/core/src/test/org/apache/solr/response/transform/ > TestSubQueryTransformerDistrib.java > > ++++ b/solr/core/src/test/org/apache/solr/response/transform/ > TestSubQueryTransformerDistrib.java > > +@@ -16,7 +16,11 @@ > > + */ > > + package org.apache.solr.response.transform; > > + > > ++import java.io.ByteArrayOutputStream; > > + import java.io.IOException; > > ++import java.io.InputStream; > > ++import java.net.URL; > > ++import java.nio.charset.Charset; > > + import java.nio.file.Path; > > + import java.nio.file.Paths; > > + import java.util.ArrayList; > > +@@ -26,6 +30,8 @@ import java.util.List; > > + import java.util.Map; > > + import java.util.Random; > > + > > ++import org.apache.commons.io.IOUtils; > > ++import org.apache.solr.JSONTestUtil; > > + import org.apache.solr.client.solrj.SolrServerException; > > + import org.apache.solr.client.solrj.impl.CloudSolrClient; > > + import org.apache.solr.client.solrj.request.CollectionAdminRequest; > > +@@ -37,10 +43,12 @@ import org.apache.solr.cloud.SolrCloudTestCase; > > + import org.apache.solr.common.SolrDocument; > > + import org.apache.solr.common.SolrDocumentList; > > + import org.apache.solr.common.cloud.ZkStateReader; > > ++import org.apache.solr.common.params.ModifiableSolrParams; > > + import org.apache.solr.common.util.ContentStreamBase; > > + import org.junit.BeforeClass; > > + import org.junit.Test; > > + > > ++@org.apache.solr.SolrTestCaseJ4.SuppressSSL() > > + public class TestSubQueryTransformerDistrib extends SolrCloudTestCase { > > + > > + private static final String support = "These guys help customers"; > > +@@ -92,7 +100,7 @@ public class TestSubQueryTransformerDistrib extends > SolrCloudTestCase { > > + > > + @SuppressWarnings("serial") > > + @Test > > +- public void test() throws SolrServerException, IOException { > > ++ public void test() throws Exception { > > + int peopleMultiplier = atLeast(1); > > + int deptMultiplier = atLeast(1); > > + > > +@@ -100,24 +108,26 @@ public class TestSubQueryTransformerDistrib > extends SolrCloudTestCase { > > + > > + Random random1 = random(); > > + > > ++ final ModifiableSolrParams params = params( > > ++ new String[]{"q","name_s:dave", "indent","true", > > ++ "fl","*,depts:[subquery "+((random1.nextBoolean() ? "" : > "separator=,"))+"]", > > ++ "rows","" + peopleMultiplier, > > ++ "depts.q","{!terms f=dept_id_s v=$row.dept_ss_dv > "+((random1.nextBoolean() ? "" : "separator=,"))+"}", > > ++ "depts.fl","text_t"+(differentUniqueId?",id:notid":""), > > ++ "depts.indent","true", > > ++ "depts.collection","departments", > > ++ differentUniqueId ? "depts.distrib.singlePass":" > notnecessary","true", > > ++ "depts.rows",""+(deptMultiplier*2), > > ++ "depts.logParamsList","q,fl,rows,row.dept_ss_dv", > > ++ random().nextBoolean()?"depts.wt":"whatever",anyWt(), > > ++ random().nextBoolean()?"wt":"whatever",anyWt()}); > > ++ > > ++ final SolrDocumentList hits; > > + { > > +- > > +- final QueryRequest qr = new QueryRequest(params( > > +- new String[]{"q","name_s:dave", "indent","true", > > +- "fl","*,depts:[subquery "+((random1.nextBoolean() ? "" : > "separator=,"))+"]", > > +- "rows","" + peopleMultiplier, > > +- "depts.q","{!terms f=dept_id_s v=$row.dept_ss_dv > "+((random1.nextBoolean() ? "" : "separator=,"))+"}", > > +- "depts.fl","text_t"+(differentUniqueId?",id:notid":""), > > +- "depts.indent","true", > > +- "depts.collection","departments", > > +- differentUniqueId ? "depts.distrib.singlePass":" > notnecessary","true", > > +- "depts.rows",""+(deptMultiplier*2), > > +- "depts.logParamsList","q,fl,rows,row.dept_ss_dv", > > +- random().nextBoolean()?"depts.wt":"whatever",anyWt(), > > +- random().nextBoolean()?"wt":"whatever",anyWt()})); > > ++ final QueryRequest qr = new QueryRequest(params); > > + final QueryResponse rsp = new QueryResponse(); > > +- rsp.setResponse(cluster.getSolrClient().request(qr, people)); > > +- final SolrDocumentList hits = rsp.getResults(); > > ++ rsp.setResponse(cluster.getSolrClient().request(qr, > people+","+depts)); > > ++ hits = rsp.getResults(); > > + > > + assertEquals(peopleMultiplier, hits.getNumFound()); > > + > > +@@ -140,6 +150,21 @@ public class TestSubQueryTransformerDistrib > extends SolrCloudTestCase { > > + } > > + assertEquals(hits.toString(), engineerCount, supportCount); > > + } > > ++ > > ++ params.set("wt", "json"); > > ++ final URL node = new URL(cluster.getRandomJetty( > random()).getBaseUrl().toString() > > ++ +"/"+people+"/select"+params.toQueryString()); > > ++ > > ++ try(final InputStream jsonResponse = node.openStream()){ > > ++ final ByteArrayOutputStream outBuffer = new > ByteArrayOutputStream(); > > ++ IOUtils.copy(jsonResponse, outBuffer); > > ++ > > ++ final Object expected = ((SolrDocumentList) > hits.get(0).getFieldValue("depts")).get(0).get("text_t"); > > ++ final String err = JSONTestUtil.match("/response/ > docs/[0]/depts/docs/[0]/text_t" > > ++ ,outBuffer.toString(Charset.forName("UTF-8").toString()), > > ++ "\""+expected+"\""); > > ++ assertNull(err,err); > > ++ } > > + > > + } > > + > > > > http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ > 91bd3e1f/solr/CHANGES.txt > > ---------------------------------------------------------------------- > > diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt > > index 1af9c32..83991eb 100644 > > --- a/solr/CHANGES.txt > > +++ b/solr/CHANGES.txt > > @@ -94,6 +94,9 @@ Bug Fixes > > * SOLR-12199: TestReplicationHandler.doTestRepeater(): TEST_PORT > interpolation failure: > > Server refused connection at: http://127.0.0.1:TEST_PORT/solr > (Mikhail Khludnev, Dawid Weiss, Steve Rowe) > > > > +* SOLR-12096: Fixed inconsistent results format of subquery transformer > for distributed search (multi-shard). > > + (Munendra S N, Mikhail Khludnev via Ishan Chattopadhyaya) > > + > > Optimizations > > ---------------------- > > > > > > http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ > 91bd3e1f/solr/core/src/java/org/apache/solr/response/ > GeoJSONResponseWriter.java > > ---------------------------------------------------------------------- > > diff --git > > a/solr/core/src/java/org/apache/solr/response/GeoJSONResponseWriter.java > b/solr/core/src/java/org/apache/solr/response/GeoJSONResponseWriter.java > > index 43fd7b4..012290e 100644 > > --- a/solr/core/src/java/org/apache/solr/response/ > GeoJSONResponseWriter.java > > +++ b/solr/core/src/java/org/apache/solr/response/ > GeoJSONResponseWriter.java > > @@ -166,7 +166,8 @@ class GeoJSONWriter extends JSONWriter { > > > > // SolrDocument will now have multiValued fields represented as a > Collection, > > // even if only a single value is returned for this document. > > - if (val instanceof List) { > > + // For SolrDocumentList, use writeVal instead of writeArray > > + if (!(val instanceof SolrDocumentList) && val instanceof List) { > > // shortcut this common case instead of going through writeVal > again > > writeArray(name,((Iterable)val).iterator()); > > } else { > > > > http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ > 91bd3e1f/solr/core/src/java/org/apache/solr/response/ > JSONResponseWriter.java > > ---------------------------------------------------------------------- > > diff --git > > a/solr/core/src/java/org/apache/solr/response/JSONResponseWriter.java > b/solr/core/src/java/org/apache/solr/response/JSONResponseWriter.java > > index 513df4e..5f6e2f2 100644 > > --- a/solr/core/src/java/org/apache/solr/response/ > JSONResponseWriter.java > > +++ b/solr/core/src/java/org/apache/solr/response/ > JSONResponseWriter.java > > @@ -25,10 +25,11 @@ import java.util.Map; > > import java.util.Set; > > > > import org.apache.solr.common.IteratorWriter; > > +import org.apache.solr.common.MapWriter; > > import org.apache.solr.common.MapWriter.EntryWriter; > > import org.apache.solr.common.PushWriter; > > import org.apache.solr.common.SolrDocument; > > -import org.apache.solr.common.MapWriter; > > +import org.apache.solr.common.SolrDocumentList; > > import org.apache.solr.common.params.SolrParams; > > import org.apache.solr.common.util.NamedList; > > import org.apache.solr.common.util.SimpleOrderedMap; > > @@ -367,7 +368,8 @@ class JSONWriter extends TextResponseWriter { > > > > // SolrDocument will now have multiValued fields represented as a > Collection, > > // even if only a single value is returned for this document. > > - if (val instanceof List) { > > + // For SolrDocumentList, use writeVal instead of writeArray > > + if (!(val instanceof SolrDocumentList) && val instanceof List) { > > // shortcut this common case instead of going through writeVal > again > > writeArray(name,((Iterable)val).iterator()); > > } else { > > > > http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ > 91bd3e1f/solr/core/src/test/org/apache/solr/response/JSONWriterTest.java > > ---------------------------------------------------------------------- > > diff --git a/solr/core/src/test/org/apache/solr/response/JSONWriterTest.java > b/solr/core/src/test/org/apache/solr/response/JSONWriterTest.java > > index 1b53150..68cebd2 100644 > > --- a/solr/core/src/test/org/apache/solr/response/JSONWriterTest.java > > +++ b/solr/core/src/test/org/apache/solr/response/JSONWriterTest.java > > @@ -22,7 +22,10 @@ import java.lang.reflect.Method; > > import java.lang.reflect.Modifier; > > import java.nio.charset.StandardCharsets; > > import java.util.ArrayList; > > +import java.util.Arrays; > > import java.util.List; > > + > > +import org.apache.solr.JSONTestUtil; > > import org.apache.solr.SolrTestCaseJ4; > > import org.apache.solr.common.SolrDocument; > > import org.apache.solr.common.SolrDocumentList; > > @@ -130,9 +133,9 @@ public class JSONWriterTest extends SolrTestCaseJ4 { > > } > > > > @Test > > - public void testJSONSolrDocument() throws IOException { > > + public void testJSONSolrDocument() throws Exception { > > SolrQueryRequest req = req(CommonParams.WT,"json", > > - CommonParams.FL,"id,score"); > > + CommonParams.FL,"id,score,_ > children_,path"); > > SolrQueryResponse rsp = new SolrQueryResponse(); > > JSONResponseWriter w = new JSONResponseWriter(); > > > > @@ -141,11 +144,22 @@ public class JSONWriterTest extends SolrTestCaseJ4 > { > > > > StringWriter buf = new StringWriter(); > > > > + SolrDocument childDoc = new SolrDocument(); > > + childDoc.addField("id", "2"); > > + childDoc.addField("score", "0.4"); > > + childDoc.addField("path", Arrays.asList("a>b", "a>b>c")); > > + > > + SolrDocumentList childList = new SolrDocumentList(); > > + childList.setNumFound(1); > > + childList.setStart(0); > > + childList.add(childDoc); > > + > > SolrDocument solrDoc = new SolrDocument(); > > solrDoc.addField("id", "1"); > > solrDoc.addField("subject", "hello2"); > > solrDoc.addField("title", "hello3"); > > solrDoc.addField("score", "0.7"); > > + solrDoc.setField("_children_", childList); > > > > SolrDocumentList list = new SolrDocumentList(); > > list.setNumFound(1); > > @@ -163,8 +177,12 @@ public class JSONWriterTest extends SolrTestCaseJ4 { > > result.contains("\"title\"")); > > assertTrue("response doesn't contain expected fields: " + result, > > result.contains("\"id\"") && > > - result.contains("\"score\"")); > > + result.contains("\"score\"") && > result.contains("_children_")); > > > > + String expectedResult = "{'response':{'numFound':1,' > start':0,'maxScore':0.7,'docs':[{'id':'1', 'score':'0.7'," + > > + " '_children_':{'numFound':1,'start':0,'docs':[{'id':'2', > 'score':'0.4', 'path':['a>b', 'a>b>c']}] }}] }}"; > > + String error = JSONTestUtil.match(result, "=="+expectedResult); > > + assertNull("response validation failed with error: " + error, > error); > > > > req.close(); > > } > > > > http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ > 91bd3e1f/solr/core/src/test/org/apache/solr/response/transform/ > TestSubQueryTransformerDistrib.java > > ---------------------------------------------------------------------- > > diff --git a/solr/core/src/test/org/apache/solr/response/transform/ > TestSubQueryTransformerDistrib.java b/solr/core/src/test/org/ > apache/solr/response/transform/TestSubQueryTransformerDistrib.java > > index 620cac0..f6d0a38 100644 > > --- a/solr/core/src/test/org/apache/solr/response/transform/ > TestSubQueryTransformerDistrib.java > > +++ b/solr/core/src/test/org/apache/solr/response/transform/ > TestSubQueryTransformerDistrib.java > > @@ -16,7 +16,11 @@ > > */ > > package org.apache.solr.response.transform; > > > > +import java.io.ByteArrayOutputStream; > > import java.io.IOException; > > +import java.io.InputStream; > > +import java.net.URL; > > +import java.nio.charset.Charset; > > import java.nio.file.Path; > > import java.nio.file.Paths; > > import java.util.ArrayList; > > @@ -26,6 +30,8 @@ import java.util.List; > > import java.util.Map; > > import java.util.Random; > > > > +import org.apache.commons.io.IOUtils; > > +import org.apache.solr.JSONTestUtil; > > import org.apache.solr.client.solrj.SolrServerException; > > import org.apache.solr.client.solrj.impl.CloudSolrClient; > > import org.apache.solr.client.solrj.request.CollectionAdminRequest; > > @@ -37,10 +43,12 @@ import org.apache.solr.cloud.SolrCloudTestCase; > > import org.apache.solr.common.SolrDocument; > > import org.apache.solr.common.SolrDocumentList; > > import org.apache.solr.common.cloud.ZkStateReader; > > +import org.apache.solr.common.params.ModifiableSolrParams; > > import org.apache.solr.common.util.ContentStreamBase; > > import org.junit.BeforeClass; > > import org.junit.Test; > > > > +@org.apache.solr.SolrTestCaseJ4.SuppressSSL() > > public class TestSubQueryTransformerDistrib extends SolrCloudTestCase { > > > > private static final String support = "These guys help customers"; > > @@ -92,7 +100,7 @@ public class TestSubQueryTransformerDistrib extends > SolrCloudTestCase { > > > > @SuppressWarnings("serial") > > @Test > > - public void test() throws SolrServerException, IOException { > > + public void test() throws Exception { > > int peopleMultiplier = atLeast(1); > > int deptMultiplier = atLeast(1); > > > > @@ -100,24 +108,26 @@ public class TestSubQueryTransformerDistrib > extends SolrCloudTestCase { > > > > Random random1 = random(); > > > > + final ModifiableSolrParams params = params( > > + new String[]{"q","name_s:dave", "indent","true", > > + "fl","*,depts:[subquery "+((random1.nextBoolean() ? "" : > "separator=,"))+"]", > > + "rows","" + peopleMultiplier, > > + "depts.q","{!terms f=dept_id_s v=$row.dept_ss_dv > "+((random1.nextBoolean() ? "" : "separator=,"))+"}", > > + "depts.fl","text_t"+(differentUniqueId?",id:notid":""), > > + "depts.indent","true", > > + "depts.collection","departments", > > + differentUniqueId ? "depts.distrib.singlePass":" > notnecessary","true", > > + "depts.rows",""+(deptMultiplier*2), > > + "depts.logParamsList","q,fl,rows,row.dept_ss_dv", > > + random().nextBoolean()?"depts.wt":"whatever",anyWt(), > > + random().nextBoolean()?"wt":"whatever",anyWt()}); > > + > > + final SolrDocumentList hits; > > { > > - > > - final QueryRequest qr = new QueryRequest(params( > > - new String[]{"q","name_s:dave", "indent","true", > > - "fl","*,depts:[subquery "+((random1.nextBoolean() ? "" : > "separator=,"))+"]", > > - "rows","" + peopleMultiplier, > > - "depts.q","{!terms f=dept_id_s v=$row.dept_ss_dv > "+((random1.nextBoolean() ? "" : "separator=,"))+"}", > > - "depts.fl","text_t"+(differentUniqueId?",id:notid":""), > > - "depts.indent","true", > > - "depts.collection","departments", > > - differentUniqueId ? "depts.distrib.singlePass":" > notnecessary","true", > > - "depts.rows",""+(deptMultiplier*2), > > - "depts.logParamsList","q,fl,rows,row.dept_ss_dv", > > - random().nextBoolean()?"depts.wt":"whatever",anyWt(), > > - random().nextBoolean()?"wt":"whatever",anyWt()})); > > + final QueryRequest qr = new QueryRequest(params); > > final QueryResponse rsp = new QueryResponse(); > > - rsp.setResponse(cluster.getSolrClient().request(qr, people)); > > - final SolrDocumentList hits = rsp.getResults(); > > + rsp.setResponse(cluster.getSolrClient().request(qr, > people+","+depts)); > > + hits = rsp.getResults(); > > > > assertEquals(peopleMultiplier, hits.getNumFound()); > > > > @@ -140,6 +150,21 @@ public class TestSubQueryTransformerDistrib extends > SolrCloudTestCase { > > } > > assertEquals(hits.toString(), engineerCount, supportCount); > > } > > + > > + params.set("wt", "json"); > > + final URL node = new URL(cluster.getRandomJetty( > random()).getBaseUrl().toString() > > + +"/"+people+"/select"+params.toQueryString()); > > + > > + try(final InputStream jsonResponse = node.openStream()){ > > + final ByteArrayOutputStream outBuffer = new > ByteArrayOutputStream(); > > + IOUtils.copy(jsonResponse, outBuffer); > > + > > + final Object expected = ((SolrDocumentList) > hits.get(0).getFieldValue("depts")).get(0).get("text_t"); > > + final String err = JSONTestUtil.match("/response/ > docs/[0]/depts/docs/[0]/text_t" > > + ,outBuffer.toString(Charset.forName("UTF-8").toString()), > > + "\""+expected+"\""); > > + assertNull(err,err); > > + } > > > > } > > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org > For additional commands, e-mail: dev-h...@lucene.apache.org > >