提交 76464ba6 编写于 作者: L lindzh 提交者: vongosling

ROCKETMQ-264 Fix ut's time-consuming problems closes apache/incubator-rocketmq#145

上级 629c3e9e
...@@ -37,16 +37,14 @@ public class BrokerControllerTest { ...@@ -37,16 +37,14 @@ public class BrokerControllerTest {
*/ */
@Test @Test
public void testBrokerRestart() throws Exception { public void testBrokerRestart() throws Exception {
for (int i = 0; i < 2; i++) { BrokerController brokerController = new BrokerController(
BrokerController brokerController = new BrokerController( new BrokerConfig(),
new BrokerConfig(), new NettyServerConfig(),
new NettyServerConfig(), new NettyClientConfig(),
new NettyClientConfig(), new MessageStoreConfig());
new MessageStoreConfig()); assertThat(brokerController.initialize());
assertThat(brokerController.initialize()); brokerController.start();
brokerController.start(); brokerController.shutdown();
brokerController.shutdown();
}
} }
@After @After
......
...@@ -33,6 +33,8 @@ import org.apache.rocketmq.store.MessageExtBrokerInner; ...@@ -33,6 +33,8 @@ import org.apache.rocketmq.store.MessageExtBrokerInner;
import org.apache.rocketmq.store.PutMessageResult; import org.apache.rocketmq.store.PutMessageResult;
import org.apache.rocketmq.store.config.MessageStoreConfig; import org.apache.rocketmq.store.config.MessageStoreConfig;
import org.apache.rocketmq.store.stats.BrokerStatsManager; import org.apache.rocketmq.store.stats.BrokerStatsManager;
import org.junit.After;
import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import java.io.File; import java.io.File;
...@@ -63,6 +65,14 @@ public class MessageStoreWithFilterTest { ...@@ -63,6 +65,14 @@ public class MessageStoreWithFilterTest {
private static SocketAddress StoreHost; private static SocketAddress StoreHost;
private DefaultMessageStore master;
private ConsumerFilterManager filterManager;
private int topicCount = 3;
private int msgPerTopic = 30;
static { static {
try { try {
StoreHost = new InetSocketAddress(InetAddress.getLocalHost(), 8123); StoreHost = new InetSocketAddress(InetAddress.getLocalHost(), 8123);
...@@ -76,6 +86,24 @@ public class MessageStoreWithFilterTest { ...@@ -76,6 +86,24 @@ public class MessageStoreWithFilterTest {
} }
} }
@Before
public void init() {
filterManager = ConsumerFilterManagerTest.gen(topicCount, msgPerTopic);
try {
master = gen(filterManager);
} catch (Exception e) {
e.printStackTrace();
assertThat(true).isFalse();
}
}
@After
public void destroy() {
master.shutdown();
master.destroy();
UtilAll.deleteFile(new File(storePath));
}
public MessageExtBrokerInner buildMessage() { public MessageExtBrokerInner buildMessage() {
MessageExtBrokerInner msg = new MessageExtBrokerInner(); MessageExtBrokerInner msg = new MessageExtBrokerInner();
msg.setTopic(topic); msg.setTopic(topic);
...@@ -202,177 +230,143 @@ public class MessageStoreWithFilterTest { ...@@ -202,177 +230,143 @@ public class MessageStoreWithFilterTest {
@Test @Test
public void testGetMessage_withFilterBitMapAndConsumerChanged() { public void testGetMessage_withFilterBitMapAndConsumerChanged() {
int topicCount = 10, msgPerTopic = 10; List<MessageExtBrokerInner> msgs = null;
ConsumerFilterManager filterManager = ConsumerFilterManagerTest.gen(topicCount, msgPerTopic);
DefaultMessageStore master = null;
try { try {
master = gen(filterManager); msgs = putMsg(master, topicCount, msgPerTopic);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
assertThat(true).isFalse(); assertThat(true).isFalse();
} }
// sleep to wait for consume queue has been constructed.
try { try {
List<MessageExtBrokerInner> msgs = null; Thread.sleep(200);
try { } catch (InterruptedException e) {
msgs = putMsg(master, topicCount, msgPerTopic); e.printStackTrace();
} catch (Exception e) { assertThat(true).isFalse();
e.printStackTrace(); }
assertThat(true).isFalse();
}
// sleep to wait for consume queue has been constructed.
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
assertThat(true).isFalse();
}
// reset consumer; // reset consumer;
String topic = "topic" + 0; String topic = "topic" + 0;
String resetGroup = "CID_" + 2; String resetGroup = "CID_" + 2;
String normalGroup = "CID_" + 3; String normalGroup = "CID_" + 3;
{ {
// reset CID_2@topic0 to get all messages. // reset CID_2@topic0 to get all messages.
SubscriptionData resetSubData = new SubscriptionData(); SubscriptionData resetSubData = new SubscriptionData();
resetSubData.setExpressionType(ExpressionType.SQL92); resetSubData.setExpressionType(ExpressionType.SQL92);
resetSubData.setTopic(topic); resetSubData.setTopic(topic);
resetSubData.setClassFilterMode(false); resetSubData.setClassFilterMode(false);
resetSubData.setSubString("a is not null OR a is null"); resetSubData.setSubString("a is not null OR a is null");
ConsumerFilterData resetFilterData = ConsumerFilterManager.build(topic, ConsumerFilterData resetFilterData = ConsumerFilterManager.build(topic,
resetGroup, resetSubData.getSubString(), resetSubData.getExpressionType(), resetGroup, resetSubData.getSubString(), resetSubData.getExpressionType(),
System.currentTimeMillis()); System.currentTimeMillis());
GetMessageResult resetGetResult = master.getMessage(resetGroup, topic, queueId, 0, 1000, GetMessageResult resetGetResult = master.getMessage(resetGroup, topic, queueId, 0, 1000,
new ExpressionMessageFilter(resetSubData, resetFilterData, filterManager)); new ExpressionMessageFilter(resetSubData, resetFilterData, filterManager));
try { try {
assertThat(resetGetResult).isNotNull(); assertThat(resetGetResult).isNotNull();
List<MessageExtBrokerInner> filteredMsgs = filtered(msgs, resetFilterData); List<MessageExtBrokerInner> filteredMsgs = filtered(msgs, resetFilterData);
assertThat(resetGetResult.getMessageBufferList().size()).isEqualTo(filteredMsgs.size()); assertThat(resetGetResult.getMessageBufferList().size()).isEqualTo(filteredMsgs.size());
} finally { } finally {
resetGetResult.release(); resetGetResult.release();
}
} }
}
{ {
ConsumerFilterData normalFilterData = filterManager.get(topic, normalGroup); ConsumerFilterData normalFilterData = filterManager.get(topic, normalGroup);
assertThat(normalFilterData).isNotNull(); assertThat(normalFilterData).isNotNull();
assertThat(normalFilterData.getBornTime()).isLessThan(System.currentTimeMillis()); assertThat(normalFilterData.getBornTime()).isLessThan(System.currentTimeMillis());
SubscriptionData normalSubData = new SubscriptionData(); SubscriptionData normalSubData = new SubscriptionData();
normalSubData.setExpressionType(normalFilterData.getExpressionType()); normalSubData.setExpressionType(normalFilterData.getExpressionType());
normalSubData.setTopic(topic); normalSubData.setTopic(topic);
normalSubData.setClassFilterMode(false); normalSubData.setClassFilterMode(false);
normalSubData.setSubString(normalFilterData.getExpression()); normalSubData.setSubString(normalFilterData.getExpression());
List<MessageExtBrokerInner> filteredMsgs = filtered(msgs, normalFilterData); List<MessageExtBrokerInner> filteredMsgs = filtered(msgs, normalFilterData);
GetMessageResult normalGetResult = master.getMessage(normalGroup, topic, queueId, 0, 1000, GetMessageResult normalGetResult = master.getMessage(normalGroup, topic, queueId, 0, 1000,
new ExpressionMessageFilter(normalSubData, normalFilterData, filterManager)); new ExpressionMessageFilter(normalSubData, normalFilterData, filterManager));
try { try {
assertThat(normalGetResult).isNotNull(); assertThat(normalGetResult).isNotNull();
assertThat(normalGetResult.getMessageBufferList().size()).isEqualTo(filteredMsgs.size()); assertThat(normalGetResult.getMessageBufferList().size()).isEqualTo(filteredMsgs.size());
} finally { } finally {
normalGetResult.release(); normalGetResult.release();
}
} }
} finally {
master.shutdown();
master.destroy();
UtilAll.deleteFile(new File(storePath));
} }
} }
@Test @Test
public void testGetMessage_withFilterBitMap() { public void testGetMessage_withFilterBitMap() {
int topicCount = 10, msgPerTopic = 500; List<MessageExtBrokerInner> msgs = null;
ConsumerFilterManager filterManager = ConsumerFilterManagerTest.gen(topicCount, msgPerTopic);
DefaultMessageStore master = null;
try { try {
master = gen(filterManager); msgs = putMsg(master, topicCount, msgPerTopic);
// sleep to wait for consume queue has been constructed.
Thread.sleep(200);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
assertThat(true).isFalse(); assertThat(true).isFalse();
} }
try { for (int i = 0; i < topicCount; i++) {
List<MessageExtBrokerInner> msgs = null; String realTopic = topic + i;
try {
msgs = putMsg(master, topicCount, msgPerTopic);
// sleep to wait for consume queue has been constructed.
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
assertThat(true).isFalse();
}
for (int i = 0; i < topicCount; i++) { for (int j = 0; j < msgPerTopic; j++) {
String realTopic = topic + i; String group = "CID_" + j;
for (int j = 0; j < msgPerTopic; j++) {
String group = "CID_" + j;
ConsumerFilterData filterData = filterManager.get(realTopic, group);
assertThat(filterData).isNotNull();
List<MessageExtBrokerInner> filteredMsgs = filtered(msgs, filterData);
SubscriptionData subscriptionData = new SubscriptionData();
subscriptionData.setExpressionType(filterData.getExpressionType());
subscriptionData.setTopic(filterData.getTopic());
subscriptionData.setClassFilterMode(false);
subscriptionData.setSubString(filterData.getExpression());
GetMessageResult getMessageResult = master.getMessage(group, realTopic, queueId, 0, 10000,
new ExpressionMessageFilter(subscriptionData, filterData, filterManager));
String assertMsg = group + "-" + realTopic;
try {
assertThat(getMessageResult).isNotNull();
assertThat(GetMessageStatus.FOUND).isEqualTo(getMessageResult.getStatus());
assertThat(getMessageResult.getMessageBufferList()).isNotNull().isNotEmpty();
assertThat(getMessageResult.getMessageBufferList().size()).isEqualTo(filteredMsgs.size());
for (ByteBuffer buffer : getMessageResult.getMessageBufferList()) {
MessageExt messageExt = MessageDecoder.decode(buffer.slice(), false);
assertThat(messageExt).isNotNull();
Object evlRet = null;
try {
evlRet = filterData.getCompiledExpression().evaluate(new MessageEvaluationContext(messageExt.getProperties()));
} catch (Exception e) {
e.printStackTrace();
assertThat(true).isFalse();
}
assertThat(evlRet).isNotNull().isEqualTo(Boolean.TRUE); ConsumerFilterData filterData = filterManager.get(realTopic, group);
assertThat(filterData).isNotNull();
// check List<MessageExtBrokerInner> filteredMsgs = filtered(msgs, filterData);
boolean find = false;
for (MessageExtBrokerInner messageExtBrokerInner : filteredMsgs) { SubscriptionData subscriptionData = new SubscriptionData();
if (messageExtBrokerInner.getMsgId().equals(messageExt.getMsgId())) { subscriptionData.setExpressionType(filterData.getExpressionType());
find = true; subscriptionData.setTopic(filterData.getTopic());
} subscriptionData.setClassFilterMode(false);
subscriptionData.setSubString(filterData.getExpression());
GetMessageResult getMessageResult = master.getMessage(group, realTopic, queueId, 0, 10000,
new ExpressionMessageFilter(subscriptionData, filterData, filterManager));
String assertMsg = group + "-" + realTopic;
try {
assertThat(getMessageResult).isNotNull();
assertThat(GetMessageStatus.FOUND).isEqualTo(getMessageResult.getStatus());
assertThat(getMessageResult.getMessageBufferList()).isNotNull().isNotEmpty();
assertThat(getMessageResult.getMessageBufferList().size()).isEqualTo(filteredMsgs.size());
for (ByteBuffer buffer : getMessageResult.getMessageBufferList()) {
MessageExt messageExt = MessageDecoder.decode(buffer.slice(), false);
assertThat(messageExt).isNotNull();
Object evlRet = null;
try {
evlRet = filterData.getCompiledExpression().evaluate(new MessageEvaluationContext(messageExt.getProperties()));
} catch (Exception e) {
e.printStackTrace();
assertThat(true).isFalse();
}
assertThat(evlRet).isNotNull().isEqualTo(Boolean.TRUE);
// check
boolean find = false;
for (MessageExtBrokerInner messageExtBrokerInner : filteredMsgs) {
if (messageExtBrokerInner.getMsgId().equals(messageExt.getMsgId())) {
find = true;
} }
assertThat(find).isTrue();
} }
} finally { assertThat(find).isTrue();
getMessageResult.release();
} }
} finally {
getMessageResult.release();
} }
} }
} finally {
master.shutdown();
master.destroy();
UtilAll.deleteFile(new File(storePath));
} }
} }
} }
...@@ -19,7 +19,6 @@ ...@@ -19,7 +19,6 @@
<configuration> <configuration>
<appender name="DefaultAppender" class="ch.qos.logback.core.ConsoleAppender"> <appender name="DefaultAppender" class="ch.qos.logback.core.ConsoleAppender">
<append>true</append>
<encoder> <encoder>
<pattern>%d{yyy-MM-dd HH\:mm\:ss,GMT+8} %p %t - %m%n</pattern> <pattern>%d{yyy-MM-dd HH\:mm\:ss,GMT+8} %p %t - %m%n</pattern>
<charset class="java.nio.charset.Charset">UTF-8</charset> <charset class="java.nio.charset.Charset">UTF-8</charset>
......
...@@ -16,14 +16,14 @@ ...@@ -16,14 +16,14 @@
*/ */
package org.apache.rocketmq.client.log; package org.apache.rocketmq.client.log;
import java.lang.reflect.Method;
import java.net.URL;
import org.apache.rocketmq.common.constant.LoggerName; import org.apache.rocketmq.common.constant.LoggerName;
import org.slf4j.ILoggerFactory; import org.slf4j.ILoggerFactory;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import java.lang.reflect.Method;
import java.net.URL;
public class ClientLogger { public class ClientLogger {
public static final String CLIENT_LOG_ROOT = "rocketmq.client.logRoot"; public static final String CLIENT_LOG_ROOT = "rocketmq.client.logRoot";
public static final String CLIENT_LOG_MAXINDEX = "rocketmq.client.logFileMaxIndex"; public static final String CLIENT_LOG_MAXINDEX = "rocketmq.client.logFileMaxIndex";
...@@ -31,25 +31,21 @@ public class ClientLogger { ...@@ -31,25 +31,21 @@ public class ClientLogger {
private static Logger log; private static Logger log;
private static Class logClass = null;
private static Logger createLogger(final String loggerName) { private static Logger createLogger(final String loggerName) {
String logConfigFilePath = String logConfigFilePath = System.getProperty("rocketmq.client.log.configFile", System.getenv("ROCKETMQ_CLIENT_LOG_CONFIGFILE"));
System.getProperty("rocketmq.client.log.configFile",
System.getenv("ROCKETMQ_CLIENT_LOG_CONFIGFILE"));
Boolean isloadconfig = Boolean isloadconfig =
Boolean.parseBoolean(System.getProperty("rocketmq.client.log.loadconfig", "true")); Boolean.parseBoolean(System.getProperty("rocketmq.client.log.loadconfig", "true"));
final String log4JResourceFile = final String log4JResourceFile =
System.getProperty("rocketmq.client.log4j.resource.fileName", "log4j_rocketmq_client.xml"); System.getProperty("rocketmq.client.log4j.resource.fileName", "log4j_rocketmq_client.xml");
final String logbackResourceFile = final String logbackResourceFile =
System.getProperty("rocketmq.client.logback.resource.fileName", "logback_rocketmq_client.xml"); System.getProperty("rocketmq.client.logback.resource.fileName", "logback_rocketmq_client.xml");
final String log4J2ResourceFile = final String log4J2ResourceFile =
System.getProperty("rocketmq.client.log4j2.resource.fileName", "log4j2_rocketmq_client.xml"); System.getProperty("rocketmq.client.log4j2.resource.fileName", "log4j2_rocketmq_client.xml");
String clientLogRoot = System.getProperty(CLIENT_LOG_ROOT, "${user.home}/logs/rocketmqlogs"); String clientLogRoot = System.getProperty(CLIENT_LOG_ROOT, System.getProperty("user.home") + "/logs/rocketmqlogs");
System.setProperty("client.logRoot", clientLogRoot); System.setProperty("client.logRoot", clientLogRoot);
String clientLogLevel = System.getProperty(CLIENT_LOG_LEVEL, "INFO"); String clientLogLevel = System.getProperty(CLIENT_LOG_LEVEL, "INFO");
System.setProperty("client.logLevel", clientLogLevel); System.setProperty("client.logLevel", clientLogLevel);
...@@ -85,11 +81,11 @@ public class ClientLogger { ...@@ -85,11 +81,11 @@ public class ClientLogger {
if (null == logConfigFilePath) { if (null == logConfigFilePath) {
URL url = ClientLogger.class.getClassLoader().getResource(logbackResourceFile); URL url = ClientLogger.class.getClassLoader().getResource(logbackResourceFile);
Method doConfigure = Method doConfigure =
joranConfiguratoroObj.getClass().getMethod("doConfigure", URL.class); joranConfiguratoroObj.getClass().getMethod("doConfigure", URL.class);
doConfigure.invoke(joranConfiguratoroObj, url); doConfigure.invoke(joranConfiguratoroObj, url);
} else { } else {
Method doConfigure = Method doConfigure =
joranConfiguratoroObj.getClass().getMethod("doConfigure", String.class); joranConfiguratoroObj.getClass().getMethod("doConfigure", String.class);
doConfigure.invoke(joranConfiguratoroObj, logConfigFilePath); doConfigure.invoke(joranConfiguratoroObj, logConfigFilePath);
} }
...@@ -102,7 +98,7 @@ public class ClientLogger { ...@@ -102,7 +98,7 @@ public class ClientLogger {
initialize.invoke(joranConfigurator, "log4j2", logConfigFilePath); initialize.invoke(joranConfigurator, "log4j2", logConfigFilePath);
} }
} }
logClass = classType; //logClass = classType;
} catch (Exception e) { } catch (Exception e) {
System.err.println(e); System.err.println(e);
} }
......
...@@ -92,9 +92,9 @@ public class AllocateMessageQueueConsitentHashTest { ...@@ -92,9 +92,9 @@ public class AllocateMessageQueueConsitentHashTest {
@Test @Test
public void testRun100RandomCase() { public void testRun100RandomCase() {
for (int i = 0; i < 100; i++) { for (int i = 0; i < 10; i++) {
int consumerSize = new Random().nextInt(200) + 1;//1-200 int consumerSize = new Random().nextInt(20) + 1;//1-20
int queueSize = new Random().nextInt(100) + 1;//1-100 int queueSize = new Random().nextInt(20) + 1;//1-20
testAllocate(queueSize, consumerSize); testAllocate(queueSize, consumerSize);
try { try {
Thread.sleep(1); Thread.sleep(1);
......
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.rocketmq.client.log;
import org.junit.Assert;
import org.junit.Test;
import java.io.*;
import java.lang.reflect.Field;
import java.util.Date;
public class ClientLogTest {
public static final String CLIENT_LOG_ROOT = "rocketmq.client.logRoot";
public static final String LOG_DIR;
static {
LOG_DIR = System.getProperty(CLIENT_LOG_ROOT, "${user.home}/logs/rocketmqlogs");
}
// FIXME: Workarond for concret implementation for slf4j, is there any better solution for all slf4j implementations in one class ? 2017/8/1
@Test
public void testLog4j2() throws IOException, NoSuchFieldException, IllegalAccessException {
ClientLogger.getLog();
long seek = 0;
boolean result = false;
File file = new File(LOG_DIR + File.separator + "rocketmq_client.log");
if (file.exists()) {
seek = file.length();
}
Field logClassField = ClientLogger.class.getDeclaredField("logClass");
logClassField.setAccessible(true);
Class logClass = (Class) logClassField.get(ClientLogger.class);
Assert.assertEquals("org.apache.logging.slf4j.Log4jLoggerFactory", logClass.getName());
for (int i = 0; i < 10; i++) {
ClientLogger.getLog().info("testcase testLog4j2 " + new Date());
}
RandomAccessFile randomAccessFile = new RandomAccessFile(file, "r");
randomAccessFile.seek(seek);
String line = randomAccessFile.readLine();
int idx = 1;
while (line != null) {
if (line.contains("testLog4j2")) {
result = true;
break;
}
line = randomAccessFile.readLine();
idx++;
if (idx > 20) {
break;
}
}
randomAccessFile.close();
Assert.assertTrue(result);
}
}
...@@ -14,33 +14,38 @@ ...@@ -14,33 +14,38 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
package org.apache.rocketmq.namesrv;
import org.apache.rocketmq.common.namesrv.NamesrvConfig; package org.apache.rocketmq.client.log;
import org.apache.rocketmq.remoting.netty.NettyServerConfig;
import org.apache.rocketmq.common.UtilAll;
import org.junit.After;
import org.junit.Test; import org.junit.Test;
import org.slf4j.Logger;
import java.io.File;
import static org.junit.Assert.assertEquals;
import static org.assertj.core.api.Assertions.assertThat; public class ClientLoggerTest {
public class NamesrvControllerTest { public static final String CLIENT_LOG_ROOT = "rocketmq.client.logRoot";
private final static int RESTARTNUM = 2; public static final String LOG_DIR;
static {
LOG_DIR = System.getProperty(CLIENT_LOG_ROOT, System.getProperty("user.home") + "/logs/rocketmqlogs");
}
/**
* Tests if the controller can be properly stopped and started. @After
* public void cleanFiles() {
* @throws Exception If fails. UtilAll.deleteFile(new File(LOG_DIR));
*/ }
// FIXME: Workaround for concrete implementation for slf4j, is there any better solution for all slf4j implementations in one class ? 2017/8/1
@Test @Test
public void testRestart() throws Exception { public void testLog4j() throws Exception {
for (int i = 0; i < RESTARTNUM; i++) { Logger logger = ClientLogger.getLog();
NamesrvController namesrvController = new NamesrvController(
new NamesrvConfig(), assertEquals("org.apache.logging.slf4j.Log4jLogger", logger.getClass().getName());
new NettyServerConfig()
);
boolean initResult = namesrvController.initialize();
assertThat(initResult).isEqualTo(true);
namesrvController.start();
namesrvController.shutdown();
}
} }
} }
\ No newline at end of file
...@@ -47,7 +47,7 @@ public class ExpressionTest { ...@@ -47,7 +47,7 @@ public class ExpressionTest {
private static String stringHasString = "TAGS is not null and TAGS='''''tag'''''"; private static String stringHasString = "TAGS is not null and TAGS='''''tag'''''";
@Test @Test
public void testEvaluate_stringHasString() { public void testEvaluate_stringHasString() throws Exception {
Expression expr = genExp(stringHasString); Expression expr = genExp(stringHasString);
EvaluationContext context = genContext( EvaluationContext context = genContext(
...@@ -58,7 +58,7 @@ public class ExpressionTest { ...@@ -58,7 +58,7 @@ public class ExpressionTest {
} }
@Test @Test
public void testEvaluate_now() { public void testEvaluate_now() throws Exception {
EvaluationContext context = genContext( EvaluationContext context = genContext(
KeyValue.c("a", System.currentTimeMillis()) KeyValue.c("a", System.currentTimeMillis())
); );
...@@ -72,8 +72,8 @@ public class ExpressionTest { ...@@ -72,8 +72,8 @@ public class ExpressionTest {
eval(expression, context, Boolean.TRUE); eval(expression, context, Boolean.TRUE);
} }
@Test @Test(expected = RuntimeException.class)
public void testEvaluate_stringCompare() { public void testEvaluate_stringCompare() throws Exception {
Expression expression = genExp("a between up and low"); Expression expression = genExp("a between up and low");
EvaluationContext context = genContext( EvaluationContext context = genContext(
...@@ -147,7 +147,7 @@ public class ExpressionTest { ...@@ -147,7 +147,7 @@ public class ExpressionTest {
} }
@Test @Test
public void testEvaluate_exponent() { public void testEvaluate_exponent() throws Exception {
Expression expression = genExp("a > 3.1E10"); Expression expression = genExp("a > 3.1E10");
EvaluationContext context = genContext( EvaluationContext context = genContext(
...@@ -158,7 +158,7 @@ public class ExpressionTest { ...@@ -158,7 +158,7 @@ public class ExpressionTest {
} }
@Test @Test
public void testEvaluate_floatNumber() { public void testEvaluate_floatNumber() throws Exception {
Expression expression = genExp("a > 3.14"); Expression expression = genExp("a > 3.14");
EvaluationContext context = genContext( EvaluationContext context = genContext(
...@@ -169,7 +169,7 @@ public class ExpressionTest { ...@@ -169,7 +169,7 @@ public class ExpressionTest {
} }
@Test @Test
public void testEvaluate_twoVariable() { public void testEvaluate_twoVariable() throws Exception {
Expression expression = genExp("a > b"); Expression expression = genExp("a > b");
EvaluationContext context = genContext( EvaluationContext context = genContext(
...@@ -178,8 +178,12 @@ public class ExpressionTest { ...@@ -178,8 +178,12 @@ public class ExpressionTest {
); );
eval(expression, context, Boolean.FALSE); eval(expression, context, Boolean.FALSE);
}
context = genContext( @Test
public void testEvaluate_twoVariableGt() throws Exception {
Expression expression = genExp("a > b");
EvaluationContext context = genContext(
KeyValue.c("b", String.valueOf(10)), KeyValue.c("b", String.valueOf(10)),
KeyValue.c("a", String.valueOf(20)) KeyValue.c("a", String.valueOf(20))
); );
...@@ -188,7 +192,7 @@ public class ExpressionTest { ...@@ -188,7 +192,7 @@ public class ExpressionTest {
} }
@Test @Test
public void testEvaluate_nullOr() { public void testEvaluate_nullOr() throws Exception {
Expression expression = genExp(nullOrExpression); Expression expression = genExp(nullOrExpression);
EvaluationContext context = genContext( EvaluationContext context = genContext(
...@@ -210,7 +214,7 @@ public class ExpressionTest { ...@@ -210,7 +214,7 @@ public class ExpressionTest {
} }
@Test @Test
public void testEvaluate_boolean() { public void testEvaluate_boolean() throws Exception {
Expression expression = genExp(booleanExpression); Expression expression = genExp(booleanExpression);
EvaluationContext context = genContext( EvaluationContext context = genContext(
...@@ -229,7 +233,7 @@ public class ExpressionTest { ...@@ -229,7 +233,7 @@ public class ExpressionTest {
} }
@Test @Test
public void testEvaluate_equal() { public void testEvaluate_equal() throws Exception {
Expression expression = genExp(equalExpression); Expression expression = genExp(equalExpression);
EvaluationContext context = genContext( EvaluationContext context = genContext(
...@@ -245,7 +249,7 @@ public class ExpressionTest { ...@@ -245,7 +249,7 @@ public class ExpressionTest {
} }
@Test @Test
public void testEvaluate_andTrue() { public void testEvaluate_andTrue() throws Exception {
Expression expression = genExp(andExpression); Expression expression = genExp(andExpression);
EvaluationContext context = genContext( EvaluationContext context = genContext(
...@@ -278,7 +282,7 @@ public class ExpressionTest { ...@@ -278,7 +282,7 @@ public class ExpressionTest {
} }
@Test @Test
public void testEvaluate_andFalse() { public void testEvaluate_andFalse() throws Exception {
Expression expression = genExp(andExpression); Expression expression = genExp(andExpression);
EvaluationContext context = genContext( EvaluationContext context = genContext(
...@@ -302,7 +306,7 @@ public class ExpressionTest { ...@@ -302,7 +306,7 @@ public class ExpressionTest {
} }
@Test @Test
public void testEvaluate_orTrue() { public void testEvaluate_orTrue() throws Exception {
Expression expression = genExp(orExpression); Expression expression = genExp(orExpression);
// first // first
...@@ -337,7 +341,7 @@ public class ExpressionTest { ...@@ -337,7 +341,7 @@ public class ExpressionTest {
} }
@Test @Test
public void testEvaluate_orFalse() { public void testEvaluate_orFalse() throws Exception {
Expression expression = genExp(orExpression); Expression expression = genExp(orExpression);
// forth // forth
EvaluationContext context = genContext( EvaluationContext context = genContext(
...@@ -350,7 +354,7 @@ public class ExpressionTest { ...@@ -350,7 +354,7 @@ public class ExpressionTest {
} }
@Test @Test
public void testEvaluate_inTrue() { public void testEvaluate_inTrue() throws Exception {
Expression expression = genExp(inExpression); Expression expression = genExp(inExpression);
EvaluationContext context = genContext( EvaluationContext context = genContext(
...@@ -370,7 +374,7 @@ public class ExpressionTest { ...@@ -370,7 +374,7 @@ public class ExpressionTest {
} }
@Test @Test
public void testEvaluate_inFalse() { public void testEvaluate_inFalse() throws Exception {
Expression expression = genExp(inExpression); Expression expression = genExp(inExpression);
EvaluationContext context = genContext( EvaluationContext context = genContext(
...@@ -380,7 +384,7 @@ public class ExpressionTest { ...@@ -380,7 +384,7 @@ public class ExpressionTest {
} }
@Test @Test
public void testEvaluate_notInTrue() { public void testEvaluate_notInTrue() throws Exception {
Expression expression = genExp(notInExpression); Expression expression = genExp(notInExpression);
EvaluationContext context = genContext( EvaluationContext context = genContext(
...@@ -390,7 +394,7 @@ public class ExpressionTest { ...@@ -390,7 +394,7 @@ public class ExpressionTest {
} }
@Test @Test
public void testEvaluate_notInFalse() { public void testEvaluate_notInFalse() throws Exception {
Expression expression = genExp(notInExpression); Expression expression = genExp(notInExpression);
EvaluationContext context = genContext( EvaluationContext context = genContext(
...@@ -410,7 +414,7 @@ public class ExpressionTest { ...@@ -410,7 +414,7 @@ public class ExpressionTest {
} }
@Test @Test
public void testEvaluate_betweenTrue() { public void testEvaluate_betweenTrue() throws Exception {
Expression expression = genExp(betweenExpression); Expression expression = genExp(betweenExpression);
EvaluationContext context = genContext( EvaluationContext context = genContext(
...@@ -430,7 +434,7 @@ public class ExpressionTest { ...@@ -430,7 +434,7 @@ public class ExpressionTest {
} }
@Test @Test
public void testEvaluate_betweenFalse() { public void testEvaluate_betweenFalse() throws Exception {
Expression expression = genExp(betweenExpression); Expression expression = genExp(betweenExpression);
EvaluationContext context = genContext( EvaluationContext context = genContext(
...@@ -445,7 +449,7 @@ public class ExpressionTest { ...@@ -445,7 +449,7 @@ public class ExpressionTest {
} }
@Test @Test
public void testEvaluate_notBetweenTrue() { public void testEvaluate_notBetweenTrue() throws Exception {
Expression expression = genExp(notBetweenExpression); Expression expression = genExp(notBetweenExpression);
EvaluationContext context = genContext( EvaluationContext context = genContext(
...@@ -460,7 +464,7 @@ public class ExpressionTest { ...@@ -460,7 +464,7 @@ public class ExpressionTest {
} }
@Test @Test
public void testEvaluate_notBetweenFalse() { public void testEvaluate_notBetweenFalse() throws Exception {
Expression expression = genExp(notBetweenExpression); Expression expression = genExp(notBetweenExpression);
EvaluationContext context = genContext( EvaluationContext context = genContext(
...@@ -480,7 +484,7 @@ public class ExpressionTest { ...@@ -480,7 +484,7 @@ public class ExpressionTest {
} }
@Test @Test
public void testEvaluate_isNullTrue() { public void testEvaluate_isNullTrue() throws Exception {
Expression expression = genExp(isNullExpression); Expression expression = genExp(isNullExpression);
EvaluationContext context = genContext( EvaluationContext context = genContext(
...@@ -490,7 +494,7 @@ public class ExpressionTest { ...@@ -490,7 +494,7 @@ public class ExpressionTest {
} }
@Test @Test
public void testEvaluate_isNullFalse() { public void testEvaluate_isNullFalse() throws Exception {
Expression expression = genExp(isNullExpression); Expression expression = genExp(isNullExpression);
EvaluationContext context = genContext( EvaluationContext context = genContext(
...@@ -500,7 +504,7 @@ public class ExpressionTest { ...@@ -500,7 +504,7 @@ public class ExpressionTest {
} }
@Test @Test
public void testEvaluate_isNotNullTrue() { public void testEvaluate_isNotNullTrue() throws Exception {
Expression expression = genExp(isNotNullExpression); Expression expression = genExp(isNotNullExpression);
EvaluationContext context = genContext( EvaluationContext context = genContext(
...@@ -510,7 +514,7 @@ public class ExpressionTest { ...@@ -510,7 +514,7 @@ public class ExpressionTest {
} }
@Test @Test
public void testEvaluate_isNotNullFalse() { public void testEvaluate_isNotNullFalse() throws Exception {
Expression expression = genExp(isNotNullExpression); Expression expression = genExp(isNotNullExpression);
EvaluationContext context = genContext( EvaluationContext context = genContext(
...@@ -519,14 +523,8 @@ public class ExpressionTest { ...@@ -519,14 +523,8 @@ public class ExpressionTest {
eval(expression, context, Boolean.FALSE); eval(expression, context, Boolean.FALSE);
} }
protected void eval(Expression expression, EvaluationContext context, Boolean result) { protected void eval(Expression expression, EvaluationContext context, Boolean result) throws Exception {
Object ret = null; Object ret = expression.evaluate(context);
try {
ret = expression.evaluate(context);
} catch (Throwable e) {
e.printStackTrace();
}
if (ret == null || !(ret instanceof Boolean)) { if (ret == null || !(ret instanceof Boolean)) {
assertThat(result).isFalse(); assertThat(result).isFalse();
} else { } else {
......
...@@ -34,7 +34,6 @@ public class KVConfigManagerTest extends NameServerInstanceTest { ...@@ -34,7 +34,6 @@ public class KVConfigManagerTest extends NameServerInstanceTest {
@Test @Test
public void testPutKVConfig() { public void testPutKVConfig() {
kvConfigManager.load();
kvConfigManager.putKVConfig(NamesrvUtil.NAMESPACE_ORDER_TOPIC_CONFIG, "UnitTest", "test"); kvConfigManager.putKVConfig(NamesrvUtil.NAMESPACE_ORDER_TOPIC_CONFIG, "UnitTest", "test");
byte[] kvConfig = kvConfigManager.getKVListByNamespace(NamesrvUtil.NAMESPACE_ORDER_TOPIC_CONFIG); byte[] kvConfig = kvConfigManager.getKVListByNamespace(NamesrvUtil.NAMESPACE_ORDER_TOPIC_CONFIG);
assertThat(kvConfig).isNotNull(); assertThat(kvConfig).isNotNull();
......
...@@ -43,15 +43,24 @@ public class DefaultMessageStoreTest { ...@@ -43,15 +43,24 @@ public class DefaultMessageStoreTest {
private SocketAddress BornHost; private SocketAddress BornHost;
private SocketAddress StoreHost; private SocketAddress StoreHost;
private byte[] MessageBody; private byte[] MessageBody;
private MessageStore messageStore;
@Before @Before
public void init() throws Exception { public void init() throws Exception {
StoreHost = new InetSocketAddress(InetAddress.getLocalHost(), 8123); StoreHost = new InetSocketAddress(InetAddress.getLocalHost(), 8123);
BornHost = new InetSocketAddress(InetAddress.getByName("127.0.0.1"), 0); BornHost = new InetSocketAddress(InetAddress.getByName("127.0.0.1"), 0);
messageStore = buildMessageStore();
boolean load = messageStore.load();
assertTrue(load);
messageStore.start();
} }
@After @After
public void destory() { public void destory() {
messageStore.shutdown();
messageStore.destroy();
MessageStoreConfig messageStoreConfig = new MessageStoreConfig(); MessageStoreConfig messageStoreConfig = new MessageStoreConfig();
File file = new File(messageStoreConfig.getStorePathRootDir()); File file = new File(messageStoreConfig.getStorePathRootDir());
UtilAll.deleteFile(file); UtilAll.deleteFile(file);
...@@ -63,7 +72,7 @@ public class DefaultMessageStoreTest { ...@@ -63,7 +72,7 @@ public class DefaultMessageStoreTest {
messageStoreConfig.setMapedFileSizeConsumeQueue(1024 * 1024 * 10); messageStoreConfig.setMapedFileSizeConsumeQueue(1024 * 1024 * 10);
messageStoreConfig.setMaxHashSlotNum(10000); messageStoreConfig.setMaxHashSlotNum(10000);
messageStoreConfig.setMaxIndexNum(100 * 100); messageStoreConfig.setMaxIndexNum(100 * 100);
messageStoreConfig.setFlushDiskType(FlushDiskType.ASYNC_FLUSH); messageStoreConfig.setFlushDiskType(FlushDiskType.SYNC_FLUSH);
return new DefaultMessageStore(messageStoreConfig, new BrokerStatsManager("simpleTest"), new MyMessageArrivingListener(), new BrokerConfig()); return new DefaultMessageStore(messageStoreConfig, new BrokerStatsManager("simpleTest"), new MyMessageArrivingListener(), new BrokerConfig());
} }
...@@ -72,12 +81,16 @@ public class DefaultMessageStoreTest { ...@@ -72,12 +81,16 @@ public class DefaultMessageStoreTest {
long totalMsgs = 100; long totalMsgs = 100;
QUEUE_TOTAL = 1; QUEUE_TOTAL = 1;
MessageBody = StoreMessage.getBytes(); MessageBody = StoreMessage.getBytes();
MessageStore master = buildMessageStore(); for (long i = 0; i < totalMsgs; i++) {
boolean load = master.load(); messageStore.putMessage(buildMessage());
assertTrue(load); }
master.start(); for (long i = 0; i < totalMsgs; i++) {
verifyThatMasterIsFunctional(totalMsgs, master); GetMessageResult result = messageStore.getMessage("GROUP_A", "TOPIC_A", 0, i, 1024 * 1024, null);
assertThat(result).isNotNull();
result.release();
}
verifyThatMasterIsFunctional(totalMsgs, messageStore);
} }
public MessageExtBrokerInner buildMessage() { public MessageExtBrokerInner buildMessage() {
...@@ -97,54 +110,46 @@ public class DefaultMessageStoreTest { ...@@ -97,54 +110,46 @@ public class DefaultMessageStoreTest {
@Test @Test
public void testGroupCommit() throws Exception { public void testGroupCommit() throws Exception {
long totalMsgs = 100; long totalMsgs = 10;
QUEUE_TOTAL = 1; QUEUE_TOTAL = 1;
MessageBody = StoreMessage.getBytes(); MessageBody = StoreMessage.getBytes();
MessageStoreConfig messageStoreConfig = new MessageStoreConfig(); for (long i = 0; i < totalMsgs; i++) {
messageStoreConfig.setMapedFileSizeCommitLog(1024 * 8); messageStore.putMessage(buildMessage());
messageStoreConfig.setFlushDiskType(FlushDiskType.SYNC_FLUSH); }
MessageStore master = new DefaultMessageStore(messageStoreConfig, null, new MyMessageArrivingListener(), new BrokerConfig());
boolean load = master.load();
assertTrue(load);
master.start(); for (long i = 0; i < totalMsgs; i++) {
verifyThatMasterIsFunctional(totalMsgs, master); GetMessageResult result = messageStore.getMessage("GROUP_A", "TOPIC_A", 0, i, 1024 * 1024, null);
assertThat(result).isNotNull();
result.release();
}
verifyThatMasterIsFunctional(totalMsgs, messageStore);
} }
private void verifyThatMasterIsFunctional(long totalMsgs, MessageStore master) { private void verifyThatMasterIsFunctional(long totalMsgs, MessageStore master) {
try { for (long i = 0; i < totalMsgs; i++) {
for (long i = 0; i < totalMsgs; i++) { master.putMessage(buildMessage());
master.putMessage(buildMessage()); }
}
for (long i = 0; i < totalMsgs; i++) {
for (long i = 0; i < totalMsgs; i++) { GetMessageResult result = master.getMessage("GROUP_A", "TOPIC_A", 0, i, 1024 * 1024, null);
GetMessageResult result = master.getMessage("GROUP_A", "TOPIC_A", 0, i, 1024 * 1024, null); assertThat(result).isNotNull();
assertThat(result).isNotNull(); result.release();
result.release();
}
} finally {
master.shutdown();
master.destroy();
} }
} }
@Test @Test
public void testPullSize() throws Exception { public void testPullSize() throws Exception {
MessageStore messageStore = buildMessageStore();
boolean load = messageStore.load();
assertTrue(load);
messageStore.start();
String topic = "pullSizeTopic"; String topic = "pullSizeTopic";
for (int i = 0; i < 32; i++) { for (int i = 0; i < 32; i++) {
MessageExtBrokerInner messageExtBrokerInner = buildMessage(); MessageExtBrokerInner messageExtBrokerInner = buildMessage();
messageExtBrokerInner.setTopic(topic); messageExtBrokerInner.setTopic(topic);
messageExtBrokerInner.setQueueId(0); messageExtBrokerInner.setQueueId(0);
PutMessageResult putMessageResult = messageStore.putMessage(messageExtBrokerInner); messageStore.putMessage(messageExtBrokerInner);
} }
//wait for consume queue build //wait for consume queue build
Thread.sleep(100); Thread.sleep(10);
String group = "simple"; String group = "simple";
GetMessageResult getMessageResult32 = messageStore.getMessage(group, topic, 0, 0, 32, null); GetMessageResult getMessageResult32 = messageStore.getMessage(group, topic, 0, 0, 32, null);
assertThat(getMessageResult32.getMessageBufferList().size()).isEqualTo(32); assertThat(getMessageResult32.getMessageBufferList().size()).isEqualTo(32);
...@@ -154,8 +159,6 @@ public class DefaultMessageStoreTest { ...@@ -154,8 +159,6 @@ public class DefaultMessageStoreTest {
GetMessageResult getMessageResult45 = messageStore.getMessage(group, topic, 0, 0, 10, null); GetMessageResult getMessageResult45 = messageStore.getMessage(group, topic, 0, 0, 10, null);
assertThat(getMessageResult45.getMessageBufferList().size()).isEqualTo(10); assertThat(getMessageResult45.getMessageBufferList().size()).isEqualTo(10);
messageStore.shutdown();
} }
private class MyMessageArrivingListener implements MessageArrivingListener { private class MyMessageArrivingListener implements MessageArrivingListener {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册