Search in sources :

Example 86 with ZMessage

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

the class TestSearchConv method isExpanded.

private boolean isExpanded(ZSearchHit hit) {
    //expanded hits include the message object, non-expanded don't
    ZMessage msg = ((ZMessageHit) hit).getMessage();
    boolean expanded = msg != null;
    return expanded;
}
Also used : ZMessage(com.zimbra.client.ZMessage) ZMessageHit(com.zimbra.client.ZMessageHit)

Example 87 with ZMessage

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

the class TestSearchSortByDate method testMessagesCloseTimestamps.

@Test
public void testMessagesCloseTimestamps() {
    try {
        Mailbox recieverMbox = TestUtil.getMailbox(RECIPIENT);
        // - 3600*60*1000;
        long timestamp = System.currentTimeMillis();
        int numMessages = 2207;
        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()));
        }
        for (int i = 0; i < numMessages; i++) {
            Message msg = TestUtil.addMessage(recieverMbox, TestUtil.getAddress(RECIPIENT), TestUtil.getAddress(SENDER), NAME_PREFIX + " testing bug " + i, "this message does not contains a search string which we are searching for", timestamp);
        }
        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<ZMessage> resultSet = TestUtil.search(zmbx, searchParams);
        assertEquals(firstLimit, resultSet.size());
        int gotMessages = resultSet.size();
        List<String> seenIds = new ArrayList<String>();
        ZMessage lastHit = null;
        for (ZMessage m : resultSet) {
            seenIds.add(m.getId());
            lastHit = m;
        }
        int recCount = 1;
        offset += firstLimit;
        while (gotMessages > 0) {
            searchParams.setCursor((new Cursor(lastHit.getId(), Long.toString(lastHit.getReceivedDate()))));
            searchParams = new ZSearchParams("in:inbox " + SEARCH_STRING);
            searchParams.setSortBy(SearchSortBy.dateDesc);
            searchParams.setLimit(incLimit);
            searchParams.setTypes(ZSearchParams.TYPE_MESSAGE);
            searchParams.setOffset(offset);
            resultSet = TestUtil.search(zmbx, searchParams);
            recCount++;
            gotMessages = resultSet.size();
            int resCount = 0;
            for (ZMessage msg : resultSet) {
                assertFalse(String.format("Request %d, result %d, encountered duplicate ID %s. Previously seen at %d", recCount, resCount, msg.getId(), seenIds.indexOf(msg.getId())), seenIds.contains(msg.getId()));
                seenIds.add(msg.getId());
                resCount++;
                lastHit = msg;
            }
            // Thread.sleep(100); //jetty sometimes crashes on Mac when bombarded with request without a timeout
            offset += incLimit;
        }
        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 : ZMessage(com.zimbra.client.ZMessage) ZMessage(com.zimbra.client.ZMessage) Message(com.zimbra.cs.mailbox.Message) ArrayList(java.util.ArrayList) Cursor(com.zimbra.client.ZSearchParams.Cursor) ServiceException(com.zimbra.common.service.ServiceException) ZMailbox(com.zimbra.client.ZMailbox) Mailbox(com.zimbra.cs.mailbox.Mailbox) ZMailbox(com.zimbra.client.ZMailbox) ServiceException(com.zimbra.common.service.ServiceException) ZSearchParams(com.zimbra.client.ZSearchParams) Test(org.junit.Test)

Example 88 with ZMessage

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

the class TestSearchSortByDate method testMessagesCloseTimestamps2.

@Test
public void testMessagesCloseTimestamps2() {
    try {
        Mailbox recieverMbox = TestUtil.getMailbox(RECIPIENT2);
        // - 3600*60*1000;
        long timestamp = System.currentTimeMillis();
        int numMessages = 4307;
        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 += 10;
        }
        for (int i = 0; i < numMessages; i++) {
            Message msg = TestUtil.addMessage(recieverMbox, TestUtil.getAddress(RECIPIENT), TestUtil.getAddress(SENDER), NAME_PREFIX + " testing bug " + i, "this message does not contains a search string which we are searching for", timestamp);
        }
        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_MESSAGE);
        List<ZMessage> resultSet = TestUtil.search(zmbx, searchParams);
        assertEquals(firstLimit, resultSet.size());
        int gotMessages = resultSet.size();
        List<String> seenIds = new ArrayList<String>();
        ZMessage lastHit = null;
        for (ZMessage m : resultSet) {
            seenIds.add(m.getId());
            lastHit = m;
        }
        int recCount = 1;
        offset += firstLimit;
        while (gotMessages > 0) {
            searchParams.setCursor((new Cursor(lastHit.getId(), Long.toString(lastHit.getReceivedDate()))));
            searchParams = new ZSearchParams("in:inbox " + SEARCH_STRING);
            searchParams.setSortBy(SearchSortBy.dateDesc);
            searchParams.setLimit(incLimit);
            searchParams.setTypes(ZSearchParams.TYPE_MESSAGE);
            searchParams.setOffset(offset);
            resultSet = TestUtil.search(zmbx, searchParams);
            recCount++;
            gotMessages = resultSet.size();
            int resCount = 0;
            for (ZMessage msg : resultSet) {
                assertFalse(String.format("Request %d, result %d, encountered duplicate ID %s. Previously seen at %d", recCount, resCount, msg.getId(), seenIds.indexOf(msg.getId())), seenIds.contains(msg.getId()));
                seenIds.add(msg.getId());
                resCount++;
                lastHit = msg;
            }
            // Thread.sleep(100); //jetty sometimes crashes on Mac when bombarded with request without a timeout
            offset += incLimit;
        }
        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 : ZMessage(com.zimbra.client.ZMessage) ZMessage(com.zimbra.client.ZMessage) Message(com.zimbra.cs.mailbox.Message) ArrayList(java.util.ArrayList) Cursor(com.zimbra.client.ZSearchParams.Cursor) ServiceException(com.zimbra.common.service.ServiceException) ZMailbox(com.zimbra.client.ZMailbox) Mailbox(com.zimbra.cs.mailbox.Mailbox) ZMailbox(com.zimbra.client.ZMailbox) ServiceException(com.zimbra.common.service.ServiceException) ZSearchParams(com.zimbra.client.ZSearchParams) Test(org.junit.Test)

