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();
 | 
						|
}
 |