blob: 8642e49e2b620c7f68aadd82721dfc0fec596285 [file] [log] [blame]
/*
* 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.
*/
#include <iostream>
#include "map"
#include "string"
#include "gmock/gmock.h"
#include "gtest/gtest.h"
#include "json/reader.h"
#include "json/value.h"
#include "ConsumerRunningInfo.h"
#include "MessageQueue.h"
#include "ProcessQueueInfo.h"
#include "SubscriptionData.h"
using std::map;
using std::string;
using ::testing::InitGoogleMock;
using ::testing::InitGoogleTest;
using testing::Return;
using Json::Reader;
using Json::Value;
using rocketmq::ConsumerRunningInfo;
using rocketmq::MessageQueue;
using rocketmq::ProcessQueueInfo;
using rocketmq::SubscriptionData;
TEST(ConsumerRunningInfo, init) {
ConsumerRunningInfo info;
// jstack
info.setJstack("jstack");
EXPECT_EQ(info.getJstack(), "jstack");
// property
EXPECT_TRUE(info.getProperties().empty());
info.setProperty("testKey", "testValue");
map<string, string> properties = info.getProperties();
EXPECT_EQ(properties["testKey"], "testValue");
info.setProperties(map<string, string>());
EXPECT_TRUE(info.getProperties().empty());
info.setProperty("testKey", "testValue");
map<string, string> properties2 = info.getProperties();
EXPECT_EQ(properties2["testKey"], "testValue");
// subscription
EXPECT_TRUE(info.getSubscriptionSet().empty());
vector<SubscriptionData> subscriptionSet;
SubscriptionData sData1("testTopic", "testSub");
sData1.putTagsSet("testTag");
sData1.putCodeSet("11234");
subscriptionSet.push_back(sData1);
SubscriptionData sData2("testTopic2", "testSub2");
sData2.putTagsSet("testTag2");
sData2.putCodeSet("21234");
subscriptionSet.push_back(sData2);
info.setSubscriptionSet(subscriptionSet);
EXPECT_EQ(info.getSubscriptionSet().size(), 2);
// mqtable
EXPECT_TRUE(info.getMqTable().empty());
MessageQueue messageQueue1("testTopic", "testBrokerA", 3);
ProcessQueueInfo processQueueInfo1;
processQueueInfo1.commitOffset = 1024;
info.setMqTable(messageQueue1, processQueueInfo1);
MessageQueue messageQueue2("testTopic", "testBrokerB", 4);
ProcessQueueInfo processQueueInfo2;
processQueueInfo2.cachedMsgCount = 1023;
info.setMqTable(messageQueue2, processQueueInfo2);
map<MessageQueue, ProcessQueueInfo> mqTable = info.getMqTable();
EXPECT_EQ(mqTable.size(), 2);
EXPECT_EQ(mqTable[messageQueue1].commitOffset, 1024);
EXPECT_EQ(mqTable[messageQueue2].cachedMsgCount, 1023);
// encode start
info.setProperty(ConsumerRunningInfo::PROP_NAMESERVER_ADDR, "127.0.0.1:9876");
info.setProperty(ConsumerRunningInfo::PROP_THREADPOOL_CORE_SIZE, "core_size");
info.setProperty(ConsumerRunningInfo::PROP_CONSUME_ORDERLY, "consume_orderly");
info.setProperty(ConsumerRunningInfo::PROP_CONSUME_TYPE, "consume_type");
info.setProperty(ConsumerRunningInfo::PROP_CLIENT_VERSION, "client_version");
info.setProperty(ConsumerRunningInfo::PROP_CONSUMER_START_TIMESTAMP, "127");
info.setProperty(ConsumerRunningInfo::PROP_CLIENT_SDK_VERSION, "sdk_version");
// encode
string outStr = info.encode();
EXPECT_GT(outStr.length(), 1);
EXPECT_NE(outStr.find("testTopic"), string::npos);
}
int main(int argc, char* argv[]) {
InitGoogleMock(&argc, argv);
testing::GTEST_FLAG(throw_on_failure) = true;
testing::GTEST_FLAG(filter) = "ConsumerRunningInfo.*";
int iTests = RUN_ALL_TESTS();
return iTests;
}