Example usage for org.apache.solr.common SolrDocumentList getNumFound

List of usage examples for org.apache.solr.common SolrDocumentList getNumFound

Introduction

In this page you can find the example usage for org.apache.solr.common SolrDocumentList getNumFound.

Prototype

public long getNumFound() 

Source Link

Usage

From source file:org.apache.sentry.tests.e2e.solr.TestAbacOperations.java

License:Apache License

@Test
public void simpleTest() throws Exception {
    String collectionName = "simpleCollection";
    createCollection(ADMIN_USER, collectionName, "cloud-minimal_abac", NUM_SERVERS, 1);

    CloudSolrClient client = cluster.getSolrClient();

    /*abacuser1 has the following:
        orGroupsAttr: group1/*ww w.  ja  va2s .  com*/
        orGroupsAttr: group2
        andGroupsAttr: group11
        andGroupsAttr: group12
        lteAttr: THREE
        gteAttr: THIRTY
    */

    // Add a set of docs that we know will match
    ArrayList<SolrInputDocument> docs = new ArrayList<SolrInputDocument>();
    for (int i = 0; i < numDocs; ++i) {
        SolrInputDocument doc = new SolrInputDocument();
        String iStr = Long.toString(i);
        doc.addField("id", iStr);
        doc.addField("description", "description" + iStr);
        doc.addField(lteFieldName, "THREE");
        doc.addField(gteFieldName, "THIRTY");
        doc.addField(orGroupsFieldName, "group1");
        doc.addField(andGroupsFieldName, "group11");
        doc.addField(andGroupsCountFieldName, 1);
        docs.add(doc);
    }

    //Add one further doc that won't match
    SolrInputDocument doc = new SolrInputDocument();
    doc.addField("id", numDocs);
    doc.addField("description", "description" + numDocs);
    doc.addField(lteFieldName, "ONE");
    doc.addField(gteFieldName, "FIFTY");
    doc.addField(orGroupsFieldName, "group9");
    doc.addField(andGroupsFieldName, "group99");
    doc.addField(andGroupsCountFieldName, 1);
    docs.add(doc);

    client.add(collectionName, docs);
    client.commit(collectionName, true, true);

    QueryRequest request = new QueryRequest(new SolrQuery("*:*"));

    setAuthenticationUser("abacuser1");
    QueryResponse rsp = request.process(client, collectionName);
    SolrDocumentList docList = rsp.getResults();
    assertEquals(numDocs, docList.getNumFound());

}

From source file:org.apache.sentry.tests.e2e.solr.TestAbacOperations.java

License:Apache License

@Test
public void lteFilterTest() throws Exception {
    /*//from  www.j  a va 2  s  .  c  o  m
      We're going to test with three users, each with different values for lteAttr, ONE, THREE and FIVE
      All other attributes for those users will be fixed.
    */
    String collectionName = "lteCollection";
    createCollection(ADMIN_USER, collectionName, "cloud-minimal_abac", NUM_SERVERS, 1);

    CloudSolrClient client = cluster.getSolrClient();

    String[] lteValues = { "ONE", "TWO", "THREE", "FOUR", "FIVE" };

    ArrayList<SolrInputDocument> docs = new ArrayList<SolrInputDocument>();
    for (int i = 0; i < numDocs * lteValues.length; ++i) {
        SolrInputDocument doc = new SolrInputDocument();
        String iStr = Long.toString(i);
        doc.addField("id", iStr);
        doc.addField("description", "lte Test Doc: " + iStr);

        doc.addField(lteFieldName, lteValues[i % lteValues.length]);
        doc.addField(gteFieldName, "THIRTY");
        doc.addField(orGroupsFieldName, "group1");
        doc.addField(andGroupsFieldName, "group11");
        doc.addField(andGroupsCountFieldName, 1);
        docs.add(doc);
    }

    client.add(collectionName, docs);
    client.commit(collectionName, true, true);

    QueryRequest request = new QueryRequest(new SolrQuery("*:*"));

    /*
      lteuser1 has lteAttr of ONE -> Should see numDocs docs
      lteuser2 has lteAttr of THREE -> Should see numDocs * 3
      lteuser3 has lteAttr of FIVE -> Should see numDocs * 5 docs
     */

    setAuthenticationUser("lteuser1");
    QueryResponse rsp = request.process(client, collectionName);
    SolrDocumentList docList = rsp.getResults();

    assertEquals(numDocs, docList.getNumFound());

    setAuthenticationUser("lteuser2");
    rsp = request.process(client, collectionName);
    docList = rsp.getResults();
    assertEquals(numDocs * 3, docList.getNumFound());

    setAuthenticationUser("lteuser3");
    rsp = request.process(client, collectionName);
    docList = rsp.getResults();
    assertEquals(numDocs * 5, docList.getNumFound());

}

