505 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			505 lines
		
	
	
		
			18 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 "share/ob_locality_priority.h"
 | 
						|
#include <gtest/gtest.h>
 | 
						|
 | 
						|
namespace oceanbase {
 | 
						|
namespace share {
 | 
						|
using namespace common;
 | 
						|
 | 
						|
class TestLocalityPriority : public ::testing::Test {
 | 
						|
public:
 | 
						|
  virtual void SetUp();
 | 
						|
  virtual void TearDown();
 | 
						|
  void get_primary_region_prioriry(const char* primary_zone,
 | 
						|
      const common::ObIArray<ObLocalityRegion>& locality_region_array,
 | 
						|
      common::ObIArray<ObLocalityRegion>& tenant_locality_region);
 | 
						|
 | 
						|
private:
 | 
						|
  typedef common::ObFixedLengthString<common::MAX_ZONE_LENGTH> Zone;
 | 
						|
 | 
						|
protected:
 | 
						|
  common::ObSEArray<ObLocalityRegion, 5> locality_region_array_;
 | 
						|
};
 | 
						|
 | 
						|
void TestLocalityPriority::SetUp()
 | 
						|
{
 | 
						|
  locality_region_array_.reset();
 | 
						|
  ObLocalityRegion region;
 | 
						|
  region.region_ = "hz";
 | 
						|
  Zone zone1 = "hz1";
 | 
						|
  Zone zone2 = "hz2";
 | 
						|
  region.zone_array_.push_back(zone1);
 | 
						|
  region.zone_array_.push_back(zone2);
 | 
						|
  locality_region_array_.push_back(region);
 | 
						|
 | 
						|
  region.reset();
 | 
						|
  region.region_ = "sh";
 | 
						|
  Zone zone3 = "sh1";
 | 
						|
  Zone zone4 = "sh2";
 | 
						|
  region.zone_array_.push_back(zone3);
 | 
						|
  region.zone_array_.push_back(zone4);
 | 
						|
  locality_region_array_.push_back(region);
 | 
						|
 | 
						|
  region.reset();
 | 
						|
  region.region_ = "sz";
 | 
						|
  Zone zone5 = "sz1";
 | 
						|
  region.zone_array_.push_back(zone5);
 | 
						|
  locality_region_array_.push_back(region);
 | 
						|
 | 
						|
  SHARE_LOG(INFO, "locality_region", K_(locality_region_array));
 | 
						|
}
 | 
						|
 | 
						|
void TestLocalityPriority::TearDown()
 | 
						|
{
 | 
						|
  locality_region_array_.reset();
 | 
						|
}
 | 
						|
 | 
						|
void TestLocalityPriority::get_primary_region_prioriry(const char* primary_zone,
 | 
						|
    const common::ObIArray<ObLocalityRegion>& locality_region_array,
 | 
						|
    common::ObIArray<ObLocalityRegion>& tenant_locality_region)
 | 
						|
{
 | 
						|
  int ret = OB_SUCCESS;
 | 
						|
 | 
						|
  if (OB_FAIL(ObLocalityPriority::get_primary_region_prioriry(
 | 
						|
          primary_zone, locality_region_array, tenant_locality_region))) {
 | 
						|
    SHARE_LOG(WARN, "ObLocalityPriority::get_primary_region_prioriry error", K(ret));
 | 
						|
  } else {
 | 
						|
    SHARE_LOG(INFO, "ObLocalityPriority::get_primary_region_prioriry success", K(tenant_locality_region));
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
TEST_F(TestLocalityPriority, get_region_priority_primary_three_region)
 | 
						|
{
 | 
						|
  const char* tenant_primary_zone = "hz1,hz2;sh1,sh2;sz1";
 | 
						|
  ObSEArray<ObLocalityRegion, 5> tenant_locality_region;
 | 
						|
  get_primary_region_prioriry(tenant_primary_zone, locality_region_array_, tenant_locality_region);
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "hz";
 | 
						|
    locality_info.local_zone_ = "hz1";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, 0);
 | 
						|
  }
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "hz";
 | 
						|
    locality_info.local_zone_ = "hz2";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, 0);
 | 
						|
  }
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "hz";
 | 
						|
    locality_info.local_zone_ = "hz3";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, 0);
 | 
						|
  }
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "hz";
 | 
						|
    locality_info.local_zone_ = "hz4";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, 0);
 | 
						|
  }
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "sh";
 | 
						|
    locality_info.local_zone_ = "sh1";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, 64);
 | 
						|
  }
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "sh";
 | 
						|
    locality_info.local_zone_ = "sh2";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, 64);
 | 
						|
  }
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "sh";
 | 
						|
    locality_info.local_zone_ = "sh3";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, 64);
 | 
						|
  }
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "sh";
 | 
						|
    locality_info.local_zone_ = "sh100";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, 64);
 | 
						|
  }
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "sh";
 | 
						|
    locality_info.local_zone_ = "hz1";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, 64);
 | 
						|
  }
 | 
						|
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "sz";
 | 
						|
    locality_info.local_zone_ = "sz1";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, 128);
 | 
						|
  }
 | 
						|
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "sz";
 | 
						|
    locality_info.local_zone_ = "sz2";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, 128);
 | 
						|
  }
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "sz";
 | 
						|
    locality_info.local_zone_ = "sz3";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, 128);
 | 
						|
  }
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "bj";
 | 
						|
    locality_info.local_zone_ = "bj1";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, UINT64_MAX);
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
TEST_F(TestLocalityPriority, get_region_priority_primary_one_region)
 | 
						|
{
 | 
						|
  const char* tenant_primary_zone = "hz1";
 | 
						|
  ObSEArray<ObLocalityRegion, 5> tenant_locality_region;
 | 
						|
  get_primary_region_prioriry(tenant_primary_zone, locality_region_array_, tenant_locality_region);
 | 
						|
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "hz";
 | 
						|
    locality_info.local_zone_ = "hz1";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, 0);
 | 
						|
  }
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "hz";
 | 
						|
    locality_info.local_zone_ = "hz2";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, 0);
 | 
						|
  }
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "sh";
 | 
						|
    locality_info.local_zone_ = "sh1";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, UINT64_MAX);
 | 
						|
  }
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "sh";
 | 
						|
    locality_info.local_zone_ = "sh2";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, UINT64_MAX);
 | 
						|
  }
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "sz";
 | 
						|
    locality_info.local_zone_ = "sz1";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, UINT64_MAX);
 | 
						|
  }
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "sz";
 | 
						|
    locality_info.local_zone_ = "sz2";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, UINT64_MAX);
 | 
						|
  }
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "bj";
 | 
						|
    locality_info.local_zone_ = "bj1";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, UINT64_MAX);
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
TEST_F(TestLocalityPriority, get_region_priority_primary_two_region)
 | 
						|
{
 | 
						|
  const char* tenant_primary_zone = "hz1;sh2";
 | 
						|
  ObSEArray<ObLocalityRegion, 5> tenant_locality_region;
 | 
						|
  get_primary_region_prioriry(tenant_primary_zone, locality_region_array_, tenant_locality_region);
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "hz";
 | 
						|
    locality_info.local_zone_ = "hz1";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, 0);
 | 
						|
  }
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "hz";
 | 
						|
    locality_info.local_zone_ = "hz2";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, 0);
 | 
						|
  }
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "sh";
 | 
						|
    locality_info.local_zone_ = "sh1";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, 64);
 | 
						|
  }
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "sh";
 | 
						|
    locality_info.local_zone_ = "sh2";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, 64);
 | 
						|
  }
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "sz";
 | 
						|
    locality_info.local_zone_ = "sz1";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, UINT64_MAX);
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
TEST_F(TestLocalityPriority, get_region_priority_primary_same_region)
 | 
						|
{
 | 
						|
  const char* tenant_primary_zone = "hz1;hz2";
 | 
						|
  ObSEArray<ObLocalityRegion, 5> tenant_locality_region;
 | 
						|
  get_primary_region_prioriry(tenant_primary_zone, locality_region_array_, tenant_locality_region);
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "hz";
 | 
						|
    locality_info.local_zone_ = "hz1";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, 0);
 | 
						|
  }
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "hz";
 | 
						|
    locality_info.local_zone_ = "hz2";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, 0);
 | 
						|
  }
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "sh";
 | 
						|
    locality_info.local_zone_ = "sh1";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, UINT64_MAX);
 | 
						|
  }
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "sh";
 | 
						|
    locality_info.local_zone_ = "sh2";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, UINT64_MAX);
 | 
						|
  }
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "sz";
 | 
						|
    locality_info.local_zone_ = "sz1";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, UINT64_MAX);
 | 
						|
  }
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "sz";
 | 
						|
    locality_info.local_zone_ = "sz2";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, UINT64_MAX);
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
TEST_F(TestLocalityPriority, get_region_priority_primary_diff_region)
 | 
						|
{
 | 
						|
  const char* tenant_primary_zone = "  hz1  ,  sh1  ; hz2   ";
 | 
						|
  ObSEArray<ObLocalityRegion, 5> tenant_locality_region;
 | 
						|
  get_primary_region_prioriry(tenant_primary_zone, locality_region_array_, tenant_locality_region);
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "hz";
 | 
						|
    locality_info.local_zone_ = "hz1";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, 0);
 | 
						|
  }
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "hz";
 | 
						|
    locality_info.local_zone_ = "hz2";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, 0);
 | 
						|
  }
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "sh";
 | 
						|
    locality_info.local_zone_ = "sh1";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, 0);
 | 
						|
  }
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "sh";
 | 
						|
    locality_info.local_zone_ = "sh2";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, 0);
 | 
						|
  }
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "sz";
 | 
						|
    locality_info.local_zone_ = "sz1";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, UINT64_MAX);
 | 
						|
  }
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "sz";
 | 
						|
    locality_info.local_zone_ = "sz2";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, UINT64_MAX);
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
TEST_F(TestLocalityPriority, get_region_priority_primary_one_empty)
 | 
						|
{
 | 
						|
  const char* tenant_primary_zone = "  ;  hz1";
 | 
						|
  ObSEArray<ObLocalityRegion, 5> tenant_locality_region;
 | 
						|
  get_primary_region_prioriry(tenant_primary_zone, locality_region_array_, tenant_locality_region);
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "hz";
 | 
						|
    locality_info.local_zone_ = "hz2";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, 64);
 | 
						|
  }
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "sz";
 | 
						|
    locality_info.local_zone_ = "sz2";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, UINT64_MAX);
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
TEST_F(TestLocalityPriority, get_region_priority_primary_two_empty)
 | 
						|
{
 | 
						|
  const char* tenant_primary_zone = "  ;  ";
 | 
						|
  ObSEArray<ObLocalityRegion, 5> tenant_locality_region;
 | 
						|
  get_primary_region_prioriry(tenant_primary_zone, locality_region_array_, tenant_locality_region);
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "hz";
 | 
						|
    locality_info.local_zone_ = "hz2";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, UINT64_MAX);
 | 
						|
  }
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "sz";
 | 
						|
    locality_info.local_zone_ = "sz2";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, UINT64_MAX);
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
TEST_F(TestLocalityPriority, get_region_priority_primary_all_empty)
 | 
						|
{
 | 
						|
  const char* tenant_primary_zone = "      ";
 | 
						|
  ObSEArray<ObLocalityRegion, 5> tenant_locality_region;
 | 
						|
  get_primary_region_prioriry(tenant_primary_zone, locality_region_array_, tenant_locality_region);
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "hz";
 | 
						|
    locality_info.local_zone_ = "hz2";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, UINT64_MAX);
 | 
						|
  }
 | 
						|
  {
 | 
						|
    ObLocalityInfo locality_info;
 | 
						|
    locality_info.local_region_ = "sz";
 | 
						|
    locality_info.local_zone_ = "sz2";
 | 
						|
    uint64_t zone_priority = UINT64_MAX;
 | 
						|
    ObLocalityPriority::get_region_priority(locality_info, tenant_locality_region, zone_priority);
 | 
						|
    ASSERT_EQ(zone_priority, UINT64_MAX);
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
TEST_F(TestLocalityPriority, get_region_priority_primary_NULL)
 | 
						|
{
 | 
						|
  const char* tenant_primary_zone = NULL;
 | 
						|
  ObSEArray<ObLocalityRegion, 5> tenant_locality_region;
 | 
						|
  int ret = ObLocalityPriority::get_primary_region_prioriry(
 | 
						|
      tenant_primary_zone, locality_region_array_, tenant_locality_region);
 | 
						|
  EXPECT_EQ(common::OB_INVALID_ARGUMENT, ret);
 | 
						|
}
 | 
						|
 | 
						|
}  // end namespace share
 | 
						|
}  // end namespace 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();
 | 
						|
}
 |