Package com.taobao.metamorphosis.client.extension.spring

Source Code of com.taobao.metamorphosis.client.extension.spring.MessageListenerContainerUnitTest$MyListener

package com.taobao.metamorphosis.client.extension.spring;

import static org.junit.Assert.assertTrue;

import java.util.HashMap;
import java.util.Map;

import org.easymock.EasyMock;
import org.easymock.IMocksControl;
import org.junit.Before;
import org.junit.Test;

import com.taobao.metamorphosis.client.MessageSessionFactory;
import com.taobao.metamorphosis.client.consumer.ConsumerConfig;
import com.taobao.metamorphosis.client.consumer.MessageConsumer;


public class MessageListenerContainerUnitTest {

    private MessageListenerContainer container;

    private MessageSessionFactory sessionFactory;

    private MessageConsumer consumer;

    private IMocksControl control;

    private JavaSerializationMessageBodyConverter messageBodyConverter;

    private static class MyListener extends DefaultMessageListener<String> {
        @Override
        public void onReceiveMessages(MetaqMessage<String> msg) {

        }

    }


    @Before
    public void setUp() {
        this.control = EasyMock.createControl();
        this.sessionFactory = this.control.createMock(MessageSessionFactory.class);
        this.consumer = this.control.createMock(MessageConsumer.class);
        this.container = new MessageListenerContainer();
        this.messageBodyConverter = new JavaSerializationMessageBodyConverter();
        this.container.setMessageBodyConverter(this.messageBodyConverter);
        this.container.setMessageSessionFactory(this.sessionFactory);
    }


    @Test
    public void testSubscribeOneTopic() throws Exception {
        Map<MetaqTopic, MyListener> subscribers = new HashMap<MetaqTopic, MyListener>();
        ConsumerConfig consumerConfig = new ConsumerConfig("group1");
        MyListener listener = new MyListener();
        subscribers.put(new MetaqTopic("topic1", 1024, consumerConfig), listener);
        this.container.setSubscribers(subscribers);

        EasyMock.expect(this.sessionFactory.createConsumer(consumerConfig)).andReturn(this.consumer);
        EasyMock.expect(this.consumer.subscribe("topic1", 1024, listener)).andReturn(this.consumer);
        this.consumer.completeSubscribe();
        EasyMock.expectLastCall();
        this.control.replay();
        this.container.afterPropertiesSet();
        this.control.verify();
        assertTrue(this.container.consumers.contains(this.consumer));
    }


    @Test
    public void testSubscribeTwoTopics() throws Exception {
        Map<MetaqTopic, MyListener> subscribers = new HashMap<MetaqTopic, MyListener>();
        ConsumerConfig consumerConfig1 = new ConsumerConfig("group1");
        MyListener listener1 = new MyListener();
        subscribers.put(new MetaqTopic("topic1", 1024, consumerConfig1), listener1);
        ConsumerConfig consumerConfig2 = new ConsumerConfig("group1");
        MyListener listener2 = new MyListener();
        subscribers.put(new MetaqTopic("topic2", 1024 * 1024, consumerConfig2), listener2);
        this.container.setSubscribers(subscribers);

        EasyMock.expect(this.sessionFactory.createConsumer(consumerConfig1)).andReturn(this.consumer);
        EasyMock.expect(this.sessionFactory.createConsumer(consumerConfig2)).andReturn(this.consumer);
        EasyMock.expect(this.consumer.subscribe("topic1", 1024, listener1)).andReturn(this.consumer);
        EasyMock.expect(this.consumer.subscribe("topic2", 1024 * 1024, listener2)).andReturn(this.consumer);
        this.consumer.completeSubscribe();
        EasyMock.expectLastCall();
        this.control.replay();
        this.container.afterPropertiesSet();
        this.control.verify();
        assertTrue(this.container.consumers.contains(this.consumer));
    }


    @Test(expected = IllegalArgumentException.class)
    public void testSubscribeTwoTopicsShareConsumerWithoutDefaultTopic() throws Exception {
        Map<MetaqTopic, MyListener> subscribers = new HashMap<MetaqTopic, MyListener>();
        ConsumerConfig consumerConfig1 = new ConsumerConfig("group1");
        MyListener listener1 = new MyListener();
        subscribers.put(new MetaqTopic("topic1", 1024, consumerConfig1), listener1);
        ConsumerConfig consumerConfig2 = new ConsumerConfig("group1");
        MyListener listener2 = new MyListener();
        subscribers.put(new MetaqTopic("topic2", 1024 * 1024, consumerConfig2), listener2);
        this.container.setSubscribers(subscribers);
        this.container.setShareConsumer(true);
        this.control.replay();
        this.container.afterPropertiesSet();
        this.control.verify();
    }


    @Test
    public void testSubscribeTwoTopicsShareTopic() throws Exception {
        Map<MetaqTopic, MyListener> subscribers = new HashMap<MetaqTopic, MyListener>();
        ConsumerConfig consumerConfig1 = new ConsumerConfig("group1");
        MyListener listener1 = new MyListener();
        subscribers.put(new MetaqTopic("topic1", 1024, consumerConfig1), listener1);
        ConsumerConfig consumerConfig2 = new ConsumerConfig("group1");
        MyListener listener2 = new MyListener();
        this.container.setSubscribers(subscribers);
        this.container.setShareConsumer(true);
        this.container.setDefaultTopic(new MetaqTopic("topic2", 1024 * 1024, consumerConfig2));
        this.container.setDefaultMessageListener(listener2);

        EasyMock.expect(this.sessionFactory.createConsumer(consumerConfig2)).andReturn(this.consumer);
        EasyMock.expect(this.consumer.subscribe("topic2", 1024 * 1024, listener2)).andReturn(this.consumer);
        EasyMock.expect(this.consumer.subscribe("topic1", 1024, listener1)).andReturn(this.consumer);
        this.consumer.completeSubscribe();
        EasyMock.expectLastCall();
        this.control.replay();
        this.container.afterPropertiesSet();
        this.control.verify();
    }


    @Test
    public void testDestroy() throws Exception {
        this.testSubscribeOneTopic();
        this.control.reset();
        this.consumer.shutdown();
        EasyMock.expectLastCall();
        this.control.replay();
        this.container.destroy();
        this.control.verify();
        assertTrue(this.container.consumers.isEmpty());
    }


    @Test(expected = IllegalStateException.class)
    public void testShareConsumerAndProvideDefaultTopic() throws Exception {
        Map<MetaqTopic, MyListener> subscribers = new HashMap<MetaqTopic, MyListener>();
        ConsumerConfig consumerConfig = new ConsumerConfig("group1");
        MyListener listener = new MyListener();
        subscribers.put(new MetaqTopic("topic1", 1024, consumerConfig), listener);
        this.container.setSubscribers(subscribers);
        this.container.setDefaultMessageListener(listener);
        this.control.replay();
        this.container.afterPropertiesSet();
        this.control.verify();
    }
}
TOP

Related Classes of com.taobao.metamorphosis.client.extension.spring.MessageListenerContainerUnitTest$MyListener

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.