package com.alibaba.doris.client.net.protocol.text;
import junit.framework.TestCase;
import org.jboss.netty.buffer.ChannelBuffer;
import org.jboss.netty.buffer.ChannelBuffers;
import com.alibaba.doris.client.net.command.CheckCommand;
import com.alibaba.doris.client.net.command.CheckCommand.CheckType;
import com.alibaba.doris.client.net.command.result.CheckResult;
/**
* @author ajun Email:jack.yuj@alibaba-inc.com
*/
public class CheckProtocolParserTest extends TestCase {
public void testEncode() {
CheckProtocolParser parser = new CheckProtocolParser();
ChannelBuffer buffer = ChannelBuffers.buffer(1024);
CheckCommand cmd = new CheckCommand(CheckType.CHECK_NORMAL_NODE);
parser.encode(cmd, buffer);
for (byte b : CHECK_REQUEST_BYTES) {
assertEquals(b, buffer.readByte());
}
}
public void testCheckTempNodeEncode() {
CheckProtocolParser parser = new CheckProtocolParser();
ChannelBuffer buffer = ChannelBuffers.buffer(1024);
CheckCommand cmd = new CheckCommand(CheckType.CHECK_TEMP_NODE);
parser.encode(cmd, buffer);
for (byte b : CHECK_TEMP_NODE_REQUEST_BYTES) {
assertEquals(b, buffer.readByte());
}
}
public void testDecodeTrue() {
CheckProtocolParser parser = new CheckProtocolParser();
ChannelBuffer buffer = ChannelBuffers.buffer(1024);
buffer.writeBytes(CHECK_RETURN_TRUE_BYTES);
CheckCommand cmd = new CheckCommand(CheckType.CHECK_NORMAL_NODE);
assertTrue(parser.decode(cmd, buffer));
CheckResult result = cmd.getResult();
assertNotNull(result);
assertTrue(result.isSuccess());
}
public void testDecodeFalse() {
CheckProtocolParser parser = new CheckProtocolParser();
ChannelBuffer buffer = ChannelBuffers.buffer(1024);
buffer.writeBytes(CHECK_RETURN_FALSE_BYTES);
CheckCommand cmd = new CheckCommand(CheckType.CHECK_NORMAL_NODE);
assertTrue(parser.decode(cmd, buffer));
CheckResult result = cmd.getResult();
assertNotNull(result);
assertFalse(result.isSuccess());
assertNotNull(result.getMessage());
}
public void testDecode() {
CheckProtocolParser parser = new CheckProtocolParser();
ChannelBuffer buffer = ChannelBuffers.buffer(1024);
CheckCommand cmd = new CheckCommand(CheckType.CHECK_NORMAL_NODE);
int len = 10;
buffer.writeBytes(CHECK_RETURN_FALSE_BYTES, 0, len);
assertFalse(parser.decode(cmd, buffer));
buffer.writeBytes(CHECK_RETURN_FALSE_BYTES, len, CHECK_RETURN_FALSE_BYTES.length - len);
assertTrue(parser.decode(cmd, buffer));
CheckResult result = cmd.getResult();
assertNotNull(result);
assertFalse(result.isSuccess());
assertNotNull(result.getMessage());
}
public static byte[] CHECK_REQUEST_BYTES = new byte[] { 'c', 'h', 'e', 'c', 'k', ' ', 'c', 'h', 'e', 'c',
'k', '_', 'n', 'o', 'r', 'm', 'a', 'l', '_', 'n', 'o', 'd', 'e', '\r', '\n' };
public static byte[] CHECK_TEMP_NODE_REQUEST_BYTES = new byte[] { 'c', 'h', 'e', 'c', 'k', ' ', 'c', 'h', 'e', 'c',
'k', '_', 't', 'e', 'm', 'p', '_', 'n', 'o', 'd', 'e', '\r', '\n' };
public static byte[] CHECK_RETURN_TRUE_BYTES = new byte[] { 't', 'r', 'u', 'e', '\r', '\n' };
public static byte[] CHECK_RETURN_FALSE_BYTES = new byte[] { 'f', 'a', 'l', 's', 'e', ' ', 's', 't', 'o', 'r',
'a', 'g', 'e', '_', 'm', 'o', 'd', 'u', 'l', 'e', '_', 'e', 'r', 'r', 'o', 'r', '\r', '\n' };
}