Example 89 with ZMessage

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

the class TestCalDav method attendeeDeleteFromCalendar.

private void attendeeDeleteFromCalendar(boolean suppressReply) throws Exception {
    Account dav1 = users[1].create();
    users[2].create();
    String url = getSchedulingInboxUrl(dav1, dav1);
    ReportMethod method = new ReportMethod(url);
    addBasicAuthHeaderForUser(method, dav1);
    ZMailbox organizer = users[2].getZMailbox();
    // Force creation of mailbox - shouldn't be needed
    users[1].getZMailbox();
    String subject = String.format("%s %s", NAME_PREFIX, suppressReply ? "testInvite which shouldNOT be replied to" : "testInvite to be auto-declined");
    Date startDate = new Date(System.currentTimeMillis() + Constants.MILLIS_PER_DAY);
    Date endDate = new Date(startDate.getTime() + Constants.MILLIS_PER_HOUR);
    TestUtil.createAppointment(organizer, subject, dav1.getName(), startDate, endDate);
    // Wait for appointment to arrive
    String href = waitForNewSchedulingRequestByUID(dav1, "");
    assertNotNull("href for inbox invitation", href);
    String uid = href.substring(href.lastIndexOf('/') + 1);
    uid = uid.substring(0, uid.indexOf(',') - 1);
    String calFolderUrl = getFolderUrl(dav1, "Calendar");
    String delurl = waitForItemInCalendarCollectionByUID(calFolderUrl, dav1, uid, true, 5000);
    StringBuilder sb = getLocalServerRoot().append(delurl);
    DeleteMethod delMethod = new DeleteMethod(sb.toString());
    addBasicAuthHeaderForUser(delMethod, dav1);
    if (suppressReply) {
        delMethod.addRequestHeader(DavProtocol.HEADER_SCHEDULE_REPLY, "F");
    }
    HttpClient client = new HttpClient();
    HttpMethodExecutor.execute(client, delMethod, HttpStatus.SC_NO_CONTENT);
    List<ZMessage> msgs;
    if (suppressReply) {
        // timeout may be a bit short but don't want long time wastes in test suite.
        msgs = TestUtil.waitForMessages(organizer, "is:invite is:unread inid:2 after:\"-1month\"", 0, 2000);
        if (msgs != null) {
            assertEquals("Should be no DECLINE reply msg", 0, msgs.size());
        }
    } else {
        msgs = TestUtil.waitForMessages(organizer, "is:invite is:unread inid:2 after:\"-1month\"", 1, 10000);
        assertNotNull("inbox DECLINE reply msgs", msgs);
        assertEquals("Should be 1 DECLINE reply msg", 1, msgs.size());
        assertNotNull("inbox DECLINE reply msg invite", msgs.get(0).getInvite());
    }
}
Also used : ZMessage(com.zimbra.client.ZMessage) Account(com.zimbra.cs.account.Account) DeleteMethod(org.apache.commons.httpclient.methods.DeleteMethod) ZMailbox(com.zimbra.client.ZMailbox) HttpClient(org.apache.commons.httpclient.HttpClient) Date(java.util.Date)

Example 90 with ZMessage

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

the class TestBug89152 method testMessagesWithSimilarTimestamps.

