Skip to content

Commit

Permalink
JAMES-2074 remove thread-weaver by ConcurrentTestRunner
Browse files Browse the repository at this point in the history
  • Loading branch information
trantienduchn authored and aduprat committed Aug 28, 2018
1 parent 60b1d21 commit 088bdd5
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 321 deletions.
6 changes: 0 additions & 6 deletions server/protocols/jmap/pom.xml
Expand Up @@ -188,12 +188,6 @@
<groupId>com.github.steveash.guavate</groupId> <groupId>com.github.steveash.guavate</groupId>
<artifactId>guavate</artifactId> <artifactId>guavate</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.googlecode.thread-weaver</groupId>
<artifactId>threadweaver</artifactId>
<version>0.2</version>
<scope>test</scope>
</dependency>
<dependency> <dependency>
<groupId>com.jayway.jsonpath</groupId> <groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId> <artifactId>json-path</artifactId>
Expand Down
Expand Up @@ -18,315 +18,56 @@
****************************************************************/ ****************************************************************/
package org.apache.james.jmap; package org.apache.james.jmap;


import java.util.Collection; import static org.mockito.ArgumentMatchers.any;
import java.util.EnumSet; import static org.mockito.ArgumentMatchers.anyString;
import java.util.List; import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

import java.util.Optional; import java.util.Optional;
import java.util.Set;


import org.apache.commons.lang.NotImplementedException;
import org.apache.james.mailbox.MailboxListener;
import org.apache.james.mailbox.MailboxManager; import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.MessageManager;
import org.apache.james.mailbox.SubscriptionManager; import org.apache.james.mailbox.SubscriptionManager;
import org.apache.james.mailbox.exception.BadCredentialsException;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.SubscriptionException;
import org.apache.james.mailbox.mock.MockMailboxSession; import org.apache.james.mailbox.mock.MockMailboxSession;
import org.apache.james.mailbox.model.MailboxACL;
import org.apache.james.mailbox.model.MailboxAnnotation;
import org.apache.james.mailbox.model.MailboxAnnotationKey;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxMetaData;
import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.model.MessageRange;
import org.apache.james.mailbox.model.MultimailboxesSearchQuery;
import org.apache.james.mailbox.model.TestId; import org.apache.james.mailbox.model.TestId;
import org.apache.james.mailbox.model.search.MailboxQuery;
import org.apache.james.metrics.api.NoopMetricFactory; import org.apache.james.metrics.api.NoopMetricFactory;
import org.apache.james.util.concurrency.ConcurrentTestRunner;
import org.junit.Before;
import org.junit.Test; import org.junit.Test;


import com.google.testing.threadtester.AnnotatedTestRunner;
import com.google.testing.threadtester.ThreadedAfter;
import com.google.testing.threadtester.ThreadedBefore;
import com.google.testing.threadtester.ThreadedMain;
import com.google.testing.threadtester.ThreadedSecondary;

