Search in sources :

Example 11 with ZSearchParams

use of com.zimbra.client.ZSearchParams in project zm-mailbox by Zimbra.

the class TestLongSearchResultSets method testMessages.

@Test
public void testMessages() {
    try {
        Mailbox recieverMbox = TestUtil.getMailbox(RECIPIENT);
        long timestamp = System.currentTimeMillis() - 3600 * 60 * 1000;
        int numMessages = 2257;
        int firstLimit = 100;
        int incLimit = 50;
        int offset = 0;
        ArrayList<String> expectedIds = new ArrayList<String>();
        for (int i = 0; i < numMessages; i++) {
            Message msg = TestUtil.addMessage(recieverMbox, TestUtil.getAddress(RECIPIENT), TestUtil.getAddress(SENDER), NAME_PREFIX + " testing bug " + i, String.format("this message contains a search string %s which we are searching for and a number %d and timestamp %d", SEARCH_STRING, i, timestamp), timestamp);
            expectedIds.add(Integer.toString(msg.getId()));
            timestamp += 1000;
            Thread.sleep(100);
        }
        Collections.reverse(expectedIds);
        Thread.sleep(100);
        ZMailbox zmbx = TestUtil.getZMailbox(RECIPIENT);
        ZSearchParams searchParams = new ZSearchParams("in:inbox " + SEARCH_STRING);
        searchParams.setSortBy(SearchSortBy.dateDesc);
        searchParams.setLimit(firstLimit);
        searchParams.setTypes(ZSearchParams.TYPE_MESSAGE);
        List<String> msgIds = TestUtil.searchMessageIds(zmbx, searchParams);
        assertEquals(firstLimit, msgIds.size());
        int gotMessages = msgIds.size();
        List<String> seenIds = new ArrayList<String>();
        seenIds.addAll(msgIds);
        int recCount = 1;
        offset += firstLimit;
        while (gotMessages > 0) {
            searchParams = new ZSearchParams("in:inbox " + SEARCH_STRING);
            searchParams.setSortBy(SearchSortBy.dateDesc);
            searchParams.setLimit(incLimit);
            searchParams.setTypes(ZSearchParams.TYPE_MESSAGE);
            searchParams.setOffset(offset);
            msgIds = TestUtil.searchMessageIds(zmbx, searchParams);
            recCount++;
            gotMessages = msgIds.size();
            int resCount = 0;
            for (String szId : msgIds) {
                assertFalse(String.format("Request %d, result %d, encountered duplicate ID %s. Previously seen at %d", recCount, resCount, szId, seenIds.indexOf(szId)), seenIds.contains(szId));
                seenIds.add(szId);
                resCount++;
            }
            //jetty sometimes crashes on Mac when bombarded with request without a timeout
            Thread.sleep(100);
            offset += incLimit;
        }
        for (int i = 0; i < expectedIds.size(); i++) {
            assertEquals("IDs at index " + i + " do not match", expectedIds.get(i), seenIds.get(i));
        }
        assertEquals("Returned incorrect number of messages", numMessages, seenIds.size());
    } catch (ServiceException e) {
        e.printStackTrace();
        fail(e.getMessage());
    } catch (Exception e) {
        e.printStackTrace();
        fail(e.getMessage());
    }
}
Also used : ZMailbox(com.zimbra.client.ZMailbox) Mailbox(com.zimbra.cs.mailbox.Mailbox) ZMailbox(com.zimbra.client.ZMailbox) Message(com.zimbra.cs.mailbox.Message) ServiceException(com.zimbra.common.service.ServiceException) ZSearchParams(com.zimbra.client.ZSearchParams) ArrayList(java.util.ArrayList) ServiceException(com.zimbra.common.service.ServiceException) Test(org.junit.Test)

Example 12 with ZSearchParams

use of com.zimbra.client.ZSearchParams in project zm-mailbox by Zimbra.

the class TestLongSearchResultSets method testConversations2.