@Test
public void testMessagesWithSimilarTimestamps() {
    try {
        int numMessages = 5207;
        int firstLimit = 150;
        int incLimit = 50;
        int offset = 0;
        Mailbox recieverMbox = TestUtil.getMailbox(RECIPIENT1);
        long timestamp = System.currentTimeMillis();
        byte[] msgBytes = Files.readAllBytes(FileSystems.getDefault().getPath(TEST_MESSAGE_FILE));
        for (int i = 0; i < numMessages; i++) {
            ParsedMessage pm = new ParsedMessage(msgBytes, timestamp, true);
            pm.getMimeMessage().setSentDate(new Date());
            Message msg = TestUtil.addMessage(recieverMbox, pm);
            timestamp += 1;
        //Thread.sleep(300);
        }
        Thread.sleep(150);
        ZMailbox zmbx = TestUtil.getZMailbox(RECIPIENT1);
        ZSearchParams searchParams = new ZSearchParams("in:inbox " + SEARCH_STRING);
        searchParams.setSortBy(SearchSortBy.dateDesc);
        searchParams.setLimit(firstLimit);
        searchParams.setTypes(ZSearchParams.TYPE_MESSAGE);
        List<ZMessage> resultSet = TestUtil.search(zmbx, searchParams);
        assertEquals(firstLimit, resultSet.size());
        int gotMessages = resultSet.size();
        List<String> seenIds = new ArrayList<String>();
        ZMessage lastHit = null;
        for (ZMessage m : resultSet) {
            seenIds.add(m.getId());
            lastHit = m;
        }
        int recCount = 1;
        offset += firstLimit;
        while (gotMessages > 0) {
            searchParams = new ZSearchParams("in:inbox " + SEARCH_STRING);
            searchParams.setCursor((new Cursor(lastHit.getId(), Long.toString(lastHit.getReceivedDate()))));
            searchParams.setSortBy(SearchSortBy.dateDesc);
            searchParams.setLimit(incLimit);
            searchParams.setTypes(ZSearchParams.TYPE_MESSAGE);
            searchParams.setOffset(offset);
            resultSet = TestUtil.search(zmbx, searchParams);
            recCount++;
            gotMessages = resultSet.size();
            int resCount = 0;
            for (ZMessage m : resultSet) {
                assertFalse(String.format("Request %d, result %d, encountered duplicate ID %s. Previously seen at %d", recCount, resCount, m.getId(), seenIds.indexOf(m.getId())), seenIds.contains(m.getId()));
                seenIds.add(m.getId());
                resCount++;
                lastHit = m;
            }
            Thread.sleep(300);
            offset += incLimit;
        }
        assertEquals("expecting " + numMessages + " messages. Got " + seenIds.size(), numMessages, seenIds.size());
    } catch (ServiceException e) {
        e.printStackTrace();
        fail(e.getMessage());
    } catch (Exception e) {
        e.printStackTrace();
        fail(e.getMessage());
    }
}
Also used : ZMessage(com.zimbra.client.ZMessage) ZMessage(com.zimbra.client.ZMessage) Message(com.zimbra.cs.mailbox.Message) ParsedMessage(com.zimbra.cs.mime.ParsedMessage) ParsedMessage(com.zimbra.cs.mime.ParsedMessage) ArrayList(java.util.ArrayList) Cursor(com.zimbra.client.ZSearchParams.Cursor) Date(java.util.Date) ServiceException(com.zimbra.common.service.ServiceException) ZMailbox(com.zimbra.client.ZMailbox) Mailbox(com.zimbra.cs.mailbox.Mailbox) ZMailbox(com.zimbra.client.ZMailbox) ServiceException(com.zimbra.common.service.ServiceException) ZSearchParams(com.zimbra.client.ZSearchParams) Test(org.junit.Test)

Aggregations

ZMessage (com.zimbra.client.ZMessage)101 Test (org.junit.Test)63 ZMailbox (com.zimbra.client.ZMailbox)59 ArrayList (java.util.ArrayList)43 ZFilterRule (com.zimbra.client.ZFilterRule)29 ZFilterAction (com.zimbra.client.ZFilterAction)28 ZFilterCondition (com.zimbra.client.ZFilterCondition)28 ZFilterRules (com.zimbra.client.ZFilterRules)28 ZHeaderCondition (com.zimbra.client.ZFilterCondition.ZHeaderCondition)12 ZOutgoingMessage (com.zimbra.client.ZMailbox.ZOutgoingMessage)12 ZEmailAddress (com.zimbra.client.ZEmailAddress)11 ZTagAction (com.zimbra.client.ZFilterAction.ZTagAction)10 ZFolder (com.zimbra.client.ZFolder)10 ZMarkAction (com.zimbra.client.ZFilterAction.ZMarkAction)8 Account (com.zimbra.cs.account.Account)8 MessagePart (com.zimbra.client.ZMailbox.ZOutgoingMessage.MessagePart)7 Date (java.util.Date)7 ZGetMessageParams (com.zimbra.client.ZGetMessageParams)5 ZMimePart (com.zimbra.client.ZMessage.ZMimePart)5 ZTag (com.zimbra.client.ZTag)5