public class DefaultMailboxesProvisioningFilterThreadTest { public class DefaultMailboxesProvisioningFilterThreadTest {


private static final String USERNAME = "username";

private DefaultMailboxesProvisioningFilter sut; private DefaultMailboxesProvisioningFilter sut;
private MailboxSession session; private MailboxSession session;
private MailboxManager mailboxManager; private MailboxManager mailboxManager;
private FakeSubscriptionManager subscriptionManager; private SubscriptionManager subscriptionManager;


@ThreadedBefore @Before
public void before() { public void before() {
session = new MockMailboxSession("username"); session = new MockMailboxSession(USERNAME);
mailboxManager = new FakeMailboxManager(session); mailboxManager = mock(MailboxManager.class);
subscriptionManager = new FakeSubscriptionManager(); subscriptionManager = mock(SubscriptionManager.class);
sut = new DefaultMailboxesProvisioningFilter(mailboxManager, subscriptionManager, new NoopMetricFactory()); sut = new DefaultMailboxesProvisioningFilter(mailboxManager, subscriptionManager, new NoopMetricFactory());
} }

@ThreadedMain
public void mainThread() {
sut.createMailboxesIfNeeded(session);
}

@ThreadedSecondary
public void secondThread() {
sut.createMailboxesIfNeeded(session);
}

@ThreadedAfter
public void after() {
// Exception is thrown if test fails
}

@Test
public void testConcurrentAccessToFilterShouldNotThrow() {
AnnotatedTestRunner runner = new AnnotatedTestRunner();
runner.runTests(this.getClass(), DefaultMailboxesProvisioningFilter.class);
}

private static class FakeSubscriptionManager implements SubscriptionManager {
@Override
public void subscribe(MailboxSession session, String mailbox) throws SubscriptionException {

}

@Override
public Collection<String> subscriptions(MailboxSession session) throws SubscriptionException {
return null;
}

@Override
public void unsubscribe(MailboxSession session, String mailbox) throws SubscriptionException {

}

@Override
public void startProcessingRequest(MailboxSession session) {

}

@Override
public void endProcessingRequest(MailboxSession session) {

}
}

private static class FakeMailboxManager implements MailboxManager {
private MailboxSession mailboxSession;

public FakeMailboxManager(MailboxSession mailboxSession) {
this.mailboxSession = mailboxSession;
}

@Override
public EnumSet<SearchCapabilities> getSupportedSearchCapabilities() {
return EnumSet.noneOf(SearchCapabilities.class);
}

@Override
public void startProcessingRequest(MailboxSession session) {
}

@Override
public void endProcessingRequest(MailboxSession session) {
}

@Override
public void addListener(MailboxPath mailboxPath, MailboxListener listener, MailboxSession session) throws MailboxException {
}

@Override
public void removeListener(MailboxPath mailboxPath, MailboxListener listner, MailboxSession session) throws MailboxException {
}

@Override
public void addGlobalListener(MailboxListener listener, MailboxSession session) throws MailboxException {
}

@Override
public void removeGlobalListener(MailboxListener listner, MailboxSession session) throws MailboxException {
}

@Override
public char getDelimiter() {
return 0;
}

@Override
public MessageManager getMailbox(MailboxPath mailboxPath, MailboxSession session) throws MailboxException {
return null;
}

@Override
public MessageManager getMailbox(MailboxId mailboxId, MailboxSession session) throws MailboxException {
return null;
}

@Override
public Optional<MailboxId> createMailbox(MailboxPath mailboxPath, MailboxSession mailboxSession) throws MailboxException {
return Optional.of(TestId.of(18L));
}


@Override @Test
public void deleteMailbox(MailboxPath mailboxPath, MailboxSession session) throws MailboxException { public void testConcurrentAccessToFilterShouldNotThrow() throws Exception {
} doNothing().when(subscriptionManager).subscribe(eq(session), anyString());


@Override when(mailboxManager.createMailbox(any(MailboxPath.class), eq(session))).thenReturn(Optional.of(TestId.of(18L)));
public void renameMailbox(MailboxPath from, MailboxPath to, MailboxSession session) throws MailboxException { when(mailboxManager.mailboxExists(any(MailboxPath.class), eq(session))).thenReturn(false);
} when(mailboxManager.createSystemSession(USERNAME)).thenReturn(session);


@Override ConcurrentTestRunner
public List<MessageRange> copyMessages(MessageRange set, MailboxPath from, MailboxPath to, MailboxSession session) throws MailboxException { .builder()
return null; .threadCount(2)
} .build((threadNumber, step) -> sut.createMailboxesIfNeeded(session))

.run()
@Override .assertNoException();
public List<MessageRange> copyMessages(MessageRange set, MailboxId from, MailboxId to, MailboxSession session)
throws MailboxException {
return null;
}

@Override
public List<MessageRange> moveMessages(MessageRange set, MailboxPath from, MailboxPath to, MailboxSession session) throws MailboxException {
return null;
}

@Override
public List<MailboxMetaData> search(MailboxQuery expression, MailboxSession session) throws MailboxException {
return null;
}

@Override
public boolean mailboxExists(MailboxPath mailboxPath, MailboxSession session) throws MailboxException {
return false;
}

@Override
public MailboxSession createSystemSession(String userName) throws BadCredentialsException, MailboxException {
return mailboxSession;
}

@Override
public MailboxSession login(String userid, String passwd) throws BadCredentialsException, MailboxException {
return null;
}

@Override
public void logout(MailboxSession session, boolean force) throws MailboxException {
}

@Override
public boolean hasRight(MailboxId mailboxId, MailboxACL.Right right, MailboxSession session) throws MailboxException {
return false;
}

@Override
public boolean hasRight(MailboxPath mailboxPath, MailboxACL.Right right, MailboxSession session) throws MailboxException {
return false;
}

@Override
public MailboxACL.Rfc4314Rights myRights(MailboxPath mailboxPath, MailboxSession session) throws MailboxException {
throw new NotImplementedException();
}

@Override
public MailboxACL.Rfc4314Rights myRights(MailboxId mailboxId, MailboxSession session) throws MailboxException {
throw new NotImplementedException();
}

@Override
public MailboxACL.Rfc4314Rights[] listRights(MailboxPath mailboxPath, MailboxACL.EntryKey identifier, MailboxSession session) throws MailboxException {
throw new NotImplementedException();
}

@Override
public MailboxACL listRights(MailboxPath mailboxPath, MailboxSession session) throws MailboxException {
throw new NotImplementedException();
}

@Override
public void applyRightsCommand(MailboxPath mailboxPath, MailboxACL.ACLCommand mailboxACLCommand, MailboxSession session) throws MailboxException {
throw new NotImplementedException();
}

@Override
public void setRights(MailboxId mailboxId, MailboxACL mailboxACL, MailboxSession session) throws MailboxException {
throw new NotImplementedException();
}

@Override
public void setRights(MailboxPath mailboxPath, MailboxACL mailboxACL, MailboxSession session) throws MailboxException {
throw new NotImplementedException();
}

@Override
public List<MailboxPath> list(MailboxSession session) throws MailboxException {
return null;
}

@Override
public EnumSet<MailboxCapabilities> getSupportedMailboxCapabilities() {
return null;
}

@Override
public EnumSet<MessageCapabilities> getSupportedMessageCapabilities() {
return null;
}

@Override
public List<MailboxAnnotation> getAllAnnotations(MailboxPath mailboxPath, MailboxSession session) throws MailboxException {
return null;
}

@Override
public List<MailboxAnnotation> getAnnotationsByKeys(MailboxPath mailboxPath, MailboxSession session, Set<MailboxAnnotationKey> keys) throws MailboxException {
return null;
}

@Override
public void updateAnnotations(MailboxPath mailboxPath, MailboxSession session, List<MailboxAnnotation> mailboxAnnotations) throws MailboxException {

}

@Override
public boolean hasCapability(MailboxCapabilities capability) {
return false;
}

@Override
public List<MessageId> search(MultimailboxesSearchQuery expression, MailboxSession session, long limit) throws MailboxException {
return null;
}

@Override
public List<MailboxAnnotation> getAnnotationsByKeysWithOneDepth(MailboxPath mailboxPath, MailboxSession session,
Set<MailboxAnnotationKey> keys) throws MailboxException {
return null;
}

@Override
public List<MailboxAnnotation> getAnnotationsByKeysWithAllDepth(MailboxPath mailboxPath, MailboxSession session,
Set<MailboxAnnotationKey> keys) throws MailboxException {
return null;
}

@Override
public boolean hasChildren(MailboxPath mailboxPath, MailboxSession session) throws MailboxException {
return false;
}

@Override
public MailboxSession loginAsOtherUser(String adminUserId, String passwd, String realUserId) throws BadCredentialsException, MailboxException {
return null;
}
} }
} }

0 comments on commit 088bdd5

Please sign in to comment.