Package com.dianping.cat.message.spi.core

Source Code of com.dianping.cat.message.spi.core.TcpSocketReceiverTest

package com.dianping.cat.message.spi.core;

import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;

import junit.framework.Assert;

import org.jboss.netty.buffer.ChannelBuffer;
import org.jboss.netty.buffer.ChannelBuffers;
import org.junit.Test;
import org.unidal.lookup.ComponentTestCase;

import com.dianping.cat.message.spi.MessageCodec;
import com.dianping.cat.message.spi.MessageTree;
import com.dianping.cat.message.spi.core.TcpSocketReceiver.DecodeMessageTask;

public class TcpSocketReceiverTest extends ComponentTestCase {

  private MockMessageTreeBuilder builder = new MockMessageTreeBuilder();

  @Test
  public void test() throws Exception {
    BlockingQueue<ChannelBuffer> queue = new LinkedBlockingQueue<ChannelBuffer>(1);
    ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
    buf.writeInt(231);
    buf.writeBytes("asdf".getBytes());

    queue.add(buf);

    MockHandler handler = new MockHandler();
    DecodeMessageTask task = new TcpSocketReceiver().new DecodeMessageTask(0, queue, new MockCodec(), handler);

    task.handleMessage();

    handler.assertEqual(builder.build());

    TcpSocketReceiver receiver = lookup(TcpSocketReceiver.class);
   
    receiver.init();
    Assert.assertEquals(true, receiver.isActive());
  }

  public class MockHandler implements MessageHandler {
    private MessageTree m_message;

    @Override
    public void handle(MessageTree message) {
      m_message = message;
    }

    public void assertEqual(MessageTree expectedMessage) {
      Assert.assertEquals(expectedMessage.toString(), m_message.toString());
    }

  }

  public class MockCodec implements MessageCodec {

    @Override
    public MessageTree decode(ChannelBuffer buf) {
      return builder.build();
    }

    @Override
    public void decode(ChannelBuffer buf, MessageTree tree) {

    }

    @Override
    public void encode(MessageTree tree, ChannelBuffer buf) {
    }
  }
}
TOP

Related Classes of com.dianping.cat.message.spi.core.TcpSocketReceiverTest

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.