From source file:org.apache.sentry.tests.e2e.solr.TestAbacOperations.java

License:Apache License

@Test
public void gteFilterTest() throws Exception {
    /*/*ww  w  .j  av a 2s.  c o m*/
      We're going to test with three users, each with different values for gteAttr, TEN, THIRTY and FIFTY
      All other attributes for those users will be fixed.
    */
    String collectionName = "gteCollection";
    createCollection(ADMIN_USER, collectionName, "cloud-minimal_abac", NUM_SERVERS, 1);

    CloudSolrClient client = cluster.getSolrClient();

    String[] gteValues = { "TEN", "TWENTY", "THIRTY", "FORTY", "FIFTY" };

    ArrayList<SolrInputDocument> docs = new ArrayList<SolrInputDocument>();
    for (int i = 0; i < numDocs * gteValues.length; ++i) {
        SolrInputDocument doc = new SolrInputDocument();
        String iStr = Long.toString(i);
        doc.addField("id", iStr);
        doc.addField("description", "gte Test Doc: " + iStr);

        doc.addField(gteFieldName, gteValues[i % gteValues.length]);
        doc.addField(lteFieldName, "THREE");
        doc.addField(orGroupsFieldName, "group1");
        doc.addField(andGroupsFieldName, "group11");
        doc.addField(andGroupsCountFieldName, 1);
        docs.add(doc);
    }

    client.add(collectionName, docs);
    client.commit(collectionName, true, true);

    QueryRequest request = new QueryRequest(new SolrQuery("*:*"));

    /*
      gteuser1 has gteAttr of TEN -> Should see numDocs * 5 docs
      gteuser2 has gteAttr of THIRTY -> Should see numDocs * 3
      gteuser3 has gteAttr of FIFTY -> Should see numDocs docs
     */

    setAuthenticationUser("gteuser1");
    QueryResponse rsp = request.process(client, collectionName);
    SolrDocumentList docList = rsp.getResults();

    assertEquals(numDocs * 5, docList.getNumFound());

    setAuthenticationUser("gteuser2");
    rsp = request.process(client, collectionName);
    docList = rsp.getResults();
    assertEquals(numDocs * 3, docList.getNumFound());

    setAuthenticationUser("gteuser3");
    rsp = request.process(client, collectionName);
    docList = rsp.getResults();
    assertEquals(numDocs, docList.getNumFound());

}

From source file:org.apache.sentry.tests.e2e.solr.TestAbacOperations.java

License:Apache License

