547 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			547 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /**
 | |
|  * Copyright (c) 2021 OceanBase
 | |
|  * OceanBase CE is licensed under Mulan PubL v2.
 | |
|  * You can use this software according to the terms and conditions of the Mulan PubL v2.
 | |
|  * You may obtain a copy of Mulan PubL v2 at:
 | |
|  *          http://license.coscl.org.cn/MulanPubL-2.0
 | |
|  * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
 | |
|  * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
 | |
|  * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 | |
|  * See the Mulan PubL v2 for more details.
 | |
|  */
 | |
| 
 | |
| #define USING_LOG_PREFIX SHARE
 | |
| #include "lib/ob_define.h"
 | |
| #include "lib/ob_errno.h"
 | |
| #include "lib/oblog/ob_log.h"
 | |
| #include "share/ob_cluster_version.h"
 | |
| #include <gtest/gtest.h>
 | |
| 
 | |
| 
 | |
| namespace oceanbase
 | |
| {
 | |
| namespace share
 | |
| {
 | |
| using namespace common;
 | |
| using namespace oceanbase::lib;
 | |
| class TestClusterVersion: public ::testing::Test
 | |
| {
 | |
| public:
 | |
|   virtual void SetUp() {}
 | |
|   virtual void TearDown() {}
 | |
| };
 | |
| 
 | |
| TEST_F(TestClusterVersion, init)
 | |
| {
 | |
|   uint64_t version = 0;
 | |
| 
 | |
|   version = cal_version(1, 4, 0, 79);
 | |
|   ObClusterVersion ver_1;
 | |
|   ASSERT_EQ(ver_1.init(version), OB_SUCCESS);
 | |
| 
 | |
|   version = cal_version(1, 4, 79, 0);
 | |
|   ObClusterVersion ver_2;
 | |
|   ASSERT_EQ(ver_2.init(version), OB_INVALID_ARGUMENT);
 | |
| 
 | |
|   version = cal_version(3, 2, 0, 0);
 | |
|   ObClusterVersion ver_3;
 | |
|   ASSERT_EQ(ver_3.init(version), OB_SUCCESS);
 | |
| 
 | |
|   version = cal_version(3, 2, 0, 1);
 | |
|   ObClusterVersion ver_4;
 | |
|   ASSERT_EQ(ver_4.init(version), OB_SUCCESS);
 | |
| 
 | |
|   version = cal_version(3, 2, 0, 2);
 | |
|   ObClusterVersion ver_5;
 | |
|   ASSERT_EQ(ver_5.init(version), OB_SUCCESS);
 | |
| 
 | |
|   version = cal_version(3, 2, 1, 0);
 | |
|   ObClusterVersion ver_6;
 | |
|   ASSERT_EQ(ver_6.init(version), OB_INVALID_ARGUMENT);
 | |
| 
 | |
|   version = cal_version(3, 2, 1, 1);
 | |
|   ObClusterVersion ver_18;
 | |
|   ASSERT_EQ(ver_18.init(version), OB_INVALID_ARGUMENT);
 | |
| 
 | |
|   version = cal_version(3, 2, 2, 0);
 | |
|   ObClusterVersion ver_7;
 | |
|   ASSERT_EQ(ver_7.init(version), OB_INVALID_ARGUMENT);
 | |
| 
 | |
|   version = cal_version(3, 2, 2, 1);
 | |
|   ObClusterVersion ver_19;
 | |
|   ASSERT_EQ(ver_19.init(version), OB_INVALID_ARGUMENT);
 | |
| 
 | |
|   version = cal_version(3, 2, 0, 3);
 | |
|   ObClusterVersion ver_8;
 | |
|   ASSERT_EQ(ver_8.init(version), OB_INVALID_ARGUMENT);
 | |
| 
 | |
|   version = cal_version(3, 2, 0, 4);
 | |
|   ObClusterVersion ver_17;
 | |
|   ASSERT_EQ(ver_17.init(version), OB_INVALID_ARGUMENT);
 | |
| 
 | |
|   // major_patch_version(3rd) can be greator than 0 when:
 | |
|   // - cluster_version >= "3.3"
 | |
|   // - cluster_version >= "3.2.3.0"
 | |
| 
 | |
|   version = cal_version(3, 2, 3, 0);
 | |
|   ObClusterVersion ver_9;
 | |
|   ASSERT_EQ(ver_9.init(version), OB_SUCCESS);
 | |
| 
 | |
|   version = cal_version(3, 2, 3, 1);
 | |
|   ObClusterVersion ver_10;
 | |
|   ASSERT_EQ(ver_10.init(version), OB_SUCCESS);
 | |
| 
 | |
|   version = cal_version(3, 2, 4, 0);
 | |
|   ObClusterVersion ver_11;
 | |
|   ASSERT_EQ(ver_11.init(version), OB_SUCCESS);
 | |
| 
 | |
|   version = cal_version(3, 2, 4, 1);
 | |
|   ObClusterVersion ver_12;
 | |
|   ASSERT_EQ(ver_12.init(version), OB_SUCCESS);
 | |
| 
 | |
|   version = cal_version(3, 3, 0, 0);
 | |
|   ObClusterVersion ver_13;
 | |
|   ASSERT_EQ(ver_13.init(version), OB_SUCCESS);
 | |
| 
 | |
|   version = cal_version(3, 3, 1, 0);
 | |
|   ObClusterVersion ver_14;
 | |
|   ASSERT_EQ(ver_14.init(version), OB_SUCCESS);
 | |
| 
 | |
|   version = cal_version(3, 3, 0, 1);
 | |
|   ObClusterVersion ver_15;
 | |
|   ASSERT_EQ(ver_15.init(version), OB_SUCCESS);
 | |
| 
 | |
|   version = cal_version(3, 3, 1, 1);
 | |
|   ObClusterVersion ver_16;
 | |
|   ASSERT_EQ(ver_16.init(version), OB_SUCCESS);
 | |
| }
 | |
| 
 | |
| TEST_F(TestClusterVersion, refresh_cluster_version)
 | |
| {
 | |
|   // 1.4.79
 | |
|   ObClusterVersion ver_1;
 | |
|   ASSERT_EQ(ver_1.refresh_cluster_version("1.4.0.79"), OB_INVALID_ARGUMENT);
 | |
| 
 | |
|   ObClusterVersion ver_2;
 | |
|   ASSERT_EQ(ver_2.refresh_cluster_version("1.4.79.0"), OB_SUCCESS);
 | |
| 
 | |
|   ObClusterVersion ver_3;
 | |
|   ASSERT_EQ(ver_3.refresh_cluster_version("1.4.79"), OB_SUCCESS);
 | |
| 
 | |
|   ASSERT_EQ(ver_2.get_cluster_version(), ver_3.get_cluster_version());
 | |
| 
 | |
|   // 3.2
 | |
|   ObClusterVersion ver_4;
 | |
|   ASSERT_EQ(ver_4.refresh_cluster_version("3.2.0"), OB_SUCCESS);
 | |
| 
 | |
|   ObClusterVersion ver_5;
 | |
|   ASSERT_EQ(ver_5.refresh_cluster_version("3.2.0.0"), OB_SUCCESS);
 | |
| 
 | |
|   ASSERT_EQ(ver_4.get_cluster_version(), ver_5.get_cluster_version());
 | |
| 
 | |
|   // 3.2.1
 | |
|   ObClusterVersion ver_6;
 | |
|   ASSERT_EQ(ver_6.refresh_cluster_version("3.2.0.1"), OB_INVALID_ARGUMENT);
 | |
| 
 | |
|   ObClusterVersion ver_7;
 | |
|   ASSERT_EQ(ver_7.refresh_cluster_version("3.2.1.0"), OB_SUCCESS);
 | |
| 
 | |
|   ObClusterVersion ver_8;
 | |
|   ASSERT_EQ(ver_8.refresh_cluster_version("3.2.1"), OB_SUCCESS);
 | |
| 
 | |
|   ASSERT_EQ(ver_7.get_cluster_version(), ver_8.get_cluster_version());
 | |
| 
 | |
|   // 3.2.1.1
 | |
|   ObClusterVersion ver_26;
 | |
|   ASSERT_EQ(ver_26.refresh_cluster_version("3.2.1.1"), OB_INVALID_ARGUMENT);
 | |
| 
 | |
|   // 3.2.2
 | |
|   ObClusterVersion ver_9;
 | |
|   ASSERT_EQ(ver_9.refresh_cluster_version("3.2.0.2"), OB_INVALID_ARGUMENT);
 | |
| 
 | |
|   ObClusterVersion ver_10;
 | |
|   ASSERT_EQ(ver_10.refresh_cluster_version("3.2.2.0"), OB_SUCCESS);
 | |
| 
 | |
|   ObClusterVersion ver_11;
 | |
|   ASSERT_EQ(ver_11.refresh_cluster_version("3.2.2"), OB_SUCCESS);
 | |
| 
 | |
|   ASSERT_EQ(ver_10.get_cluster_version(), ver_11.get_cluster_version());
 | |
| 
 | |
|   // 3.2.2.1
 | |
|   ObClusterVersion ver_25;
 | |
|   ASSERT_EQ(ver_25.refresh_cluster_version("3.2.2.1"), OB_INVALID_ARGUMENT);
 | |
| 
 | |
|   // cluster version which is less than "3.2.3":
 | |
|   // - should be format as "a.b.c" or "a.b.c.0"
 | |
|   // - "a.b.0.c" is invalid
 | |
| 
 | |
|   // 3.2.3
 | |
|   ObClusterVersion ver_12;
 | |
|   ASSERT_EQ(ver_12.refresh_cluster_version("3.2.0.3"), OB_INVALID_ARGUMENT);
 | |
| 
 | |
|   ObClusterVersion ver_13;
 | |
|   ASSERT_EQ(ver_13.refresh_cluster_version("3.2.3.0"), OB_SUCCESS);
 | |
| 
 | |
|   ObClusterVersion ver_14;
 | |
|   ASSERT_EQ(ver_14.refresh_cluster_version("3.2.3"), OB_SUCCESS);
 | |
| 
 | |
|   ASSERT_EQ(ver_13.get_cluster_version(), ver_14.get_cluster_version());
 | |
| 
 | |
|   // 3.2.3.1
 | |
|   ObClusterVersion ver_27;
 | |
|   ASSERT_EQ(ver_27.refresh_cluster_version("3.2.3.1"), OB_SUCCESS);
 | |
| 
 | |
|   // 3.2.4
 | |
|   ObClusterVersion ver_15;
 | |
|   ASSERT_EQ(ver_15.refresh_cluster_version("3.2.0.4"), OB_INVALID_ARGUMENT);
 | |
| 
 | |
|   ObClusterVersion ver_16;
 | |
|   ASSERT_EQ(ver_16.refresh_cluster_version("3.2.4.0"), OB_SUCCESS);
 | |
| 
 | |
|   ObClusterVersion ver_17;
 | |
|   ASSERT_EQ(ver_17.refresh_cluster_version("3.2.4"), OB_SUCCESS);
 | |
| 
 | |
|   ASSERT_EQ(ver_16.get_cluster_version(), ver_17.get_cluster_version());
 | |
| 
 | |
|   // 3.2.4.1
 | |
|   ObClusterVersion ver_18;
 | |
|   ASSERT_EQ(ver_18.refresh_cluster_version("3.2.4.1"), OB_SUCCESS);
 | |
| 
 | |
|   // 3.3.x
 | |
|   ObClusterVersion ver_19;
 | |
|   ASSERT_EQ(ver_19.refresh_cluster_version("3.3.0"), OB_SUCCESS);
 | |
| 
 | |
|   ObClusterVersion ver_20;
 | |
|   ASSERT_EQ(ver_20.refresh_cluster_version("3.3.0.0"), OB_SUCCESS);
 | |
| 
 | |
|   ASSERT_EQ(ver_19.get_cluster_version(), ver_20.get_cluster_version());
 | |
| 
 | |
|   ObClusterVersion ver_21;
 | |
|   ASSERT_EQ(ver_21.refresh_cluster_version("3.3.0.1"), OB_SUCCESS);
 | |
| 
 | |
|   ObClusterVersion ver_22;
 | |
|   ASSERT_EQ(ver_22.refresh_cluster_version("3.3.1.0"), OB_SUCCESS);
 | |
| 
 | |
|   ObClusterVersion ver_23;
 | |
|   ASSERT_EQ(ver_23.refresh_cluster_version("3.3.1"), OB_SUCCESS);
 | |
| 
 | |
|   ASSERT_NE(ver_21.get_cluster_version(), ver_22.get_cluster_version());
 | |
|   ASSERT_EQ(ver_22.get_cluster_version(), ver_23.get_cluster_version());
 | |
| 
 | |
|   ObClusterVersion ver_24;
 | |
|   ASSERT_EQ(ver_24.refresh_cluster_version("3.3.1.1"), OB_SUCCESS);
 | |
| }
 | |
| 
 | |
| TEST_F(TestClusterVersion, encode)
 | |
| {
 | |
|   uint64_t version = 0;
 | |
| 
 | |
|   // for cluster_version < 3.2.3, cluster version string which like "a.b.c" or "a.b.c.0" is encoded as "a|b|0|c".
 | |
|   version = cal_version(1, 4, 0, 79);
 | |
|   ObClusterVersion ver_1;
 | |
|   ASSERT_EQ(ver_1.init(version), OB_SUCCESS);
 | |
|   ObClusterVersion ver_2;
 | |
|   ASSERT_EQ(ver_2.refresh_cluster_version("1.4.79.0"), OB_SUCCESS);
 | |
|   ASSERT_EQ(ver_1.get_cluster_version(), ver_2.get_cluster_version());
 | |
| 
 | |
|   version = cal_version(3, 2, 0, 1);
 | |
|   ObClusterVersion ver_3;
 | |
|   ASSERT_EQ(ver_3.init(version), OB_SUCCESS);
 | |
|   ObClusterVersion ver_4;
 | |
|   ASSERT_EQ(ver_4.refresh_cluster_version("3.2.1.0"), OB_SUCCESS);
 | |
|   ASSERT_EQ(ver_3.get_cluster_version(), ver_4.get_cluster_version());
 | |
| 
 | |
|   version = cal_version(3, 2, 0, 2);
 | |
|   ObClusterVersion ver_5;
 | |
|   ASSERT_EQ(ver_5.init(version), OB_SUCCESS);
 | |
|   ObClusterVersion ver_6;
 | |
|   ASSERT_EQ(ver_6.refresh_cluster_version("3.2.2.0"), OB_SUCCESS);
 | |
|   ASSERT_EQ(ver_5.get_cluster_version(), ver_6.get_cluster_version());
 | |
| 
 | |
|   // for cluster_version >= 3.2.3, cluster_version string which like "a.b.c.d" is encoded as "a|b|c|d".
 | |
|   version = cal_version(3, 2, 3, 0);
 | |
|   ObClusterVersion ver_7;
 | |
|   ASSERT_EQ(ver_7.init(version), OB_SUCCESS);
 | |
|   ObClusterVersion ver_8;
 | |
|   ASSERT_EQ(ver_8.refresh_cluster_version("3.2.3.0"), OB_SUCCESS);
 | |
|   ASSERT_EQ(ver_7.get_cluster_version(), ver_8.get_cluster_version());
 | |
| 
 | |
|   version = cal_version(3, 2, 3, 1);
 | |
|   ObClusterVersion ver_9;
 | |
|   ASSERT_EQ(ver_9.init(version), OB_SUCCESS);
 | |
|   ObClusterVersion ver_10;
 | |
|   ASSERT_EQ(ver_10.refresh_cluster_version("3.2.3.1"), OB_SUCCESS);
 | |
|   ASSERT_EQ(ver_9.get_cluster_version(), ver_10.get_cluster_version());
 | |
| 
 | |
|   version = cal_version(3, 2, 4, 0);
 | |
|   ObClusterVersion ver_11;
 | |
|   ASSERT_EQ(ver_11.init(version), OB_SUCCESS);
 | |
|   ObClusterVersion ver_12;
 | |
|   ASSERT_EQ(ver_12.refresh_cluster_version("3.2.4.0"), OB_SUCCESS);
 | |
|   ASSERT_EQ(ver_11.get_cluster_version(), ver_12.get_cluster_version());
 | |
| 
 | |
|   version = cal_version(3, 2, 4, 1);
 | |
|   ObClusterVersion ver_13;
 | |
|   ASSERT_EQ(ver_13.init(version), OB_SUCCESS);
 | |
|   ObClusterVersion ver_14;
 | |
|   ASSERT_EQ(ver_14.refresh_cluster_version("3.2.4.1"), OB_SUCCESS);
 | |
|   ASSERT_EQ(ver_13.get_cluster_version(), ver_14.get_cluster_version());
 | |
| 
 | |
|   version = cal_version(3, 3, 0, 1);
 | |
|   ObClusterVersion ver_15;
 | |
|   ASSERT_EQ(ver_15.init(version), OB_SUCCESS);
 | |
|   version = cal_version(3, 3, 1, 0);
 | |
|   ObClusterVersion ver_16;
 | |
|   ASSERT_EQ(ver_16.init(version), OB_SUCCESS);
 | |
|   ObClusterVersion ver_17;
 | |
|   ASSERT_EQ(ver_17.refresh_cluster_version("3.3.0.1"), OB_SUCCESS);
 | |
|   ObClusterVersion ver_18;
 | |
|   ASSERT_EQ(ver_18.refresh_cluster_version("3.3.1.0"), OB_SUCCESS);
 | |
| 
 | |
|   ASSERT_EQ(ver_15.get_cluster_version(), ver_17.get_cluster_version());
 | |
|   ASSERT_EQ(ver_16.get_cluster_version(), ver_18.get_cluster_version());
 | |
|   ASSERT_NE(ver_15.get_cluster_version(), ver_16.get_cluster_version());
 | |
| }
 | |
| 
 | |
| TEST_F(TestClusterVersion, is_valid)
 | |
| {
 | |
|   ASSERT_EQ(ObClusterVersion::is_valid("1.4.0.79"), OB_INVALID_ARGUMENT);
 | |
|   ASSERT_EQ(ObClusterVersion::is_valid("1.4.79.0"), OB_SUCCESS);
 | |
|   ASSERT_EQ(ObClusterVersion::is_valid("1.4.79"), OB_SUCCESS);
 | |
| 
 | |
|   ASSERT_EQ(ObClusterVersion::is_valid("3.2.0.0"), OB_SUCCESS);
 | |
|   ASSERT_EQ(ObClusterVersion::is_valid("3.2.0"), OB_SUCCESS);
 | |
| 
 | |
|   ASSERT_EQ(ObClusterVersion::is_valid("3.2.0.1"), OB_INVALID_ARGUMENT);
 | |
|   ASSERT_EQ(ObClusterVersion::is_valid("3.2.1.0"), OB_SUCCESS);
 | |
|   ASSERT_EQ(ObClusterVersion::is_valid("3.2.1"), OB_SUCCESS);
 | |
|   ASSERT_EQ(ObClusterVersion::is_valid("3.2.1.1"), OB_INVALID_ARGUMENT);
 | |
| 
 | |
|   ASSERT_EQ(ObClusterVersion::is_valid("3.2.0.2"), OB_INVALID_ARGUMENT);
 | |
|   ASSERT_EQ(ObClusterVersion::is_valid("3.2.2.0"), OB_SUCCESS);
 | |
|   ASSERT_EQ(ObClusterVersion::is_valid("3.2.2"), OB_SUCCESS);
 | |
|   ASSERT_EQ(ObClusterVersion::is_valid("3.2.2.1"), OB_INVALID_ARGUMENT);
 | |
| 
 | |
|   // for cluster_version < "3.2.3", 4th cluster version should be 0.
 | |
|   ASSERT_EQ(ObClusterVersion::is_valid("3.2.0.3"), OB_INVALID_ARGUMENT);
 | |
|   ASSERT_EQ(ObClusterVersion::is_valid("3.2.3.0"), OB_SUCCESS);
 | |
|   ASSERT_EQ(ObClusterVersion::is_valid("3.2.3"), OB_SUCCESS);
 | |
|   ASSERT_EQ(ObClusterVersion::is_valid("3.2.3.1"), OB_SUCCESS);
 | |
| 
 | |
|   ASSERT_EQ(ObClusterVersion::is_valid("3.2.0.4"), OB_INVALID_ARGUMENT);
 | |
|   ASSERT_EQ(ObClusterVersion::is_valid("3.2.4.0"), OB_SUCCESS);
 | |
|   ASSERT_EQ(ObClusterVersion::is_valid("3.2.4"), OB_SUCCESS);
 | |
|   ASSERT_EQ(ObClusterVersion::is_valid("3.2.4.1"), OB_SUCCESS);
 | |
| 
 | |
|   ASSERT_EQ(ObClusterVersion::is_valid("3.3.0.0"), OB_SUCCESS);
 | |
|   ASSERT_EQ(ObClusterVersion::is_valid("3.3.0.1"), OB_SUCCESS);
 | |
|   ASSERT_EQ(ObClusterVersion::is_valid("3.3.1.0"), OB_SUCCESS);
 | |
|   ASSERT_EQ(ObClusterVersion::is_valid("3.3.1"), OB_SUCCESS);
 | |
|   ASSERT_EQ(ObClusterVersion::is_valid("3.3.1.1"), OB_SUCCESS);
 | |
| }
 | |
| 
 | |
| TEST_F(TestClusterVersion, get_version)
 | |
| {
 | |
|   uint64_t version = 0;
 | |
|   uint64_t version_1 = 0;
 | |
|   uint64_t res_version = 0;
 | |
|   // 1.4.79
 | |
|   version = cal_version(1, 4, 0, 79);   // right
 | |
|   version_1 = cal_version(1, 4, 79, 0); // wrong
 | |
|   ASSERT_EQ(ObClusterVersion::get_version("1.4.0.79", res_version), OB_INVALID_ARGUMENT);
 | |
|   ASSERT_EQ(ObClusterVersion::get_version("1.4.79.0", res_version), OB_SUCCESS);
 | |
|   ASSERT_EQ(version, res_version);
 | |
|   ASSERT_NE(version_1, res_version);
 | |
|   ASSERT_EQ(ObClusterVersion::get_version("1.4.79", res_version), OB_SUCCESS);
 | |
|   ASSERT_EQ(version, res_version);
 | |
|   ASSERT_NE(version_1, res_version);
 | |
| 
 | |
|   // 3.2
 | |
|   version = cal_version(3, 2, 0, 0);
 | |
|   ASSERT_EQ(ObClusterVersion::get_version("3.2.0.0", res_version), OB_SUCCESS);
 | |
|   ASSERT_EQ(version, res_version);
 | |
|   ASSERT_EQ(ObClusterVersion::get_version("3.2.0", res_version), OB_SUCCESS);
 | |
|   ASSERT_EQ(version, res_version);
 | |
| 
 | |
|   // 3.2.1
 | |
|   version = cal_version(3, 2, 0, 1);   // right
 | |
|   version_1 = cal_version(3, 2, 1, 0); // wrong
 | |
|   ASSERT_EQ(ObClusterVersion::get_version("3.2.1.1", res_version), OB_INVALID_ARGUMENT);
 | |
|   ASSERT_EQ(ObClusterVersion::get_version("3.2.0.1", res_version), OB_INVALID_ARGUMENT);
 | |
|   ASSERT_EQ(ObClusterVersion::get_version("3.2.1.0", res_version), OB_SUCCESS);
 | |
|   ASSERT_EQ(version, res_version);
 | |
|   ASSERT_NE(version_1, res_version);
 | |
|   ASSERT_EQ(ObClusterVersion::get_version("3.2.1", res_version), OB_SUCCESS);
 | |
|   ASSERT_EQ(version, res_version);
 | |
|   ASSERT_NE(version_1, res_version);
 | |
| 
 | |
|   // 3.2.2
 | |
|   version = cal_version(3, 2, 0, 2);   // right
 | |
|   version_1 = cal_version(3, 2, 2, 0); // wrong
 | |
|   ASSERT_EQ(ObClusterVersion::get_version("3.2.2.1", res_version), OB_INVALID_ARGUMENT);
 | |
|   ASSERT_EQ(ObClusterVersion::get_version("3.2.0.2", res_version), OB_INVALID_ARGUMENT);
 | |
|   ASSERT_EQ(ObClusterVersion::get_version("3.2.2.0", res_version), OB_SUCCESS);
 | |
|   ASSERT_EQ(version, res_version);
 | |
|   ASSERT_NE(version_1, res_version);
 | |
|   ASSERT_EQ(ObClusterVersion::get_version("3.2.2", res_version), OB_SUCCESS);
 | |
|   ASSERT_EQ(version, res_version);
 | |
|   ASSERT_NE(version_1, res_version);
 | |
| 
 | |
|   // cluster version which is less than "3.2.3":
 | |
|   // - should be format as "a.b.c" or "a.b.c.0"
 | |
|   // - "a.b.0.c" is invalid
 | |
| 
 | |
|   // 3.2.3
 | |
|   version = cal_version(3, 2, 3, 0);    // right
 | |
|   version_1 = cal_version(3, 2, 0, 3);  // wrong
 | |
|   ASSERT_EQ(ObClusterVersion::get_version("3.2.0.3", res_version), OB_INVALID_ARGUMENT);
 | |
|   ASSERT_EQ(ObClusterVersion::get_version("3.2.3.0", res_version), OB_SUCCESS);
 | |
|   ASSERT_EQ(version, res_version);
 | |
|   ASSERT_NE(version_1, res_version);
 | |
|   ASSERT_EQ(ObClusterVersion::get_version("3.2.3", res_version), OB_SUCCESS);
 | |
|   ASSERT_EQ(version, res_version);
 | |
|   ASSERT_NE(version_1, res_version);
 | |
| 
 | |
|   // 3.2.3.1
 | |
|   version = cal_version(3, 2, 3, 1);    // right
 | |
|   ASSERT_EQ(ObClusterVersion::get_version("3.2.3.1", res_version), OB_SUCCESS);
 | |
|   ASSERT_EQ(version, res_version);
 | |
| 
 | |
|   // 3.2.4.0
 | |
|   version = cal_version(3, 2, 4, 0);    // right
 | |
|   version_1 = cal_version(3, 2, 0, 4);  // wrong
 | |
|   ASSERT_EQ(ObClusterVersion::get_version("3.2.0.4", res_version), OB_INVALID_ARGUMENT);
 | |
|   ASSERT_EQ(ObClusterVersion::get_version("3.2.4.0", res_version), OB_SUCCESS);
 | |
|   ASSERT_EQ(version, res_version);
 | |
|   ASSERT_NE(version_1, res_version);
 | |
|   ASSERT_EQ(ObClusterVersion::get_version("3.2.4", res_version), OB_SUCCESS);
 | |
|   ASSERT_EQ(version, res_version);
 | |
|   ASSERT_NE(version_1, res_version);
 | |
| 
 | |
|   // 3.2.4.1
 | |
|   version = cal_version(3, 2, 4, 1);
 | |
|   ASSERT_EQ(ObClusterVersion::get_version("3.2.4.1", res_version), OB_SUCCESS);
 | |
|   ASSERT_EQ(version, res_version);
 | |
| 
 | |
|   // 3.3
 | |
|   version = cal_version(3, 3, 0, 0);
 | |
|   ASSERT_EQ(ObClusterVersion::get_version("3.3.0.0", res_version), OB_SUCCESS);
 | |
|   ASSERT_EQ(version, res_version);
 | |
|   ASSERT_EQ(ObClusterVersion::get_version("3.3.0", res_version), OB_SUCCESS);
 | |
|   ASSERT_EQ(version, res_version);
 | |
| 
 | |
|   // 3.3.0.1
 | |
|   version = cal_version(3, 3, 0, 1);    // right
 | |
|   version_1 = cal_version(3, 3, 1, 0);  // wrong
 | |
|   ASSERT_EQ(ObClusterVersion::get_version("3.3.0.1", res_version), OB_SUCCESS);
 | |
|   ASSERT_EQ(version, res_version);
 | |
|   ASSERT_NE(version_1, res_version);
 | |
| 
 | |
|   // 3.3.1
 | |
|   version = cal_version(3, 3, 1, 0);    // right
 | |
|   version_1 = cal_version(3, 3, 0, 1);  // wrong
 | |
|   ASSERT_EQ(ObClusterVersion::get_version("3.3.1.0", res_version), OB_SUCCESS);
 | |
|   ASSERT_EQ(version, res_version);
 | |
|   ASSERT_NE(version_1, res_version);
 | |
|   ASSERT_EQ(ObClusterVersion::get_version("3.3.1", res_version), OB_SUCCESS);
 | |
|   ASSERT_EQ(version, res_version);
 | |
|   ASSERT_NE(version_1, res_version);
 | |
| 
 | |
|   // 3.3.1.1
 | |
|   version = cal_version(3, 3, 1, 1);
 | |
|   ASSERT_EQ(ObClusterVersion::get_version("3.3.1.1", res_version), OB_SUCCESS);
 | |
|   ASSERT_EQ(version, res_version);
 | |
| }
 | |
| 
 | |
| TEST_F(TestClusterVersion, print_version_str)
 | |
| {
 | |
|   char version_str[OB_CLUSTER_VERSION_LENGTH] = {0};
 | |
|   uint64_t version = 0;
 | |
|   int64_t pos = 0;
 | |
| 
 | |
|   // 1.4.79
 | |
|   version = cal_version(1, 4, 79, 0);
 | |
|   ASSERT_EQ(OB_INVALID_INDEX, ObClusterVersion::print_version_str(version_str, OB_CLUSTER_VERSION_LENGTH, version));
 | |
|   version = cal_version(1, 4, 0, 79);
 | |
|   ASSERT_NE(OB_INVALID_INDEX, ObClusterVersion::print_version_str(version_str, OB_CLUSTER_VERSION_LENGTH, version));
 | |
|   ASSERT_EQ(0, STRNCMP(version_str, "1.4.79", OB_CLUSTER_VERSION_LENGTH));
 | |
| 
 | |
|   // 3.2
 | |
|   version = cal_version(3, 2, 0, 0);
 | |
|   ASSERT_NE(OB_INVALID_INDEX, ObClusterVersion::print_version_str(version_str, OB_CLUSTER_VERSION_LENGTH, version));
 | |
|   ASSERT_EQ(0, STRNCMP(version_str, "3.2.0", OB_CLUSTER_VERSION_LENGTH));
 | |
| 
 | |
|   // 3.2.1
 | |
|   version = cal_version(3, 2, 1, 0);
 | |
|   ASSERT_EQ(OB_INVALID_INDEX, ObClusterVersion::print_version_str(version_str, OB_CLUSTER_VERSION_LENGTH, version));
 | |
|   version = cal_version(3, 2, 0, 1);
 | |
|   ASSERT_NE(OB_INVALID_INDEX, ObClusterVersion::print_version_str(version_str, OB_CLUSTER_VERSION_LENGTH, version));
 | |
|   ASSERT_EQ(0, STRNCMP(version_str, "3.2.1", OB_CLUSTER_VERSION_LENGTH));
 | |
| 
 | |
|   // 3.2.1.1
 | |
|   version = cal_version(3, 2, 1, 1);
 | |
|   ASSERT_EQ(OB_INVALID_INDEX, ObClusterVersion::print_version_str(version_str, OB_CLUSTER_VERSION_LENGTH, version));
 | |
| 
 | |
|   // 3.2.2
 | |
|   version = cal_version(3, 2, 2, 0);
 | |
|   ASSERT_EQ(OB_INVALID_INDEX, ObClusterVersion::print_version_str(version_str, OB_CLUSTER_VERSION_LENGTH, version));
 | |
|   version = cal_version(3, 2, 0, 2);
 | |
|   ASSERT_NE(OB_INVALID_INDEX, ObClusterVersion::print_version_str(version_str, OB_CLUSTER_VERSION_LENGTH, version));
 | |
|   ASSERT_EQ(0, STRNCMP(version_str, "3.2.2", OB_CLUSTER_VERSION_LENGTH));
 | |
| 
 | |
|   // 3.2.2.1
 | |
|   version = cal_version(3, 2, 2, 1);
 | |
|   ASSERT_EQ(OB_INVALID_INDEX, ObClusterVersion::print_version_str(version_str, OB_CLUSTER_VERSION_LENGTH, version));
 | |
| 
 | |
|   // 3.2.3
 | |
|   version = cal_version(3, 2, 0, 3);
 | |
|   ASSERT_EQ(OB_INVALID_INDEX, ObClusterVersion::print_version_str(version_str, OB_CLUSTER_VERSION_LENGTH, version));
 | |
|   version = cal_version(3, 2, 3, 0);
 | |
|   ASSERT_NE(OB_INVALID_INDEX, ObClusterVersion::print_version_str(version_str, OB_CLUSTER_VERSION_LENGTH, version));
 | |
|   ASSERT_EQ(0, STRNCMP(version_str, "3.2.3.0", OB_CLUSTER_VERSION_LENGTH));
 | |
| 
 | |
|   // 3.2.3.1
 | |
|   version = cal_version(3, 2, 3, 1);
 | |
|   ASSERT_NE(OB_INVALID_INDEX, ObClusterVersion::print_version_str(version_str, OB_CLUSTER_VERSION_LENGTH, version));
 | |
|   ASSERT_EQ(0, STRNCMP(version_str, "3.2.3.1", OB_CLUSTER_VERSION_LENGTH));
 | |
| 
 | |
|   // 3.2.4
 | |
|   version = cal_version(3, 2, 0, 4);
 | |
|   ASSERT_EQ(OB_INVALID_INDEX, ObClusterVersion::print_version_str(version_str, OB_CLUSTER_VERSION_LENGTH, version));
 | |
|   version = cal_version(3, 2, 4, 0);
 | |
|   ASSERT_NE(OB_INVALID_INDEX, ObClusterVersion::print_version_str(version_str, OB_CLUSTER_VERSION_LENGTH, version));
 | |
|   ASSERT_EQ(0, STRNCMP(version_str, "3.2.4.0", OB_CLUSTER_VERSION_LENGTH));
 | |
| 
 | |
|   // 3.2.4.1
 | |
|   version = cal_version(3, 2, 4, 1);
 | |
|   ASSERT_NE(OB_INVALID_INDEX, ObClusterVersion::print_version_str(version_str, OB_CLUSTER_VERSION_LENGTH, version));
 | |
|   ASSERT_EQ(0, STRNCMP(version_str, "3.2.4.1", OB_CLUSTER_VERSION_LENGTH));
 | |
|   // 3.3
 | |
|   version = cal_version(3, 3, 0, 0);
 | |
|   ASSERT_NE(OB_INVALID_INDEX, ObClusterVersion::print_version_str(version_str, OB_CLUSTER_VERSION_LENGTH, version));
 | |
|   ASSERT_EQ(0, STRNCMP(version_str, "3.3.0.0", OB_CLUSTER_VERSION_LENGTH));
 | |
|   // 3.3.0.1
 | |
|   version = cal_version(3, 3, 0, 1);
 | |
|   ASSERT_NE(OB_INVALID_INDEX, ObClusterVersion::print_version_str(version_str, OB_CLUSTER_VERSION_LENGTH, version));
 | |
|   ASSERT_EQ(0, STRNCMP(version_str, "3.3.0.1", OB_CLUSTER_VERSION_LENGTH));
 | |
|   // 3.3.1
 | |
|   version = cal_version(3, 3, 1, 0);
 | |
|   ASSERT_NE(OB_INVALID_INDEX, ObClusterVersion::print_version_str(version_str, OB_CLUSTER_VERSION_LENGTH, version));
 | |
|   ASSERT_EQ(0, STRNCMP(version_str, "3.3.1.0", OB_CLUSTER_VERSION_LENGTH));
 | |
|   // 3.3.1.1
 | |
|   version = cal_version(3, 3, 1, 1);
 | |
|   ASSERT_NE(OB_INVALID_INDEX, ObClusterVersion::print_version_str(version_str, OB_CLUSTER_VERSION_LENGTH, version));
 | |
|   ASSERT_EQ(0, STRNCMP(version_str, "3.3.1.1", OB_CLUSTER_VERSION_LENGTH));
 | |
| }
 | |
| 
 | |
| } // end share
 | |
| } // end oceanbase
 | |
| 
 | |
| int main(int argc, char **argv)
 | |
| {
 | |
|   oceanbase::common::ObLogger::get_logger().set_log_level("INFO");
 | |
|   OB_LOGGER.set_log_level("INFO");
 | |
|   testing::InitGoogleTest(&argc, argv);
 | |
|   return RUN_ALL_TESTS();
 | |
| }
 | 
