You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@inlong.apache.org by go...@apache.org on 2021/05/28 12:20:57 UTC

[incubator-inlong] branch TUBEMQ-570 updated (8046ff9 -> 1c89454)

This is an automated email from the ASF dual-hosted git repository.

gosonzhang pushed a change to branch TUBEMQ-570
in repository https://gitbox.apache.org/repos/asf/incubator-inlong.git.


    from 8046ff9  [INLONG-617] Add unit tests for WebParameterUtils (#471)
     new f9f1c27  [INLONG-618] Add unit tests for metastore.dao.entity.*
     new 3aa7f4c  [INLONG-618] Add unit tests for metastore.dao.entity.*
     new ee98d30  [INLONG-618] Add unit tests for metastore.dao.entity.*
     new a936fdf  [INLONG-618] Add unit tests for metastore.dao.entity.*
     new 1c89454  [INLONG-618] Add unit tests for metastore.dao.entity.*

The 5 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../tubemq/corebase/utils/SettingValidUtils.java   |  13 ++
 .../{CuPolType.java => CleanPolType.java}          |  10 +-
 .../server/common/statusdef/EnableStatus.java      |   2 +-
 .../server/common/utils/WebParameterUtils.java     |  17 +-
 .../bdbentitys/BdbClusterSettingEntity.java        |  42 ++++-
 .../bdbentitys/BdbGroupFilterCondEntity.java       |  75 +++++---
 .../bdbentitys/BdbGroupFlowCtrlEntity.java         |  93 ++++++----
 .../bdbentitys/BdbTopicAuthControlEntity.java      |  75 +++++---
 .../server/master/metamanage/MetaDataManager.java  |  59 ------
 .../metamanage/metastore/TStoreConstants.java      |   4 +
 .../metastore/dao/entity/BaseEntity.java           | 126 ++++++-------
 .../metastore/dao/entity/BrokerConfEntity.java     |  63 ++-----
 .../metastore/dao/entity/ClusterSettingEntity.java |  26 ++-
 .../dao/entity/GroupConsumeCtrlEntity.java         |  47 ++---
 .../metastore/dao/entity/GroupResCtrlEntity.java   |  56 +++---
 .../metastore/dao/entity/TopicCtrlEntity.java      |  68 +++----
 .../metastore/dao/entity/TopicDeployEntity.java    |  42 ++---
 .../metastore/dao/entity/TopicPropGroup.java       |  71 ++++----
 .../master/metamanage/online/BrokerRunData.java    | 100 -----------
 .../server/common/WebParameterUtilsTest.java       |   4 +-
 .../metastore/dao/entity/BaseEntityTest.java       | 157 ++++++++++++++++
 .../metastore/dao/entity/BrokerConfEntityTest.java | 198 +++++++++++++++++++++
 .../dao/entity/ClusterSettingEntityTest.java       | 185 +++++++++++++++++++
 .../dao/entity/GroupConsumeCtrlEntityTest.java     |  96 ++++++++++
 .../dao/entity/GroupResCtrlEntityTest.java         | 137 ++++++++++++++
 .../metastore/dao/entity/TopicCtrlEntityTest.java  | 125 +++++++++++++
 .../dao/entity/TopicDeployEntityTest.java          | 161 +++++++++++++++++
 .../metastore/dao/entity/TopicPropGroupTest.java   | 156 ++++++++++++++++
 28 files changed, 1671 insertions(+), 537 deletions(-)
 rename tubemq-server/src/main/java/org/apache/tubemq/server/common/statusdef/{CuPolType.java => CleanPolType.java} (82%)
 delete mode 100644 tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/online/BrokerRunData.java
 create mode 100644 tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BaseEntityTest.java
 create mode 100644 tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BrokerConfEntityTest.java
 create mode 100644 tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/ClusterSettingEntityTest.java
 create mode 100644 tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupConsumeCtrlEntityTest.java
 create mode 100644 tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupResCtrlEntityTest.java
 create mode 100644 tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicCtrlEntityTest.java
 create mode 100644 tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicDeployEntityTest.java
 create mode 100644 tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicPropGroupTest.java

[incubator-inlong] 02/05: [INLONG-618] Add unit tests for metastore.dao.entity.*

Posted by go...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gosonzhang pushed a commit to branch TUBEMQ-570
in repository https://gitbox.apache.org/repos/asf/incubator-inlong.git

commit 3aa7f4c33628cd79732e5553a924214fb768d2c1
Author: gosonzhang <go...@tencent.com>
AuthorDate: Wed May 26 18:48:00 2021 +0800

    [INLONG-618] Add unit tests for metastore.dao.entity.*
---
 .../metastore/dao/entity/BaseEntity.java           |  22 +-
 .../metastore/dao/entity/TopicDeployEntity.java    |   2 +
 .../metastore/dao/entity/BaseEntityTest.java       |   2 +
 .../metastore/dao/entity/BrokerConfEntityTest.java | 248 ++++++++++++++-------
 .../dao/entity/GroupConsumeCtrlEntityTest.java     |   8 +-
 .../dao/entity/TopicDeployEntityTest.java          | 161 +++++++++++++
 6 files changed, 350 insertions(+), 93 deletions(-)

diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BaseEntity.java b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BaseEntity.java
index 9cf1853..b964b96 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BaseEntity.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BaseEntity.java
@@ -22,6 +22,7 @@ import com.google.gson.GsonBuilder;
 import java.io.Serializable;
 import java.util.Date;
 import java.util.Objects;
+import java.util.concurrent.atomic.AtomicLong;
 import org.apache.tubemq.corebase.TBaseConstants;
 import org.apache.tubemq.corebase.utils.TStringUtils;
 import org.apache.tubemq.server.common.TServerConstants;
@@ -33,7 +34,8 @@ public class BaseEntity implements Serializable, Cloneable {
 
     private long dataVersionId =
             TBaseConstants.META_VALUE_UNDEFINED;    // -2: undefined, other: version
-    private long serialId = TBaseConstants.META_VALUE_UNDEFINED;
+    private final AtomicLong serialId =
+            new AtomicLong(TBaseConstants.META_VALUE_UNDEFINED);
     private String createUser = "";        // create user
     private Date createDate = null;        // create date
     private String modifyUser = "";       // modify user
@@ -57,7 +59,7 @@ public class BaseEntity implements Serializable, Cloneable {
         this.setCreateDate(other.createDate);
         this.modifyUser = other.modifyUser;
         this.setModifyDate(other.modifyDate);
-        this.serialId = other.serialId;
+        this.serialId.set(other.serialId.get());
         this.attributes = other.attributes;
     }
 
@@ -159,11 +161,16 @@ public class BaseEntity implements Serializable, Cloneable {
     }
 
     public long getSerialId() {
-        return serialId;
+        return serialId.get();
     }
 
     protected void updSerialId() {
-        this.serialId = System.currentTimeMillis();
+        if (serialId.get() == TBaseConstants.META_VALUE_UNDEFINED) {
+            this.serialId.set(System.currentTimeMillis());
+        } else {
+            this.serialId.incrementAndGet();
+        }
+
     }
 
     public String getModifyUser() {
@@ -223,7 +230,7 @@ public class BaseEntity implements Serializable, Cloneable {
     StringBuilder toWebJsonStr(StringBuilder sBuilder, boolean isLongName) {
         if (isLongName) {
             sBuilder.append(",\"dataVersionId\":").append(dataVersionId)
-                    .append(",\"serialId\":").append(serialId)
+                    .append(",\"serialId\":").append(serialId.get())
                     .append(",\"createUser\":\"").append(createUser).append("\"")
                     .append(",\"createDate\":\"").append(createDateStr).append("\"")
                     .append(",\"modifyUser\":\"").append(modifyUser).append("\"")
@@ -231,6 +238,7 @@ public class BaseEntity implements Serializable, Cloneable {
                     //.append(",\"attributes\":\"").append(attributes).append("\"");
         } else {
             sBuilder.append(",\"dVerId\":").append(dataVersionId)
+                    .append(",\"serialId\":").append(serialId.get())
                     .append(",\"cur\":\"").append(createUser).append("\"")
                     .append(",\"cDate\":\"").append(createDateStr).append("\"")
                     .append(",\"mur\":\"").append(modifyUser).append("\"")
@@ -260,7 +268,7 @@ public class BaseEntity implements Serializable, Cloneable {
         }
         BaseEntity that = (BaseEntity) o;
         return dataVersionId == that.dataVersionId &&
-                serialId == that.serialId &&
+                serialId.get() == that.serialId.get() &&
                 Objects.equals(createUser, that.createUser) &&
                 Objects.equals(createDate, that.createDate) &&
                 Objects.equals(modifyUser, that.modifyUser) &&
@@ -270,7 +278,7 @@ public class BaseEntity implements Serializable, Cloneable {
 
     @Override
     public int hashCode() {
-        return Objects.hash(dataVersionId, serialId, createUser,
+        return Objects.hash(dataVersionId, serialId.get(), createUser,
                 createDate, modifyUser, modifyDate, attributes);
     }
 
diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicDeployEntity.java b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicDeployEntity.java
index 8f79fc8..a2f6bd9 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicDeployEntity.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicDeployEntity.java
@@ -84,6 +84,8 @@ public class TopicDeployEntity extends BaseEntity implements Cloneable {
                         getModifyUser(), getModifyDate());
         bdbEntity.setDataVerId(getDataVerId());
         bdbEntity.setTopicId(topicNameId);
+        bdbEntity.setTopicStatusId(deployStatus.getCode());
+        bdbEntity.setDataStore(topicProps.getDataStoreType(), topicProps.getDataPath());
         bdbEntity.setNumTopicStores(topicProps.getNumTopicStores());
         bdbEntity.setMemCacheMsgSizeInMB(topicProps.getMemCacheMsgSizeInMB());
         bdbEntity.setMemCacheMsgCntInK(topicProps.getMemCacheMsgCntInK());
diff --git a/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BaseEntityTest.java b/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BaseEntityTest.java
index 74ee410..417a613 100644
--- a/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BaseEntityTest.java
+++ b/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BaseEntityTest.java
@@ -19,6 +19,7 @@ package org.apache.tubemq.server.master.metamanage.metastore.dao.entity;
 
 import java.util.Date;
 import org.apache.tubemq.corebase.TBaseConstants;
+import org.apache.tubemq.corebase.utils.ThreadUtils;
 import org.apache.tubemq.server.common.TServerConstants;
 import org.apache.tubemq.server.common.utils.WebParameterUtils;
 import org.junit.Assert;
@@ -138,6 +139,7 @@ public class BaseEntityTest {
         BaseEntity baseEntity9 = (BaseEntity) baseEntity6.clone();
         Assert.assertEquals(baseEntity9, baseEntity6);
         baseEntity9.setAttributes("aaaaabbbbccccddd");
+        ThreadUtils.sleep(2000);
         baseEntity9.updSerialId();
         baseEntity9.updQueryKeyInfo(newDataVerId, newCreateUser, newModifyUser);
         Assert.assertNotEquals(baseEntity6.getDataVerId(), baseEntity9.getDataVerId());
diff --git a/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BrokerConfEntityTest.java b/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BrokerConfEntityTest.java
index b6b81f4..31bcd10 100644
--- a/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BrokerConfEntityTest.java
+++ b/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BrokerConfEntityTest.java
@@ -18,10 +18,8 @@
 package org.apache.tubemq.server.master.metamanage.metastore.dao.entity;
 
 import java.util.Date;
-import org.apache.tubemq.corebase.TBaseConstants;
-import org.apache.tubemq.corebase.utils.SettingValidUtils;
-import org.apache.tubemq.server.common.statusdef.EnableStatus;
-import org.apache.tubemq.server.master.bdbstore.bdbentitys.BdbTopicAuthControlEntity;
+import org.apache.tubemq.server.common.statusdef.ManageStatus;
+import org.apache.tubemq.server.master.bdbstore.bdbentitys.BdbBrokerConfEntity;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -31,90 +29,170 @@ import org.junit.Test;
 public class BrokerConfEntityTest {
 
     @Test
-    public void trokerConfEntityTest() {
+    public void brokerConfEntityTest() {
         // case 1
-        String topicName = "test_1";
-        boolean enableAuthControl = false;
-        String attributes = "";
-        String createUser = "creater";
-        Date createDate = new Date();
-        int maxMsgSizeInB = 12222;
-        BdbTopicAuthControlEntity bdbEntity1 =
-                new BdbTopicAuthControlEntity(topicName,
-                        enableAuthControl, attributes, createUser, createDate);
-        TopicCtrlEntity ctrlEntity1 = new TopicCtrlEntity(bdbEntity1);
-        // check bdbEntity1
-        Assert.assertEquals(bdbEntity1.getTopicName(), topicName);
-        Assert.assertEquals(bdbEntity1.getTopicId(), TBaseConstants.META_VALUE_UNDEFINED);
-        Assert.assertEquals(bdbEntity1.isEnableAuthControl(), enableAuthControl);
-        Assert.assertEquals(bdbEntity1.getMaxMsgSize(), TBaseConstants.META_VALUE_UNDEFINED);
-        Assert.assertEquals(bdbEntity1.getCreateUser(), createUser);
-        Assert.assertEquals(bdbEntity1.getCreateDate(), createDate);
-        Assert.assertEquals(bdbEntity1.getDataVerId(), TBaseConstants.META_VALUE_UNDEFINED);
-        bdbEntity1.setMaxMsgSize(maxMsgSizeInB);
-        Assert.assertEquals(bdbEntity1.getMaxMsgSize(), maxMsgSizeInB);
-        // check ctrlEntity1
-        Assert.assertEquals(ctrlEntity1.getTopicName(), topicName);
-        Assert.assertEquals(ctrlEntity1.getTopicId(), TBaseConstants.META_VALUE_UNDEFINED);
-        Assert.assertEquals(ctrlEntity1.getAuthCtrlStatus(), EnableStatus.STATUS_DISABLE);
-        Assert.assertEquals(ctrlEntity1.getMaxMsgSizeInB(),
-                TBaseConstants.META_MAX_MESSAGE_DATA_SIZE);
-        Assert.assertEquals(ctrlEntity1.getMaxMsgSizeInMB(),
-                TBaseConstants.META_MIN_ALLOWED_MESSAGE_SIZE_MB);
-        Assert.assertEquals(ctrlEntity1.getCreateUser(), createUser);
-        Assert.assertEquals(ctrlEntity1.getCreateDate(), createDate);
-        Assert.assertEquals(ctrlEntity1.getDataVerId(), TBaseConstants.META_VALUE_UNDEFINED);
+        int brokerId1 = 22;
+        String brokerIp1 = "127.0.0.1";
+        int brokerPort1 = 555;
+        int numPartitions1 = 2;
+        int unflushThreshold1 = 3;
+        int unflushInterval1 = 4;
+        String deleteWhen1 = "";
+        String deletePolicy1 = "delete,5h";
+        int manageStatus1 = 1;
+        boolean acceptPublish1 = true;
+        boolean acceptSubscribe1 = false;
+        String attributes1 = "key1=test&key2=tas";
+        boolean isConfDataUpdated1 = true;
+        boolean isBrokerLoaded1 = false;
+        String createUser1 = "creater";
+        Date createDate1 = new Date();
+        String modifyUser1 = "modifyer";
+        Date modifyDate1 = new Date();
+        BdbBrokerConfEntity bdbEntity1 =
+                new BdbBrokerConfEntity(brokerId1, brokerIp1, brokerPort1, numPartitions1,
+                        unflushThreshold1, unflushInterval1, deleteWhen1, deletePolicy1,
+                        manageStatus1, acceptPublish1, acceptSubscribe1, attributes1,
+                        isConfDataUpdated1, isBrokerLoaded1, createUser1, createDate1,
+                        modifyUser1, modifyDate1);
+        BrokerConfEntity confEntity1 = new BrokerConfEntity(bdbEntity1);
+        // check confEntity1
+        Assert.assertEquals(confEntity1.getBrokerId(), brokerId1);
+        Assert.assertEquals(confEntity1.getBrokerIp(), brokerIp1);
+        Assert.assertEquals(confEntity1.getBrokerPort(), brokerPort1);
+        Assert.assertEquals(confEntity1.getBrokerTLSPort(), bdbEntity1.getBrokerTLSPort());
+        Assert.assertEquals(confEntity1.getBrokerWebPort(), bdbEntity1.getBrokerWebPort());
+        Assert.assertEquals(confEntity1.getGroupId(), bdbEntity1.getBrokerGroupId());
+        Assert.assertEquals(confEntity1.getManageStatus().getCode(), bdbEntity1.getManageStatus());
+        Assert.assertEquals(confEntity1.getRegionId(), bdbEntity1.getRegionId());
+        Assert.assertEquals(confEntity1.getCreateUser(), bdbEntity1.getRecordCreateUser());
+        Assert.assertEquals(confEntity1.getModifyUser(), bdbEntity1.getRecordModifyUser());
+        Assert.assertEquals(confEntity1.getCreateDate(), bdbEntity1.getRecordCreateDate());
+        Assert.assertEquals(confEntity1.getModifyDate(), bdbEntity1.getRecordModifyDate());
+        TopicPropGroup props1 = confEntity1.getTopicProps();
+        Assert.assertEquals(props1.getNumTopicStores(), bdbEntity1.getNumTopicStores());
+        Assert.assertEquals(props1.getNumPartitions(), bdbEntity1.getDftNumPartitions());
+        Assert.assertEquals(props1.getUnflushThreshold(), bdbEntity1.getDftUnflushThreshold());
+        Assert.assertEquals(props1.getUnflushInterval(), bdbEntity1.getDftUnflushInterval());
+        Assert.assertEquals(props1.getUnflushDataHold(), bdbEntity1.getDftUnFlushDataHold());
+        Assert.assertEquals(props1.getMemCacheMsgSizeInMB(), bdbEntity1.getDftMemCacheMsgSizeInMB());
+        Assert.assertEquals(props1.getMemCacheFlushIntvl(), bdbEntity1.getDftMemCacheFlushIntvl());
+        Assert.assertEquals(props1.getMemCacheMsgCntInK(), bdbEntity1.getDftMemCacheMsgCntInK());
+        Assert.assertEquals(props1.getAcceptPublish(), bdbEntity1.isAcceptPublish());
+        Assert.assertEquals(props1.getAcceptSubscribe(), bdbEntity1.isAcceptSubscribe());
+        Assert.assertEquals(props1.getDataStoreType(), bdbEntity1.getDataStoreType());
+        Assert.assertEquals(props1.getDataPath(), "");
+        Assert.assertEquals(props1.getDeletePolicy(), bdbEntity1.getDftDeletePolicy());
         // case 2
-        long dataVerId2 = 555;
-        int topicId2 = 222;
-        String topicName2 = "test_1";
-        boolean enableAuthControl2 = true;
-        String attributes2 = "";
-        String createUser2 = "creater2";
-        Date createDate2 = new Date();
-        int maxMsgSizeInB2 = 14;
-        TopicCtrlEntity ctrlEntity2 = ctrlEntity1.clone();
-        Assert.assertTrue(ctrlEntity2.isDataEquals(ctrlEntity1));
-        BaseEntity opInfoEntry = new BaseEntity(dataVerId2, createUser2, createDate2);
-        Assert.assertTrue(ctrlEntity2.updBaseModifyInfo(opInfoEntry));
-        Assert.assertTrue(ctrlEntity2.updModifyInfo(opInfoEntry.getDataVerId(),
-                topicId2, maxMsgSizeInB2, enableAuthControl2));
-        Assert.assertFalse(ctrlEntity2.isDataEquals(ctrlEntity1));
-        Assert.assertFalse(ctrlEntity2.isMatched(ctrlEntity1));
-        // check ctrlEntity2
-        Assert.assertEquals(ctrlEntity2.getTopicName(), topicName);
-        Assert.assertEquals(ctrlEntity2.getTopicId(), topicId2);
-        Assert.assertEquals(ctrlEntity2.getAuthCtrlStatus(), EnableStatus.STATUS_ENABLE);
-        Assert.assertEquals(ctrlEntity2.getMaxMsgSizeInB(),
-                SettingValidUtils.validAndXfeMaxMsgSizeFromMBtoB(maxMsgSizeInB2));
-        Assert.assertEquals(ctrlEntity2.getMaxMsgSizeInMB(), maxMsgSizeInB2);
-        Assert.assertEquals(ctrlEntity2.getCreateUser(), createUser);
-        Assert.assertEquals(ctrlEntity2.getCreateDate(), createDate);
-        Assert.assertEquals(ctrlEntity2.getModifyUser(), createUser2);
-        Assert.assertEquals(ctrlEntity2.getModifyDate(), createDate2);
-        Assert.assertEquals(ctrlEntity2.getDataVerId(), dataVerId2);
+        int dataVerId1 = 25;
+        int regionId1 = 95343;
+        int numTopicStores1 = 9;
+        int brokerTLSPort1 = 666;
+        int brokerWebPort1 = 888;
+        int memCacheFlushIntvl1 = 200;
+        int memCacheMsgCntInK1 = 250;
+        int memCacheMsgSizeInMB1 = 3;
+        int unFlushDataHold1 = 1000;
+        int groupId1 = 55;
+        int dataType1 = 2;
+        String dataPath1 = "/test";
+        bdbEntity1.setRegionId(regionId1);
+        bdbEntity1.setDataVerId(dataVerId1);
+        bdbEntity1.setBrokerGroupId(groupId1);
+        bdbEntity1.setBrokerTLSPort(brokerTLSPort1);
+        bdbEntity1.setBrokerWebPort(brokerWebPort1);
+        bdbEntity1.setNumTopicStores(numTopicStores1);
+        bdbEntity1.setDftMemCacheFlushIntvl(memCacheFlushIntvl1);
+        bdbEntity1.setDftMemCacheMsgCntInK(memCacheMsgCntInK1);
+        bdbEntity1.setDftMemCacheMsgSizeInMB(memCacheMsgSizeInMB1);
+        bdbEntity1.setDftUnFlushDataHold(unFlushDataHold1);
+        bdbEntity1.setDataStore(dataType1, dataPath1);
+        BrokerConfEntity confEntity2 = new BrokerConfEntity(bdbEntity1);
+        Assert.assertEquals(confEntity2.getBrokerId(), bdbEntity1.getBrokerId());
+        Assert.assertEquals(confEntity2.getBrokerIp(), bdbEntity1.getBrokerIp());
+        Assert.assertEquals(confEntity2.getBrokerPort(), bdbEntity1.getBrokerPort());
+        Assert.assertEquals(confEntity2.getBrokerTLSPort(), bdbEntity1.getBrokerTLSPort());
+        Assert.assertEquals(confEntity2.getBrokerWebPort(), bdbEntity1.getBrokerWebPort());
+        Assert.assertEquals(confEntity2.getGroupId(), bdbEntity1.getBrokerGroupId());
+        Assert.assertEquals(confEntity2.getManageStatus().getCode(), bdbEntity1.getManageStatus());
+        Assert.assertEquals(confEntity2.getRegionId(), bdbEntity1.getRegionId());
+        TopicPropGroup props2 = confEntity2.getTopicProps();
+        Assert.assertEquals(props2.getNumTopicStores(), bdbEntity1.getNumTopicStores());
+        Assert.assertEquals(props2.getNumPartitions(), bdbEntity1.getDftNumPartitions());
+        Assert.assertEquals(props2.getUnflushThreshold(), bdbEntity1.getDftUnflushThreshold());
+        Assert.assertEquals(props2.getUnflushInterval(), bdbEntity1.getDftUnflushInterval());
+        Assert.assertEquals(props2.getUnflushDataHold(), bdbEntity1.getDftUnFlushDataHold());
+        Assert.assertEquals(props2.getMemCacheMsgSizeInMB(), bdbEntity1.getDftMemCacheMsgSizeInMB());
+        Assert.assertEquals(props2.getMemCacheFlushIntvl(), bdbEntity1.getDftMemCacheFlushIntvl());
+        Assert.assertEquals(props2.getMemCacheMsgCntInK(), bdbEntity1.getDftMemCacheMsgCntInK());
+        Assert.assertEquals(props2.getAcceptPublish(), bdbEntity1.isAcceptPublish());
+        Assert.assertEquals(props2.getAcceptSubscribe(), bdbEntity1.isAcceptSubscribe());
+        Assert.assertEquals(props2.getDataStoreType(), bdbEntity1.getDataStoreType());
+        Assert.assertEquals(props2.getDataPath(), bdbEntity1.getDataPath());
+        Assert.assertEquals(props2.getDeletePolicy(), bdbEntity1.getDftDeletePolicy());
+        // check value
+        Assert.assertEquals(confEntity2.getDataVerId(), dataVerId1);
+        Assert.assertEquals(confEntity2.getBrokerId(), brokerId1);
+        Assert.assertEquals(confEntity2.getBrokerIp(), brokerIp1);
+        Assert.assertEquals(confEntity2.getBrokerPort(), brokerPort1);
+        Assert.assertEquals(confEntity2.getBrokerTLSPort(), brokerTLSPort1);
+        Assert.assertEquals(confEntity2.getBrokerWebPort(), brokerWebPort1);
+        Assert.assertEquals(confEntity2.getGroupId(), groupId1);
+        Assert.assertEquals(confEntity2.getManageStatus().getCode(), manageStatus1);
+        Assert.assertEquals(confEntity2.getRegionId(), regionId1);
+        Assert.assertEquals(props2.getNumTopicStores(), numTopicStores1);
+        Assert.assertEquals(props2.getNumPartitions(), numPartitions1);
+        Assert.assertEquals(props2.getUnflushThreshold(), unflushThreshold1);
+        Assert.assertEquals(props2.getUnflushInterval(), unflushInterval1);
+        Assert.assertEquals(props2.getUnflushDataHold(), unFlushDataHold1);
+        Assert.assertEquals(props2.getMemCacheMsgSizeInMB(), memCacheMsgSizeInMB1);
+        Assert.assertEquals(props2.getMemCacheFlushIntvl(), memCacheFlushIntvl1);
+        Assert.assertEquals(props2.getMemCacheMsgCntInK(), memCacheMsgCntInK1);
+        Assert.assertEquals(props2.getAcceptPublish(), acceptPublish1);
+        Assert.assertEquals(props2.getAcceptSubscribe(), acceptSubscribe1);
+        Assert.assertEquals(props2.getDataStoreType(), dataType1);
+        Assert.assertEquals(props2.getDataPath(), dataPath1);
+        Assert.assertEquals(props2.getDeletePolicy(), deletePolicy1);
+        Assert.assertEquals(confEntity2.getCreateUser(), createUser1);
+        Assert.assertEquals(confEntity2.getModifyUser(), modifyUser1);
+        Assert.assertEquals(confEntity2.getCreateDate(), createDate1);
+        Assert.assertEquals(confEntity2.getModifyDate(), modifyDate1);
         // case 3
-        BdbTopicAuthControlEntity bdbEntity3 =
-                ctrlEntity2.buildBdbTopicAuthControlEntity();
-        Assert.assertEquals(bdbEntity3.getTopicName(), ctrlEntity2.getTopicName());
-        Assert.assertEquals(bdbEntity3.getTopicId(), ctrlEntity2.getTopicId());
-        Assert.assertEquals(bdbEntity3.isEnableAuthControl(),
-                ctrlEntity2.getAuthCtrlStatus().isEnable());
-        Assert.assertEquals(bdbEntity3.getMaxMsgSize(), ctrlEntity2.getMaxMsgSizeInB());
-        Assert.assertEquals(bdbEntity3.getCreateUser(), ctrlEntity2.getModifyUser());
-        Assert.assertEquals(bdbEntity3.getCreateDate(), ctrlEntity2.getModifyDate());
-        Assert.assertEquals(bdbEntity3.getDataVerId(), ctrlEntity2.getDataVerId());
-        // case 4
-        TopicCtrlEntity ctrlEntity4 = new TopicCtrlEntity(bdbEntity3);
-        // check ctrlEntity4
-        Assert.assertTrue(ctrlEntity4.isDataEquals(ctrlEntity2));
-        Assert.assertEquals(ctrlEntity4.getTopicName(), ctrlEntity2.getTopicName());
-        Assert.assertEquals(ctrlEntity4.getTopicId(), ctrlEntity2.getTopicId());
-        Assert.assertEquals(ctrlEntity4.getAuthCtrlStatus(), ctrlEntity2.getAuthCtrlStatus());
-        Assert.assertEquals(ctrlEntity4.getMaxMsgSizeInB(), ctrlEntity2.getMaxMsgSizeInB());
-        Assert.assertEquals(ctrlEntity4.getCreateUser(), ctrlEntity2.getModifyUser());
-        Assert.assertEquals(ctrlEntity4.getCreateDate(), ctrlEntity2.getModifyDate());
-        Assert.assertEquals(ctrlEntity4.getDataVerId(), ctrlEntity2.getDataVerId());
+        long dataVerId3 = 777;
+        int brokerPort3 = 29;
+        int brokerTlsPort3 = 39;
+        int brokerWebPort3 = 49;
+        int regionId3 = 59;
+        int groupId3 = 69;
+        ManageStatus manageStatus3 = ManageStatus.STATUS_MANAGE_OFFLINE;
+        int numTopicStores3 = 1;
+        int numPartitions3 = 2;
+        int unflushThreshold3 = 3;
+        int unflushInterval3 = 4;
+        int unflushDataHold3 = 5;
+        int memCacheMsgSizeInMB3 = 6;
+        int memCacheMsgCntInK3 = 7;
+        int memCacheFlushIntvl3 = 8;
+        boolean acceptPublish3 = true;
+        boolean acceptSubscribe3 = false;
+        String deletePolicy3 = "delete,12h";
+        int dataStoreType3 = 9;
+        String dataPath3 = "testasest";
+        TopicPropGroup topicProps3 =
+                new TopicPropGroup(numTopicStores3, numPartitions3, unflushThreshold3,
+                        unflushInterval3, unflushDataHold3, memCacheMsgSizeInMB3,
+                        memCacheMsgCntInK3, memCacheFlushIntvl3, acceptPublish3,
+                        acceptSubscribe3, deletePolicy3, dataStoreType3, dataPath3);
+        BrokerConfEntity confEntity31 = confEntity2.clone();
+        Assert.assertTrue(confEntity31.isDataEquals(confEntity2));
+        Assert.assertTrue(confEntity31.updModifyInfo(dataVerId3, brokerPort3,
+                brokerTlsPort3, brokerWebPort3, regionId3, groupId3, manageStatus3, topicProps3));
+        BdbBrokerConfEntity bdbEntry3 =
+                confEntity31.buildBdbBrokerConfEntity();
+        BrokerConfEntity confEntity32 = new BrokerConfEntity(bdbEntry3);
+        Assert.assertTrue(confEntity32.isDataEquals(confEntity31));
+
+
     }
 
 }
diff --git a/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupConsumeCtrlEntityTest.java b/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupConsumeCtrlEntityTest.java
index 91ec3bc..aafacb2 100644
--- a/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupConsumeCtrlEntityTest.java
+++ b/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupConsumeCtrlEntityTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.tubemq.server.master.metamanage.metastore.dao.entity;
 
+import java.util.Calendar;
 import java.util.Date;
 import org.apache.tubemq.server.master.bdbstore.bdbentitys.BdbGroupFilterCondEntity;
 import org.junit.Assert;
@@ -59,8 +60,13 @@ public class GroupConsumeCtrlEntityTest {
         String disableRsn = "disable";
         boolean filterEnable = true;
         String newFilterCondStr = "[1,2,4]";
+        Date newDate = new Date();
+        Calendar c = Calendar.getInstance();
+        c.setTime(newDate);
+        c.add(Calendar.DAY_OF_MONTH, 1);
+        newDate = c.getTime();
         BaseEntity opInfoEntity =
-                new BaseEntity(newDataVerId, "modify", new Date());
+                new BaseEntity(newDataVerId, "modify", newDate);
         GroupConsumeCtrlEntity ctrlEntry2 = ctrlEntry1.clone();
         Assert.assertTrue(ctrlEntry2.isMatched(ctrlEntry1));
         ctrlEntry2.updBaseModifyInfo(opInfoEntity);
diff --git a/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicDeployEntityTest.java b/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicDeployEntityTest.java
new file mode 100644
index 0000000..70e733b
--- /dev/null
+++ b/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicDeployEntityTest.java
@@ -0,0 +1,161 @@
+/**
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * 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.tubemq.server.master.metamanage.metastore.dao.entity;
+
+import java.util.Date;
+
+import org.apache.tubemq.corebase.utils.KeyBuilderUtils;
+import org.apache.tubemq.server.common.statusdef.TopicStatus;
+import org.apache.tubemq.server.master.bdbstore.bdbentitys.BdbTopicConfEntity;
+import org.junit.Assert;
+import org.junit.Test;
+
+
+
+public class TopicDeployEntityTest {
+
+    @Test
+    public void topicDeployEntityTest() {
+        // case 1
+        int brokerId1 = 1;
+        String brokerIp1 = "127.0.0.1";
+        int brokerPort1 = 3;
+        String topicName1 = "test";
+        int numPartitions1 = 4;
+        int unflushThreshold1 = 5;
+        int unflushInterval1 = 6;
+        String deleteWhen1 = "";
+        String deletePolicy1 = "delete,9h";
+        boolean acceptPublish1 = false;
+        boolean acceptSubscribe1 = true;
+        int numTopicStores1 = 7;
+        String attributes1 = "key=val&aaa=bbb";
+        String createUser1 = "creater";
+        Date createDate1 = new Date();
+        String modifyUser1 = "modifyer";
+        Date modifyDate1 = new Date();
+        BdbTopicConfEntity bdbEntry1 =
+                new BdbTopicConfEntity(brokerId1, brokerIp1, brokerPort1, topicName1,
+                        numPartitions1, unflushThreshold1, unflushInterval1, deleteWhen1,
+                        deletePolicy1, acceptPublish1, acceptSubscribe1, numTopicStores1,
+                        attributes1, createUser1, createDate1, modifyUser1, modifyDate1);
+        TopicDeployEntity deployEntity1 = new TopicDeployEntity(bdbEntry1);
+        // check confEntity1
+        Assert.assertEquals(deployEntity1.getRecordKey(), bdbEntry1.getRecordKey());
+        Assert.assertEquals(deployEntity1.getBrokerId(), bdbEntry1.getBrokerId());
+        Assert.assertEquals(deployEntity1.getBrokerIp(), bdbEntry1.getBrokerIp());
+        Assert.assertEquals(deployEntity1.getBrokerPort(), bdbEntry1.getBrokerPort());
+        Assert.assertEquals(deployEntity1.getTopicName(), bdbEntry1.getTopicName());
+        Assert.assertEquals(deployEntity1.getTopicId(), bdbEntry1.getTopicId());
+        Assert.assertEquals(deployEntity1.getBrokerAddress(), bdbEntry1.getBrokerAddress());
+        Assert.assertEquals(deployEntity1.getDeployStatus().getCode(),
+                bdbEntry1.getTopicStatusId());
+        TopicPropGroup props1 = deployEntity1.getTopicProps();
+        Assert.assertEquals(props1.getNumTopicStores(), bdbEntry1.getNumTopicStores());
+        Assert.assertEquals(props1.getNumPartitions(), bdbEntry1.getNumPartitions());
+        Assert.assertEquals(props1.getUnflushThreshold(), bdbEntry1.getUnflushThreshold());
+        Assert.assertEquals(props1.getUnflushInterval(), bdbEntry1.getUnflushInterval());
+        Assert.assertEquals(props1.getUnflushDataHold(), bdbEntry1.getUnflushDataHold());
+        Assert.assertEquals(props1.getMemCacheMsgSizeInMB(), bdbEntry1.getMemCacheMsgSizeInMB());
+        Assert.assertEquals(props1.getMemCacheFlushIntvl(), bdbEntry1.getMemCacheFlushIntvl());
+        Assert.assertEquals(props1.getMemCacheMsgCntInK(), bdbEntry1.getMemCacheMsgCntInK());
+        Assert.assertEquals(props1.getAcceptPublish(), bdbEntry1.getAcceptPublish());
+        Assert.assertEquals(props1.getAcceptSubscribe(), bdbEntry1.getAcceptSubscribe());
+        Assert.assertEquals(props1.getDataStoreType(), bdbEntry1.getDataStoreType());
+        Assert.assertEquals(props1.getDataPath(), "");
+        Assert.assertEquals(props1.getDeletePolicy(), bdbEntry1.getDeletePolicy());
+        // case 2
+        int dataVerId2 = 25;
+        int topicNameId2 = 95;
+        int brokerPort2 = 33;
+        String brokerIp2 = "127.0.0.2";
+        TopicStatus deployStatus2 = TopicStatus.STATUS_TOPIC_HARD_REMOVE;
+        int numPartitions2 = 8;
+        int unflushThreshold2 = 2;
+        int unflushInterval2 = 5;
+        String deletePolicy2 = "delete,3h";
+        boolean acceptPublish2 = true;
+        boolean acceptSubscribe2 = false;
+        int numTopicStores2 = 3;
+        String attributes2 = "ay=val&aaa=bbb";
+        int dataStoreType2 = 5;
+        String dataPath2 = "aaa";
+        TopicPropGroup topicProps2 = props1.clone();
+        topicProps2.setNumTopicStores(numTopicStores2);
+        topicProps2.setNumPartitions(numPartitions2);
+        topicProps2.setUnflushThreshold(unflushThreshold2);
+        topicProps2.setUnflushInterval(unflushInterval2);
+        topicProps2.setAcceptPublish(acceptPublish2);
+        topicProps2.setAcceptSubscribe(acceptSubscribe2);
+        topicProps2.setDeletePolicy(deletePolicy2);
+        topicProps2.setDataStoreInfo(dataStoreType2, dataPath2);
+        TopicDeployEntity deployEntity2 = deployEntity1.clone();
+        Assert.assertTrue(deployEntity2.isMatched(deployEntity1));
+        Assert.assertTrue(deployEntity2.updModifyInfo(dataVerId2,
+                topicNameId2, brokerPort2, brokerIp2, deployStatus2, topicProps2));
+        TopicDeployEntity deployEntity31 = deployEntity2.clone();
+        BdbTopicConfEntity bdbEntry3 =
+                deployEntity31.buildBdbTopicConfEntity();
+        TopicDeployEntity deployEntity32 = new TopicDeployEntity(bdbEntry3);
+        Assert.assertTrue(deployEntity32.isDataEquals(deployEntity32));
+        // check value
+        Assert.assertEquals(deployEntity32.getRecordKey(), bdbEntry3.getRecordKey());
+        Assert.assertEquals(deployEntity32.getBrokerId(), bdbEntry3.getBrokerId());
+        Assert.assertEquals(deployEntity32.getBrokerIp(), bdbEntry3.getBrokerIp());
+        Assert.assertEquals(deployEntity32.getBrokerPort(), bdbEntry3.getBrokerPort());
+        Assert.assertEquals(deployEntity32.getTopicName(), bdbEntry3.getTopicName());
+        Assert.assertEquals(deployEntity32.getTopicId(), bdbEntry3.getTopicId());
+        Assert.assertEquals(deployEntity32.getBrokerAddress(), bdbEntry3.getBrokerAddress());
+        Assert.assertEquals(deployEntity32.getDeployStatus().getCode(),
+                bdbEntry3.getTopicStatusId());
+        TopicPropGroup props2 = deployEntity32.getTopicProps();
+        Assert.assertEquals(props2.getNumTopicStores(), bdbEntry3.getNumTopicStores());
+        Assert.assertEquals(props2.getNumPartitions(), bdbEntry3.getNumPartitions());
+        Assert.assertEquals(props2.getUnflushThreshold(), bdbEntry3.getUnflushThreshold());
+        Assert.assertEquals(props2.getUnflushInterval(), bdbEntry3.getUnflushInterval());
+        Assert.assertEquals(props2.getUnflushDataHold(), bdbEntry3.getUnflushDataHold());
+        Assert.assertEquals(props2.getMemCacheMsgSizeInMB(), bdbEntry3.getMemCacheMsgSizeInMB());
+        Assert.assertEquals(props2.getMemCacheFlushIntvl(), bdbEntry3.getMemCacheFlushIntvl());
+        Assert.assertEquals(props2.getMemCacheMsgCntInK(), bdbEntry3.getMemCacheMsgCntInK());
+        Assert.assertEquals(props2.getAcceptPublish(), bdbEntry3.getAcceptPublish());
+        Assert.assertEquals(props2.getAcceptSubscribe(), bdbEntry3.getAcceptSubscribe());
+        Assert.assertEquals(props2.getDataStoreType(), bdbEntry3.getDataStoreType());
+        Assert.assertEquals(props2.getDataPath(), bdbEntry3.getDataPath());
+        Assert.assertEquals(props2.getDeletePolicy(), bdbEntry3.getDeletePolicy());
+        //
+        Assert.assertEquals(deployEntity32.getDataVerId(), dataVerId2);
+        Assert.assertEquals(deployEntity32.getBrokerId(), brokerId1);
+        Assert.assertEquals(deployEntity32.getBrokerIp(), brokerIp2);
+        Assert.assertEquals(deployEntity32.getBrokerPort(), brokerPort2);
+        Assert.assertEquals(deployEntity32.getTopicName(), topicName1);
+        Assert.assertEquals(deployEntity32.getTopicId(), topicNameId2);
+        Assert.assertEquals(deployEntity32.getBrokerAddress(),
+                KeyBuilderUtils.buildAddressInfo(brokerIp2, brokerPort2));
+        Assert.assertEquals(deployEntity32.getDeployStatus(), deployStatus2);
+        Assert.assertEquals(props2.getNumTopicStores(), numTopicStores2);
+        Assert.assertEquals(props2.getNumPartitions(), numPartitions2);
+        Assert.assertEquals(props2.getUnflushThreshold(), unflushThreshold2);
+        Assert.assertEquals(props2.getUnflushInterval(), unflushInterval2);
+        Assert.assertEquals(props2.getAcceptPublish(), acceptPublish2);
+        Assert.assertEquals(props2.getAcceptSubscribe(), acceptSubscribe2);
+        Assert.assertEquals(props2.getDataStoreType(), dataStoreType2);
+        Assert.assertEquals(props2.getDataPath(), dataPath2);
+        Assert.assertEquals(props2.getDeletePolicy(), deletePolicy2);
+    }
+
+}

[incubator-inlong] 01/05: [INLONG-618] Add unit tests for metastore.dao.entity.*

Posted by go...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gosonzhang pushed a commit to branch TUBEMQ-570
in repository https://gitbox.apache.org/repos/asf/incubator-inlong.git

commit f9f1c273d2d53bf2a63f8136ac75b657dd2a6e46
Author: gosonzhang <go...@tencent.com>
AuthorDate: Wed May 26 12:27:22 2021 +0800

    [INLONG-618] Add unit tests for metastore.dao.entity.*
---
 .../tubemq/corebase/utils/SettingValidUtils.java   |  13 ++
 .../{CuPolType.java => CleanPolType.java}          |  10 +-
 .../server/common/statusdef/EnableStatus.java      |   2 +-
 .../server/master/metamanage/MetaDataManager.java  |  59 -------
 .../metastore/dao/entity/BaseEntity.java           |  45 +----
 .../metastore/dao/entity/BrokerConfEntity.java     |  26 ---
 .../metastore/dao/entity/ClusterSettingEntity.java |  22 ++-
 .../dao/entity/GroupConsumeCtrlEntity.java         |  24 +--
 .../metastore/dao/entity/GroupResCtrlEntity.java   |  29 +---
 .../metastore/dao/entity/TopicCtrlEntity.java      |  45 ++---
 .../metastore/dao/entity/TopicDeployEntity.java    |  15 --
 .../metastore/dao/entity/TopicPropGroup.java       |  24 +--
 .../metastore/dao/entity/BaseEntityTest.java       | 156 +++++++++++++++++
 .../metastore/dao/entity/BrokerConfEntityTest.java | 120 +++++++++++++
 .../dao/entity/ClusterSettingEntityTest.java       | 185 +++++++++++++++++++++
 .../dao/entity/GroupConsumeCtrlEntityTest.java     |  90 ++++++++++
 .../dao/entity/GroupResCtrlEntityTest.java         | 129 ++++++++++++++
 .../metastore/dao/entity/TopicCtrlEntityTest.java  | 119 +++++++++++++
 .../metastore/dao/entity/TopicPropGroupTest.java   | 156 +++++++++++++++++
 19 files changed, 1036 insertions(+), 233 deletions(-)

diff --git a/tubemq-core/src/main/java/org/apache/tubemq/corebase/utils/SettingValidUtils.java b/tubemq-core/src/main/java/org/apache/tubemq/corebase/utils/SettingValidUtils.java
index e748ba4..18a5d2b 100644
--- a/tubemq-core/src/main/java/org/apache/tubemq/corebase/utils/SettingValidUtils.java
+++ b/tubemq-core/src/main/java/org/apache/tubemq/corebase/utils/SettingValidUtils.java
@@ -23,6 +23,19 @@ import org.apache.tubemq.corebase.TBaseConstants;
 public class SettingValidUtils {
 
 
+    public static int validAndGetMsgSizeInMB(int inMaxMsgSizeInMB) {
+        return MixedUtils.mid(inMaxMsgSizeInMB,
+                TBaseConstants.META_MIN_ALLOWED_MESSAGE_SIZE_MB,
+                TBaseConstants.META_MAX_ALLOWED_MESSAGE_SIZE_MB);
+    }
+
+    public static int validAndGetMsgSizeBtoMB(int inMaxMsgSizeInB) {
+        return MixedUtils.mid(inMaxMsgSizeInB,
+                TBaseConstants.META_MAX_MESSAGE_DATA_SIZE,
+                TBaseConstants.META_MAX_MESSAGE_DATA_SIZE_UPPER_LIMIT)
+                / TBaseConstants.META_MB_UNIT_SIZE;
+    }
+
     public static int validAndXfeMaxMsgSizeFromMBtoB(int inMaxMsgSizeInMB) {
         return MixedUtils.mid(inMaxMsgSizeInMB,
                 TBaseConstants.META_MIN_ALLOWED_MESSAGE_SIZE_MB,
diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/common/statusdef/CuPolType.java b/tubemq-server/src/main/java/org/apache/tubemq/server/common/statusdef/CleanPolType.java
similarity index 82%
rename from tubemq-server/src/main/java/org/apache/tubemq/server/common/statusdef/CuPolType.java
rename to tubemq-server/src/main/java/org/apache/tubemq/server/common/statusdef/CleanPolType.java
index b6ab79f..8f9a6e4 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/common/statusdef/CuPolType.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/common/statusdef/CleanPolType.java
@@ -18,14 +18,14 @@
 package org.apache.tubemq.server.common.statusdef;
 
 
-public enum CuPolType {
-    CU_POL_DELETE(0, "Delete");
+public enum CleanPolType {
+    CLEAN_POL_DELETE(0, "Delete");
 
     private int code;
     private String description;
 
 
-    CuPolType(int code, String description) {
+    CleanPolType(int code, String description) {
         this.code = code;
         this.description = description;
     }
@@ -35,8 +35,8 @@ public enum CuPolType {
     }
 
 
-    public static CuPolType valueOf(int code) {
-        for (CuPolType status : CuPolType.values()) {
+    public static CleanPolType valueOf(int code) {
+        for (CleanPolType status : CleanPolType.values()) {
             if (status.getCode() == code) {
                 return status;
             }
diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/common/statusdef/EnableStatus.java b/tubemq-server/src/main/java/org/apache/tubemq/server/common/statusdef/EnableStatus.java
index b158572..7ef6bc3 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/common/statusdef/EnableStatus.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/common/statusdef/EnableStatus.java
@@ -21,7 +21,7 @@ package org.apache.tubemq.server.common.statusdef;
 public enum EnableStatus {
     STATUS_UNDEFINE(-2, "Undefined."),
     STATUS_DISABLE(0, "Disable."),
-    STATUS_ENABLE(1, "Enable.");
+    STATUS_ENABLE(2, "Enable.");
 
     private int code;
     private String description;
diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/MetaDataManager.java b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/MetaDataManager.java
index 9d9ed13..e6ee213 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/MetaDataManager.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/MetaDataManager.java
@@ -1453,65 +1453,6 @@ public class MetaDataManager implements Server {
         return result.isSuccess();
     }
 
-
-    /**
-     * Add if absent topic control configure info
-     *
-     * @param deployEntity  the topic deploy info will be add
-     * @param strBuffer     the print info string buffer
-     * @param result        the process result return
-     * @return true if success otherwise false
-     */
-    public void addIfAbsentTopicCtrlConf(TopicDeployEntity deployEntity,
-                                         StringBuilder strBuffer,
-                                         ProcessResult result) {
-        TopicCtrlEntity curEntity =
-                metaStoreService.getTopicCtrlConf(deployEntity.getTopicName());
-        if (curEntity != null) {
-            return;
-        }
-        int maxMsgSizeInMB = TBaseConstants.META_MIN_ALLOWED_MESSAGE_SIZE_MB;
-        ClusterSettingEntity defSetting = metaStoreService.getClusterConfig();
-        if (defSetting != null) {
-            maxMsgSizeInMB = defSetting.getMaxMsgSizeInMB();
-        }
-        curEntity = new TopicCtrlEntity(deployEntity.getTopicName(),
-                deployEntity.getTopicId(), maxMsgSizeInMB, deployEntity.getCreateUser());
-        metaStoreService.addTopicCtrlConf(curEntity, strBuffer, result);
-        return;
-    }
-
-    /**
-     * Add if absent topic control configure info
-     *
-     * @param topicNameSet  the topic name will be add
-     * @param operator the topic name id will be add
-     * @param operator   operator
-     * @param sBuffer  the print info string buffer
-     */
-    public boolean addIfAbsentTopicCtrlConf(Set<String> topicNameSet, String operator,
-                                            StringBuilder sBuffer, ProcessResult result) {
-        TopicCtrlEntity curEntity;
-        int maxMsgSizeInMB = TBaseConstants.META_MIN_ALLOWED_MESSAGE_SIZE_MB;
-        ClusterSettingEntity defSetting = metaStoreService.getClusterConfig();
-        if (defSetting != null) {
-            maxMsgSizeInMB = defSetting.getMaxMsgSizeInMB();
-        }
-        for (String topicName : topicNameSet) {
-            curEntity = metaStoreService.getTopicCtrlConf(topicName);
-            if (curEntity != null) {
-                continue;
-            }
-            curEntity = new TopicCtrlEntity(topicName,
-                    TBaseConstants.META_VALUE_UNDEFINED, maxMsgSizeInMB, operator);
-            if (!metaStoreService.addTopicCtrlConf(curEntity, sBuffer, result)) {
-                return result.isSuccess();
-            }
-        }
-        result.setSuccResult(null);
-        return result.isSuccess();
-    }
-
     /**
      * Add if absent topic control configure info
      *
diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BaseEntity.java b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BaseEntity.java
index 6ee733a..9cf1853 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BaseEntity.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BaseEntity.java
@@ -46,10 +46,6 @@ public class BaseEntity implements Serializable, Cloneable {
 
     }
 
-    public BaseEntity(long dataVersionId) {
-        this.dataVersionId = dataVersionId;
-    }
-
     public BaseEntity(String createUser, Date createDate) {
         this(TServerConstants.DEFAULT_DATA_VERSION,
                 createUser, createDate, createUser, createDate);
@@ -61,6 +57,8 @@ public class BaseEntity implements Serializable, Cloneable {
         this.setCreateDate(other.createDate);
         this.modifyUser = other.modifyUser;
         this.setModifyDate(other.modifyDate);
+        this.serialId = other.serialId;
+        this.attributes = other.attributes;
     }
 
     public BaseEntity(long dataVersionId, String createUser, Date createDate) {
@@ -81,6 +79,7 @@ public class BaseEntity implements Serializable, Cloneable {
         this.setCreateDate(createDate);
         this.modifyUser = modifyUser;
         this.setModifyDate(modifyDate);
+        updSerialId();
     }
 
     public boolean updBaseModifyInfo(BaseEntity opInfoEntity) {
@@ -126,44 +125,6 @@ public class BaseEntity implements Serializable, Cloneable {
         return changed;
     }
 
-    public boolean updBaseModifyInfo(long newDataVerId, String newCreateUser,
-                                     Date newCreateDate, String newModifyUser,
-                                     Date newModifyDate, String newAttributes) {
-        boolean changed = false;
-        // check and set dataVersionId field
-        if (newDataVerId != TBaseConstants.META_VALUE_UNDEFINED
-                && this.dataVersionId != newDataVerId) {
-            changed = true;
-            this.dataVersionId = newDataVerId;
-        }
-        if (TStringUtils.isNotBlank(newCreateUser)
-                && !Objects.equals(createUser, newCreateUser)) {
-            changed = true;
-            this.createUser = newCreateUser;
-        }
-        if (newCreateDate != null
-                && !Objects.equals(createDate, newCreateDate)) {
-            changed = true;
-            this.setCreateDate(newCreateDate);
-        }
-        if (TStringUtils.isNotBlank(newModifyUser)
-                && !Objects.equals(modifyUser, newModifyUser)) {
-            changed = true;
-            this.modifyUser = newModifyUser;
-        }
-        if (newModifyDate != null
-                && !Objects.equals(modifyDate, newModifyDate)) {
-            changed = true;
-            this.setModifyDate(newModifyDate);
-        }
-        if (TStringUtils.isNotBlank(newAttributes)
-                && !Objects.equals(attributes, newAttributes)) {
-            changed = true;
-            this.attributes = newAttributes;
-        }
-        return changed;
-    }
-
     public void setDataVersionId(long dataVersionId) {
         this.dataVersionId = dataVersionId;
     }
diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BrokerConfEntity.java b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BrokerConfEntity.java
index 5dfa7f0..05216b1 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BrokerConfEntity.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BrokerConfEntity.java
@@ -17,7 +17,6 @@
 
 package org.apache.tubemq.server.master.metamanage.metastore.dao.entity;
 
-import java.util.Date;
 import java.util.Objects;
 import org.apache.tubemq.corebase.TBaseConstants;
 import org.apache.tubemq.corebase.TokenConstants;
@@ -63,20 +62,6 @@ public class BrokerConfEntity extends BaseEntity implements Cloneable {
         this.brokerIp = brokerIp;
     }
 
-    public BrokerConfEntity(int brokerId, String brokerIp, int brokerPort,
-                            int brokerTLSPort, int brokerWebPort, ManageStatus manageStatus,
-                            int regionId, int groupId, TopicPropGroup defTopicProps,
-                            long dataVersionId, String createUser,
-                            Date createDate, String modifyUser, Date modifyDate) {
-        super(dataVersionId, createUser, createDate, modifyUser, modifyDate);
-        setBrokerIpAndAllPort(brokerId, brokerIp, brokerPort, brokerTLSPort);
-        this.regionId = regionId;
-        this.groupId = groupId;
-        this.brokerWebPort = brokerWebPort;
-        this.topicProps = defTopicProps;
-        this.manageStatus = manageStatus;
-    }
-
     public BrokerConfEntity(BdbBrokerConfEntity bdbEntity) {
         super(bdbEntity.getDataVerId(), bdbEntity.getRecordCreateUser(),
                 bdbEntity.getRecordCreateDate(), bdbEntity.getRecordModifyUser(),
@@ -129,11 +114,6 @@ public class BrokerConfEntity extends BaseEntity implements Cloneable {
         this.brokerId = brokerId;
     }
 
-    public void setBrokerIdAndIp(int brokerId, String brokerIp) {
-        this.brokerId = brokerId;
-        this.brokerIp = brokerIp;
-    }
-
     public ManageStatus getManageStatus() {
         return manageStatus;
     }
@@ -146,12 +126,6 @@ public class BrokerConfEntity extends BaseEntity implements Cloneable {
         this.manageStatus = manageStatus;
     }
 
-    public void setBrokerIpAndPort(String brokerIp, int brokerPort) {
-        this.brokerPort = brokerPort;
-        this.brokerIp = brokerIp;
-        this.buildStrInfo();
-    }
-
     public String getBrokerAddress() {
         return brokerAddress;
     }
diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/ClusterSettingEntity.java b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/ClusterSettingEntity.java
index fb70bb0..151ff7e 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/ClusterSettingEntity.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/ClusterSettingEntity.java
@@ -96,11 +96,15 @@ public class ClusterSettingEntity extends BaseEntity implements Cloneable {
                         clsDefTopicProps.isAcceptSubscribe(), clsDefTopicProps.getDeletePolicy(),
                         this.qryPriorityId, this.maxMsgSizeInB, getAttributes(),
                         getModifyUser(), getModifyDate());
-        bdbEntity.setDefDataPath(clsDefTopicProps.getDataPath());
+        if (TStringUtils.isNotBlank(clsDefTopicProps.getDataPath())) {
+            bdbEntity.setDefDataPath(clsDefTopicProps.getDataPath());
+        }
         bdbEntity.setDefDataType(clsDefTopicProps.getDataStoreType());
         bdbEntity.setEnableGloFlowCtrl(enableFlowCtrl());
         bdbEntity.setGloFlowCtrlCnt(gloFlowCtrlRuleCnt);
-        bdbEntity.setGloFlowCtrlInfo(gloFlowCtrlRuleInfo);
+        if (TStringUtils.isNotBlank(gloFlowCtrlRuleInfo)) {
+            bdbEntity.setGloFlowCtrlInfo(gloFlowCtrlRuleInfo);
+        }
         return bdbEntity;
     }
 
@@ -158,12 +162,13 @@ public class ClusterSettingEntity extends BaseEntity implements Cloneable {
         }
         // check and set modified field
         if (maxMsgSizeMB != TBaseConstants.META_VALUE_UNDEFINED) {
-            int newMaxMsgSizeB =
-                    SettingValidUtils.validAndXfeMaxMsgSizeFromMBtoB(maxMsgSizeMB);
-            if (this.maxMsgSizeInB != newMaxMsgSizeB) {
+            int tmpMaxMsgSizeInMB =
+                    SettingValidUtils.validAndGetMsgSizeInMB(maxMsgSizeMB);
+            if (this.maxMsgSizeInMB != tmpMaxMsgSizeInMB) {
                 changed = true;
-                this.maxMsgSizeInB = newMaxMsgSizeB;
-                this.maxMsgSizeInMB = maxMsgSizeMB;
+                this.maxMsgSizeInMB = tmpMaxMsgSizeInMB;
+                this.maxMsgSizeInB =
+                        SettingValidUtils.validAndXfeMaxMsgSizeFromMBtoB(tmpMaxMsgSizeInMB);
             }
         }
         // check and set qry priority id
@@ -174,7 +179,8 @@ public class ClusterSettingEntity extends BaseEntity implements Cloneable {
         }
         // check and set flowCtrl info
         if (flowCtrlEnable != null
-                && this.gloFlowCtrlStatus.isEnable() != flowCtrlEnable) {
+                && (this.gloFlowCtrlStatus == EnableStatus.STATUS_UNDEFINE
+                || this.gloFlowCtrlStatus.isEnable() != flowCtrlEnable)) {
             changed = true;
             setEnableFlowCtrl(flowCtrlEnable);
         }
diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupConsumeCtrlEntity.java b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupConsumeCtrlEntity.java
index 1e7a3b9..b125257 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupConsumeCtrlEntity.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupConsumeCtrlEntity.java
@@ -17,9 +17,7 @@
 
 package org.apache.tubemq.server.master.metamanage.metastore.dao.entity;
 
-import java.util.Date;
 import java.util.Objects;
-
 import org.apache.tubemq.corebase.TBaseConstants;
 import org.apache.tubemq.corebase.utils.KeyBuilderUtils;
 import org.apache.tubemq.corebase.utils.TStringUtils;
@@ -54,20 +52,6 @@ public class GroupConsumeCtrlEntity extends BaseEntity implements Cloneable {
         this.topicName = topicName;
     }
 
-    public GroupConsumeCtrlEntity(String groupName, String topicName,
-                                  EnableStatus consumeEnable,
-                                  String disableReason,
-                                  EnableStatus filterEnable,
-                                  String filterCondStr, String createUser,
-                                  Date createDate) {
-        super(createUser, createDate);
-        this.setGroupAndTopic(groupName, topicName);
-        this.consumeEnable = consumeEnable;
-        this.disableReason = disableReason;
-        this.filterEnable = filterEnable;
-        this.filterCondStr = filterCondStr;
-    }
-
     public GroupConsumeCtrlEntity(BdbGroupFilterCondEntity bdbEntity) {
         super(bdbEntity.getDataVerId(),
                 bdbEntity.getCreateUser(), bdbEntity.getCreateDate());
@@ -89,7 +73,7 @@ public class GroupConsumeCtrlEntity extends BaseEntity implements Cloneable {
         BdbGroupFilterCondEntity bdbEntity =
                 new BdbGroupFilterCondEntity(topicName, groupName,
                         filterEnable.getCode(), filterCondStr,
-                        getAttributes(), getCreateUser(), getCreateDate());
+                        getAttributes(), getModifyUser(), getModifyDate());
         bdbEntity.setDataVerId(getDataVerId());
         bdbEntity.setConsumeEnable(consumeEnable);
         bdbEntity.setDisableConsumeReason(disableReason);
@@ -187,7 +171,8 @@ public class GroupConsumeCtrlEntity extends BaseEntity implements Cloneable {
         }
         // check and set consumeEnable info
         if (consumeEnable != null
-                && this.consumeEnable.isEnable() != consumeEnable) {
+                && (this.consumeEnable == EnableStatus.STATUS_UNDEFINE
+                || this.consumeEnable.isEnable() != consumeEnable)) {
             changed = true;
             setConsumeEnable(consumeEnable);
         }
@@ -199,7 +184,8 @@ public class GroupConsumeCtrlEntity extends BaseEntity implements Cloneable {
         }
         // check and set consumeEnable info
         if (filterEnable != null
-                && this.filterEnable.isEnable() != filterEnable) {
+                && (this.filterEnable == EnableStatus.STATUS_UNDEFINE
+                || this.filterEnable.isEnable() != filterEnable)) {
             changed = true;
             setFilterEnable(filterEnable);
         }
diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupResCtrlEntity.java b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupResCtrlEntity.java
index 35f9b96..69c280c 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupResCtrlEntity.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupResCtrlEntity.java
@@ -17,7 +17,6 @@
 
 package org.apache.tubemq.server.master.metamanage.metastore.dao.entity;
 
-import java.util.Date;
 import java.util.Objects;
 import org.apache.tubemq.corebase.TBaseConstants;
 import org.apache.tubemq.corebase.utils.TStringUtils;
@@ -43,6 +42,7 @@ public class GroupResCtrlEntity extends BaseEntity implements Cloneable {
     private String flowCtrlInfo = "";  // flow control info
 
 
+    // only for query
     public GroupResCtrlEntity() {
         super();
     }
@@ -52,22 +52,6 @@ public class GroupResCtrlEntity extends BaseEntity implements Cloneable {
         this.groupName = groupName;
     }
 
-    public GroupResCtrlEntity(String groupName, int qryPriorityId,
-                              boolean enableFlowCtrl, int ruleCnt,
-                              String flowCtrlInfo, String createUser,
-                              Date createDate) {
-        super(createUser, createDate);
-        this.groupName = groupName;
-        if (enableFlowCtrl) {
-            this.flowCtrlStatus = EnableStatus.STATUS_ENABLE;
-        } else {
-            this.flowCtrlStatus = EnableStatus.STATUS_DISABLE;
-        }
-        this.qryPriorityId = qryPriorityId;
-        this.ruleCnt = ruleCnt;
-        this.flowCtrlInfo = flowCtrlInfo;
-    }
-
     public GroupResCtrlEntity(BdbGroupFlowCtrlEntity bdbEntity) {
         super(bdbEntity.getSerialId(),
                 bdbEntity.getCreateUser(), bdbEntity.getCreateDate());
@@ -80,6 +64,8 @@ public class GroupResCtrlEntity extends BaseEntity implements Cloneable {
         } else {
             this.flowCtrlStatus = EnableStatus.STATUS_DISABLE;
         }
+        this.resCheckStatus = bdbEntity.getResCheckStatus();
+        this.allowedBrokerClientRate = bdbEntity.getAllowedBrokerClientRate();
         setAttributes(bdbEntity.getAttributes());
     }
 
@@ -89,7 +75,7 @@ public class GroupResCtrlEntity extends BaseEntity implements Cloneable {
         BdbGroupFlowCtrlEntity bdbEntity =
                 new BdbGroupFlowCtrlEntity(getDataVerId(), this.groupName,
                         this.flowCtrlInfo, statusId, this.ruleCnt, this.qryPriorityId,
-                        getAttributes(), getCreateUser(), getCreateDate());
+                        getAttributes(), getModifyUser(), getModifyDate());
         bdbEntity.setResCheckStatus(resCheckStatus);
         bdbEntity.setAllowedBrokerClientRate(allowedBrokerClientRate);
         return bdbEntity;
@@ -105,6 +91,7 @@ public class GroupResCtrlEntity extends BaseEntity implements Cloneable {
         this.allowedBrokerClientRate = 0;
         this.qryPriorityId = TServerConstants.QRY_PRIORITY_DEF_VALUE;
         this.flowCtrlStatus = EnableStatus.STATUS_DISABLE;
+        this.ruleCnt = 0;
         this.flowCtrlInfo = TServerConstants.BLANK_FLOWCTRL_RULES;
         return this;
     }
@@ -205,7 +192,8 @@ public class GroupResCtrlEntity extends BaseEntity implements Cloneable {
         }
         // check and set resCheckStatus info
         if (resChkEnable != null
-                && this.resCheckStatus.isEnable() != resChkEnable) {
+                && (this.resCheckStatus == EnableStatus.STATUS_UNDEFINE
+                || this.resCheckStatus.isEnable() != resChkEnable)) {
             changed = true;
             setResCheckStatus(resChkEnable);
         }
@@ -223,7 +211,8 @@ public class GroupResCtrlEntity extends BaseEntity implements Cloneable {
         }
         // check and set flowCtrl info
         if (flowCtrlEnable != null
-                && this.flowCtrlStatus.isEnable() != flowCtrlEnable) {
+                && (this.flowCtrlStatus == EnableStatus.STATUS_UNDEFINE
+                || this.flowCtrlStatus.isEnable() != flowCtrlEnable)) {
             changed = true;
             setFlowCtrlStatus(flowCtrlEnable);
         }
diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicCtrlEntity.java b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicCtrlEntity.java
index 61e148b..0ea8559 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicCtrlEntity.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicCtrlEntity.java
@@ -61,27 +61,12 @@ public class TopicCtrlEntity extends BaseEntity implements Cloneable {
         this.topicName = topicName;
     }
 
-    public TopicCtrlEntity(String topicName, int topicNameId,
-                           boolean enableAuth, int maxMsgSizeInB,
-                           long dataVersionId, String createUser,
-                           Date createDate, String modifyUser, Date modifyDate) {
-        super(dataVersionId, createUser, createDate, modifyUser, modifyDate);
-        this.topicName = topicName;
-        this.topicNameId = topicNameId;
-        this.fillMaxMsgSize(maxMsgSizeInB);
-        if (enableAuth) {
-            this.authCtrlStatus = EnableStatus.STATUS_ENABLE;
-        } else {
-            this.authCtrlStatus = EnableStatus.STATUS_DISABLE;
-        }
-    }
-
     public TopicCtrlEntity(BdbTopicAuthControlEntity bdbEntity) {
         super(bdbEntity.getDataVerId(),
                 bdbEntity.getCreateUser(), bdbEntity.getCreateDate());
         this.topicName = bdbEntity.getTopicName();
         this.topicNameId = bdbEntity.getTopicId();
-        this.fillMaxMsgSize(maxMsgSizeInB);
+        this.fillMaxMsgSizeInB(bdbEntity.getMaxMsgSize());
         if (bdbEntity.isEnableAuthControl()) {
             this.authCtrlStatus = EnableStatus.STATUS_ENABLE;
         } else {
@@ -93,7 +78,7 @@ public class TopicCtrlEntity extends BaseEntity implements Cloneable {
     public BdbTopicAuthControlEntity buildBdbTopicAuthControlEntity() {
         BdbTopicAuthControlEntity bdbEntity =
                 new BdbTopicAuthControlEntity(topicName, isAuthCtrlEnable(),
-                        getAttributes(), getCreateUser(), getCreateDate());
+                        getAttributes(), getModifyUser(), getModifyDate());
         bdbEntity.setTopicId(topicNameId);
         bdbEntity.setDataVerId(getDataVerId());
         bdbEntity.setMaxMsgSize(maxMsgSizeInB);
@@ -166,17 +151,19 @@ public class TopicCtrlEntity extends BaseEntity implements Cloneable {
         }
         // check and set modified field
         if (newMaxMsgSizeMB != TBaseConstants.META_VALUE_UNDEFINED) {
-            int newMaxMsgSizeB =
-                    SettingValidUtils.validAndXfeMaxMsgSizeFromMBtoB(newMaxMsgSizeMB);
-            if (this.maxMsgSizeInB != newMaxMsgSizeB) {
+            int tmpMaxMsgSizeInMB =
+                    SettingValidUtils.validAndGetMsgSizeInMB(newMaxMsgSizeMB);
+            if (this.maxMsgSizeInMB != tmpMaxMsgSizeInMB) {
                 changed = true;
-                this.maxMsgSizeInB = newMaxMsgSizeB;
-                this.maxMsgSizeInMB = newMaxMsgSizeMB;
+                this.maxMsgSizeInMB = tmpMaxMsgSizeInMB;
+                this.maxMsgSizeInB =
+                        SettingValidUtils.validAndXfeMaxMsgSizeFromMBtoB(tmpMaxMsgSizeInMB);
             }
         }
         // check and set authCtrlStatus info
         if (enableTopicAuth != null
-                && this.authCtrlStatus.isEnable() != enableTopicAuth) {
+                && (this.authCtrlStatus == EnableStatus.STATUS_UNDEFINE
+                || this.authCtrlStatus.isEnable() != enableTopicAuth)) {
             setEnableAuthCtrl(enableTopicAuth);
             changed = true;
         }
@@ -241,10 +228,14 @@ public class TopicCtrlEntity extends BaseEntity implements Cloneable {
         return sBuilder;
     }
 
-    private void fillMaxMsgSize(int maxMsgSizeInB) {
-        this.maxMsgSizeInB = maxMsgSizeInB;
-        this.maxMsgSizeInMB =
-                maxMsgSizeInB / TBaseConstants.META_MB_UNIT_SIZE;
+    private void fillMaxMsgSizeInB(int maxMsgSizeInB) {
+        int tmpMaxMsgSizeInMB = TBaseConstants.META_MIN_ALLOWED_MESSAGE_SIZE_MB;
+        if (maxMsgSizeInB > TBaseConstants.META_MB_UNIT_SIZE) {
+            tmpMaxMsgSizeInMB = SettingValidUtils.validAndGetMsgSizeBtoMB(maxMsgSizeInB);
+        }
+        this.maxMsgSizeInMB = tmpMaxMsgSizeInMB;
+        this.maxMsgSizeInB =
+                SettingValidUtils.validAndXfeMaxMsgSizeFromMBtoB(this.maxMsgSizeInMB);
     }
 
     /**
diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicDeployEntity.java b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicDeployEntity.java
index 9c1a678..8f79fc8 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicDeployEntity.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicDeployEntity.java
@@ -17,7 +17,6 @@
 
 package org.apache.tubemq.server.master.metamanage.metastore.dao.entity;
 
-import java.util.Date;
 import java.util.Objects;
 import org.apache.tubemq.corebase.TBaseConstants;
 import org.apache.tubemq.corebase.utils.KeyBuilderUtils;
@@ -54,20 +53,6 @@ public class TopicDeployEntity extends BaseEntity implements Cloneable {
         this.recordKey = KeyBuilderUtils.buildTopicConfRecKey(brokerId, topicName);
     }
 
-    public TopicDeployEntity(String topicName, int topicId, int brokerId,
-                             String brokerIp, int brokerPort,
-                             TopicPropGroup topicProps, TopicStatus deployStatus,
-                             long dataVersionId, String createUser,
-                             Date createDate, String modifyUser, Date modifyDate) {
-        super(dataVersionId, createUser, createDate, modifyUser, modifyDate);
-        setTopicDeployInfo(brokerId, brokerIp, brokerPort, topicName);
-        this.topicNameId = topicId;
-        this.deployStatus = deployStatus;
-        this.topicProps = topicProps;
-        this.brokerAddress = KeyBuilderUtils.buildAddressInfo(brokerIp, brokerPort);
-
-    }
-
     public TopicDeployEntity(BdbTopicConfEntity bdbEntity) {
         super(bdbEntity.getDataVerId(),
                 bdbEntity.getCreateUser(), bdbEntity.getCreateDate(),
diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicPropGroup.java b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicPropGroup.java
index 63c7eaa..27db4f9 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicPropGroup.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicPropGroup.java
@@ -24,7 +24,7 @@ import org.apache.tubemq.corebase.TBaseConstants;
 import org.apache.tubemq.corebase.utils.TStringUtils;
 import org.apache.tubemq.corebase.utils.Tuple2;
 import org.apache.tubemq.server.common.TServerConstants;
-import org.apache.tubemq.server.common.statusdef.CuPolType;
+import org.apache.tubemq.server.common.statusdef.CleanPolType;
 
 
 /*
@@ -47,7 +47,7 @@ public class TopicPropGroup implements Serializable, Cloneable {
     private String dataPath = "";   //data path
     private String deletePolicy = "";        // delete policy
     // Retention period, unit ms
-    private CuPolType fileCuPolicyType = CuPolType.CU_POL_DELETE;
+    private CleanPolType cleanPolicyType = CleanPolType.CLEAN_POL_DELETE;
     private long retPeriodInMs = TBaseConstants.META_VALUE_UNDEFINED;
 
     public TopicPropGroup() {
@@ -72,7 +72,9 @@ public class TopicPropGroup implements Serializable, Cloneable {
         this.acceptSubscribe = acceptSubscribe;
         setDeletePolicy(deletePolicy);
         this.dataStoreType = dataStoreType;
-        this.dataPath = dataPath;
+        if (dataPath != null) {
+            this.dataPath = dataPath;
+        }
     }
 
     public int getNumTopicStores() {
@@ -165,8 +167,8 @@ public class TopicPropGroup implements Serializable, Cloneable {
     public void setDeletePolicy(String deletePolicy) {
         if (TStringUtils.isNotBlank(deletePolicy)) {
             this.deletePolicy = deletePolicy;
-            Tuple2<CuPolType, Long> parsedRet = parseDelPolicy(deletePolicy);
-            this.fileCuPolicyType = parsedRet.getF0();
+            Tuple2<CleanPolType, Long> parsedRet = parseDelPolicy(deletePolicy);
+            this.cleanPolicyType = parsedRet.getF0();
             this.retPeriodInMs = parsedRet.getF1();
         }
     }
@@ -179,8 +181,8 @@ public class TopicPropGroup implements Serializable, Cloneable {
         return retPeriodInMs;
     }
 
-    public CuPolType getFileCuPolicyType() {
-        return fileCuPolicyType;
+    public CleanPolType getCleanPolicyType() {
+        return cleanPolicyType;
     }
 
     public void setDataStoreInfo(int dataStoreType, String dataPath) {
@@ -327,7 +329,7 @@ public class TopicPropGroup implements Serializable, Cloneable {
                 && Objects.equals(acceptSubscribe, other.acceptSubscribe)
                 && Objects.equals(dataPath, other.dataPath)
                 && Objects.equals(deletePolicy, other.deletePolicy)
-                && fileCuPolicyType == other.fileCuPolicyType;
+                && cleanPolicyType == other.cleanPolicyType;
     }
 
     /**
@@ -436,7 +438,7 @@ public class TopicPropGroup implements Serializable, Cloneable {
         return Objects.hash(numTopicStores, numPartitions, unflushThreshold,
                 unflushInterval, unflushDataHold, memCacheMsgSizeInMB, memCacheMsgCntInK,
                 memCacheFlushIntvl, acceptPublish, acceptSubscribe, dataStoreType,
-                dataPath, deletePolicy, fileCuPolicyType, retPeriodInMs);
+                dataPath, deletePolicy, cleanPolicyType, retPeriodInMs);
     }
 
     @Override
@@ -454,7 +456,7 @@ public class TopicPropGroup implements Serializable, Cloneable {
     }
 
 
-    private Tuple2<CuPolType, Long> parseDelPolicy(String delPolicy) {
+    private Tuple2<CleanPolType, Long> parseDelPolicy(String delPolicy) {
         long validDuration = 0;
         String[] tmpStrs = delPolicy.split(",");
         String validValStr = tmpStrs[1];
@@ -468,7 +470,7 @@ public class TopicPropGroup implements Serializable, Cloneable {
         } else {
             validDuration = Long.parseLong(validValStr) * 3600000;
         }
-        return new Tuple2<>(CuPolType.CU_POL_DELETE, validDuration);
+        return new Tuple2<>(CleanPolType.CLEAN_POL_DELETE, validDuration);
     }
 
 }
diff --git a/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BaseEntityTest.java b/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BaseEntityTest.java
new file mode 100644
index 0000000..74ee410
--- /dev/null
+++ b/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BaseEntityTest.java
@@ -0,0 +1,156 @@
+/**
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * 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.tubemq.server.master.metamanage.metastore.dao.entity;
+
+import java.util.Date;
+import org.apache.tubemq.corebase.TBaseConstants;
+import org.apache.tubemq.server.common.TServerConstants;
+import org.apache.tubemq.server.common.utils.WebParameterUtils;
+import org.junit.Assert;
+import org.junit.Test;
+
+
+
+public class BaseEntityTest {
+
+    @Test
+    public void baseEntityTest() {
+        // case 1
+        BaseEntity baseEntity1 = new BaseEntity();
+        Assert.assertEquals(baseEntity1.getDataVerId(), TBaseConstants.META_VALUE_UNDEFINED);
+        Assert.assertEquals(baseEntity1.getSerialId(), TBaseConstants.META_VALUE_UNDEFINED);
+        Assert.assertEquals(baseEntity1.getCreateUser(), "");
+        Assert.assertNull(baseEntity1.getCreateDate());
+        Assert.assertEquals(baseEntity1.getModifyUser(), "");
+        Assert.assertNull(baseEntity1.getModifyDate());
+        Assert.assertEquals(baseEntity1.getAttributes(), "");
+        Assert.assertEquals(baseEntity1.getCreateDateStr(), "");
+        Assert.assertEquals(baseEntity1.getModifyDateStr(), "");
+        // case 2
+        String createUser = "test";
+        Date createDate = new Date();
+        String createDataStr = WebParameterUtils.date2yyyyMMddHHmmss(createDate);
+        BaseEntity baseEntity2 = new BaseEntity(createUser, createDate);
+        Assert.assertEquals(baseEntity2.getDataVerId(), TServerConstants.DEFAULT_DATA_VERSION);
+        Assert.assertNotEquals(baseEntity2.getSerialId(), TBaseConstants.META_VALUE_UNDEFINED);
+        Assert.assertEquals(baseEntity2.getCreateUser(), createUser);
+        Assert.assertEquals(baseEntity2.getCreateDate(), createDate);
+        Assert.assertEquals(baseEntity2.getModifyUser(), createUser);
+        Assert.assertEquals(baseEntity2.getModifyDate(), createDate);
+        Assert.assertEquals(baseEntity2.getAttributes(), "");
+        Assert.assertEquals(baseEntity2.getCreateDateStr(), createDataStr);
+        Assert.assertEquals(baseEntity2.getModifyDateStr(), createDataStr);
+        // case 3
+        long dataVersionId = 5;
+        BaseEntity baseEntity3 = new BaseEntity(dataVersionId, createUser, createDate);
+        Assert.assertEquals(baseEntity3.getDataVerId(), dataVersionId);
+        Assert.assertNotEquals(baseEntity3.getSerialId(), TBaseConstants.META_VALUE_UNDEFINED);
+        Assert.assertEquals(baseEntity3.getCreateUser(), createUser);
+        Assert.assertEquals(baseEntity3.getCreateDate(), createDate);
+        Assert.assertEquals(baseEntity3.getModifyUser(), createUser);
+        Assert.assertEquals(baseEntity3.getModifyDate(), createDate);
+        Assert.assertEquals(baseEntity3.getAttributes(), "");
+        Assert.assertEquals(baseEntity3.getCreateDateStr(), createDataStr);
+        Assert.assertEquals(baseEntity3.getModifyDateStr(), createDataStr);
+        // case 4
+        String modifyUser = "modifyUser";
+        Date modifyDate = new Date();
+        String modifyDateStr = WebParameterUtils.date2yyyyMMddHHmmss(modifyDate);
+        BaseEntity baseEntity4 =
+                new BaseEntity(createUser, createDate, modifyUser, modifyDate);
+        Assert.assertEquals(baseEntity4.getDataVerId(), TServerConstants.DEFAULT_DATA_VERSION);
+        Assert.assertNotEquals(baseEntity4.getSerialId(), TBaseConstants.META_VALUE_UNDEFINED);
+        Assert.assertEquals(baseEntity4.getCreateUser(), createUser);
+        Assert.assertEquals(baseEntity4.getCreateDate(), createDate);
+        Assert.assertEquals(baseEntity4.getModifyUser(), modifyUser);
+        Assert.assertEquals(baseEntity4.getModifyDate(), modifyDate);
+        Assert.assertEquals(baseEntity4.getAttributes(), "");
+        Assert.assertEquals(baseEntity4.getCreateDateStr(), createDataStr);
+        Assert.assertEquals(baseEntity4.getModifyDateStr(), modifyDateStr);
+        // case 5
+        dataVersionId = 10;
+        BaseEntity baseEntity5 = new BaseEntity(dataVersionId,
+                createUser, createDate, modifyUser, modifyDate);
+        Assert.assertEquals(baseEntity5.getDataVerId(), dataVersionId);
+        Assert.assertNotEquals(baseEntity5.getSerialId(), TBaseConstants.META_VALUE_UNDEFINED);
+        Assert.assertEquals(baseEntity5.getCreateUser(), createUser);
+        Assert.assertEquals(baseEntity5.getCreateDate(), createDate);
+        Assert.assertEquals(baseEntity5.getModifyUser(), modifyUser);
+        Assert.assertEquals(baseEntity5.getModifyDate(), modifyDate);
+        Assert.assertEquals(baseEntity5.getAttributes(), "");
+        Assert.assertEquals(baseEntity5.getCreateDateStr(), createDataStr);
+        Assert.assertEquals(baseEntity5.getModifyDateStr(), modifyDateStr);
+        // case 6
+        baseEntity5.setKeyAndVal("aaa", "bbb");
+        BaseEntity baseEntity6 = new BaseEntity(baseEntity5);
+        Assert.assertEquals(baseEntity6.getDataVerId(), baseEntity5.getDataVerId());
+        Assert.assertEquals(baseEntity6.getSerialId(), baseEntity5.getSerialId());
+        Assert.assertEquals(baseEntity6.getCreateUser(), baseEntity5.getCreateUser());
+        Assert.assertEquals(baseEntity6.getCreateDate(), baseEntity5.getCreateDate());
+        Assert.assertEquals(baseEntity6.getModifyUser(), baseEntity5.getModifyUser());
+        Assert.assertEquals(baseEntity6.getModifyDate(), baseEntity5.getModifyDate());
+        Assert.assertEquals(baseEntity6.getAttributes(), baseEntity5.getAttributes());
+        Assert.assertEquals(baseEntity6.getCreateDateStr(), baseEntity5.getCreateDateStr());
+        Assert.assertEquals(baseEntity6.getModifyDateStr(), baseEntity5.getModifyDateStr());
+        // case 7
+        BaseEntity baseEntity7 = new BaseEntity();
+        baseEntity7.updBaseModifyInfo(baseEntity6);
+        Assert.assertNotEquals(baseEntity6.getDataVerId(), baseEntity7.getDataVerId());
+        Assert.assertNotEquals(baseEntity6.getSerialId(), baseEntity7.getSerialId());
+        Assert.assertNotEquals(baseEntity6.getCreateUser(), baseEntity7.getCreateUser());
+        Assert.assertNotEquals(baseEntity6.getCreateDate(), baseEntity7.getCreateDate());
+        Assert.assertNotEquals(baseEntity6.getCreateDateStr(), baseEntity7.getCreateDateStr());
+        Assert.assertEquals(baseEntity6.getModifyUser(), baseEntity7.getModifyUser());
+        Assert.assertEquals(baseEntity6.getModifyDate(), baseEntity7.getModifyDate());
+        Assert.assertEquals(baseEntity6.getAttributes(), baseEntity7.getAttributes());
+        Assert.assertEquals(baseEntity6.getModifyDateStr(), baseEntity7.getModifyDateStr());
+        // case 8
+        long newDataVerId = 999;
+        String newCreateUser = "queryCreate";
+        String newModifyUser = "queryModify";
+        BaseEntity baseEntity8 = new BaseEntity();
+        baseEntity8.updQueryKeyInfo(newDataVerId, newCreateUser, newModifyUser);
+        Assert.assertEquals(baseEntity8.getDataVerId(), newDataVerId);
+        Assert.assertEquals(baseEntity8.getSerialId(), TBaseConstants.META_VALUE_UNDEFINED);
+        Assert.assertEquals(baseEntity8.getCreateUser(), newCreateUser);
+        Assert.assertNull(baseEntity8.getCreateDate());
+        Assert.assertEquals(baseEntity8.getModifyUser(), newModifyUser);
+        Assert.assertNull(baseEntity8.getModifyDate());
+        Assert.assertEquals(baseEntity8.getAttributes(), "");
+        Assert.assertEquals(baseEntity8.getCreateDateStr(), "");
+        Assert.assertEquals(baseEntity8.getModifyDateStr(), "");
+        // case 9
+        BaseEntity baseEntity9 = (BaseEntity) baseEntity6.clone();
+        Assert.assertEquals(baseEntity9, baseEntity6);
+        baseEntity9.setAttributes("aaaaabbbbccccddd");
+        baseEntity9.updSerialId();
+        baseEntity9.updQueryKeyInfo(newDataVerId, newCreateUser, newModifyUser);
+        Assert.assertNotEquals(baseEntity6.getDataVerId(), baseEntity9.getDataVerId());
+        Assert.assertNotEquals(baseEntity6.getSerialId(), baseEntity9.getSerialId());
+        Assert.assertNotEquals(baseEntity6.getCreateUser(), baseEntity9.getCreateUser());
+        Assert.assertEquals(baseEntity6.getCreateDate(), baseEntity9.getCreateDate());
+        Assert.assertNotEquals(baseEntity6.getModifyUser(), baseEntity9.getModifyUser());
+        Assert.assertEquals(baseEntity6.getModifyDate(), baseEntity9.getModifyDate());
+        Assert.assertNotEquals(baseEntity6.getAttributes(), baseEntity9.getAttributes());
+        Assert.assertEquals(baseEntity6.getCreateDateStr(), baseEntity9.getCreateDateStr());
+        Assert.assertEquals(baseEntity6.getModifyDateStr(), baseEntity9.getModifyDateStr());
+        // case 10
+        Assert.assertTrue(baseEntity8.isMatched(baseEntity9));
+    }
+
+}
diff --git a/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BrokerConfEntityTest.java b/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BrokerConfEntityTest.java
new file mode 100644
index 0000000..b6b81f4
--- /dev/null
+++ b/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BrokerConfEntityTest.java
@@ -0,0 +1,120 @@
+/**
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * 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.tubemq.server.master.metamanage.metastore.dao.entity;
+
+import java.util.Date;
+import org.apache.tubemq.corebase.TBaseConstants;
+import org.apache.tubemq.corebase.utils.SettingValidUtils;
+import org.apache.tubemq.server.common.statusdef.EnableStatus;
+import org.apache.tubemq.server.master.bdbstore.bdbentitys.BdbTopicAuthControlEntity;
+import org.junit.Assert;
+import org.junit.Test;
+
+
+
+
+public class BrokerConfEntityTest {
+
+    @Test
+    public void trokerConfEntityTest() {
+        // case 1
+        String topicName = "test_1";
+        boolean enableAuthControl = false;
+        String attributes = "";
+        String createUser = "creater";
+        Date createDate = new Date();
+        int maxMsgSizeInB = 12222;
+        BdbTopicAuthControlEntity bdbEntity1 =
+                new BdbTopicAuthControlEntity(topicName,
+                        enableAuthControl, attributes, createUser, createDate);
+        TopicCtrlEntity ctrlEntity1 = new TopicCtrlEntity(bdbEntity1);
+        // check bdbEntity1
+        Assert.assertEquals(bdbEntity1.getTopicName(), topicName);
+        Assert.assertEquals(bdbEntity1.getTopicId(), TBaseConstants.META_VALUE_UNDEFINED);
+        Assert.assertEquals(bdbEntity1.isEnableAuthControl(), enableAuthControl);
+        Assert.assertEquals(bdbEntity1.getMaxMsgSize(), TBaseConstants.META_VALUE_UNDEFINED);
+        Assert.assertEquals(bdbEntity1.getCreateUser(), createUser);
+        Assert.assertEquals(bdbEntity1.getCreateDate(), createDate);
+        Assert.assertEquals(bdbEntity1.getDataVerId(), TBaseConstants.META_VALUE_UNDEFINED);
+        bdbEntity1.setMaxMsgSize(maxMsgSizeInB);
+        Assert.assertEquals(bdbEntity1.getMaxMsgSize(), maxMsgSizeInB);
+        // check ctrlEntity1
+        Assert.assertEquals(ctrlEntity1.getTopicName(), topicName);
+        Assert.assertEquals(ctrlEntity1.getTopicId(), TBaseConstants.META_VALUE_UNDEFINED);
+        Assert.assertEquals(ctrlEntity1.getAuthCtrlStatus(), EnableStatus.STATUS_DISABLE);
+        Assert.assertEquals(ctrlEntity1.getMaxMsgSizeInB(),
+                TBaseConstants.META_MAX_MESSAGE_DATA_SIZE);
+        Assert.assertEquals(ctrlEntity1.getMaxMsgSizeInMB(),
+                TBaseConstants.META_MIN_ALLOWED_MESSAGE_SIZE_MB);
+        Assert.assertEquals(ctrlEntity1.getCreateUser(), createUser);
+        Assert.assertEquals(ctrlEntity1.getCreateDate(), createDate);
+        Assert.assertEquals(ctrlEntity1.getDataVerId(), TBaseConstants.META_VALUE_UNDEFINED);
+        // case 2
+        long dataVerId2 = 555;
+        int topicId2 = 222;
+        String topicName2 = "test_1";
+        boolean enableAuthControl2 = true;
+        String attributes2 = "";
+        String createUser2 = "creater2";
+        Date createDate2 = new Date();
+        int maxMsgSizeInB2 = 14;
+        TopicCtrlEntity ctrlEntity2 = ctrlEntity1.clone();
+        Assert.assertTrue(ctrlEntity2.isDataEquals(ctrlEntity1));
+        BaseEntity opInfoEntry = new BaseEntity(dataVerId2, createUser2, createDate2);
+        Assert.assertTrue(ctrlEntity2.updBaseModifyInfo(opInfoEntry));
+        Assert.assertTrue(ctrlEntity2.updModifyInfo(opInfoEntry.getDataVerId(),
+                topicId2, maxMsgSizeInB2, enableAuthControl2));
+        Assert.assertFalse(ctrlEntity2.isDataEquals(ctrlEntity1));
+        Assert.assertFalse(ctrlEntity2.isMatched(ctrlEntity1));
+        // check ctrlEntity2
+        Assert.assertEquals(ctrlEntity2.getTopicName(), topicName);
+        Assert.assertEquals(ctrlEntity2.getTopicId(), topicId2);
+        Assert.assertEquals(ctrlEntity2.getAuthCtrlStatus(), EnableStatus.STATUS_ENABLE);
+        Assert.assertEquals(ctrlEntity2.getMaxMsgSizeInB(),
+                SettingValidUtils.validAndXfeMaxMsgSizeFromMBtoB(maxMsgSizeInB2));
+        Assert.assertEquals(ctrlEntity2.getMaxMsgSizeInMB(), maxMsgSizeInB2);
+        Assert.assertEquals(ctrlEntity2.getCreateUser(), createUser);
+        Assert.assertEquals(ctrlEntity2.getCreateDate(), createDate);
+        Assert.assertEquals(ctrlEntity2.getModifyUser(), createUser2);
+        Assert.assertEquals(ctrlEntity2.getModifyDate(), createDate2);
+        Assert.assertEquals(ctrlEntity2.getDataVerId(), dataVerId2);
+        // case 3
+        BdbTopicAuthControlEntity bdbEntity3 =
+                ctrlEntity2.buildBdbTopicAuthControlEntity();
+        Assert.assertEquals(bdbEntity3.getTopicName(), ctrlEntity2.getTopicName());
+        Assert.assertEquals(bdbEntity3.getTopicId(), ctrlEntity2.getTopicId());
+        Assert.assertEquals(bdbEntity3.isEnableAuthControl(),
+                ctrlEntity2.getAuthCtrlStatus().isEnable());
+        Assert.assertEquals(bdbEntity3.getMaxMsgSize(), ctrlEntity2.getMaxMsgSizeInB());
+        Assert.assertEquals(bdbEntity3.getCreateUser(), ctrlEntity2.getModifyUser());
+        Assert.assertEquals(bdbEntity3.getCreateDate(), ctrlEntity2.getModifyDate());
+        Assert.assertEquals(bdbEntity3.getDataVerId(), ctrlEntity2.getDataVerId());
+        // case 4
+        TopicCtrlEntity ctrlEntity4 = new TopicCtrlEntity(bdbEntity3);
+        // check ctrlEntity4
+        Assert.assertTrue(ctrlEntity4.isDataEquals(ctrlEntity2));
+        Assert.assertEquals(ctrlEntity4.getTopicName(), ctrlEntity2.getTopicName());
+        Assert.assertEquals(ctrlEntity4.getTopicId(), ctrlEntity2.getTopicId());
+        Assert.assertEquals(ctrlEntity4.getAuthCtrlStatus(), ctrlEntity2.getAuthCtrlStatus());
+        Assert.assertEquals(ctrlEntity4.getMaxMsgSizeInB(), ctrlEntity2.getMaxMsgSizeInB());
+        Assert.assertEquals(ctrlEntity4.getCreateUser(), ctrlEntity2.getModifyUser());
+        Assert.assertEquals(ctrlEntity4.getCreateDate(), ctrlEntity2.getModifyDate());
+        Assert.assertEquals(ctrlEntity4.getDataVerId(), ctrlEntity2.getDataVerId());
+    }
+
+}
diff --git a/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/ClusterSettingEntityTest.java b/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/ClusterSettingEntityTest.java
new file mode 100644
index 0000000..dd64820
--- /dev/null
+++ b/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/ClusterSettingEntityTest.java
@@ -0,0 +1,185 @@
+/**
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * 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.tubemq.server.master.metamanage.metastore.dao.entity;
+
+import java.util.Date;
+import org.apache.tubemq.corebase.TBaseConstants;
+import org.apache.tubemq.corebase.utils.SettingValidUtils;
+import org.apache.tubemq.server.common.TServerConstants;
+import org.apache.tubemq.server.common.statusdef.EnableStatus;
+import org.apache.tubemq.server.master.bdbstore.bdbentitys.BdbClusterSettingEntity;
+import org.junit.Assert;
+import org.junit.Test;
+
+
+
+public class ClusterSettingEntityTest {
+
+    @Test
+    public void clusterSettingEntityTest() {
+        // case 1
+        ClusterSettingEntity setting1 = new ClusterSettingEntity();
+        setting1.fillDefaultValue();
+        Assert.assertEquals(setting1.getBrokerPort(), TBaseConstants.META_DEFAULT_BROKER_PORT);
+        Assert.assertEquals(setting1.getBrokerTLSPort(), TBaseConstants.META_DEFAULT_BROKER_TLS_PORT);
+        Assert.assertEquals(setting1.getBrokerWebPort(), TBaseConstants.META_DEFAULT_BROKER_WEB_PORT);
+        Assert.assertEquals(setting1.getMaxMsgSizeInMB(), TBaseConstants.META_MIN_ALLOWED_MESSAGE_SIZE_MB);
+        Assert.assertEquals(setting1.getMaxMsgSizeInB(),
+                SettingValidUtils.validAndXfeMaxMsgSizeFromMBtoB(
+                        TBaseConstants.META_MIN_ALLOWED_MESSAGE_SIZE_MB));
+
+        Assert.assertEquals(setting1.getQryPriorityId(), TServerConstants.QRY_PRIORITY_DEF_VALUE);
+        Assert.assertEquals(setting1.getGloFlowCtrlStatus(), EnableStatus.STATUS_DISABLE);
+        Assert.assertEquals(setting1.getGloFlowCtrlRuleCnt(), 0);
+        Assert.assertEquals(setting1.getGloFlowCtrlRuleInfo(), TServerConstants.BLANK_FLOWCTRL_RULES);
+        TopicPropGroup defProps = new TopicPropGroup();
+        defProps.fillDefaultValue();
+        Assert.assertEquals(setting1.getClsDefTopicProps(), defProps);
+        // case 2
+        String recordKey = "test_key";
+        long configId = 2223335555L;
+        int brokerPort = 8888;
+        int brokerTLSPort = 9999;
+        int brokerWebPort = 7777;
+        int numTopicStores = 9;
+        int numPartitions = 10;
+        int unflushThreshold = 20;
+        int unflushInterval = 25;
+        int unflushDataHold = 30;
+        int memCacheMsgCntInK = 44;
+        int memCacheFlushIntvl = 50;
+        int memCacheMsgSizeInMB = 33;
+        boolean acceptPublish = false;
+        boolean acceptSubscribe = true;
+        String deletePolicy = "delete,5h";
+        int qryPriorityId = 202;
+        int maxMsgSizeInB = 1024 * 1024;
+        String attributes = "";
+        String modifyUser = "modifyUser";
+        Date modifyDate = new Date();
+        BdbClusterSettingEntity bdbEntity =
+                new BdbClusterSettingEntity(recordKey, configId, brokerPort, brokerTLSPort,
+                        brokerWebPort, numTopicStores, numPartitions, unflushThreshold,
+                        unflushInterval, unflushDataHold, memCacheMsgCntInK, memCacheFlushIntvl,
+                        memCacheMsgSizeInMB, acceptPublish, acceptSubscribe, deletePolicy,
+                        qryPriorityId, maxMsgSizeInB, attributes, modifyUser, modifyDate);
+        ClusterSettingEntity setting2 = new ClusterSettingEntity(bdbEntity);
+        Assert.assertEquals(setting2.getBrokerPort(), bdbEntity.getBrokerPort());
+        Assert.assertEquals(setting2.getBrokerTLSPort(), bdbEntity.getBrokerTLSPort());
+        Assert.assertEquals(setting2.getBrokerWebPort(), bdbEntity.getBrokerWebPort());
+        Assert.assertEquals(setting2.getMaxMsgSizeInB(), bdbEntity.getMaxMsgSizeInB());
+        Assert.assertEquals(setting2.getQryPriorityId(), bdbEntity.getQryPriorityId());
+        Assert.assertFalse(setting2.getGloFlowCtrlStatus().isEnable());
+        Assert.assertNull(bdbEntity.getEnableGloFlowCtrl());
+        Assert.assertEquals(setting2.getGloFlowCtrlRuleCnt(), 0);
+        Assert.assertEquals(bdbEntity.getGloFlowCtrlCnt(), TBaseConstants.META_VALUE_UNDEFINED);
+        Assert.assertEquals(setting2.getGloFlowCtrlRuleInfo(), TServerConstants.BLANK_FLOWCTRL_RULES);
+        Assert.assertNull(bdbEntity.getGloFlowCtrlInfo());
+        TopicPropGroup defProps2 = setting2.getClsDefTopicProps();
+        Assert.assertEquals(defProps2.getNumTopicStores(), bdbEntity.getNumTopicStores());
+        Assert.assertEquals(defProps2.getNumPartitions(), bdbEntity.getNumPartitions());
+        Assert.assertEquals(defProps2.getUnflushThreshold(), bdbEntity.getUnflushThreshold());
+        Assert.assertEquals(defProps2.getUnflushInterval(), bdbEntity.getUnflushInterval());
+        Assert.assertEquals(defProps2.getUnflushDataHold(), bdbEntity.getUnflushDataHold());
+        Assert.assertEquals(defProps2.getMemCacheMsgSizeInMB(), bdbEntity.getMemCacheMsgSizeInMB());
+        Assert.assertEquals(defProps2.getMemCacheFlushIntvl(), bdbEntity.getMemCacheFlushIntvl());
+        Assert.assertEquals(defProps2.getMemCacheMsgCntInK(), bdbEntity.getMemCacheMsgCntInK());
+        Assert.assertEquals(defProps2.getAcceptPublish(), bdbEntity.isAcceptPublish());
+        Assert.assertEquals(defProps2.getAcceptSubscribe(), bdbEntity.isAcceptSubscribe());
+        Assert.assertEquals(defProps2.getDataStoreType(), bdbEntity.getDefDataType());
+        Assert.assertEquals(defProps2.getDataPath(), "");
+        Assert.assertNull(bdbEntity.getDefDataPath());
+        Assert.assertEquals(defProps2.getDeletePolicy(), bdbEntity.getDeletePolicy());
+        // case 3
+        BdbClusterSettingEntity bdbSetting = setting2.buildBdbClsDefSettingEntity();
+        Assert.assertEquals(setting2.getBrokerPort(), bdbSetting.getBrokerPort());
+        Assert.assertEquals(setting2.getBrokerTLSPort(), bdbSetting.getBrokerTLSPort());
+        Assert.assertEquals(setting2.getBrokerWebPort(), bdbSetting.getBrokerWebPort());
+        Assert.assertEquals(setting2.getMaxMsgSizeInB(), bdbSetting.getMaxMsgSizeInB());
+        Assert.assertEquals(setting2.getQryPriorityId(), bdbSetting.getQryPriorityId());
+        Assert.assertEquals(setting2.getGloFlowCtrlStatus().isEnable(), bdbSetting.getEnableGloFlowCtrl());
+        Assert.assertEquals(setting2.getGloFlowCtrlRuleCnt(), bdbSetting.getGloFlowCtrlCnt());
+        Assert.assertEquals(setting2.getGloFlowCtrlRuleInfo(), bdbSetting.getGloFlowCtrlInfo());
+        TopicPropGroup defProps3 = setting2.getClsDefTopicProps();
+        Assert.assertEquals(defProps3.getNumTopicStores(), bdbSetting.getNumTopicStores());
+        Assert.assertEquals(defProps3.getNumPartitions(), bdbSetting.getNumPartitions());
+        Assert.assertEquals(defProps3.getUnflushThreshold(), bdbSetting.getUnflushThreshold());
+        Assert.assertEquals(defProps3.getUnflushInterval(), bdbSetting.getUnflushInterval());
+        Assert.assertEquals(defProps3.getUnflushDataHold(), bdbSetting.getUnflushDataHold());
+        Assert.assertEquals(defProps3.getMemCacheMsgSizeInMB(), bdbSetting.getMemCacheMsgSizeInMB());
+        Assert.assertEquals(defProps3.getMemCacheFlushIntvl(), bdbSetting.getMemCacheFlushIntvl());
+        Assert.assertEquals(defProps3.getMemCacheMsgCntInK(), bdbSetting.getMemCacheMsgCntInK());
+        Assert.assertEquals(defProps3.getAcceptPublish(), bdbSetting.isAcceptPublish());
+        Assert.assertEquals(defProps3.getAcceptSubscribe(), bdbSetting.isAcceptSubscribe());
+        Assert.assertEquals(defProps3.getDataStoreType(), bdbSetting.getDefDataType());
+        Assert.assertEquals(defProps3.getDataPath(), "");
+        Assert.assertNull(bdbSetting.getDefDataPath());
+        Assert.assertEquals(defProps3.getDeletePolicy(), bdbSetting.getDeletePolicy());
+        // case 4
+        ClusterSettingEntity setting4 = new ClusterSettingEntity(bdbSetting);
+        Assert.assertEquals(setting4.getBrokerPort(), bdbSetting.getBrokerPort());
+        Assert.assertEquals(setting4.getBrokerTLSPort(), bdbSetting.getBrokerTLSPort());
+        Assert.assertEquals(setting4.getBrokerWebPort(), bdbSetting.getBrokerWebPort());
+        Assert.assertEquals(setting4.getMaxMsgSizeInB(), bdbSetting.getMaxMsgSizeInB());
+        Assert.assertEquals(setting4.getQryPriorityId(), bdbSetting.getQryPriorityId());
+        Assert.assertEquals(setting4.getGloFlowCtrlStatus().isEnable(), bdbSetting.getEnableGloFlowCtrl());
+        Assert.assertEquals(setting4.getGloFlowCtrlRuleCnt(), bdbSetting.getGloFlowCtrlCnt());
+        Assert.assertEquals(setting4.getGloFlowCtrlRuleInfo(), bdbSetting.getGloFlowCtrlInfo());
+        TopicPropGroup defProps4 = setting4.getClsDefTopicProps();
+        Assert.assertEquals(defProps4.getNumTopicStores(), bdbSetting.getNumTopicStores());
+        Assert.assertEquals(defProps4.getNumPartitions(), bdbSetting.getNumPartitions());
+        Assert.assertEquals(defProps4.getUnflushThreshold(), bdbSetting.getUnflushThreshold());
+        Assert.assertEquals(defProps4.getUnflushInterval(), bdbSetting.getUnflushInterval());
+        Assert.assertEquals(defProps4.getUnflushDataHold(), bdbSetting.getUnflushDataHold());
+        Assert.assertEquals(defProps4.getMemCacheMsgSizeInMB(), bdbSetting.getMemCacheMsgSizeInMB());
+        Assert.assertEquals(defProps4.getMemCacheFlushIntvl(), bdbSetting.getMemCacheFlushIntvl());
+        Assert.assertEquals(defProps4.getMemCacheMsgCntInK(), bdbSetting.getMemCacheMsgCntInK());
+        Assert.assertEquals(defProps4.getAcceptPublish(), bdbSetting.isAcceptPublish());
+        Assert.assertEquals(defProps4.getAcceptSubscribe(), bdbSetting.isAcceptSubscribe());
+        Assert.assertEquals(defProps4.getDataStoreType(), bdbSetting.getDefDataType());
+        Assert.assertEquals(defProps4.getDataPath(), "");
+        Assert.assertNull(bdbSetting.getDefDataPath());
+        Assert.assertEquals(defProps4.getDeletePolicy(), bdbSetting.getDeletePolicy());
+        // case 5
+        long newDataVerId = 99;
+        int newBrokerPort = 52;
+        int newBrokerTLSPort = 22;
+        int newBrokerWebPort = 32;
+        int newMaxMsgSizeMB = 2;
+        int newQryPriorityId = 101;
+        Boolean newFlowCtrlEnable = true;
+        int newFlowRuleCnt = 5;
+        String newFlowCtrlRuleInfo = "[{},{},{},{},{}]";
+        TopicPropGroup newProps = new TopicPropGroup();
+        newProps.fillDefaultValue();
+        ClusterSettingEntity setting5 = setting2.clone();
+        Assert.assertTrue(setting5.updModifyInfo(newDataVerId, newBrokerPort, newBrokerTLSPort,
+                newBrokerWebPort, newMaxMsgSizeMB, newQryPriorityId, newFlowCtrlEnable,
+                newFlowRuleCnt, newFlowCtrlRuleInfo, newProps));
+        Assert.assertNotEquals(setting5.getBrokerPort(), setting2.getBrokerPort());
+        Assert.assertNotEquals(setting5.getBrokerTLSPort(), setting2.getBrokerTLSPort());
+        Assert.assertNotEquals(setting5.getBrokerWebPort(), setting2.getBrokerWebPort());
+        Assert.assertNotEquals(setting5.getMaxMsgSizeInB(), setting2.getMaxMsgSizeInB());
+        Assert.assertNotEquals(setting5.getQryPriorityId(), setting2.getQryPriorityId());
+        Assert.assertNotEquals(setting5.getGloFlowCtrlStatus(), setting2.getGloFlowCtrlStatus());
+        Assert.assertNotEquals(setting5.getGloFlowCtrlRuleCnt(), setting2.getGloFlowCtrlRuleCnt());
+        Assert.assertNotEquals(setting5.getGloFlowCtrlRuleInfo(), setting2.getGloFlowCtrlRuleInfo());
+        Assert.assertNotEquals(setting5.getClsDefTopicProps(), setting2.getClsDefTopicProps());
+    }
+
+}
diff --git a/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupConsumeCtrlEntityTest.java b/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupConsumeCtrlEntityTest.java
new file mode 100644
index 0000000..91ec3bc
--- /dev/null
+++ b/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupConsumeCtrlEntityTest.java
@@ -0,0 +1,90 @@
+/**
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * 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.tubemq.server.master.metamanage.metastore.dao.entity;
+
+import java.util.Date;
+import org.apache.tubemq.server.master.bdbstore.bdbentitys.BdbGroupFilterCondEntity;
+import org.junit.Assert;
+import org.junit.Test;
+
+
+
+
+public class GroupConsumeCtrlEntityTest {
+
+    @Test
+    public void groupConsumeCtrlEntityTest() {
+        // case 1
+        String topicName = "test_1";
+        String groupName = "group_1";
+        int controlStatus = 2;
+        String filterCondStr = "[1,2,3,4]";
+        String attributes = "key=val&ke2=val3";
+        String createUser = "creater";
+        Date createDate = new Date();
+        BdbGroupFilterCondEntity bdbEntity1 =
+                new BdbGroupFilterCondEntity(topicName, groupName, controlStatus,
+                        filterCondStr, attributes, createUser, createDate);
+
+        GroupConsumeCtrlEntity ctrlEntry1 = new GroupConsumeCtrlEntity(bdbEntity1);
+        Assert.assertEquals(ctrlEntry1.getGroupName(), bdbEntity1.getConsumerGroupName());
+        Assert.assertEquals(ctrlEntry1.getTopicName(), bdbEntity1.getTopicName());
+        Assert.assertEquals(ctrlEntry1.getFilterCondStr(), bdbEntity1.getFilterCondStr());
+        Assert.assertEquals(bdbEntity1.getControlStatus(), 2);
+        Assert.assertTrue(ctrlEntry1.getFilterEnable().isEnable());
+        Assert.assertEquals(ctrlEntry1.getConsumeEnable(), bdbEntity1.getConsumeEnable());
+        Assert.assertEquals(ctrlEntry1.getCreateUser(), bdbEntity1.getCreateUser());
+        Assert.assertEquals(ctrlEntry1.getCreateDate(), bdbEntity1.getCreateDate());
+        Assert.assertEquals(ctrlEntry1.getAttributes(), bdbEntity1.getAttributes());
+        Assert.assertEquals(ctrlEntry1.getDisableReason(), bdbEntity1.getDisableConsumeReason());
+        Assert.assertEquals(ctrlEntry1.getRecordKey(), bdbEntity1.getRecordKey());
+        // case 2
+        long newDataVerId = 5555;
+        boolean consumeEnable = true;
+        String disableRsn = "disable";
+        boolean filterEnable = true;
+        String newFilterCondStr = "[1,2,4]";
+        BaseEntity opInfoEntity =
+                new BaseEntity(newDataVerId, "modify", new Date());
+        GroupConsumeCtrlEntity ctrlEntry2 = ctrlEntry1.clone();
+        Assert.assertTrue(ctrlEntry2.isMatched(ctrlEntry1));
+        ctrlEntry2.updBaseModifyInfo(opInfoEntity);
+        Assert.assertTrue(ctrlEntry2.updModifyInfo(opInfoEntity.getDataVerId(),
+                consumeEnable, disableRsn, filterEnable, newFilterCondStr));
+        // case 3
+        BdbGroupFilterCondEntity bdbEntity3 = ctrlEntry2.buildBdbGroupFilterCondEntity();
+        Assert.assertEquals(ctrlEntry2.getGroupName(), bdbEntity3.getConsumerGroupName());
+        Assert.assertEquals(ctrlEntry2.getTopicName(), bdbEntity3.getTopicName());
+        Assert.assertEquals(ctrlEntry2.getFilterCondStr(), bdbEntity3.getFilterCondStr());
+        Assert.assertEquals(bdbEntity3.getControlStatus(), 2);
+        Assert.assertTrue(ctrlEntry2.getFilterEnable().isEnable());
+        Assert.assertEquals(ctrlEntry2.getConsumeEnable(), bdbEntity3.getConsumeEnable());
+        Assert.assertEquals(opInfoEntity.getCreateUser(), bdbEntity3.getCreateUser());
+        Assert.assertEquals(opInfoEntity.getCreateDate(), bdbEntity3.getCreateDate());
+        Assert.assertNotEquals(ctrlEntry2.getCreateDate(), bdbEntity3.getCreateDate());
+        Assert.assertNotEquals(ctrlEntry2.getCreateUser(), bdbEntity3.getCreateUser());
+        Assert.assertEquals(ctrlEntry2.getAttributes(), bdbEntity3.getAttributes());
+        Assert.assertEquals(ctrlEntry2.getDisableReason(), bdbEntity3.getDisableConsumeReason());
+        Assert.assertEquals(ctrlEntry2.getRecordKey(), bdbEntity3.getRecordKey());
+
+
+
+
+    }
+
+}
diff --git a/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupResCtrlEntityTest.java b/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupResCtrlEntityTest.java
new file mode 100644
index 0000000..615f13b
--- /dev/null
+++ b/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupResCtrlEntityTest.java
@@ -0,0 +1,129 @@
+/**
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * 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.tubemq.server.master.metamanage.metastore.dao.entity;
+
+import java.util.Date;
+import org.apache.tubemq.corebase.TBaseConstants;
+import org.apache.tubemq.server.common.TServerConstants;
+import org.apache.tubemq.server.common.statusdef.EnableStatus;
+import org.apache.tubemq.server.master.bdbstore.bdbentitys.BdbGroupFlowCtrlEntity;
+import org.junit.Assert;
+import org.junit.Test;
+
+
+
+public class GroupResCtrlEntityTest {
+
+    @Test
+    public void groupResCtrlEntityTest() {
+        // case 1
+        String groupName = "test_group";
+        GroupResCtrlEntity resEntry = new GroupResCtrlEntity();
+        resEntry.setGroupName(groupName);
+        resEntry.fillDefaultValue();
+        Assert.assertEquals(resEntry.getGroupName(), groupName);
+        Assert.assertEquals(resEntry.getResCheckStatus(), EnableStatus.STATUS_DISABLE);
+        Assert.assertEquals(resEntry.getAllowedBrokerClientRate(), 0);
+        Assert.assertEquals(resEntry.getQryPriorityId(), TServerConstants.QRY_PRIORITY_DEF_VALUE);
+        Assert.assertEquals(resEntry.getFlowCtrlStatus(), EnableStatus.STATUS_DISABLE);
+        Assert.assertEquals(resEntry.getFlowCtrlInfo(), TServerConstants.BLANK_FLOWCTRL_RULES);
+        Assert.assertEquals(resEntry.getRuleCnt(), 0);
+        // case 2
+        long dataVerId = 55;
+        String groupName2 = "group_2";
+        int ruleCnt = 4;
+        String flowCtrlInfo = "[{},{},{},{}]";
+        int statusId = 1;
+        int qryPriorityId = 203;
+        String attributes = "key=val&key2=va2";
+        String createUser = "create";
+        Date createDate = new Date();
+        BdbGroupFlowCtrlEntity bdbEntity2 =
+                new BdbGroupFlowCtrlEntity(dataVerId, groupName2,
+                        flowCtrlInfo, statusId, ruleCnt, qryPriorityId,
+                        attributes, createUser, createDate);
+        Assert.assertEquals(bdbEntity2.getGroupName(), groupName2);
+        Assert.assertEquals(bdbEntity2.getResCheckStatus(), EnableStatus.STATUS_UNDEFINE);
+        Assert.assertEquals(bdbEntity2.getAllowedBrokerClientRate(), TBaseConstants.META_VALUE_UNDEFINED);
+        Assert.assertEquals(bdbEntity2.getQryPriorityId(), 203);
+        Assert.assertEquals(bdbEntity2.getStatusId(), 1);
+        Assert.assertEquals(bdbEntity2.getFlowCtrlInfo(), flowCtrlInfo);
+        Assert.assertEquals(bdbEntity2.getRuleCnt(), ruleCnt);
+        Assert.assertEquals(bdbEntity2.getCreateUser(), createUser);
+        Assert.assertEquals(bdbEntity2.getCreateDate(), createDate);
+        Assert.assertEquals(bdbEntity2.getSerialId(), dataVerId);
+        bdbEntity2.setResCheckStatus(EnableStatus.STATUS_ENABLE);
+        // case 3
+        GroupResCtrlEntity resEntry3 = new GroupResCtrlEntity(bdbEntity2);
+        Assert.assertEquals(bdbEntity2.getGroupName(), resEntry3.getGroupName());
+        Assert.assertEquals(bdbEntity2.getResCheckStatus(), resEntry3.getResCheckStatus());
+        Assert.assertEquals(bdbEntity2.getAllowedBrokerClientRate(),
+                resEntry3.getAllowedBrokerClientRate());
+        Assert.assertEquals(bdbEntity2.getQryPriorityId(), resEntry3.getQryPriorityId());
+        Assert.assertTrue(resEntry3.getFlowCtrlStatus().isEnable());
+        Assert.assertEquals(bdbEntity2.getFlowCtrlInfo(), resEntry3.getFlowCtrlInfo());
+        Assert.assertEquals(bdbEntity2.getRuleCnt(), resEntry3.getRuleCnt());
+        Assert.assertEquals(bdbEntity2.getCreateUser(), resEntry3.getCreateUser());
+        Assert.assertEquals(bdbEntity2.getCreateDate(), resEntry3.getCreateDate());
+        Assert.assertEquals(bdbEntity2.getSerialId(), resEntry3.getDataVerId());
+        // case 4
+        long newDataVerId = 99;
+        boolean resChkEnable = true;
+        int newAllowedB2CRate = 5;
+        int newQryPriorityId = 2;
+        boolean newFlowCtrlEnable =  false;
+        int newFlowRuleCnt = 2;
+        String newFlowCtrlRuleInfo = "[{},{}]";
+        GroupResCtrlEntity resEntry4 = resEntry3.clone();
+        Assert.assertTrue(resEntry4.isMatched(resEntry3));
+        Assert.assertTrue(resEntry4.updModifyInfo(newDataVerId, resChkEnable, newAllowedB2CRate,
+                newQryPriorityId, newFlowCtrlEnable, newFlowRuleCnt, newFlowCtrlRuleInfo));
+        Assert.assertEquals(resEntry4.getDataVerId(), newDataVerId);
+        Assert.assertEquals(resEntry4.getResCheckStatus().isEnable(), resChkEnable);
+        Assert.assertEquals(resEntry4.getAllowedBrokerClientRate(), newAllowedB2CRate);
+        Assert.assertEquals(resEntry4.getQryPriorityId(), newQryPriorityId);
+        Assert.assertEquals(resEntry4.getFlowCtrlStatus().isEnable(), newFlowCtrlEnable);
+        Assert.assertEquals(resEntry4.getRuleCnt(), newFlowRuleCnt);
+        Assert.assertEquals(resEntry4.getFlowCtrlInfo(), newFlowCtrlRuleInfo);
+        Assert.assertEquals(resEntry4.getGroupName(), resEntry3.getGroupName());
+        Assert.assertEquals(resEntry4.getResCheckStatus(), resEntry3.getResCheckStatus());
+        Assert.assertNotEquals(resEntry4.getAllowedBrokerClientRate(),
+                resEntry3.getAllowedBrokerClientRate());
+        Assert.assertNotEquals(resEntry4.getQryPriorityId(), resEntry3.getQryPriorityId());
+        Assert.assertNotEquals(resEntry4.getFlowCtrlStatus(), resEntry3.getFlowCtrlStatus());
+        Assert.assertNotEquals(resEntry4.getFlowCtrlInfo(), resEntry3.getFlowCtrlInfo());
+        Assert.assertNotEquals(resEntry4.getRuleCnt(), resEntry3.getRuleCnt());
+        Assert.assertEquals(resEntry4.getCreateUser(), resEntry3.getCreateUser());
+        Assert.assertEquals(resEntry4.getCreateDate(), resEntry3.getCreateDate());
+        Assert.assertNotEquals(resEntry4.getDataVerId(), resEntry3.getDataVerId());
+        // case 5
+        BdbGroupFlowCtrlEntity bdbEntity5 = resEntry4.buildBdbGroupFlowCtrlEntity();
+        Assert.assertEquals(bdbEntity5.getSerialId(), newDataVerId);
+        Assert.assertEquals(bdbEntity5.getResCheckStatus().isEnable(), resChkEnable);
+        Assert.assertEquals(bdbEntity5.getAllowedBrokerClientRate(), newAllowedB2CRate);
+        Assert.assertEquals(bdbEntity5.getQryPriorityId(), newQryPriorityId);
+        Assert.assertEquals(bdbEntity5.getStatusId(), 0);
+        Assert.assertEquals(bdbEntity5.getRuleCnt(), newFlowRuleCnt);
+        Assert.assertEquals(bdbEntity5.getFlowCtrlInfo(), newFlowCtrlRuleInfo);
+        Assert.assertEquals(bdbEntity5.getGroupName(), resEntry3.getGroupName());
+
+
+
+    }
+
+}
diff --git a/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicCtrlEntityTest.java b/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicCtrlEntityTest.java
new file mode 100644
index 0000000..243f783
--- /dev/null
+++ b/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicCtrlEntityTest.java
@@ -0,0 +1,119 @@
+/**
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * 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.tubemq.server.master.metamanage.metastore.dao.entity;
+
+import java.util.Date;
+import org.apache.tubemq.corebase.TBaseConstants;
+import org.apache.tubemq.corebase.utils.SettingValidUtils;
+import org.apache.tubemq.server.common.statusdef.EnableStatus;
+import org.apache.tubemq.server.master.bdbstore.bdbentitys.BdbTopicAuthControlEntity;
+import org.junit.Assert;
+import org.junit.Test;
+
+
+
+public class TopicCtrlEntityTest {
+
+    @Test
+    public void topicCtrlEntityTest() {
+        // case 1
+        String topicName = "test_1";
+        boolean enableAuthControl = false;
+        String attributes = "";
+        String createUser = "creater";
+        Date createDate = new Date();
+        int maxMsgSizeInB = 12222;
+        BdbTopicAuthControlEntity bdbEntity1 =
+                new BdbTopicAuthControlEntity(topicName,
+                        enableAuthControl, attributes, createUser, createDate);
+        TopicCtrlEntity ctrlEntity1 = new TopicCtrlEntity(bdbEntity1);
+        // check bdbEntity1
+        Assert.assertEquals(bdbEntity1.getTopicName(), topicName);
+        Assert.assertEquals(bdbEntity1.getTopicId(), TBaseConstants.META_VALUE_UNDEFINED);
+        Assert.assertEquals(bdbEntity1.isEnableAuthControl(), enableAuthControl);
+        Assert.assertEquals(bdbEntity1.getMaxMsgSize(), TBaseConstants.META_VALUE_UNDEFINED);
+        Assert.assertEquals(bdbEntity1.getCreateUser(), createUser);
+        Assert.assertEquals(bdbEntity1.getCreateDate(), createDate);
+        Assert.assertEquals(bdbEntity1.getDataVerId(), TBaseConstants.META_VALUE_UNDEFINED);
+        bdbEntity1.setMaxMsgSize(maxMsgSizeInB);
+        Assert.assertEquals(bdbEntity1.getMaxMsgSize(), maxMsgSizeInB);
+        // check ctrlEntity1
+        Assert.assertEquals(ctrlEntity1.getTopicName(), topicName);
+        Assert.assertEquals(ctrlEntity1.getTopicId(), TBaseConstants.META_VALUE_UNDEFINED);
+        Assert.assertEquals(ctrlEntity1.getAuthCtrlStatus(), EnableStatus.STATUS_DISABLE);
+        Assert.assertEquals(ctrlEntity1.getMaxMsgSizeInB(),
+                TBaseConstants.META_MAX_MESSAGE_DATA_SIZE);
+        Assert.assertEquals(ctrlEntity1.getMaxMsgSizeInMB(),
+                TBaseConstants.META_MIN_ALLOWED_MESSAGE_SIZE_MB);
+        Assert.assertEquals(ctrlEntity1.getCreateUser(), createUser);
+        Assert.assertEquals(ctrlEntity1.getCreateDate(), createDate);
+        Assert.assertEquals(ctrlEntity1.getDataVerId(), TBaseConstants.META_VALUE_UNDEFINED);
+        // case 2
+        long dataVerId2 = 555;
+        int topicId2 = 222;
+        String topicName2 = "test_1";
+        boolean enableAuthControl2 = true;
+        String attributes2 = "";
+        String createUser2 = "creater2";
+        Date createDate2 = new Date();
+        int maxMsgSizeInB2 = 14;
+        TopicCtrlEntity ctrlEntity2 = ctrlEntity1.clone();
+        Assert.assertTrue(ctrlEntity2.isDataEquals(ctrlEntity1));
+        BaseEntity opInfoEntry = new BaseEntity(dataVerId2, createUser2, createDate2);
+        Assert.assertTrue(ctrlEntity2.updBaseModifyInfo(opInfoEntry));
+        Assert.assertTrue(ctrlEntity2.updModifyInfo(opInfoEntry.getDataVerId(),
+                topicId2, maxMsgSizeInB2, enableAuthControl2));
+        Assert.assertFalse(ctrlEntity2.isDataEquals(ctrlEntity1));
+        Assert.assertFalse(ctrlEntity2.isMatched(ctrlEntity1));
+        // check ctrlEntity2
+        Assert.assertEquals(ctrlEntity2.getTopicName(), topicName);
+        Assert.assertEquals(ctrlEntity2.getTopicId(), topicId2);
+        Assert.assertEquals(ctrlEntity2.getAuthCtrlStatus(), EnableStatus.STATUS_ENABLE);
+        Assert.assertEquals(ctrlEntity2.getMaxMsgSizeInB(),
+                SettingValidUtils.validAndXfeMaxMsgSizeFromMBtoB(maxMsgSizeInB2));
+        Assert.assertEquals(ctrlEntity2.getMaxMsgSizeInMB(), maxMsgSizeInB2);
+        Assert.assertEquals(ctrlEntity2.getCreateUser(), createUser);
+        Assert.assertEquals(ctrlEntity2.getCreateDate(), createDate);
+        Assert.assertEquals(ctrlEntity2.getModifyUser(), createUser2);
+        Assert.assertEquals(ctrlEntity2.getModifyDate(), createDate2);
+        Assert.assertEquals(ctrlEntity2.getDataVerId(), dataVerId2);
+        // case 3
+        BdbTopicAuthControlEntity bdbEntity3 =
+                ctrlEntity2.buildBdbTopicAuthControlEntity();
+        Assert.assertEquals(bdbEntity3.getTopicName(), ctrlEntity2.getTopicName());
+        Assert.assertEquals(bdbEntity3.getTopicId(), ctrlEntity2.getTopicId());
+        Assert.assertEquals(bdbEntity3.isEnableAuthControl(),
+                ctrlEntity2.getAuthCtrlStatus().isEnable());
+        Assert.assertEquals(bdbEntity3.getMaxMsgSize(), ctrlEntity2.getMaxMsgSizeInB());
+        Assert.assertEquals(bdbEntity3.getCreateUser(), ctrlEntity2.getModifyUser());
+        Assert.assertEquals(bdbEntity3.getCreateDate(), ctrlEntity2.getModifyDate());
+        Assert.assertEquals(bdbEntity3.getDataVerId(), ctrlEntity2.getDataVerId());
+        // case 4
+        TopicCtrlEntity ctrlEntity4 = new TopicCtrlEntity(bdbEntity3);
+        // check ctrlEntity4
+        Assert.assertTrue(ctrlEntity4.isDataEquals(ctrlEntity2));
+        Assert.assertEquals(ctrlEntity4.getTopicName(), ctrlEntity2.getTopicName());
+        Assert.assertEquals(ctrlEntity4.getTopicId(), ctrlEntity2.getTopicId());
+        Assert.assertEquals(ctrlEntity4.getAuthCtrlStatus(), ctrlEntity2.getAuthCtrlStatus());
+        Assert.assertEquals(ctrlEntity4.getMaxMsgSizeInB(), ctrlEntity2.getMaxMsgSizeInB());
+        Assert.assertEquals(ctrlEntity4.getCreateUser(), ctrlEntity2.getModifyUser());
+        Assert.assertEquals(ctrlEntity4.getCreateDate(), ctrlEntity2.getModifyDate());
+        Assert.assertEquals(ctrlEntity4.getDataVerId(), ctrlEntity2.getDataVerId());
+    }
+
+}
diff --git a/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicPropGroupTest.java b/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicPropGroupTest.java
new file mode 100644
index 0000000..4dbf3fc
--- /dev/null
+++ b/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicPropGroupTest.java
@@ -0,0 +1,156 @@
+/**
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * 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.tubemq.server.master.metamanage.metastore.dao.entity;
+
+import org.apache.tubemq.corebase.TBaseConstants;
+import org.apache.tubemq.server.common.statusdef.CleanPolType;
+import org.junit.Assert;
+import org.junit.Test;
+
+
+
+
+public class TopicPropGroupTest {
+
+    @Test
+    public void topicPropGroupTest() {
+        // case 1
+        TopicPropGroup propsCase1 = new TopicPropGroup();
+        Assert.assertEquals(propsCase1.getNumTopicStores(), TBaseConstants.META_VALUE_UNDEFINED);
+        Assert.assertEquals(propsCase1.getNumPartitions(), TBaseConstants.META_VALUE_UNDEFINED);
+        Assert.assertEquals(propsCase1.getUnflushThreshold(), TBaseConstants.META_VALUE_UNDEFINED);
+        Assert.assertEquals(propsCase1.getUnflushInterval(), TBaseConstants.META_VALUE_UNDEFINED);
+        Assert.assertEquals(propsCase1.getUnflushDataHold(), TBaseConstants.META_VALUE_UNDEFINED);
+        Assert.assertEquals(propsCase1.getMemCacheMsgSizeInMB(), TBaseConstants.META_VALUE_UNDEFINED);
+        Assert.assertEquals(propsCase1.getMemCacheFlushIntvl(), TBaseConstants.META_VALUE_UNDEFINED);
+        Assert.assertEquals(propsCase1.getMemCacheMsgCntInK(), TBaseConstants.META_VALUE_UNDEFINED);
+        Assert.assertTrue((propsCase1.getAcceptPublish() == null));
+        Assert.assertTrue((propsCase1.getAcceptSubscribe() == null));
+        Assert.assertEquals(propsCase1.getDataStoreType(), TBaseConstants.META_VALUE_UNDEFINED);
+        Assert.assertEquals(propsCase1.getDataPath(), "");
+        Assert.assertEquals(propsCase1.getDeletePolicy(), "");
+        // case 2
+        int numTopicStores = 1;
+        int numPartitions = 2;
+        int unflushThreshold = 3;
+        int unflushInterval = 4;
+        int unflushDataHold = 5;
+        int memCacheMsgSizeInMB = 6;
+        int memCacheMsgCntInK = 7;
+        int memCacheFlushIntvl = 8;
+        boolean acceptPublish = true;
+        boolean acceptSubscribe = false;
+        String deletePolicy = "delete,12h";
+        int dataStoreType = 9;
+        String dataPath = "test\\test";
+        TopicPropGroup propsCase2 =
+                new TopicPropGroup(numTopicStores, numPartitions, unflushThreshold,
+                        unflushInterval, unflushDataHold, memCacheMsgSizeInMB,
+                        memCacheMsgCntInK, memCacheFlushIntvl, acceptPublish,
+                        acceptSubscribe, deletePolicy, dataStoreType, dataPath);
+        Assert.assertEquals(propsCase2.getNumTopicStores(), numTopicStores);
+        Assert.assertEquals(propsCase2.getNumPartitions(), numPartitions);
+        Assert.assertEquals(propsCase2.getUnflushThreshold(), unflushThreshold);
+        Assert.assertEquals(propsCase2.getUnflushInterval(), unflushInterval);
+        Assert.assertEquals(propsCase2.getUnflushDataHold(), unflushDataHold);
+        Assert.assertEquals(propsCase2.getMemCacheMsgSizeInMB(), memCacheMsgSizeInMB);
+        Assert.assertEquals(propsCase2.getMemCacheFlushIntvl(), memCacheFlushIntvl);
+        Assert.assertEquals(propsCase2.getMemCacheMsgCntInK(), memCacheMsgCntInK);
+        Assert.assertEquals(propsCase2.getAcceptPublish(), acceptPublish);
+        Assert.assertEquals(propsCase2.getAcceptSubscribe(), acceptSubscribe);
+        Assert.assertEquals(propsCase2.getDataStoreType(), dataStoreType);
+        Assert.assertEquals(propsCase2.getDataPath(), dataPath);
+        Assert.assertEquals(propsCase2.getDeletePolicy(), deletePolicy);
+        Assert.assertEquals(propsCase2.getCleanPolicyType(), CleanPolType.CLEAN_POL_DELETE);
+        Assert.assertEquals(propsCase2.getRetPeriodInMs(), 12 * 3600 * 1000);
+        // case 3
+        int newNumTopicStores = 101;
+        int newNumPartitions = 102;
+        int newUnflushThreshold = 103;
+        int newUnflushInterval = 104;
+        int newUnflushDataHold = 105;
+        int newMemCacheMsgSizeInMB = 106;
+        int newMemCacheMsgCntInK = 107;
+        int newMemCacheFlushIntvl = 108;
+        boolean newAcceptPublish = false;
+        boolean newAcceptSubscribe = true;
+        String newDeletePolicy = "delete,10h";
+        int newDataStoreType = 109;
+        String newDataPath = "newnew";
+        TopicPropGroup propsCase3 = propsCase2.clone();
+        Assert.assertTrue(propsCase3.isMatched(propsCase2));
+        Assert.assertFalse(propsCase2.updModifyInfo(propsCase3));
+        propsCase3.setNumTopicStores(newNumTopicStores);
+        Assert.assertEquals(propsCase3.getNumTopicStores(), newNumTopicStores);
+        Assert.assertNotEquals(propsCase3.getNumTopicStores(), numTopicStores);
+        Assert.assertNotEquals(propsCase3.getNumTopicStores(), propsCase2.getNumTopicStores());
+        propsCase3.setNumPartitions(newNumPartitions);
+        Assert.assertEquals(propsCase3.getNumPartitions(), newNumPartitions);
+        Assert.assertNotEquals(propsCase3.getNumPartitions(), numPartitions);
+        Assert.assertNotEquals(propsCase3.getNumPartitions(), propsCase2.getNumPartitions());
+        propsCase3.setUnflushThreshold(newUnflushThreshold);
+        Assert.assertEquals(propsCase3.getUnflushThreshold(), newUnflushThreshold);
+        Assert.assertNotEquals(propsCase3.getUnflushThreshold(), unflushThreshold);
+        Assert.assertNotEquals(propsCase3.getUnflushThreshold(), propsCase2.getUnflushThreshold());
+        propsCase3.setUnflushInterval(newUnflushInterval);
+        Assert.assertEquals(propsCase3.getUnflushInterval(), newUnflushInterval);
+        Assert.assertNotEquals(propsCase3.getUnflushInterval(), unflushInterval);
+        Assert.assertNotEquals(propsCase3.getUnflushInterval(), propsCase2.getUnflushInterval());
+        propsCase3.setUnflushDataHold(newUnflushDataHold);
+        Assert.assertEquals(propsCase3.getUnflushDataHold(), newUnflushDataHold);
+        Assert.assertNotEquals(propsCase3.getUnflushDataHold(), unflushDataHold);
+        Assert.assertNotEquals(propsCase3.getUnflushDataHold(), propsCase2.getUnflushDataHold());
+        propsCase3.setMemCacheMsgSizeInMB(newMemCacheMsgSizeInMB);
+        Assert.assertEquals(propsCase3.getMemCacheMsgSizeInMB(), newMemCacheMsgSizeInMB);
+        Assert.assertNotEquals(propsCase3.getMemCacheMsgSizeInMB(), memCacheMsgSizeInMB);
+        Assert.assertNotEquals(propsCase3.getMemCacheMsgSizeInMB(), propsCase2.getMemCacheMsgSizeInMB());
+        propsCase3.setMemCacheMsgCntInK(newMemCacheMsgCntInK);
+        Assert.assertEquals(propsCase3.getMemCacheMsgCntInK(), newMemCacheMsgCntInK);
+        Assert.assertNotEquals(propsCase3.getMemCacheMsgCntInK(), memCacheMsgCntInK);
+        Assert.assertNotEquals(propsCase3.getMemCacheMsgCntInK(), propsCase2.getMemCacheMsgCntInK());
+        propsCase3.setMemCacheFlushIntvl(newMemCacheFlushIntvl);
+        Assert.assertEquals(propsCase3.getMemCacheFlushIntvl(), newMemCacheFlushIntvl);
+        Assert.assertNotEquals(propsCase3.getMemCacheFlushIntvl(), memCacheFlushIntvl);
+        Assert.assertNotEquals(propsCase3.getMemCacheFlushIntvl(), propsCase2.getMemCacheFlushIntvl());
+        propsCase3.setAcceptPublish(newAcceptPublish);
+        Assert.assertEquals(propsCase3.getAcceptPublish(), newAcceptPublish);
+        Assert.assertNotEquals(propsCase3.getAcceptPublish(), acceptPublish);
+        Assert.assertNotEquals(propsCase3.getAcceptPublish(), propsCase2.getAcceptPublish());
+        propsCase3.setAcceptSubscribe(newAcceptSubscribe);
+        Assert.assertEquals(propsCase3.getAcceptSubscribe(), newAcceptSubscribe);
+        Assert.assertNotEquals(propsCase3.getAcceptSubscribe(), acceptSubscribe);
+        Assert.assertNotEquals(propsCase3.getAcceptSubscribe(), propsCase2.getAcceptSubscribe());
+        propsCase3.setDataStoreInfo(newDataStoreType, newDataPath);
+        Assert.assertEquals(propsCase3.getDataStoreType(), newDataStoreType);
+        Assert.assertNotEquals(propsCase3.getDataStoreType(), dataStoreType);
+        Assert.assertNotEquals(propsCase3.getDataStoreType(), propsCase2.getDataStoreType());
+        Assert.assertEquals(propsCase3.getDataPath(), newDataPath);
+        Assert.assertNotEquals(propsCase3.getDataPath(), dataPath);
+        Assert.assertNotEquals(propsCase3.getDataPath(), propsCase2.getDataPath());
+        propsCase3.setDeletePolicy(newDeletePolicy);
+        Assert.assertEquals(propsCase3.getDeletePolicy(), newDeletePolicy);
+        Assert.assertNotEquals(propsCase3.getDeletePolicy(), deletePolicy);
+        Assert.assertNotEquals(propsCase3.getDeletePolicy(), propsCase2.getDeletePolicy());
+        Assert.assertEquals(propsCase3.getCleanPolicyType(), CleanPolType.CLEAN_POL_DELETE);
+        Assert.assertEquals(propsCase3.getRetPeriodInMs(), 10 * 3600 * 1000);
+        Assert.assertFalse(propsCase3.isMatched(propsCase2));
+        Assert.assertTrue(propsCase2.updModifyInfo(propsCase3));
+
+    }
+
+}

[incubator-inlong] 04/05: [INLONG-618] Add unit tests for metastore.dao.entity.*

Posted by go...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gosonzhang pushed a commit to branch TUBEMQ-570
in repository https://gitbox.apache.org/repos/asf/incubator-inlong.git

commit a936fdf3b2557e2b3ab74645d0c0d3584c323068
Author: gosonzhang <go...@tencent.com>
AuthorDate: Thu May 27 20:30:26 2021 +0800

    [INLONG-618] Add unit tests for metastore.dao.entity.*
---
 .../server/common/utils/WebParameterUtils.java     | 17 +++-
 .../bdbentitys/BdbClusterSettingEntity.java        | 42 +++++++++-
 .../bdbentitys/BdbGroupFilterCondEntity.java       | 75 ++++++++++++-----
 .../bdbentitys/BdbGroupFlowCtrlEntity.java         | 93 ++++++++++++++--------
 .../bdbentitys/BdbTopicAuthControlEntity.java      | 75 ++++++++++++-----
 .../metamanage/metastore/TStoreConstants.java      |  4 +
 .../metastore/dao/entity/BaseEntity.java           | 33 ++++++--
 .../metastore/dao/entity/ClusterSettingEntity.java |  4 +-
 .../dao/entity/GroupConsumeCtrlEntity.java         |  4 +-
 .../metastore/dao/entity/GroupResCtrlEntity.java   |  4 +-
 .../metastore/dao/entity/TopicCtrlEntity.java      |  4 +-
 .../server/common/WebParameterUtilsTest.java       |  4 +-
 .../dao/entity/GroupConsumeCtrlEntityTest.java     | 12 +--
 .../dao/entity/GroupResCtrlEntityTest.java         | 18 +++--
 .../metastore/dao/entity/TopicCtrlEntityTest.java  | 18 +++--
 15 files changed, 298 insertions(+), 109 deletions(-)

diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/common/utils/WebParameterUtils.java b/tubemq-server/src/main/java/org/apache/tubemq/server/common/utils/WebParameterUtils.java
index b5535d8..52b7dbc 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/common/utils/WebParameterUtils.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/common/utils/WebParameterUtils.java
@@ -1538,10 +1538,25 @@ public class WebParameterUtils {
     }
 
     public static String date2yyyyMMddHHmmss(Date date) {
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
+        SimpleDateFormat sdf =
+                new SimpleDateFormat(TBaseConstants.META_TMP_DATE_VALUE);
         return sdf.format(date);
     }
 
+    public static Date yyyyMMddHHmmss2date(String dateStr) {
+        if (dateStr == null) {
+            return null;
+        }
+        SimpleDateFormat sdf =
+                new SimpleDateFormat(TBaseConstants.META_TMP_DATE_VALUE);
+        try {
+            return sdf.parse(dateStr);
+        } catch (Throwable e) {
+            return null;
+        }
+    }
+
+
     public static String checkParamCommonRequires(final String paramName, final String paramValue,
                                                    boolean required) throws Exception {
         String temParamValue = null;
diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/master/bdbstore/bdbentitys/BdbClusterSettingEntity.java b/tubemq-server/src/main/java/org/apache/tubemq/server/master/bdbstore/bdbentitys/BdbClusterSettingEntity.java
index 892243d..530adec 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/master/bdbstore/bdbentitys/BdbClusterSettingEntity.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/master/bdbstore/bdbentitys/BdbClusterSettingEntity.java
@@ -341,6 +341,40 @@ public class BdbClusterSettingEntity implements Serializable {
                 this.attributes, TStoreConstants.TOKEN_FLOW_CTRL_INFO);
     }
 
+    public void setCreateInfo(String creater, Date createDate) {
+        if (TStringUtils.isNotBlank(creater)) {
+            this.attributes =
+                    TStringUtils.setAttrValToAttributes(this.attributes,
+                            TStoreConstants.TOKEN_CREATE_USER, creater);
+        }
+        if (createDate != null) {
+            String dataStr = WebParameterUtils.date2yyyyMMddHHmmss(createDate);
+            this.attributes =
+                    TStringUtils.setAttrValToAttributes(this.attributes,
+                            TStoreConstants.TOKEN_CREATE_DATE, dataStr);
+        }
+    }
+
+    public String getCreateUser() {
+        return TStringUtils.getAttrValFrmAttributes(
+                this.attributes, TStoreConstants.TOKEN_CREATE_USER);
+    }
+
+    public Date getCreateDate() {
+        String dateStr = TStringUtils.getAttrValFrmAttributes(
+                this.attributes, TStoreConstants.TOKEN_CREATE_DATE);
+        return WebParameterUtils.yyyyMMddHHmmss2date(dateStr);
+    }
+
+    public String getStrCreateDate() {
+        return TStringUtils.getAttrValFrmAttributes(
+                this.attributes, TStoreConstants.TOKEN_CREATE_DATE);
+    }
+
+    public String getStrModifyDate() {
+        return WebParameterUtils.date2yyyyMMddHHmmss(modifyDate);
+    }
+
     /**
      * Serialize field to json format
      *
@@ -373,9 +407,11 @@ public class BdbClusterSettingEntity implements Serializable {
         }
         return sBuilder.append(",\"qryPriorityId\":").append(qryPriorityId)
                 .append(",\"attributes\":\"").append(attributes).append("\"")
+                .append(",\"createUser\":\"").append(getCreateUser()).append("\"")
+                .append(",\"createDate\":\"").append(getStrCreateDate()).append("\"")
                 .append(",\"modifyUser\":\"").append(modifyUser).append("\"")
                 .append(",\"modifyDate\":\"")
-                .append(WebParameterUtils.date2yyyyMMddHHmmss(modifyDate))
+                .append(getStrModifyDate())
                 .append("\"}");
     }
 
@@ -406,8 +442,10 @@ public class BdbClusterSettingEntity implements Serializable {
         }
         return sBuilder.append("qryPriorityId", qryPriorityId)
                 .append("attributes", attributes)
+                .append("createUser", getCreateUser())
+                .append("createDate", getStrCreateDate())
                 .append("modifyUser", modifyUser)
-                .append("modifyDate", modifyDate)
+                .append("modifyDate", getStrModifyDate())
                 .toString();
     }
 }
diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/master/bdbstore/bdbentitys/BdbGroupFilterCondEntity.java b/tubemq-server/src/main/java/org/apache/tubemq/server/master/bdbstore/bdbentitys/BdbGroupFilterCondEntity.java
index 5a964a4..6279ec1 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/master/bdbstore/bdbentitys/BdbGroupFilterCondEntity.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/master/bdbstore/bdbentitys/BdbGroupFilterCondEntity.java
@@ -40,6 +40,9 @@ public class BdbGroupFilterCondEntity implements Serializable {
     private String consumerGroupName;
     private int controlStatus = -2;   // -2: undefine; 0: not started; 1:started, not limited; 2: started, limited
     private String attributes;
+    // ** Based on the data compatibility consideration of the original version:
+    //     the creation information in this example is the last modified information,
+    //     and the modified information is the creation information
     private String createUser;
     private Date createDate;
 
@@ -49,7 +52,7 @@ public class BdbGroupFilterCondEntity implements Serializable {
 
     public BdbGroupFilterCondEntity(String topicName, String consumerGroupName,
                                     int controlStatus, String filterCondStr,
-                                    String createUser, Date createDate) {
+                                    String modifyUser, Date modifyDate) {
         this.recordKey =
                 new StringBuilder(512)
                         .append(topicName)
@@ -59,13 +62,13 @@ public class BdbGroupFilterCondEntity implements Serializable {
         this.consumerGroupName = consumerGroupName;
         this.controlStatus = controlStatus;
         setFilterCondStr(filterCondStr);
-        this.createUser = createUser;
-        this.createDate = createDate;
+        this.createUser = modifyUser;
+        this.createDate = modifyDate;
     }
 
     public BdbGroupFilterCondEntity(String topicName, String consumerGroupName,
                                     int controlStatus, String filterCondStr,
-                                    String attributes, String createUser, Date createDate) {
+                                    String attributes, String modifyUser, Date modifyDate) {
         this.recordKey =
                 new StringBuilder(512)
                         .append(topicName)
@@ -74,8 +77,8 @@ public class BdbGroupFilterCondEntity implements Serializable {
         this.topicName = topicName;
         this.consumerGroupName = consumerGroupName;
         this.controlStatus = controlStatus;
-        this.createUser = createUser;
-        this.createDate = createDate;
+        this.createUser = modifyUser;
+        this.createDate = modifyDate;
         this.attributes = attributes;
         setFilterCondStr(filterCondStr);
     }
@@ -157,22 +160,14 @@ public class BdbGroupFilterCondEntity implements Serializable {
         this.controlStatus = controlStatus;
     }
 
-    public String getCreateUser() {
+    public String getModifyUser() {
         return createUser;
     }
 
-    public void setCreateUser(String createUser) {
-        this.createUser = createUser;
-    }
-
-    public Date getCreateDate() {
+    public Date getModifyDate() {
         return createDate;
     }
 
-    public void setCreateDate(Date createDate) {
-        this.createDate = createDate;
-    }
-
     public String getAttributes() {
         if (TStringUtils.isNotBlank(attributes)
                 && !attributes.contains(TokenConstants.EQ)) {
@@ -210,6 +205,41 @@ public class BdbGroupFilterCondEntity implements Serializable {
                         String.valueOf(dataVerId));
     }
 
+    // for
+    public void setCreateInfo(String createUser, Date createDate) {
+        if (TStringUtils.isNotBlank(createUser)) {
+            this.attributes =
+                    TStringUtils.setAttrValToAttributes(this.attributes,
+                            TStoreConstants.TOKEN_CREATE_USER, createUser);
+        }
+        if (createDate != null) {
+            String dataStr = WebParameterUtils.date2yyyyMMddHHmmss(createDate);
+            this.attributes =
+                    TStringUtils.setAttrValToAttributes(this.attributes,
+                            TStoreConstants.TOKEN_CREATE_DATE, dataStr);
+        }
+    }
+
+    public String getCreateUser() {
+        return TStringUtils.getAttrValFrmAttributes(
+                this.attributes, TStoreConstants.TOKEN_CREATE_USER);
+    }
+
+    public Date getCreateDate() {
+        String dateStr = TStringUtils.getAttrValFrmAttributes(
+                this.attributes, TStoreConstants.TOKEN_CREATE_DATE);
+        return WebParameterUtils.yyyyMMddHHmmss2date(dateStr);
+    }
+
+    public String getStrModifyDate() {
+        return WebParameterUtils.date2yyyyMMddHHmmss(createDate);
+    }
+
+    public String getStrCreateDate() {
+        return TStringUtils.getAttrValFrmAttributes(
+                this.attributes, TStoreConstants.TOKEN_CREATE_DATE);
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this)
@@ -218,8 +248,10 @@ public class BdbGroupFilterCondEntity implements Serializable {
                 .append("consumerGroupName", consumerGroupName)
                 .append("controlStatus", controlStatus)
                 .append("attributes", attributes)
-                .append("createUser", createUser)
-                .append("createDate", createDate)
+                .append("createUser", getCreateUser())
+                .append("createDate", getStrCreateDate())
+                .append("modifyUser", createUser)
+                .append("modifyDate", getStrModifyDate())
                 .toString();
     }
 
@@ -230,9 +262,10 @@ public class BdbGroupFilterCondEntity implements Serializable {
                 .append("\",\"consumerGroupName\":\"").append(consumerGroupName)
                 .append("\",\"filterConds\":\"").append(attributes)
                 .append("\",\"condStatus\":").append(controlStatus)
-                .append(",\"createUser\":\"").append(createUser)
-                .append("\",\"createDate\":\"")
-                .append(WebParameterUtils.date2yyyyMMddHHmmss(createDate))
+                .append(",\"createUser\":\"").append(getCreateUser())
+                .append("\",\"createDate\":\"").append(getStrCreateDate())
+                .append("\",\"modifyUser\":\"").append(createUser)
+                .append("\",\"modifyDate\":\"").append(getStrModifyDate())
                 .append("\"}");
     }
 }
diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/master/bdbstore/bdbentitys/BdbGroupFlowCtrlEntity.java b/tubemq-server/src/main/java/org/apache/tubemq/server/master/bdbstore/bdbentitys/BdbGroupFlowCtrlEntity.java
index 144b7e1..aca0f77 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/master/bdbstore/bdbentitys/BdbGroupFlowCtrlEntity.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/master/bdbstore/bdbentitys/BdbGroupFlowCtrlEntity.java
@@ -42,6 +42,9 @@ public class BdbGroupFlowCtrlEntity implements Serializable {
     private long ssdTranslateId = System.currentTimeMillis();
     private boolean needSSDProc = false;    //ssd
     private String attributes;          //extra attributes
+    // ** Based on the data compatibility consideration of the original version:
+    //     the creation information in this example is the last modified information,
+    //     and the modified information is the creation information
     private String createUser;          //create user
     private Date createDate;            //create date
 
@@ -53,7 +56,7 @@ public class BdbGroupFlowCtrlEntity implements Serializable {
     public BdbGroupFlowCtrlEntity(final String flowCtrlInfo, final int statusId,
                                   final int ruleCnt, final int qryPriorityId,
                                   final String attributes, final boolean curNeedSSDProc,
-                                  final String createUser, final Date createDate) {
+                                  final String modifyUser, final Date modifyDate) {
         this.statusId = statusId;
         this.groupName = TServerConstants.TOKEN_DEFAULT_FLOW_CONTROL;
         this.serialId = System.currentTimeMillis();
@@ -62,8 +65,8 @@ public class BdbGroupFlowCtrlEntity implements Serializable {
         this.ruleCnt = ruleCnt;
         this.ssdTranslateId = System.currentTimeMillis();
         this.needSSDProc = curNeedSSDProc;
-        this.createUser = createUser;
-        this.createDate = createDate;
+        this.createUser = modifyUser;
+        this.createDate = modifyDate;
         this.setQryPriorityId(qryPriorityId);
     }
 
@@ -71,16 +74,16 @@ public class BdbGroupFlowCtrlEntity implements Serializable {
     public BdbGroupFlowCtrlEntity(final String groupName, final String flowCtrlInfo,
                                   final int statusId, final int ruleCnt,
                                   final int qryPriorityId, final String attributes,
-                                  final boolean needSSDProc, final String createUser,
-                                  final Date createDate) {
+                                  final boolean needSSDProc, final String modifyUser,
+                                  final Date modifyDate) {
         this.groupName = groupName;
         this.serialId = System.currentTimeMillis();
         this.statusId = statusId;
         this.flowCtrlInfo = flowCtrlInfo;
         this.attributes = attributes;
         this.ruleCnt = ruleCnt;
-        this.createUser = createUser;
-        this.createDate = createDate;
+        this.createUser = modifyUser;
+        this.createDate = modifyDate;
         this.needSSDProc = needSSDProc;
         this.ssdTranslateId = TBaseConstants.META_VALUE_UNDEFINED;
         this.setQryPriorityId(qryPriorityId);
@@ -90,16 +93,16 @@ public class BdbGroupFlowCtrlEntity implements Serializable {
     public BdbGroupFlowCtrlEntity(final String groupName, final String flowCtrlInfo,
                                   final int statusId, final int ruleCnt,
                                   final String attributes, final long ssdTranslateId,
-                                  final boolean needSSDProc, final String createUser,
-                                  final Date createDate) {
+                                  final boolean needSSDProc, final String modifyUser,
+                                  final Date modifyDate) {
         this.groupName = groupName;
         this.serialId = System.currentTimeMillis();
         this.statusId = statusId;
         this.flowCtrlInfo = flowCtrlInfo;
         this.attributes = attributes;
         this.ruleCnt = ruleCnt;
-        this.createUser = createUser;
-        this.createDate = createDate;
+        this.createUser = modifyUser;
+        this.createDate = modifyDate;
         this.needSSDProc = needSSDProc;
         this.ssdTranslateId = ssdTranslateId;
     }
@@ -107,16 +110,16 @@ public class BdbGroupFlowCtrlEntity implements Serializable {
     //Constructor
     public BdbGroupFlowCtrlEntity(long serialId, String groupName, String flowCtrlInfo,
                                   int statusId, int ruleCnt, int qryPriorityId,
-                                  String attributes, String createUser,
-                                  Date createDate) {
+                                  String attributes, String modifyUser,
+                                  Date modifyDate) {
         this.groupName = groupName;
         this.serialId = serialId;
         this.statusId = statusId;
         this.flowCtrlInfo = flowCtrlInfo;
         this.attributes = attributes;
         this.ruleCnt = ruleCnt;
-        this.createUser = createUser;
-        this.createDate = createDate;
+        this.createUser = modifyUser;
+        this.createDate = modifyDate;
         this.needSSDProc = false;
         this.ssdTranslateId = TBaseConstants.META_VALUE_UNDEFINED;
         this.setQryPriorityId(qryPriorityId);
@@ -155,14 +158,10 @@ public class BdbGroupFlowCtrlEntity implements Serializable {
         this.attributes = attributes;
     }
 
-    public String getCreateUser() {
+    public String getModifyUser() {
         return createUser;
     }
 
-    public void setCreateUser(String createUser) {
-        this.createUser = createUser;
-    }
-
     public boolean isNeedSSDProc() {
         return needSSDProc;
     }
@@ -171,14 +170,10 @@ public class BdbGroupFlowCtrlEntity implements Serializable {
         this.needSSDProc = needSSDProc;
     }
 
-    public Date getCreateDate() {
+    public Date getModifyDate() {
         return createDate;
     }
 
-    public void setCreateDate(Date createDate) {
-        this.createDate = createDate;
-    }
-
     public String getFlowCtrlInfo() {
         return flowCtrlInfo;
     }
@@ -253,9 +248,38 @@ public class BdbGroupFlowCtrlEntity implements Serializable {
                         String.valueOf(allowedBrokerClientRate));
     }
 
-    public void setModifyInfo(String modifyUser, Date modifyDate) {
-        this.createUser = modifyUser;
-        this.createDate = modifyDate;
+    public void setCreateInfo(String createUser, Date createDate) {
+        if (TStringUtils.isNotBlank(createUser)) {
+            this.attributes =
+                    TStringUtils.setAttrValToAttributes(this.attributes,
+                            TStoreConstants.TOKEN_CREATE_USER, createUser);
+        }
+        if (createDate != null) {
+            String dataStr = WebParameterUtils.date2yyyyMMddHHmmss(createDate);
+            this.attributes =
+                    TStringUtils.setAttrValToAttributes(this.attributes,
+                            TStoreConstants.TOKEN_CREATE_DATE, dataStr);
+        }
+    }
+
+    public String getCreateUser() {
+        return TStringUtils.getAttrValFrmAttributes(
+                this.attributes, TStoreConstants.TOKEN_CREATE_USER);
+    }
+
+    public Date getCreateDate() {
+        String dateStr = TStringUtils.getAttrValFrmAttributes(
+                this.attributes, TStoreConstants.TOKEN_CREATE_DATE);
+        return WebParameterUtils.yyyyMMddHHmmss2date(dateStr);
+    }
+
+    public String getStrModifyDate() {
+        return WebParameterUtils.date2yyyyMMddHHmmss(createDate);
+    }
+
+    public String getStrCreateDate() {
+        return TStringUtils.getAttrValFrmAttributes(
+                this.attributes, TStoreConstants.TOKEN_CREATE_DATE);
     }
 
     @Override
@@ -269,8 +293,10 @@ public class BdbGroupFlowCtrlEntity implements Serializable {
                 .append("ssdTranslateId", ssdTranslateId)
                 .append("needSSDProc", needSSDProc)
                 .append("attributes", attributes)
-                .append("createUser", createUser)
-                .append("createDate", createDate)
+                .append("createUser", getCreateUser())
+                .append("createDate", getCreateUser())
+                .append("modifyUser", createUser)
+                .append("modifyDate", getStrModifyDate())
                 .toString();
     }
 
@@ -291,9 +317,10 @@ public class BdbGroupFlowCtrlEntity implements Serializable {
                 .append(",\"qryPriorityId\":").append(getQryPriorityId())
                 .append(",\"flowCtrlInfo\":").append(flowCtrlInfo)
                 .append(", \"attributes\":\"").append(attributes)
-                .append("\", \"createUser\":\"").append(createUser)
-                .append("\",\"createDate\":\"")
-                .append(WebParameterUtils.date2yyyyMMddHHmmss(createDate))
+                .append(",\"createUser\":\"").append(getCreateUser())
+                .append("\",\"createDate\":\"").append(getStrCreateDate())
+                .append("\",\"modifyUser\":\"").append(createUser)
+                .append("\",\"modifyDate\":\"").append(getStrModifyDate())
                 .append("\"}");
     }
 }
diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/master/bdbstore/bdbentitys/BdbTopicAuthControlEntity.java b/tubemq-server/src/main/java/org/apache/tubemq/server/master/bdbstore/bdbentitys/BdbTopicAuthControlEntity.java
index 54aad1b..164ba40 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/master/bdbstore/bdbentitys/BdbTopicAuthControlEntity.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/master/bdbstore/bdbentitys/BdbTopicAuthControlEntity.java
@@ -35,6 +35,9 @@ public class BdbTopicAuthControlEntity implements Serializable {
     @PrimaryKey
     private String topicName;
     private int enableAuthControl = -1; // -1 : undefine; 0:disable, 1:enable
+    // ** Based on the data compatibility consideration of the original version:
+    //     the creation information in this example is the last modified information,
+    //     and the modified information is the creation information
     private String createUser;
     private Date createDate;
     private String attributes;
@@ -44,19 +47,19 @@ public class BdbTopicAuthControlEntity implements Serializable {
     }
 
     public BdbTopicAuthControlEntity(String topicName, boolean enableAuthControl,
-                                     String createUser, Date createDate) {
+                                     String modifyUser, Date modifyDate) {
         this.topicName = topicName;
         if (enableAuthControl) {
             this.enableAuthControl = 1;
         } else {
             this.enableAuthControl = 0;
         }
-        this.createUser = createUser;
-        this.createDate = createDate;
+        this.createUser = modifyUser;
+        this.createDate = modifyDate;
     }
 
     public BdbTopicAuthControlEntity(String topicName, boolean enableAuthControl,
-                                     String attributes,  String createUser, Date createDate) {
+                                     String attributes,  String modifyUser, Date modifyDate) {
         this.topicName = topicName;
         if (enableAuthControl) {
             this.enableAuthControl = 1;
@@ -64,8 +67,8 @@ public class BdbTopicAuthControlEntity implements Serializable {
             this.enableAuthControl = 0;
         }
         this.attributes = attributes;
-        this.createUser = createUser;
-        this.createDate = createDate;
+        this.createUser = modifyUser;
+        this.createDate = modifyDate;
     }
 
 
@@ -101,22 +104,14 @@ public class BdbTopicAuthControlEntity implements Serializable {
         }
     }
 
-    public String getCreateUser() {
+    public String getModifyUser() {
         return createUser;
     }
 
-    public void setCreateUser(String createUser) {
-        this.createUser = createUser;
-    }
-
-    public Date getCreateDate() {
+    public Date getModifyDate() {
         return createDate;
     }
 
-    public void setCreateDate(Date createDate) {
-        this.createDate = createDate;
-    }
-
     public long getDataVerId() {
         String atrVal =
                 TStringUtils.getAttrValFrmAttributes(this.attributes,
@@ -169,13 +164,49 @@ public class BdbTopicAuthControlEntity implements Serializable {
                         String.valueOf(maxMsgSize));
     }
 
+
+    public void setCreateInfo(String createUser, Date createDate) {
+        if (TStringUtils.isNotBlank(createUser)) {
+            this.attributes =
+                    TStringUtils.setAttrValToAttributes(this.attributes,
+                            TStoreConstants.TOKEN_CREATE_USER, createUser);
+        }
+        if (createDate != null) {
+            String dataStr = WebParameterUtils.date2yyyyMMddHHmmss(createDate);
+            this.attributes =
+                    TStringUtils.setAttrValToAttributes(this.attributes,
+                            TStoreConstants.TOKEN_CREATE_DATE, dataStr);
+        }
+    }
+
+    public String getCreateUser() {
+        return TStringUtils.getAttrValFrmAttributes(
+                this.attributes, TStoreConstants.TOKEN_CREATE_USER);
+    }
+
+    public Date getCreateDate() {
+        String dateStr = TStringUtils.getAttrValFrmAttributes(
+                this.attributes, TStoreConstants.TOKEN_CREATE_DATE);
+        return WebParameterUtils.yyyyMMddHHmmss2date(dateStr);
+    }
+
+    public String getStrModifyDate() {
+        return WebParameterUtils.date2yyyyMMddHHmmss(createDate);
+    }
+
+    public String getStrCreateDate() {
+        return TStringUtils.getAttrValFrmAttributes(
+                this.attributes, TStoreConstants.TOKEN_CREATE_DATE);
+    }
+
     public StringBuilder toJsonString(final StringBuilder sBuilder) {
         return sBuilder.append("{\"type\":\"BdbConsumerGroupEntity\",")
                 .append("\"topicName\":\"").append(topicName)
                 .append("\",\"enableAuthControl\":\"").append(enableAuthControl)
-                .append("\",\"createUser\":\"").append(createUser)
-                .append("\",\"createDate\":\"")
-                .append(WebParameterUtils.date2yyyyMMddHHmmss(createDate))
+                .append("\",\"createUser\":\"").append(getCreateUser())
+                .append("\",\"createDate\":\"").append(getStrCreateDate())
+                .append("\",\"modifyUser\":\"").append(createUser)
+                .append("\",\"modifyDate\":\"").append(getStrModifyDate())
                 .append("\",\"attributes\":\"").append(attributes).append("\"}");
     }
 
@@ -184,8 +215,10 @@ public class BdbTopicAuthControlEntity implements Serializable {
         return new ToStringBuilder(this)
                 .append("topicName", topicName)
                 .append("enableAuthControl", enableAuthControl)
-                .append("createUser", createUser)
-                .append("createDate", createDate)
+                .append("createUser", getCreateUser())
+                .append("createDate", getCreateUser())
+                .append("modifyUser", createUser)
+                .append("modifyDate", getStrModifyDate())
                 .append("attributes", attributes)
                 .toString();
     }
diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/TStoreConstants.java b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/TStoreConstants.java
index 0263cc2..a1e58a3 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/TStoreConstants.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/TStoreConstants.java
@@ -45,4 +45,8 @@ public final class TStoreConstants {
     public static final String TOKEN_MCACHE_MSG_CNT = "memCacheMsgCntInK";
     public static final String TOKEN_MCACHE_MSG_SIZE = "memCacheMsgSizeInMB";
     public static final String TOKEN_MCACHE_FLUSH_INTVL = "memCacheFlushIntvl";
+    public static final String TOKEN_CREATE_USER = "creater";
+    public static final String TOKEN_CREATE_DATE = "createDate";
+    public static final String TOKEN_MODIFY_USER = "modifier";
+    public static final String TOKEN_MODIFY_DATE = "modifyDate";
 }
diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BaseEntity.java b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BaseEntity.java
index 24e97a8..fab9544 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BaseEntity.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BaseEntity.java
@@ -29,6 +29,7 @@ import org.apache.tubemq.server.common.TServerConstants;
 import org.apache.tubemq.server.common.utils.WebParameterUtils;
 
 
+
 // AbstractEntity: entity's abstract class
 public class BaseEntity implements Serializable, Cloneable {
 
@@ -55,10 +56,8 @@ public class BaseEntity implements Serializable, Cloneable {
 
     public BaseEntity(BaseEntity other) {
         this.dataVersionId = other.dataVersionId;
-        this.createUser = other.createUser;
-        this.setCreateDate(other.createDate);
-        this.modifyUser = other.modifyUser;
-        this.setModifyDate(other.modifyDate);
+        setCreateInfo(other.createUser, other.createDate);
+        setModifyInfo(other.modifyUser, other.modifyDate);
         this.serialId.set(other.serialId.get());
         this.attributes = other.attributes;
     }
@@ -77,10 +76,8 @@ public class BaseEntity implements Serializable, Cloneable {
                       String createUser, Date createDate,
                       String modifyUser, Date modifyDate) {
         this.dataVersionId = dataVersionId;
-        this.createUser = createUser;
-        this.setCreateDate(createDate);
-        this.modifyUser = modifyUser;
-        this.setModifyDate(modifyDate);
+        setCreateInfo(createUser, createDate);
+        setModifyInfo(modifyUser, modifyDate);
         updSerialId();
     }
 
@@ -144,6 +141,20 @@ public class BaseEntity implements Serializable, Cloneable {
         return attributes;
     }
 
+    public void setCreateInfo(String creater, Date createDate) {
+        if (TStringUtils.isNotBlank(creater)) {
+            this.createUser = creater;
+        }
+        setCreateDate(createDate);
+    }
+
+    public void setModifyInfo(String modifyUser, Date modifyDate) {
+        if (TStringUtils.isNotBlank(modifyUser)) {
+            this.modifyUser = modifyUser;
+        }
+        setModifyDate(modifyDate);
+    }
+
     public void setAttributes(String attributes) {
         this.attributes = attributes;
     }
@@ -244,11 +255,17 @@ public class BaseEntity implements Serializable, Cloneable {
     }
 
     private void setModifyDate(Date date) {
+        if (date == null) {
+            return;
+        }
         this.modifyDate = date;
         this.modifyDateStr = WebParameterUtils.date2yyyyMMddHHmmss(date);
     }
 
     private void setCreateDate(Date date) {
+        if (date == null) {
+            return;
+        }
         this.createDate = date;
         this.createDateStr = WebParameterUtils.date2yyyyMMddHHmmss(date);
     }
diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/ClusterSettingEntity.java b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/ClusterSettingEntity.java
index 151ff7e..39a889d 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/ClusterSettingEntity.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/ClusterSettingEntity.java
@@ -64,7 +64,8 @@ public class ClusterSettingEntity extends BaseEntity implements Cloneable {
 
     // Constructor by BdbClusterSettingEntity
     public ClusterSettingEntity(BdbClusterSettingEntity bdbEntity) {
-        super(bdbEntity.getModifyUser(), bdbEntity.getModifyDate(),
+        super(bdbEntity.getConfigId(),
+                bdbEntity.getCreateUser(), bdbEntity.getCreateDate(),
                 bdbEntity.getModifyUser(), bdbEntity.getModifyDate());
         fillDefaultValue();
         TopicPropGroup defTopicProps =
@@ -99,6 +100,7 @@ public class ClusterSettingEntity extends BaseEntity implements Cloneable {
         if (TStringUtils.isNotBlank(clsDefTopicProps.getDataPath())) {
             bdbEntity.setDefDataPath(clsDefTopicProps.getDataPath());
         }
+        bdbEntity.setCreateInfo(getCreateUser(), getCreateDate());
         bdbEntity.setDefDataType(clsDefTopicProps.getDataStoreType());
         bdbEntity.setEnableGloFlowCtrl(enableFlowCtrl());
         bdbEntity.setGloFlowCtrlCnt(gloFlowCtrlRuleCnt);
diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupConsumeCtrlEntity.java b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupConsumeCtrlEntity.java
index b125257..477bab8 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupConsumeCtrlEntity.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupConsumeCtrlEntity.java
@@ -54,7 +54,8 @@ public class GroupConsumeCtrlEntity extends BaseEntity implements Cloneable {
 
     public GroupConsumeCtrlEntity(BdbGroupFilterCondEntity bdbEntity) {
         super(bdbEntity.getDataVerId(),
-                bdbEntity.getCreateUser(), bdbEntity.getCreateDate());
+                bdbEntity.getModifyUser(), bdbEntity.getModifyDate());
+        setCreateInfo(bdbEntity.getCreateUser(), bdbEntity.getCreateDate());
         this.setGroupAndTopic(bdbEntity.getConsumerGroupName(), bdbEntity.getTopicName());
         if (bdbEntity.getControlStatus() == 2) {
             this.filterEnable = EnableStatus.STATUS_ENABLE;
@@ -74,6 +75,7 @@ public class GroupConsumeCtrlEntity extends BaseEntity implements Cloneable {
                 new BdbGroupFilterCondEntity(topicName, groupName,
                         filterEnable.getCode(), filterCondStr,
                         getAttributes(), getModifyUser(), getModifyDate());
+        bdbEntity.setCreateInfo(getCreateUser(), getCreateDate());
         bdbEntity.setDataVerId(getDataVerId());
         bdbEntity.setConsumeEnable(consumeEnable);
         bdbEntity.setDisableConsumeReason(disableReason);
diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupResCtrlEntity.java b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupResCtrlEntity.java
index 69c280c..a66fb74 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupResCtrlEntity.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupResCtrlEntity.java
@@ -54,7 +54,8 @@ public class GroupResCtrlEntity extends BaseEntity implements Cloneable {
 
     public GroupResCtrlEntity(BdbGroupFlowCtrlEntity bdbEntity) {
         super(bdbEntity.getSerialId(),
-                bdbEntity.getCreateUser(), bdbEntity.getCreateDate());
+                bdbEntity.getModifyUser(), bdbEntity.getModifyDate());
+        setCreateInfo(bdbEntity.getCreateUser(), bdbEntity.getCreateDate());
         this.groupName = bdbEntity.getGroupName();
         this.qryPriorityId = bdbEntity.getQryPriorityId();
         this.ruleCnt = bdbEntity.getRuleCnt();
@@ -76,6 +77,7 @@ public class GroupResCtrlEntity extends BaseEntity implements Cloneable {
                 new BdbGroupFlowCtrlEntity(getDataVerId(), this.groupName,
                         this.flowCtrlInfo, statusId, this.ruleCnt, this.qryPriorityId,
                         getAttributes(), getModifyUser(), getModifyDate());
+        bdbEntity.setCreateInfo(getCreateUser(), getCreateDate());
         bdbEntity.setResCheckStatus(resCheckStatus);
         bdbEntity.setAllowedBrokerClientRate(allowedBrokerClientRate);
         return bdbEntity;
diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicCtrlEntity.java b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicCtrlEntity.java
index 0ea8559..13a01e8 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicCtrlEntity.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicCtrlEntity.java
@@ -63,7 +63,8 @@ public class TopicCtrlEntity extends BaseEntity implements Cloneable {
 
     public TopicCtrlEntity(BdbTopicAuthControlEntity bdbEntity) {
         super(bdbEntity.getDataVerId(),
-                bdbEntity.getCreateUser(), bdbEntity.getCreateDate());
+                bdbEntity.getModifyUser(), bdbEntity.getModifyDate());
+        setCreateInfo(bdbEntity.getCreateUser(), bdbEntity.getCreateDate());
         this.topicName = bdbEntity.getTopicName();
         this.topicNameId = bdbEntity.getTopicId();
         this.fillMaxMsgSizeInB(bdbEntity.getMaxMsgSize());
@@ -79,6 +80,7 @@ public class TopicCtrlEntity extends BaseEntity implements Cloneable {
         BdbTopicAuthControlEntity bdbEntity =
                 new BdbTopicAuthControlEntity(topicName, isAuthCtrlEnable(),
                         getAttributes(), getModifyUser(), getModifyDate());
+        bdbEntity.setCreateInfo(getCreateUser(), getCreateDate());
         bdbEntity.setTopicId(topicNameId);
         bdbEntity.setDataVerId(getDataVerId());
         bdbEntity.setMaxMsgSize(maxMsgSizeInB);
diff --git a/tubemq-server/src/test/java/org/apache/tubemq/server/common/WebParameterUtilsTest.java b/tubemq-server/src/test/java/org/apache/tubemq/server/common/WebParameterUtilsTest.java
index f27772a..2d13258 100644
--- a/tubemq-server/src/test/java/org/apache/tubemq/server/common/WebParameterUtilsTest.java
+++ b/tubemq-server/src/test/java/org/apache/tubemq/server/common/WebParameterUtilsTest.java
@@ -24,6 +24,7 @@ import java.util.Map;
 import java.util.Set;
 import java.util.TreeSet;
 
+import org.apache.tubemq.corebase.utils.TStringUtils;
 import org.apache.tubemq.server.common.fielddef.WebFieldDef;
 import org.apache.tubemq.server.common.utils.ProcessResult;
 import org.apache.tubemq.server.common.utils.WebParameterUtils;
@@ -242,8 +243,7 @@ public class WebParameterUtilsTest {
         retEntry = (BaseEntity) result.getRetData();
         Assert.assertEquals(String.valueOf(retEntry.getDataVerId()),
                 paramCntrMap.get(WebFieldDef.DATAVERSIONID.name));
-        Assert.assertEquals(retEntry.getCreateUser(),
-                paramCntrMap.get(WebFieldDef.CREATEUSER.name));
+        Assert.assertTrue(TStringUtils.isBlank(retEntry.getCreateUser()));
         Assert.assertEquals(retEntry.getModifyUser(),
                 paramCntrMap.get(WebFieldDef.MODIFYUSER.name));
         Assert.assertEquals(WebParameterUtils.date2yyyyMMddHHmmss(retEntry.getModifyDate()),
diff --git a/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupConsumeCtrlEntityTest.java b/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupConsumeCtrlEntityTest.java
index aafacb2..974419e 100644
--- a/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupConsumeCtrlEntityTest.java
+++ b/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupConsumeCtrlEntityTest.java
@@ -49,8 +49,8 @@ public class GroupConsumeCtrlEntityTest {
         Assert.assertEquals(bdbEntity1.getControlStatus(), 2);
         Assert.assertTrue(ctrlEntry1.getFilterEnable().isEnable());
         Assert.assertEquals(ctrlEntry1.getConsumeEnable(), bdbEntity1.getConsumeEnable());
-        Assert.assertEquals(ctrlEntry1.getCreateUser(), bdbEntity1.getCreateUser());
-        Assert.assertEquals(ctrlEntry1.getCreateDate(), bdbEntity1.getCreateDate());
+        Assert.assertEquals(ctrlEntry1.getCreateUser(), bdbEntity1.getModifyUser());
+        Assert.assertEquals(ctrlEntry1.getCreateDate(), bdbEntity1.getModifyDate());
         Assert.assertEquals(ctrlEntry1.getAttributes(), bdbEntity1.getAttributes());
         Assert.assertEquals(ctrlEntry1.getDisableReason(), bdbEntity1.getDisableConsumeReason());
         Assert.assertEquals(ctrlEntry1.getRecordKey(), bdbEntity1.getRecordKey());
@@ -80,10 +80,10 @@ public class GroupConsumeCtrlEntityTest {
         Assert.assertEquals(bdbEntity3.getControlStatus(), 2);
         Assert.assertTrue(ctrlEntry2.getFilterEnable().isEnable());
         Assert.assertEquals(ctrlEntry2.getConsumeEnable(), bdbEntity3.getConsumeEnable());
-        Assert.assertEquals(opInfoEntity.getCreateUser(), bdbEntity3.getCreateUser());
-        Assert.assertEquals(opInfoEntity.getCreateDate(), bdbEntity3.getCreateDate());
-        Assert.assertNotEquals(ctrlEntry2.getCreateDate(), bdbEntity3.getCreateDate());
-        Assert.assertNotEquals(ctrlEntry2.getCreateUser(), bdbEntity3.getCreateUser());
+        Assert.assertEquals(opInfoEntity.getCreateUser(), bdbEntity3.getModifyUser());
+        Assert.assertEquals(opInfoEntity.getCreateDate(), bdbEntity3.getModifyDate());
+        Assert.assertNotEquals(ctrlEntry2.getCreateDate(), bdbEntity3.getModifyDate());
+        Assert.assertNotEquals(ctrlEntry2.getCreateUser(), bdbEntity3.getModifyUser());
         Assert.assertEquals(ctrlEntry2.getAttributes(), bdbEntity3.getAttributes());
         Assert.assertEquals(ctrlEntry2.getDisableReason(), bdbEntity3.getDisableConsumeReason());
         Assert.assertEquals(ctrlEntry2.getRecordKey(), bdbEntity3.getRecordKey());
diff --git a/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupResCtrlEntityTest.java b/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupResCtrlEntityTest.java
index 615f13b..b04a375 100644
--- a/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupResCtrlEntityTest.java
+++ b/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupResCtrlEntityTest.java
@@ -64,8 +64,8 @@ public class GroupResCtrlEntityTest {
         Assert.assertEquals(bdbEntity2.getStatusId(), 1);
         Assert.assertEquals(bdbEntity2.getFlowCtrlInfo(), flowCtrlInfo);
         Assert.assertEquals(bdbEntity2.getRuleCnt(), ruleCnt);
-        Assert.assertEquals(bdbEntity2.getCreateUser(), createUser);
-        Assert.assertEquals(bdbEntity2.getCreateDate(), createDate);
+        Assert.assertEquals(bdbEntity2.getModifyUser(), createUser);
+        Assert.assertEquals(bdbEntity2.getModifyDate(), createDate);
         Assert.assertEquals(bdbEntity2.getSerialId(), dataVerId);
         bdbEntity2.setResCheckStatus(EnableStatus.STATUS_ENABLE);
         // case 3
@@ -78,8 +78,10 @@ public class GroupResCtrlEntityTest {
         Assert.assertTrue(resEntry3.getFlowCtrlStatus().isEnable());
         Assert.assertEquals(bdbEntity2.getFlowCtrlInfo(), resEntry3.getFlowCtrlInfo());
         Assert.assertEquals(bdbEntity2.getRuleCnt(), resEntry3.getRuleCnt());
-        Assert.assertEquals(bdbEntity2.getCreateUser(), resEntry3.getCreateUser());
-        Assert.assertEquals(bdbEntity2.getCreateDate(), resEntry3.getCreateDate());
+        Assert.assertEquals(bdbEntity2.getModifyUser(), resEntry3.getModifyUser());
+        Assert.assertEquals(bdbEntity2.getModifyDate(), resEntry3.getModifyDate());
+        Assert.assertEquals(bdbEntity2.getModifyUser(), resEntry3.getCreateUser());
+        Assert.assertEquals(bdbEntity2.getModifyDate(), resEntry3.getCreateDate());
         Assert.assertEquals(bdbEntity2.getSerialId(), resEntry3.getDataVerId());
         // case 4
         long newDataVerId = 99;
@@ -110,6 +112,8 @@ public class GroupResCtrlEntityTest {
         Assert.assertNotEquals(resEntry4.getRuleCnt(), resEntry3.getRuleCnt());
         Assert.assertEquals(resEntry4.getCreateUser(), resEntry3.getCreateUser());
         Assert.assertEquals(resEntry4.getCreateDate(), resEntry3.getCreateDate());
+        Assert.assertEquals(resEntry4.getModifyUser(), resEntry3.getModifyUser());
+        Assert.assertEquals(resEntry4.getModifyDate(), resEntry3.getModifyDate());
         Assert.assertNotEquals(resEntry4.getDataVerId(), resEntry3.getDataVerId());
         // case 5
         BdbGroupFlowCtrlEntity bdbEntity5 = resEntry4.buildBdbGroupFlowCtrlEntity();
@@ -120,7 +124,11 @@ public class GroupResCtrlEntityTest {
         Assert.assertEquals(bdbEntity5.getStatusId(), 0);
         Assert.assertEquals(bdbEntity5.getRuleCnt(), newFlowRuleCnt);
         Assert.assertEquals(bdbEntity5.getFlowCtrlInfo(), newFlowCtrlRuleInfo);
-        Assert.assertEquals(bdbEntity5.getGroupName(), resEntry3.getGroupName());
+        Assert.assertEquals(bdbEntity5.getGroupName(), bdbEntity5.getGroupName());
+        Assert.assertEquals(resEntry4.getCreateUser(), bdbEntity5.getCreateUser());
+        Assert.assertEquals(resEntry4.getCreateDateStr(), bdbEntity5.getStrCreateDate());
+        Assert.assertEquals(resEntry4.getModifyUser(), bdbEntity5.getModifyUser());
+        Assert.assertEquals(resEntry4.getModifyDateStr(), bdbEntity5.getStrModifyDate());
 
 
 
diff --git a/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicCtrlEntityTest.java b/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicCtrlEntityTest.java
index 243f783..f833771 100644
--- a/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicCtrlEntityTest.java
+++ b/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicCtrlEntityTest.java
@@ -47,8 +47,8 @@ public class TopicCtrlEntityTest {
         Assert.assertEquals(bdbEntity1.getTopicId(), TBaseConstants.META_VALUE_UNDEFINED);
         Assert.assertEquals(bdbEntity1.isEnableAuthControl(), enableAuthControl);
         Assert.assertEquals(bdbEntity1.getMaxMsgSize(), TBaseConstants.META_VALUE_UNDEFINED);
-        Assert.assertEquals(bdbEntity1.getCreateUser(), createUser);
-        Assert.assertEquals(bdbEntity1.getCreateDate(), createDate);
+        Assert.assertEquals(bdbEntity1.getModifyUser(), createUser);
+        Assert.assertEquals(bdbEntity1.getModifyDate(), createDate);
         Assert.assertEquals(bdbEntity1.getDataVerId(), TBaseConstants.META_VALUE_UNDEFINED);
         bdbEntity1.setMaxMsgSize(maxMsgSizeInB);
         Assert.assertEquals(bdbEntity1.getMaxMsgSize(), maxMsgSizeInB);
@@ -62,6 +62,8 @@ public class TopicCtrlEntityTest {
                 TBaseConstants.META_MIN_ALLOWED_MESSAGE_SIZE_MB);
         Assert.assertEquals(ctrlEntity1.getCreateUser(), createUser);
         Assert.assertEquals(ctrlEntity1.getCreateDate(), createDate);
+        Assert.assertEquals(ctrlEntity1.getModifyUser(), createUser);
+        Assert.assertEquals(ctrlEntity1.getModifyDate(), createDate);
         Assert.assertEquals(ctrlEntity1.getDataVerId(), TBaseConstants.META_VALUE_UNDEFINED);
         // case 2
         long dataVerId2 = 555;
@@ -100,8 +102,10 @@ public class TopicCtrlEntityTest {
         Assert.assertEquals(bdbEntity3.isEnableAuthControl(),
                 ctrlEntity2.getAuthCtrlStatus().isEnable());
         Assert.assertEquals(bdbEntity3.getMaxMsgSize(), ctrlEntity2.getMaxMsgSizeInB());
-        Assert.assertEquals(bdbEntity3.getCreateUser(), ctrlEntity2.getModifyUser());
-        Assert.assertEquals(bdbEntity3.getCreateDate(), ctrlEntity2.getModifyDate());
+        Assert.assertEquals(bdbEntity3.getModifyUser(), ctrlEntity2.getModifyUser());
+        Assert.assertEquals(bdbEntity3.getStrModifyDate(), ctrlEntity2.getModifyDateStr());
+        Assert.assertEquals(bdbEntity3.getCreateUser(), ctrlEntity2.getCreateUser());
+        Assert.assertEquals(bdbEntity3.getStrCreateDate(), ctrlEntity2.getCreateDateStr());
         Assert.assertEquals(bdbEntity3.getDataVerId(), ctrlEntity2.getDataVerId());
         // case 4
         TopicCtrlEntity ctrlEntity4 = new TopicCtrlEntity(bdbEntity3);
@@ -111,8 +115,10 @@ public class TopicCtrlEntityTest {
         Assert.assertEquals(ctrlEntity4.getTopicId(), ctrlEntity2.getTopicId());
         Assert.assertEquals(ctrlEntity4.getAuthCtrlStatus(), ctrlEntity2.getAuthCtrlStatus());
         Assert.assertEquals(ctrlEntity4.getMaxMsgSizeInB(), ctrlEntity2.getMaxMsgSizeInB());
-        Assert.assertEquals(ctrlEntity4.getCreateUser(), ctrlEntity2.getModifyUser());
-        Assert.assertEquals(ctrlEntity4.getCreateDate(), ctrlEntity2.getModifyDate());
+        Assert.assertEquals(ctrlEntity4.getCreateUser(), ctrlEntity2.getCreateUser());
+        Assert.assertEquals(ctrlEntity4.getCreateDateStr(), ctrlEntity2.getCreateDateStr());
+        Assert.assertEquals(ctrlEntity4.getModifyUser(), ctrlEntity2.getModifyUser());
+        Assert.assertEquals(ctrlEntity4.getModifyDateStr(), ctrlEntity2.getModifyDateStr());
         Assert.assertEquals(ctrlEntity4.getDataVerId(), ctrlEntity2.getDataVerId());
     }
 

[incubator-inlong] 03/05: [INLONG-618] Add unit tests for metastore.dao.entity.*

Posted by go...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gosonzhang pushed a commit to branch TUBEMQ-570
in repository https://gitbox.apache.org/repos/asf/incubator-inlong.git

commit ee98d30486a114e4ed8fd507c8dce875c216645e
Author: gosonzhang <go...@tencent.com>
AuthorDate: Wed May 26 20:28:16 2021 +0800

    [INLONG-618] Add unit tests for metastore.dao.entity.*
---
 .../metamanage/metastore/dao/entity/BaseEntity.java     | 17 ++++++++---------
 .../metamanage/metastore/dao/entity/BaseEntityTest.java |  5 +++--
 2 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BaseEntity.java b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BaseEntity.java
index b964b96..24e97a8 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BaseEntity.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BaseEntity.java
@@ -34,7 +34,7 @@ public class BaseEntity implements Serializable, Cloneable {
 
     private long dataVersionId =
             TBaseConstants.META_VALUE_UNDEFINED;    // -2: undefined, other: version
-    private final AtomicLong serialId =
+    private AtomicLong serialId =
             new AtomicLong(TBaseConstants.META_VALUE_UNDEFINED);
     private String createUser = "";        // create user
     private Date createDate = null;        // create date
@@ -165,12 +165,7 @@ public class BaseEntity implements Serializable, Cloneable {
     }
 
     protected void updSerialId() {
-        if (serialId.get() == TBaseConstants.META_VALUE_UNDEFINED) {
-            this.serialId.set(System.currentTimeMillis());
-        } else {
-            this.serialId.incrementAndGet();
-        }
-
+        this.serialId.set(System.currentTimeMillis());
     }
 
     public String getModifyUser() {
@@ -283,9 +278,13 @@ public class BaseEntity implements Serializable, Cloneable {
     }
 
     @Override
-    public Object clone() {
+    public BaseEntity clone() {
         try {
-            return super.clone();
+            BaseEntity copy = (BaseEntity) super.clone();
+            if (copy != null) {
+                copy.serialId = new AtomicLong(this.serialId.get());
+            }
+            return copy;
         } catch (Throwable e) {
             return null;
         }
diff --git a/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BaseEntityTest.java b/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BaseEntityTest.java
index 417a613..b71f1cd 100644
--- a/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BaseEntityTest.java
+++ b/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BaseEntityTest.java
@@ -136,11 +136,12 @@ public class BaseEntityTest {
         Assert.assertEquals(baseEntity8.getCreateDateStr(), "");
         Assert.assertEquals(baseEntity8.getModifyDateStr(), "");
         // case 9
-        BaseEntity baseEntity9 = (BaseEntity) baseEntity6.clone();
+        BaseEntity baseEntity9 =  baseEntity6.clone();
         Assert.assertEquals(baseEntity9, baseEntity6);
-        baseEntity9.setAttributes("aaaaabbbbccccddd");
         ThreadUtils.sleep(2000);
         baseEntity9.updSerialId();
+        baseEntity9.setDataVersionId(222223333);
+        baseEntity9.setAttributes("aaaaabbbbccccddd");
         baseEntity9.updQueryKeyInfo(newDataVerId, newCreateUser, newModifyUser);
         Assert.assertNotEquals(baseEntity6.getDataVerId(), baseEntity9.getDataVerId());
         Assert.assertNotEquals(baseEntity6.getSerialId(), baseEntity9.getSerialId());

[incubator-inlong] 05/05: [INLONG-618] Add unit tests for metastore.dao.entity.*

Posted by go...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gosonzhang pushed a commit to branch TUBEMQ-570
in repository https://gitbox.apache.org/repos/asf/incubator-inlong.git

commit 1c89454111c021ab58dae7629ec346da6be87449
Author: gosonzhang <go...@tencent.com>
AuthorDate: Fri May 28 16:53:13 2021 +0800

    [INLONG-618] Add unit tests for metastore.dao.entity.*
---
 .../metastore/dao/entity/BaseEntity.java           |  27 +++---
 .../metastore/dao/entity/BrokerConfEntity.java     |  37 ++++----
 .../dao/entity/GroupConsumeCtrlEntity.java         |  19 ++--
 .../metastore/dao/entity/GroupResCtrlEntity.java   |  23 +++--
 .../metastore/dao/entity/TopicCtrlEntity.java      |  19 ++--
 .../metastore/dao/entity/TopicDeployEntity.java    |  25 +++---
 .../metastore/dao/entity/TopicPropGroup.java       |  47 +++++-----
 .../master/metamanage/online/BrokerRunData.java    | 100 ---------------------
 .../metastore/dao/entity/BaseEntityTest.java       |   2 -
 9 files changed, 92 insertions(+), 207 deletions(-)

diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BaseEntity.java b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BaseEntity.java
index fab9544..2601083 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BaseEntity.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BaseEntity.java
@@ -176,7 +176,15 @@ public class BaseEntity implements Serializable, Cloneable {
     }
 
     protected void updSerialId() {
-        this.serialId.set(System.currentTimeMillis());
+        long curSerialId;
+        long newSerialId;
+        do {
+            curSerialId = this.serialId.get();
+            newSerialId = System.currentTimeMillis();
+            if (newSerialId == curSerialId) {
+                newSerialId++;
+            }
+        } while (!this.serialId.compareAndSet(curSerialId, newSerialId));
     }
 
     public String getModifyUser() {
@@ -215,15 +223,12 @@ public class BaseEntity implements Serializable, Cloneable {
         if (target == null) {
             return true;
         }
-        if ((target.getDataVerId() != TBaseConstants.META_VALUE_UNDEFINED
-                && this.getDataVerId() != target.getDataVerId())
-                || (TStringUtils.isNotBlank(target.getCreateUser())
-                && !target.getCreateUser().equals(createUser))
-                || (TStringUtils.isNotBlank(target.getModifyUser())
-                && !target.getModifyUser().equals(modifyUser))) {
-            return false;
-        }
-        return true;
+        return (target.getDataVerId() == TBaseConstants.META_VALUE_UNDEFINED
+                || this.getDataVerId() == target.getDataVerId())
+                && (TStringUtils.isBlank(target.getCreateUser())
+                || target.getCreateUser().equals(createUser))
+                && (TStringUtils.isBlank(target.getModifyUser())
+                || target.getModifyUser().equals(modifyUser));
     }
 
     /**
@@ -233,7 +238,7 @@ public class BaseEntity implements Serializable, Cloneable {
      * @param isLongName if return field key is long name
      * @return
      */
-    StringBuilder toWebJsonStr(StringBuilder sBuilder, boolean isLongName) {
+    public StringBuilder toWebJsonStr(StringBuilder sBuilder, boolean isLongName) {
         if (isLongName) {
             sBuilder.append(",\"dataVersionId\":").append(dataVersionId)
                     .append(",\"serialId\":").append(serialId.get())
diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BrokerConfEntity.java b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BrokerConfEntity.java
index 05216b1..7f49e68 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BrokerConfEntity.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BrokerConfEntity.java
@@ -309,26 +309,23 @@ public class BrokerConfEntity extends BaseEntity implements Cloneable {
         if (!super.isMatched(target)) {
             return false;
         }
-        if ((target.getBrokerId() != TBaseConstants.META_VALUE_UNDEFINED
-                && target.getBrokerId() != this.brokerId)
-                || (TStringUtils.isNotBlank(target.getBrokerIp())
-                && !target.getBrokerIp().equals(this.brokerIp))
-                || (target.getBrokerPort() != TBaseConstants.META_VALUE_UNDEFINED
-                && target.getBrokerPort() != this.brokerPort)
-                || (target.getBrokerTLSPort() != TBaseConstants.META_VALUE_UNDEFINED
-                && target.getBrokerTLSPort() != this.brokerTLSPort)
-                || (target.getRegionId() != TBaseConstants.META_VALUE_UNDEFINED
-                && target.getRegionId() != this.regionId)
-                || (target.getGroupId() != TBaseConstants.META_VALUE_UNDEFINED
-                && target.getGroupId() != this.groupId)
-                || (target.getManageStatus() != ManageStatus.STATUS_MANAGE_UNDEFINED
-                && target.getManageStatus() != this.manageStatus)
-                || (target.getBrokerWebPort() != TBaseConstants.META_VALUE_UNDEFINED
-                && target.getBrokerWebPort() != this.brokerWebPort)
-                || !this.topicProps.isMatched(target.getTopicProps())) {
-            return false;
-        }
-        return true;
+        return (target.getBrokerId() == TBaseConstants.META_VALUE_UNDEFINED
+                || target.getBrokerId() == this.brokerId)
+                && (TStringUtils.isBlank(target.getBrokerIp())
+                || target.getBrokerIp().equals(this.brokerIp))
+                && (target.getBrokerPort() == TBaseConstants.META_VALUE_UNDEFINED
+                || target.getBrokerPort() == this.brokerPort)
+                && (target.getBrokerTLSPort() == TBaseConstants.META_VALUE_UNDEFINED
+                || target.getBrokerTLSPort() == this.brokerTLSPort)
+                && (target.getRegionId() == TBaseConstants.META_VALUE_UNDEFINED
+                || target.getRegionId() == this.regionId)
+                && (target.getGroupId() == TBaseConstants.META_VALUE_UNDEFINED
+                || target.getGroupId() == this.groupId)
+                && (target.getManageStatus() == ManageStatus.STATUS_MANAGE_UNDEFINED
+                || target.getManageStatus() == this.manageStatus)
+                && (target.getBrokerWebPort() == TBaseConstants.META_VALUE_UNDEFINED
+                || target.getBrokerWebPort() == this.brokerWebPort)
+                && this.topicProps.isMatched(target.getTopicProps());
     }
 
     /**
diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupConsumeCtrlEntity.java b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupConsumeCtrlEntity.java
index 477bab8..a0bc7bc 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupConsumeCtrlEntity.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupConsumeCtrlEntity.java
@@ -216,17 +216,14 @@ public class GroupConsumeCtrlEntity extends BaseEntity implements Cloneable {
         if (!super.isMatched(target)) {
             return false;
         }
-        if ((TStringUtils.isNotBlank(target.getTopicName())
-                && !target.getTopicName().equals(this.topicName))
-                || (TStringUtils.isNotBlank(target.getGroupName())
-                && !target.getGroupName().equals(this.groupName))
-                || (target.getConsumeEnable() != EnableStatus.STATUS_UNDEFINE
-                && target.getConsumeEnable() != this.consumeEnable)
-                || (target.getFilterEnable() != EnableStatus.STATUS_UNDEFINE
-                && target.getFilterEnable() != this.filterEnable)) {
-            return false;
-        }
-        return true;
+        return (TStringUtils.isBlank(target.getTopicName())
+                || target.getTopicName().equals(this.topicName))
+                && (TStringUtils.isBlank(target.getGroupName())
+                || target.getGroupName().equals(this.groupName))
+                && (target.getConsumeEnable() == EnableStatus.STATUS_UNDEFINE
+                || target.getConsumeEnable() == this.consumeEnable)
+                && (target.getFilterEnable() == EnableStatus.STATUS_UNDEFINE
+                || target.getFilterEnable() == this.filterEnable);
     }
 
     /**
diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupResCtrlEntity.java b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupResCtrlEntity.java
index a66fb74..456b024 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupResCtrlEntity.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/GroupResCtrlEntity.java
@@ -244,19 +244,16 @@ public class GroupResCtrlEntity extends BaseEntity implements Cloneable {
         if (!super.isMatched(target)) {
             return false;
         }
-        if ((target.getQryPriorityId() != TBaseConstants.META_VALUE_UNDEFINED
-                && target.getQryPriorityId() != this.qryPriorityId)
-                || (TStringUtils.isNotBlank(target.getGroupName())
-                && !target.getGroupName().equals(this.groupName))
-                || (target.getResCheckStatus() != EnableStatus.STATUS_UNDEFINE
-                && target.getResCheckStatus() != this.resCheckStatus)
-                || (target.getFlowCtrlStatus() != EnableStatus.STATUS_UNDEFINE
-                && target.getFlowCtrlStatus() != this.flowCtrlStatus)
-                || (target.getAllowedBrokerClientRate() != TBaseConstants.META_VALUE_UNDEFINED
-                && target.getAllowedBrokerClientRate() != this.allowedBrokerClientRate)) {
-            return false;
-        }
-        return true;
+        return (target.getQryPriorityId() == TBaseConstants.META_VALUE_UNDEFINED
+                || target.getQryPriorityId() == this.qryPriorityId)
+                && (TStringUtils.isBlank(target.getGroupName())
+                || target.getGroupName().equals(this.groupName))
+                && (target.getResCheckStatus() == EnableStatus.STATUS_UNDEFINE
+                || target.getResCheckStatus() == this.resCheckStatus)
+                && (target.getFlowCtrlStatus() == EnableStatus.STATUS_UNDEFINE
+                || target.getFlowCtrlStatus() == this.flowCtrlStatus)
+                && (target.getAllowedBrokerClientRate() == TBaseConstants.META_VALUE_UNDEFINED
+                || target.getAllowedBrokerClientRate() == this.allowedBrokerClientRate);
     }
 
     /**
diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicCtrlEntity.java b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicCtrlEntity.java
index 13a01e8..de880c7 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicCtrlEntity.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicCtrlEntity.java
@@ -188,17 +188,14 @@ public class TopicCtrlEntity extends BaseEntity implements Cloneable {
         if (!super.isMatched(target)) {
             return false;
         }
-        if ((target.getMaxMsgSizeInB() != TBaseConstants.META_VALUE_UNDEFINED
-                && target.getMaxMsgSizeInB() != this.maxMsgSizeInB)
-                || (TStringUtils.isNotBlank(target.getTopicName())
-                && !target.getTopicName().equals(this.topicName))
-                || (target.getAuthCtrlStatus() != EnableStatus.STATUS_UNDEFINE
-                && target.getAuthCtrlStatus() != this.authCtrlStatus)
-                || (target.getTopicId() != TBaseConstants.META_VALUE_UNDEFINED
-                && target.getTopicId() != this.topicNameId)) {
-            return false;
-        }
-        return true;
+        return (target.getMaxMsgSizeInB() == TBaseConstants.META_VALUE_UNDEFINED
+                || target.getMaxMsgSizeInB() == this.maxMsgSizeInB)
+                && (TStringUtils.isBlank(target.getTopicName())
+                || target.getTopicName().equals(this.topicName))
+                && (target.getAuthCtrlStatus() == EnableStatus.STATUS_UNDEFINE
+                || target.getAuthCtrlStatus() == this.authCtrlStatus)
+                && (target.getTopicId() == TBaseConstants.META_VALUE_UNDEFINED
+                || target.getTopicId() == this.topicNameId);
     }
 
     /**
diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicDeployEntity.java b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicDeployEntity.java
index a2f6bd9..c110c0a 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicDeployEntity.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicDeployEntity.java
@@ -257,20 +257,17 @@ public class TopicDeployEntity extends BaseEntity implements Cloneable {
         if (!super.isMatched(target)) {
             return false;
         }
-        if ((target.getBrokerId() != TBaseConstants.META_VALUE_UNDEFINED
-                && target.getBrokerId() != this.brokerId)
-                || (target.getTopicId() != TBaseConstants.META_VALUE_UNDEFINED
-                && target.getTopicId() != this.topicNameId)
-                || (TStringUtils.isNotBlank(target.getTopicName())
-                && !target.getTopicName().equals(this.topicName))
-                || (TStringUtils.isNotBlank(target.getBrokerIp())
-                && !target.getBrokerIp().equals(this.brokerIp))
-                || !topicProps.isMatched(target.topicProps)
-                || (target.getTopicStatus() != TopicStatus.STATUS_TOPIC_UNDEFINED
-                && target.getTopicStatus() != this.deployStatus)) {
-            return false;
-        }
-        return true;
+        return (target.getBrokerId() == TBaseConstants.META_VALUE_UNDEFINED
+                || target.getBrokerId() == this.brokerId)
+                && (target.getTopicId() == TBaseConstants.META_VALUE_UNDEFINED
+                || target.getTopicId() == this.topicNameId)
+                && (TStringUtils.isBlank(target.getTopicName())
+                || target.getTopicName().equals(this.topicName))
+                && (TStringUtils.isBlank(target.getBrokerIp())
+                || target.getBrokerIp().equals(this.brokerIp))
+                && topicProps.isMatched(target.topicProps)
+                && (target.getTopicStatus() == TopicStatus.STATUS_TOPIC_UNDEFINED
+                || target.getTopicStatus() == this.deployStatus);
     }
 
     /**
diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicPropGroup.java b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicPropGroup.java
index 27db4f9..180ac8f 100644
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicPropGroup.java
+++ b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/TopicPropGroup.java
@@ -209,31 +209,28 @@ public class TopicPropGroup implements Serializable, Cloneable {
         if (target == null) {
             return true;
         }
-        if ((target.getNumTopicStores() != TBaseConstants.META_VALUE_UNDEFINED
-                && target.getNumTopicStores() != this.numTopicStores)
-                || (target.getNumPartitions() != TBaseConstants.META_VALUE_UNDEFINED
-                && target.getNumPartitions() != this.numPartitions)
-                || (target.getUnflushThreshold() != TBaseConstants.META_VALUE_UNDEFINED
-                && target.getUnflushThreshold() != this.unflushThreshold)
-                || (target.getUnflushInterval() != TBaseConstants.META_VALUE_UNDEFINED
-                && target.getUnflushInterval() != this.unflushInterval)
-                || (target.getUnflushDataHold() != TBaseConstants.META_VALUE_UNDEFINED
-                && target.getUnflushDataHold() != this.unflushDataHold)
-                || (target.getMemCacheMsgSizeInMB() != TBaseConstants.META_VALUE_UNDEFINED
-                && target.getMemCacheMsgSizeInMB() != this.memCacheMsgSizeInMB)
-                || (target.getMemCacheMsgCntInK() != TBaseConstants.META_VALUE_UNDEFINED
-                && target.getMemCacheMsgCntInK() != this.memCacheMsgCntInK)
-                || (target.getMemCacheFlushIntvl() != TBaseConstants.META_VALUE_UNDEFINED
-                && target.getMemCacheFlushIntvl() != this.memCacheFlushIntvl)
-                || (target.getAcceptPublish() != null
-                && target.getAcceptPublish() != this.acceptPublish)
-                || (target.getAcceptSubscribe() != null
-                && target.getAcceptSubscribe() != this.acceptSubscribe)
-                || (TStringUtils.isNotBlank(target.getDeletePolicy())
-                && !target.getDeletePolicy().equals(this.deletePolicy))) {
-            return false;
-        }
-        return true;
+        return (target.getNumTopicStores() == TBaseConstants.META_VALUE_UNDEFINED
+                || target.getNumTopicStores() == this.numTopicStores)
+                && (target.getNumPartitions() == TBaseConstants.META_VALUE_UNDEFINED
+                || target.getNumPartitions() == this.numPartitions)
+                && (target.getUnflushThreshold() == TBaseConstants.META_VALUE_UNDEFINED
+                || target.getUnflushThreshold() == this.unflushThreshold)
+                && (target.getUnflushInterval() == TBaseConstants.META_VALUE_UNDEFINED
+                || target.getUnflushInterval() == this.unflushInterval)
+                && (target.getUnflushDataHold() == TBaseConstants.META_VALUE_UNDEFINED
+                || target.getUnflushDataHold() == this.unflushDataHold)
+                && (target.getMemCacheMsgSizeInMB() == TBaseConstants.META_VALUE_UNDEFINED
+                || target.getMemCacheMsgSizeInMB() == this.memCacheMsgSizeInMB)
+                && (target.getMemCacheMsgCntInK() == TBaseConstants.META_VALUE_UNDEFINED
+                || target.getMemCacheMsgCntInK() == this.memCacheMsgCntInK)
+                && (target.getMemCacheFlushIntvl() == TBaseConstants.META_VALUE_UNDEFINED
+                || target.getMemCacheFlushIntvl() == this.memCacheFlushIntvl)
+                && (target.getAcceptPublish() == null
+                || target.getAcceptPublish() == this.acceptPublish)
+                && (target.getAcceptSubscribe() == null
+                || target.getAcceptSubscribe() == this.acceptSubscribe)
+                && (TStringUtils.isBlank(target.getDeletePolicy())
+                || target.getDeletePolicy().equals(this.deletePolicy));
     }
 
     /**
diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/online/BrokerRunData.java b/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/online/BrokerRunData.java
deleted file mode 100644
index acb5854..0000000
--- a/tubemq-server/src/main/java/org/apache/tubemq/server/master/metamanage/online/BrokerRunData.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/**
- * 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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.tubemq.server.master.metamanage.online;
-
-import java.util.List;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.atomic.AtomicLong;
-
-import org.apache.tubemq.corebase.TBaseConstants;
-import org.apache.tubemq.corebase.utils.Tuple2;
-import org.apache.tubemq.server.master.metamanage.metastore.dao.entity.BrokerConfEntity;
-
-
-
-
-public class BrokerRunData {
-
-    private final ConcurrentHashMap<Integer, String> brokersMap =
-            new ConcurrentHashMap<>();
-    private final ConcurrentHashMap<Integer, String> brokersTLSMap =
-            new ConcurrentHashMap<>();
-    private AtomicLong brokerInfoChkId = new AtomicLong(System.currentTimeMillis());
-    private long lastBrokerUpdatedTime = System.currentTimeMillis();
-
-    public BrokerRunData() {
-
-    }
-
-    public Tuple2<Long, ConcurrentHashMap<Integer, String>> getBrokerCurRunData(
-            boolean isOverTLS) {
-        if (isOverTLS) {
-            return new Tuple2<>(brokerInfoChkId.get(), brokersTLSMap);
-        } else {
-            return new Tuple2<>(brokerInfoChkId.get(), brokersMap);
-        }
-    }
-
-    public void updateBrokerRunData(List<BrokerConfEntity> entities) {
-        if (entities == null || entities.isEmpty()) {
-            return;
-        }
-        for (BrokerConfEntity entity : entities) {
-            updBrokerRunData(entity);
-        }
-    }
-
-    public void updBrokerRunData(BrokerConfEntity entity) {
-        if (entity == null) {
-            return;
-        }
-        String brokerReg =
-                this.brokersMap.putIfAbsent(entity.getBrokerId(),
-                        entity.getSimpleBrokerInfo());
-        String brokerTLSReg =
-                this.brokersTLSMap.putIfAbsent(entity.getBrokerId(),
-                        entity.getSimpleTLSBrokerInfo());
-        if (brokerReg == null
-                || brokerTLSReg == null
-                || !brokerReg.equals(entity.getSimpleBrokerInfo())
-                || !brokerTLSReg.equals(entity.getSimpleTLSBrokerInfo())) {
-            if (brokerReg != null
-                    && !brokerReg.equals(entity.getSimpleBrokerInfo())) {
-                this.brokersMap.put(entity.getBrokerId(), entity.getSimpleBrokerInfo());
-            }
-            if (brokerTLSReg != null
-                    && !brokerTLSReg.equals(entity.getSimpleTLSBrokerInfo())) {
-                this.brokersTLSMap.put(entity.getBrokerId(), entity.getSimpleTLSBrokerInfo());
-            }
-            this.lastBrokerUpdatedTime = System.currentTimeMillis();
-            this.brokerInfoChkId.set(this.lastBrokerUpdatedTime);
-        }
-    }
-
-    public void delBrokerRunData(int brokerId) {
-        if (brokerId == TBaseConstants.META_VALUE_UNDEFINED) {
-            return;
-        }
-        String brokerReg = this.brokersMap.remove(brokerId);
-        String brokerTLSReg = this.brokersTLSMap.remove(brokerId);
-        if (brokerReg != null || brokerTLSReg != null) {
-            this.lastBrokerUpdatedTime = System.currentTimeMillis();
-            this.brokerInfoChkId.set(this.lastBrokerUpdatedTime);
-        }
-    }
-}
diff --git a/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BaseEntityTest.java b/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BaseEntityTest.java
index b71f1cd..392db4d 100644
--- a/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BaseEntityTest.java
+++ b/tubemq-server/src/test/java/org/apache/tubemq/server/master/metamanage/metastore/dao/entity/BaseEntityTest.java
@@ -19,7 +19,6 @@ package org.apache.tubemq.server.master.metamanage.metastore.dao.entity;
 
 import java.util.Date;
 import org.apache.tubemq.corebase.TBaseConstants;
-import org.apache.tubemq.corebase.utils.ThreadUtils;
 import org.apache.tubemq.server.common.TServerConstants;
 import org.apache.tubemq.server.common.utils.WebParameterUtils;
 import org.junit.Assert;
@@ -138,7 +137,6 @@ public class BaseEntityTest {
         // case 9
         BaseEntity baseEntity9 =  baseEntity6.clone();
         Assert.assertEquals(baseEntity9, baseEntity6);
-        ThreadUtils.sleep(2000);
         baseEntity9.updSerialId();
         baseEntity9.setDataVersionId(222223333);
         baseEntity9.setAttributes("aaaaabbbbccccddd");