@Test
public void orGroupsFilterTest() throws Exception {
    /*/*from   w  w  w .  ja  v a2 s.  c  om*/
      We're going to test with three users, each with different values for orGroups
      All other attributes for those users will be fixed.
    */
    String collectionName = "orGroupsCollection";
    createCollection(ADMIN_USER, collectionName, "cloud-minimal_abac", NUM_SERVERS, 1);

    CloudSolrClient client = cluster.getSolrClient();

    int[] groupDocCount = new int[3];

    ArrayList<SolrInputDocument> docs = new ArrayList<SolrInputDocument>();
    for (int i = 0; i < numDocs * 4; ++i) {
        SolrInputDocument doc = new SolrInputDocument();
        String iStr = Long.toString(i);
        doc.addField("id", iStr);
        doc.addField("description", "Or Groups Test Doc: " + iStr);
        doc.addField(gteFieldName, "THIRTY");
        doc.addField(lteFieldName, "THREE");
        if (i % 2 == 0) {
            groupDocCount[0]++;
            doc.addField(orGroupsFieldName, "group1");
        }
        if (i % 3 == 0) {
            doc.addField(orGroupsFieldName, "group2");
        }
        if (i % 4 == 0) {
            doc.addField(orGroupsFieldName, "group3");
        }
        if (i % 2 == 0 || i % 3 == 0) {
            groupDocCount[1]++;
        }
        if (i % 2 == 0 || i % 3 == 0 || i % 4 == 0) {
            groupDocCount[2]++;
        }
        doc.addField(andGroupsFieldName, "group11");
        doc.addField(andGroupsCountFieldName, 1);

        docs.add(doc);
    }

    client.add(collectionName, docs);
    client.commit(collectionName, true, true);

    QueryRequest request = new QueryRequest(new SolrQuery("*:*"));

    /*
      oruser1 has group1
      oruser2 has group1, group2
      oruser3 has group1, group2, group3
     */

    setAuthenticationUser("oruser1");
    QueryResponse rsp = request.process(client, collectionName);
    SolrDocumentList docList = rsp.getResults();

    assertEquals(groupDocCount[0], docList.getNumFound());

    setAuthenticationUser("oruser2");
    rsp = request.process(client, collectionName);
    docList = rsp.getResults();
    assertEquals(groupDocCount[1], docList.getNumFound());

    setAuthenticationUser("oruser3");
    rsp = request.process(client, collectionName);
    docList = rsp.getResults();
    assertEquals(groupDocCount[2], docList.getNumFound());

}

From source file:org.apache.sentry.tests.e2e.solr.TestAbacOperations.java

License:Apache License

@Test
public void andGroupsFilterTest() throws Exception {
    /*//from w  ww.j  a  va  2s.c  o  m
     We're going to test with three users, each with different values for andGroups
     All other attributes for those users will be fixed.
    */
    String collectionName = "andGroupsCollection";
    createCollection(ADMIN_USER, collectionName, "cloud-minimal_abac", NUM_SERVERS, 1);

    CloudSolrClient client = cluster.getSolrClient();

    int[] groupDocCount = new int[3];

    ArrayList<SolrInputDocument> docs = new ArrayList<SolrInputDocument>();
    for (int i = 0; i < numDocs * 4; ++i) {
        int andGroups = 0;
        SolrInputDocument doc = new SolrInputDocument();
        String iStr = Long.toString(i);
        doc.addField("id", iStr);
        doc.addField("description", "Or Groups Test Doc: " + iStr);
        doc.addField(gteFieldName, "THIRTY");
        doc.addField(lteFieldName, "THREE");
        if (i % 2 == 0) {
            doc.addField(andGroupsFieldName, "group11");
            andGroups++;
        }
        if (i % 3 == 0) {
            doc.addField(andGroupsFieldName, "group12");
            andGroups++;
        }
        if (i % 4 == 0) {
            doc.addField(andGroupsFieldName, "group13");
            andGroups++;
        }

        if (i % 2 == 0 && (i % 3 != 0 && i % 4 != 0)) {
            groupDocCount[0]++;
        }
        if ((i % 2 == 0 || i % 3 == 0) && i % 4 != 0) {
            groupDocCount[1]++;
        }
        if (i % 2 == 0 || i % 3 == 0 || i % 4 == 0) {
            groupDocCount[2]++;
        }
        doc.addField(andGroupsCountFieldName, andGroups);
        doc.addField(orGroupsFieldName, "group1");

        docs.add(doc);
    }

    client.add(collectionName, docs);
    client.commit(collectionName, true, true);

    QueryRequest request = new QueryRequest(new SolrQuery("*:*"));

    /*
      anduser1 has group11
      anduser2 has group11, group12
      anduser3 has group11, group12, group13
     */

    setAuthenticationUser("anduser1");
    QueryResponse rsp = request.process(client, collectionName);
    SolrDocumentList docList = rsp.getResults();

    assertEquals(groupDocCount[0], docList.getNumFound());

    setAuthenticationUser("anduser2");
    rsp = request.process(client, collectionName);
    docList = rsp.getResults();
    assertEquals(groupDocCount[1], docList.getNumFound());

    setAuthenticationUser("anduser3");
    rsp = request.process(client, collectionName);
    docList = rsp.getResults();
    assertEquals(groupDocCount[2], docList.getNumFound());

}