@Test
public void testConversations2() {
    try {
        Mailbox recieverMbox = TestUtil.getMailbox(RECIPIENT2);
        long timestamp = System.currentTimeMillis() - 3600 * 60 * 1000;
        int numMessages = 3207;
        int firstLimit = 100;
        int incLimit = 50;
        int offset = 0;
        ArrayList<String> expectedIds = new ArrayList<String>();
        for (int i = 0; i < numMessages; i++) {
            Message msg = TestUtil.addMessage(recieverMbox, TestUtil.getAddress(RECIPIENT2), TestUtil.getAddress(SENDER), NAME_PREFIX + " testing bug " + i, String.format("this message contains a search string %s which we are searching for and a number %d and timestamp %d", SEARCH_STRING, i, timestamp), timestamp);
            expectedIds.add(Integer.toString(msg.getId()));
            timestamp += 1000;
            Thread.sleep(100);
        }
        Collections.reverse(expectedIds);
        Thread.sleep(100);
        ZMailbox zmbx = TestUtil.getZMailbox(RECIPIENT2);
        ZSearchParams searchParams = new ZSearchParams("in:inbox " + SEARCH_STRING);
        searchParams.setSortBy(SearchSortBy.dateDesc);
        searchParams.setLimit(firstLimit);
        searchParams.setTypes(ZSearchParams.TYPE_CONVERSATION);
        List<String> msgIds = TestUtil.searchMessageIds(zmbx, searchParams);
        assertEquals(firstLimit, msgIds.size());
        int gotMessages = msgIds.size();
        List<String> seenIds = new ArrayList<String>();
        seenIds.addAll(msgIds);
        int recCount = 1;
        offset += firstLimit;
        while (gotMessages > 0) {
            searchParams = new ZSearchParams("in:inbox " + SEARCH_STRING);
            searchParams.setSortBy(SearchSortBy.dateDesc);
            searchParams.setLimit(incLimit);
            searchParams.setTypes(ZSearchParams.TYPE_CONVERSATION);
            searchParams.setOffset(offset);
            msgIds = TestUtil.searchMessageIds(zmbx, searchParams);
            recCount++;
            gotMessages = msgIds.size();
            int resCount = 0;
            for (String szId : msgIds) {
                assertFalse(String.format("Request %d, result %d, encountered duplicate ID %s. Previously seen at %d", recCount, resCount, szId, seenIds.indexOf(szId)), seenIds.contains(szId));
                seenIds.add(szId);
                resCount++;
            }
            //jetty sometimes crashes on Mac when bombarded with request without a timeout
            Thread.sleep(100);
            offset += incLimit;
        }
        assertEquals("Returned incorrect number of conversations", numMessages, seenIds.size());
    } catch (ServiceException e) {
        e.printStackTrace();
        fail(e.getMessage());
    } catch (Exception e) {
        e.printStackTrace();
        fail(e.getMessage());
    }
}
Also used : ZMailbox(com.zimbra.client.ZMailbox) Mailbox(com.zimbra.cs.mailbox.Mailbox) ZMailbox(com.zimbra.client.ZMailbox) Message(com.zimbra.cs.mailbox.Message) ServiceException(com.zimbra.common.service.ServiceException) ZSearchParams(com.zimbra.client.ZSearchParams) ArrayList(java.util.ArrayList) ServiceException(com.zimbra.common.service.ServiceException) Test(org.junit.Test)

Example 13 with ZSearchParams

use of com.zimbra.client.ZSearchParams in project zm-mailbox by Zimbra.

the class TestMinusOperator method testExcludeRecipient.

@Test
public void testExcludeRecipient() throws ServiceException {
    ZSearchResult search1 = mbox.search(new ZSearchParams("in:sent to:" + REMOTE_USER_NAME));
    assertEquals(search1.getHits().size(), 1);
    ZSearchResult search2 = mbox.search(new ZSearchParams("in:sent -to:" + REMOTE_USER_NAME));
    assertEquals(search2.getHits().size(), 0);
}
Also used : ZSearchResult(com.zimbra.client.ZSearchResult) ZSearchParams(com.zimbra.client.ZSearchParams) Test(org.junit.Test)

Example 14 with ZSearchParams

use of com.zimbra.client.ZSearchParams in project zm-mailbox by Zimbra.

the class TestPurgeDataSource method doSearch.

private List<ZSearchHit> doSearch(String query) throws ServiceException {
    ZSearchParams params = new ZSearchParams(query);
    params.setFetch(Fetch.all);
    params.setSortBy(SearchSortBy.dateDesc);
    ZSearchResult result = mbox.search(params);
    List<ZSearchHit> hits = result.getHits();
    return hits;
}
Also used : ZSearchResult(com.zimbra.client.ZSearchResult) ZSearchHit(com.zimbra.client.ZSearchHit) ZSearchParams(com.zimbra.client.ZSearchParams)

Example 15 with ZSearchParams

use of com.zimbra.client.ZSearchParams in project zm-mailbox by Zimbra.

the class ZMailboxUtil method doSearchConvNext.

private void doSearchConvNext() throws ServiceException {
    ZSearchParams sp = mConvSearchParams;
    ZSearchResult sr = mConvSearchResult;
    if (sp == null || sr == null || !sr.hasMore())
        return;
    List<ZSearchHit> hits = sr.getHits();
    if (hits.size() == 0)
        return;
    sp.setOffset(sp.getOffset() + hits.size());
    dumpConvSearch(mMbox.searchConversation(mConvSearchConvId, sp), verboseOpt());
}
Also used : ZSearchResult(com.zimbra.client.ZSearchResult) ZSearchHit(com.zimbra.client.ZSearchHit) ZSearchParams(com.zimbra.client.ZSearchParams)

Aggregations

ZSearchParams (com.zimbra.client.ZSearchParams)31 Test (org.junit.Test)21 ZSearchResult (com.zimbra.client.ZSearchResult)17 ArrayList (java.util.ArrayList)12 ZMailbox (com.zimbra.client.ZMailbox)11 ZSearchHit (com.zimbra.client.ZSearchHit)9 ServiceException (com.zimbra.common.service.ServiceException)9 Mailbox (com.zimbra.cs.mailbox.Mailbox)9 Message (com.zimbra.cs.mailbox.Message)9 ZMessage (com.zimbra.client.ZMessage)5 Cursor (com.zimbra.client.ZSearchParams.Cursor)4 ParsedMessage (com.zimbra.cs.mime.ParsedMessage)2 SearchSortBy (com.zimbra.soap.type.SearchSortBy)2 ZMessageHit (com.zimbra.client.ZMessageHit)1 ZSearchPagerResult (com.zimbra.client.ZSearchPagerResult)1 SoapFaultException (com.zimbra.common.soap.SoapFaultException)1 Account (com.zimbra.cs.account.Account)1 Date (java.util.Date)1