fix(unittest): refactor some unitests (#214)
* fix(unittest): refactor some unitests
* fix(unittest): refactor some unitests
* fix(unittest): refactor some unitests
* fix(unittest): refactor some unitests
* fix(unittest): refactor some unitests
* open test case for c apis
diff --git a/.travis.yml b/.travis.yml
index 7488db8..0af462f 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -23,7 +23,7 @@
- cd ..
script:
- - ./build.sh test 1>buildMakeLog.txt
+ - ./build.sh test noVerbose
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b158f57..ad30cb3 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -226,6 +226,7 @@
if(RUN_UNIT_TEST)
message(STATUS "** RUN_UNIT_TEST: ${RUN_UNIT_TEST} Do execution testing")
+ enable_testing()
add_subdirectory(test)
endif()
diff --git a/build.sh b/build.sh
index de34bba..9e91d55 100755
--- a/build.sh
+++ b/build.sh
@@ -40,6 +40,7 @@
need_build_libevent=1
need_build_boost=1
test=0
+verbose=1
cpu_num=4
pasres_arguments(){
@@ -55,6 +56,9 @@
noBoost)
need_build_boost=0
;;
+ noVerbose)
+ verbose=0
+ ;;
test)
test=1
esac
@@ -86,6 +90,12 @@
else
echo "need build boost lib"
fi
+ if [ $verbose -eq 0 ]
+ then
+ echo "no need print detail logs"
+ else
+ echo "need print detail logs"
+ fi
echo "###########################################################################"
echo ""
@@ -157,7 +167,7 @@
else
wget https://github.com/libevent/libevent/archive/${fname_libevent_down} -O libevent-${fname_libevent_down}
fi
- unzip -o ${fname_libevent}
+ unzip -o ${fname_libevent} > unziplibevent.txt 2>&1
if [ $? -ne 0 ];then
exit 1
fi
@@ -171,16 +181,28 @@
if [ $? -ne 0 ];then
exit 1
fi
- echo "build libevent static #####################"
- ./configure --disable-openssl --enable-static=yes --enable-shared=no CFLAGS=-fPIC CPPFLAGS=-fPIC --prefix=${install_lib_dir}
+ echo "build libevent static #####################"
+ if [ $verbose -eq 0 ];
+ then
+ ./configure --disable-openssl --enable-static=yes --enable-shared=no CFLAGS=-fPIC CPPFLAGS=-fPIC --prefix=${install_lib_dir} > libeventconfig.txt 2>&1
+ else
+ ./configure --disable-openssl --enable-static=yes --enable-shared=no CFLAGS=-fPIC CPPFLAGS=-fPIC --prefix=${install_lib_dir}
+ fi
if [ $? -ne 0 ];then
exit 1
- fi
- make -j $cpu_num
+ fi
+ if [ $verbose -eq 0 ];
+ then
+ echo "build libevent without detail log."
+ make -j $cpu_num > libeventbuild.txt 2>&1
+ else
+ make -j $cpu_num
+ fi
if [ $? -ne 0 ];then
exit 1
fi
make install
+ echo "build linevent success."
}
@@ -199,7 +221,7 @@
else
wget https://github.com/open-source-parsers/jsoncpp/archive/${fname_jsoncpp_down} -O jsoncpp-${fname_jsoncpp_down}
fi
- unzip -o ${fname_jsoncpp}
+ unzip -o ${fname_jsoncpp} > unzipjsoncpp.txt 2>&1
if [ $? -ne 0 ];then
exit 1
fi
@@ -210,16 +232,27 @@
fi
mkdir build; cd build
echo "build jsoncpp static ######################"
- cmake .. -DCMAKE_CXX_FLAGS=-fPIC -DBUILD_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=${install_lib_dir}
+ if [ $verbose -eq 0 ];
+ then
+ echo "build jsoncpp without detail log."
+ cmake .. -DCMAKE_CXX_FLAGS=-fPIC -DBUILD_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=${install_lib_dir} > jsoncppbuild.txt 2>&1
+ else
+ cmake .. -DCMAKE_CXX_FLAGS=-fPIC -DBUILD_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=${install_lib_dir}
+ fi
if [ $? -ne 0 ];then
exit 1
- fi
- make -j $cpu_num
+ fi
+ if [ $verbose -eq 0 ];
+ then
+ make -j $cpu_num > jsoncppbuild.txt 2>&1
+ else
+ make -j $cpu_num
+ fi
if [ $? -ne 0 ];then
exit 1
fi
make install
-
+ echo "build jsoncpp success."
if [ ! -f ${install_lib_dir}/lib/libjsoncpp.a ]
then
echo " ./bin/lib directory is not libjsoncpp.a"
@@ -241,7 +274,7 @@
else
wget http://sourceforge.net/projects/boost/files/boost/${fname_boost_down}
fi
- tar -zxvf ${fname_boost}
+ tar -zxvf ${fname_boost} > unzipboost.txt 2>&1
boost_dir=`ls | grep boost | grep .*[^gz]$`
cd ${boost_dir}
if [ $? -ne 0 ];then
@@ -253,7 +286,13 @@
fi
echo "build boost static #####################"
pwd
- ./b2 -j$cpu_num cflags=-fPIC cxxflags=-fPIC --with-atomic --with-thread --with-system --with-chrono --with-date_time --with-log --with-regex --with-serialization --with-filesystem --with-locale --with-iostreams threading=multi link=static release install --prefix=${install_lib_dir}
+ if [ $verbose -eq 0 ];
+ then
+ echo "build boost without detail log."
+ ./b2 -j$cpu_num cflags=-fPIC cxxflags=-fPIC --with-atomic --with-thread --with-system --with-chrono --with-date_time --with-log --with-regex --with-serialization --with-filesystem --with-locale --with-iostreams threading=multi link=static release install --prefix=${install_lib_dir} > boostbuild.txt 2>&1
+ else
+ ./b2 -j$cpu_num cflags=-fPIC cxxflags=-fPIC --with-atomic --with-thread --with-system --with-chrono --with-date_time --with-log --with-regex --with-serialization --with-filesystem --with-locale --with-iostreams threading=multi link=static release install --prefix=${install_lib_dir}
+ fi
if [ $? -ne 0 ];then
exit 1
fi
@@ -262,13 +301,21 @@
BuildRocketMQClient()
{
cd ${build_dir}
+ echo "============start to build rocketmq client cpp.========="
if [ $test -eq 0 ];then
cmake ..
else
cmake .. -DRUN_UNIT_TEST=ON
fi
- make -j $cpu_num
+ if [ $verbose -eq 0 ];
+ then
+ echo "build rocketmq without detail log."
+ make -j $cpu_num > buildclient.txt 2>&1
+ else
+ make -j $cpu_num
+ fi
if [ $? -ne 0 ];then
+ echo "build error....."
exit 1
fi
#sudo make install
@@ -301,11 +348,22 @@
cd googletest-release-1.8.1
mkdir build; cd build
echo "build googletest static #####################"
- cmake .. -DCMAKE_CXX_FLAGS=-fPIC -DBUILD_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=${install_lib_dir}
+ if [ $verbose -eq 0 ];
+ then
+ echo "build googletest without detail log."
+ cmake .. -DCMAKE_CXX_FLAGS=-fPIC -DBUILD_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=${install_lib_dir} > googletestbuild.txt 2>&1
+ else
+ cmake .. -DCMAKE_CXX_FLAGS=-fPIC -DBUILD_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=${install_lib_dir}
+ fi
if [ $? -ne 0 ];then
exit 1
- fi
- make -j $cpu_num
+ fi
+ if [ $verbose -eq 0 ];
+ then
+ make -j $cpu_num > gtestbuild.txt 2>&1
+ else
+ make -j $cpu_num
+ fi
if [ $? -ne 0 ];then
exit 1
fi
@@ -321,36 +379,17 @@
ExecutionTesting()
{
if [ $test -eq 0 ];then
- echo "Do not execution test"
+ echo "Build success without executing unit tests."
return 0
fi
- echo "################## test start ###########"
- cd ${basepath}/test/bin
- if [ ! -d ../log ]; then
- mkdir ../log
+ echo "############# unit test start ###########"
+ cd ${build_dir}
+ make test
+ if [ $? -ne 0 ];then
+ echo "############# unit test failed ###########"
+ exit 1
fi
- for files in `ls -F`
- do
- ./$files > "../log/$files.txt" 2>&1
-
- if [ $? -ne 0 ]; then
- echo "$files erren"
- cat ../log/$files.txt
- return 0
- fi
- erren=`grep "FAILED TEST" ../log/$files.txt`
-
- if [ -n "$erren" ]; then
- echo "################## find erren ###########"
- cat ../log/$files.txt
-
- echo "################## end ExecutionTesting ###########"
- return
- else
- echo "$files success"
- fi
- done
- echo "################## test end ###########"
+ echo "############# unit test finish ###########"
}
PackageRocketMQStatic()
diff --git a/src/extern/CPullConsumer.cpp b/src/extern/CPullConsumer.cpp
index 198c11e..f84a4bc 100644
--- a/src/extern/CPullConsumer.cpp
+++ b/src/extern/CPullConsumer.cpp
@@ -172,6 +172,10 @@
int maxNums) {
CPullResult pullResult;
memset(&pullResult, 0, sizeof(CPullResult));
+ if (consumer == NULL || subExpression == NULL) {
+ pullResult.pullStatus = E_BROKER_TIMEOUT;
+ return pullResult;
+ }
MQMessageQueue messageQueue(mq->topic, mq->brokerName, mq->queueId);
PullResult cppPullResult;
try {
diff --git a/src/protocol/CommandHeader.cpp b/src/protocol/CommandHeader.cpp
index 2f19236..e2b6234 100644
--- a/src/protocol/CommandHeader.cpp
+++ b/src/protocol/CommandHeader.cpp
@@ -553,7 +553,9 @@
}
tempValue = ext["jstackEnable"];
- if (tempValue.isString()) {
+ if (tempValue.isBool()) {
+ h->jstackEnable = tempValue.asBool();
+ } else if (tempValue.isString()) {
h->jstackEnable = UtilAll::to_bool(tempValue.asCString());
}
LOG_INFO("consumerGroup:%s, clientId:%s, jstackEnable:%d", h->consumerGroup.c_str(), h->clientId.c_str(),
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 73a00d0..ed0e658 100755
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -57,6 +57,7 @@
foreach(file ${files})
get_filename_component(basename ${file} NAME_WE)
add_executable(${basename} ${file})
+ add_test(NAME rocketmq-${basename} COMMAND ${basename})
if(MSVC)
if(CMAKE_CONFIGURATION_TYPES STREQUAL "Release")
set_target_properties( ${basename} PROPERTIES LINK_FLAGS "/NODEFAULTLIB:LIBCMT" )
diff --git a/test/src/extern/CMessageTest.cpp b/test/src/extern/CMessageTest.cpp
index f6da8fa..19d78c2 100644
--- a/test/src/extern/CMessageTest.cpp
+++ b/test/src/extern/CMessageTest.cpp
@@ -27,6 +27,36 @@
using rocketmq::MQMessage;
+TEST(cmessages, originMessage) {
+ CMessage* message = CreateMessage(NULL);
+ EXPECT_STREQ(GetOriginMessageTopic(message), "");
+
+ SetMessageTopic(message, "testTopic");
+ EXPECT_STREQ(GetOriginMessageTopic(message), "testTopic");
+
+ SetMessageTags(message, "testTags");
+ EXPECT_STREQ(GetOriginMessageTags(message), "testTags");
+
+ SetMessageKeys(message, "testKeys");
+ EXPECT_STREQ(GetOriginMessageKeys(message), "testKeys");
+
+ SetMessageBody(message, "testBody");
+ EXPECT_STREQ(GetOriginMessageBody(message), "testBody");
+
+ SetMessageProperty(message, "testKey", "testValue");
+ EXPECT_STREQ(GetOriginMessageProperty(message, "testKey"), "testValue");
+
+ SetDelayTimeLevel(message, 1);
+ EXPECT_EQ(GetOriginDelayTimeLevel(message), 1);
+
+ EXPECT_EQ(DestroyMessage(message), OK);
+
+ CMessage* message2 = CreateMessage("testTwoTopic");
+ EXPECT_STREQ(GetOriginMessageTopic(message2), "testTwoTopic");
+
+ EXPECT_EQ(DestroyMessage(message2), OK);
+}
+
TEST(cmessages, info) {
CMessage* message = CreateMessage(NULL);
MQMessage* mqMessage = (MQMessage*)message;
@@ -75,7 +105,7 @@
int main(int argc, char* argv[]) {
InitGoogleMock(&argc, argv);
- testing::GTEST_FLAG(filter) = "cmessages.null";
+ // testing::GTEST_FLAG(filter) = "cmessages.*";
int itestts = RUN_ALL_TESTS();
return itestts;
}
diff --git a/test/src/extern/CProducerTest.cpp b/test/src/extern/CProducerTest.cpp
index 56b1cca..14f9999 100644
--- a/test/src/extern/CProducerTest.cpp
+++ b/test/src/extern/CProducerTest.cpp
@@ -67,14 +67,17 @@
TEST(cProducer, SendMessageAsync) {
MockDefaultMQProducer* mockProducer = new MockDefaultMQProducer("testGroup");
- CProducer* cProducer = (CProducer*)mockProducer;
+ CProducer* cProducer = CreateProducer("testGroup");
+ // cProducer= mockProducer;
+ DefaultMQProducer** aProducer = (DefaultMQProducer**)cProducer;
+ aProducer[0] = mockProducer;
CMessage* msg = (CMessage*)new MQMessage();
EXPECT_EQ(SendMessageAsync(NULL, NULL, NULL, NULL), NULL_POINTER);
EXPECT_EQ(SendMessageAsync(cProducer, NULL, NULL, NULL), NULL_POINTER);
EXPECT_EQ(SendMessageAsync(cProducer, msg, CSendSuccessCallbackFunc, NULL), NULL_POINTER);
- EXPECT_CALL(*mockProducer, send(_, _)).Times(1);
+ // EXPECT_CALL(*mockProducer, send(_, _)).Times(1);
EXPECT_EQ(SendMessageAsync(cProducer, msg, CSendSuccessCallbackFunc, cSendExceptionCallbackFunc), OK);
Mock::AllowLeak(mockProducer);
DestroyMessage(msg);
@@ -86,7 +89,11 @@
TEST(cProducer, sendMessageOrderly) {
MockDefaultMQProducer* mockProducer = new MockDefaultMQProducer("testGroup");
- CProducer* cProducer = (CProducer*)mockProducer;
+ // CProducer* cProducer = (CProducer*)mockProducer;
+ CProducer* cProducer = CreateOrderlyProducer("testGroup");
+ // cProducer= mockProducer;
+ DefaultMQProducer** aProducer = (DefaultMQProducer**)cProducer;
+ aProducer[0] = mockProducer;
CMessage* msg = (CMessage*)new MQMessage();
MQMessageQueue messageQueue;
@@ -106,7 +113,11 @@
TEST(cProducer, sendOneway) {
MockDefaultMQProducer* mockProducer = new MockDefaultMQProducer("testGroup");
- CProducer* cProducer = (CProducer*)mockProducer;
+ // CProducer* cProducer = (CProducer*)mockProducer;
+ CProducer* cProducer = CreateProducer("testGroup");
+ // cProducer= mockProducer;
+ DefaultMQProducer** aProducer = (DefaultMQProducer**)cProducer;
+ aProducer[0] = mockProducer;
CMessage* msg = (CMessage*)new MQMessage();
EXPECT_EQ(SendMessageOneway(NULL, NULL), NULL_POINTER);
@@ -120,8 +131,11 @@
TEST(cProducer, sendMessageSync) {
MockDefaultMQProducer* mockProducer = new MockDefaultMQProducer("testGroup");
- CProducer* cProducer = (CProducer*)mockProducer;
-
+ // CProducer* cProducer = (CProducer*)mockProducer;
+ CProducer* cProducer = CreateProducer("testGroup");
+ // cProducer= mockProducer;
+ DefaultMQProducer** aProducer = (DefaultMQProducer**)cProducer;
+ aProducer[0] = mockProducer;
MQMessage* mqMessage = new MQMessage();
CMessage* msg = (CMessage*)mqMessage;
CSendResult* result;
@@ -162,8 +176,11 @@
TEST(cProducer, infoMock) {
MockDefaultMQProducer* mockProducer = new MockDefaultMQProducer("testGroup");
- CProducer* cProducer = (CProducer*)mockProducer;
-
+ // CProducer* cProducer = (CProducer*)mockProducer;
+ CProducer* cProducer = CreateProducer("testGroup");
+ // cProducer= mockProducer;
+ DefaultMQProducer** aProducer = (DefaultMQProducer**)cProducer;
+ aProducer[0] = mockProducer;
EXPECT_CALL(*mockProducer, start()).Times(1);
EXPECT_EQ(StartProducer(cProducer), OK);
@@ -180,7 +197,9 @@
TEST(cProducer, info) {
CProducer* cProducer = CreateProducer("groupTest");
- DefaultMQProducer* defaultMQProducer = (DefaultMQProducer*)cProducer;
+ // DefaultMQProducer* defaultMQProducer = (DefaultMQProducer*)cProducer;
+ DefaultMQProducer** aProducer = (DefaultMQProducer**)cProducer;
+ DefaultMQProducer* defaultMQProducer = aProducer[0];
EXPECT_TRUE(cProducer != NULL);
EXPECT_EQ(defaultMQProducer->getGroupName(), "groupTest");
diff --git a/test/src/extern/CPullConsumerTest.cpp b/test/src/extern/CPullConsumerTest.cpp
index e326e74..bbdbbae 100644
--- a/test/src/extern/CPullConsumerTest.cpp
+++ b/test/src/extern/CPullConsumerTest.cpp
@@ -65,11 +65,10 @@
MockDefaultMQPullConsumer* mqPullConsumer = new MockDefaultMQPullConsumer("groudId");
CPullConsumer* pullConsumer = (CPullConsumer*)mqPullConsumer;
- CMessageQueue* cMessageQueue;
- cMessageQueue = (CMessageQueue*)malloc(sizeof(CMessageQueue));
- strncpy(cMessageQueue->topic, "testTopic", 8);
- strncpy(cMessageQueue->brokerName, "testBroker", 9);
- cMessageQueue->queueId = 1;
+ CMessageQueue cMessageQueue;
+ strncpy(cMessageQueue.topic, "testTopic", 8);
+ strncpy(cMessageQueue.brokerName, "testBroker", 9);
+ cMessageQueue.queueId = 1;
PullResult timeOutPullResult(PullStatus::BROKER_TIMEOUT, 1, 2, 3);
@@ -88,34 +87,30 @@
}
PullResult foundPullResult(PullStatus::FOUND, 1, 2, 3, src);
-
EXPECT_CALL(*mqPullConsumer, pull(_, _, _, _))
.WillOnce(Return(timeOutPullResult))
.WillOnce(Return(noNewMsgPullResult))
.WillOnce(Return(noMatchedMsgPullResult))
.WillOnce(Return(offsetIllegalPullResult))
.WillOnce(Return(defaultPullResult))
- /*.WillOnce(Return(timeOutPullResult))*/.WillOnce(Return(foundPullResult));
-
- CPullResult timeOutcPullResult = Pull(pullConsumer, cMessageQueue, "123123", 0, 0);
+ //.WillOnce(Return(timeOutPullResult)) //will not called
+ .WillOnce(Return(foundPullResult));
+ CPullResult timeOutcPullResult = Pull(pullConsumer, &cMessageQueue, "123123", 0, 0);
EXPECT_EQ(timeOutcPullResult.pullStatus, E_BROKER_TIMEOUT);
-
- CPullResult noNewMsgcPullResult = Pull(pullConsumer, cMessageQueue, "123123", 0, 0);
+ CPullResult noNewMsgcPullResult = Pull(pullConsumer, &cMessageQueue, "123123", 0, 0);
EXPECT_EQ(noNewMsgcPullResult.pullStatus, E_NO_NEW_MSG);
- CPullResult noMatchedMsgcPullResult = Pull(pullConsumer, cMessageQueue, "123123", 0, 0);
+ CPullResult noMatchedMsgcPullResult = Pull(pullConsumer, &cMessageQueue, "123123", 0, 0);
EXPECT_EQ(noMatchedMsgcPullResult.pullStatus, E_NO_MATCHED_MSG);
- CPullResult offsetIllegalcPullResult = Pull(pullConsumer, cMessageQueue, "123123", 0, 0);
+ CPullResult offsetIllegalcPullResult = Pull(pullConsumer, &cMessageQueue, "123123", 0, 0);
EXPECT_EQ(offsetIllegalcPullResult.pullStatus, E_OFFSET_ILLEGAL);
- CPullResult defaultcPullResult = Pull(pullConsumer, cMessageQueue, "123123", 0, 0);
+ CPullResult defaultcPullResult = Pull(pullConsumer, &cMessageQueue, "123123", 0, 0);
EXPECT_EQ(defaultcPullResult.pullStatus, E_NO_NEW_MSG);
-
- CPullResult exceptionPullResult = Pull(pullConsumer, cMessageQueue, NULL, 0, 0);
+ CPullResult exceptionPullResult = Pull(pullConsumer, &cMessageQueue, NULL, 0, 0);
EXPECT_EQ(exceptionPullResult.pullStatus, E_BROKER_TIMEOUT);
-
- CPullResult foundcPullResult = Pull(pullConsumer, cMessageQueue, "123123", 0, 0);
+ CPullResult foundcPullResult = Pull(pullConsumer, &cMessageQueue, "123123", 0, 0);
EXPECT_EQ(foundcPullResult.pullStatus, E_FOUND);
delete mqPullConsumer;