From source file:org.apache.sentry.tests.e2e.solr.TestAbacOperations.java

License:Apache License

@Test
public void nestedOrGroupsFilterTest() throws Exception {
    /*/*from w ww .j  a  v a2 s  . c  o  m*/
      We're going to test with three users, each with different values for orGroups
      All other attributes for those users will be fixed.
    */
    String collectionName = "nestedOrGroupsCollection";
    createCollection(ADMIN_USER, collectionName, "cloud-minimal_abac", NUM_SERVERS, 1);

    CloudSolrClient client = cluster.getSolrClient();

    int[] groupDocCount = new int[3];

    ArrayList<SolrInputDocument> docs = new ArrayList<SolrInputDocument>();
    for (int i = 0; i < numDocs * 4; ++i) {
        SolrInputDocument doc = new SolrInputDocument();
        String iStr = Long.toString(i);
        doc.addField("id", iStr);
        doc.addField("description", "Nested Or Groups Test Doc: " + iStr);
        doc.addField(gteFieldName, "THIRTY");
        doc.addField(lteFieldName, "THREE");
        if (i % 2 == 0) {
            doc.addField(orGroupsFieldName, "nestedgroup1");
            doc.addField(orGroupsFieldName, "nestedgroup4");
        }
        if (i % 3 == 0) {
            doc.addField(orGroupsFieldName, "nestedgroup2");
            doc.addField(orGroupsFieldName, "nestedgroup5");
        }
        if (i % 4 == 0) {
            doc.addField(orGroupsFieldName, "nestedgroup3");
            doc.addField(orGroupsFieldName, "nestedgroup6");
        }

        if (i % 2 == 0 || i % 3 == 0 || i % 4 == 0) {
            groupDocCount[0]++;
        }
        doc.addField(andGroupsFieldName, "group11");
        doc.addField(andGroupsCountFieldName, 1);
        docs.add(doc);
    }

    client.add(collectionName, docs);
    client.commit(collectionName, true, true);

    QueryRequest request = new QueryRequest(new SolrQuery("*:*"));

    /*
      nesteduser1 has nestedgroup1, nestedgroup2 and nestedgroup3
      nesteduser2 has nestedgroup4, nestedgroup5 and nestedgroup6
      oruser1 does not have any of the nested groups so should return zero
     */

    setAuthenticationUser("oruser1");
    QueryResponse rsp = request.process(client, collectionName);
    SolrDocumentList docList = rsp.getResults();

    assertEquals(0, docList.getNumFound());

    setAuthenticationUser("nesteduser1");
    rsp = request.process(client, collectionName);
    docList = rsp.getResults();

    assertEquals(groupDocCount[0], docList.getNumFound());

    setAuthenticationUser("nesteduser2");
    rsp = request.process(client, collectionName);
    docList = rsp.getResults();

    assertEquals(groupDocCount[0], docList.getNumFound());

}

From source file:org.apache.sentry.tests.e2e.solr.TestDocLevelOperations.java

License:Apache License

private void querySimple(String collectionName, QueryRequest request, CloudSolrClient client,
        boolean checkNonAdminUsers) throws Exception {
    // as admin  -- should get the other half
    setAuthenticationUser("admin");
    QueryResponse rsp = request.process(client, collectionName);
    SolrDocumentList docList = rsp.getResults();
    assertEquals(NUM_DOCS / 2, docList.getNumFound());
    for (SolrDocument doc : docList) {
        String id = doc.getFieldValue("id").toString();
        assertEquals(1, Long.valueOf(id) % 2);
    }/*from   w  w w  .  jav  a2  s. c  o m*/

    if (checkNonAdminUsers) {
        // as junit -- should get half the documents
        setAuthenticationUser("junit");
        rsp = request.process(client, collectionName);
        docList = rsp.getResults();
        assertEquals(NUM_DOCS / 2, docList.getNumFound());
        for (SolrDocument doc : docList) {
            String id = doc.getFieldValue("id").toString();
            assertEquals(0, Long.valueOf(id) % 2);
        }

        // as docLevel -- should get all
        setAuthenticationUser("doclevel");
        rsp = request.process(client, collectionName);
        assertEquals(NUM_DOCS, rsp.getResults().getNumFound());
    }
}

From source file:org.apache.sentry.tests.e2e.solr.TestDocLevelOperations.java

License:Apache License

private void checkAllRolesToken(String collectionName, QueryRequest request, CloudSolrClient client,
        int totalAllRolesAdded, int totalOnlyAllRolesAdded, int allRolesFactor, int totalJunitAdded,
        int junitFactor) throws Exception {
    // as admin  -- should only get all roles token documents
    setAuthenticationUser("admin");
    QueryResponse rsp = request.process(client, collectionName);
    SolrDocumentList docList = rsp.getResults();
    assertEquals(totalAllRolesAdded, docList.getNumFound());
    for (SolrDocument doc : docList) {
        String id = doc.getFieldValue("id").toString();
        assertEquals(0, Long.valueOf(id) % allRolesFactor);
    }/*  w w w.ja v  a 2  s.  c  om*/

    // as junit -- should get junit added + onlyAllRolesAdded
    setAuthenticationUser("junit");
    rsp = request.process(client, collectionName);
    docList = rsp.getResults();
    assertEquals(totalJunitAdded + totalOnlyAllRolesAdded, docList.getNumFound());
    for (SolrDocument doc : docList) {
        String id = doc.getFieldValue("id").toString();
        boolean addedJunit = (Long.valueOf(id) % junitFactor) == 0;
        boolean onlyAllRoles = !addedJunit && (Long.valueOf(id) % allRolesFactor) == 0;
        assertEquals(true, addedJunit || onlyAllRoles);
    }
}

From source file:org.apache.sentry.tests.e2e.solr.TestRealTimeGet.java

License:Apache License

private void assertExpected(ExpectedResult expectedResult, QueryResponse rsp, QueryResponse controlRsp)
        throws Exception {
    SolrDocumentList docList = rsp.getResults();
    SolrDocumentList controlDocList = controlRsp.getResults();
    SolrDocument doc = (SolrDocument) rsp.getResponse().get("doc");
    SolrDocument controlDoc = (SolrDocument) controlRsp.getResponse().get("doc");

    if (expectedResult.expectedDocs == 0) {
        // could be null rather than 0 size, check against control that format is identical
        assertNull("Should be no doc present: " + doc, doc);
        assertNull("Should be no doc present: " + controlDoc, controlDoc);
        assertTrue((docList == null && controlDocList == null)
                || (controlDocList.getNumFound() == 0 && controlDocList.getNumFound() == 0));
    } else {//from  w w w  .j  a  v  a2  s.  co m
        if (docList == null) {
            assertNull(controlDocList);
            assertNotNull(doc);
            assertNotNull(controlDoc);
        } else {
            assertNotNull(controlDocList);
            assertNull(doc);
            assertNull(controlDoc);
            assertEquals(expectedResult.expectedDocs, docList.getNumFound());
            assertEquals(docList.getNumFound(), controlDocList.getNumFound());
        }
    }
}

From source file:org.apache.sentry.tests.e2e.solr.TestRealTimeGet.java

License:Apache License

private void assertFlOnDocList(SolrDocumentList list, Set<String> expectedIds, List<String> expectedFields) {
    assertEquals("Doc list size should be: " + expectedIds.size(), expectedIds.size(), list.getNumFound());
    for (SolrDocument doc : list) {
        expectedIds.contains(doc.get("id"));
        for (String field : expectedFields) {
            assertNotNull("Field: " + field + " should not be null in doc: " + doc, doc.get(field));
        }//w w  w  .  ja  v  a2s. co m
        assertEquals("doc should have: " + expectedFields.size() + " fields.  Doc: " + doc,
                expectedFields.size(), doc.getFieldNames().size());
    }
}