186 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			186 lines
		
	
	
		
			4.4 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.
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef OCEANBASE_UNITTEST_CLOG_MOCK_OB_ELECTION_MGR_H
 | 
						|
#define OCEANBASE_UNITTEST_CLOG_MOCK_OB_ELECTION_MGR_H
 | 
						|
 | 
						|
#include "election/ob_election_mgr.h"
 | 
						|
#include "election/ob_election_base.h"
 | 
						|
#include "election/ob_election_rpc.h"
 | 
						|
 | 
						|
#include "common/ob_partition_key.h"
 | 
						|
#include "common/ob_member_list.h"
 | 
						|
#include "lib/hash/ob_hashmap.h"
 | 
						|
#include "lib/lock/ob_spin_rwlock.h"
 | 
						|
 | 
						|
#include "storage/transaction/ob_time_wheel.h"
 | 
						|
 | 
						|
namespace oceanbase {
 | 
						|
 | 
						|
namespace common {
 | 
						|
class ObPartitionKey;
 | 
						|
class ObMemberList;
 | 
						|
class ObAddr;
 | 
						|
}  // namespace common
 | 
						|
 | 
						|
namespace obrpc {
 | 
						|
class ObElectionRpcResult;
 | 
						|
class ObElectionRpcProxy;
 | 
						|
}  // namespace obrpc
 | 
						|
 | 
						|
namespace election {
 | 
						|
class ObIElection;
 | 
						|
class ObElectionMsgBuffer;
 | 
						|
class ObIElectionCallback;
 | 
						|
}  // namespace election
 | 
						|
 | 
						|
namespace election {
 | 
						|
 | 
						|
class MockObElectionMgr : public ObElectionMgr {
 | 
						|
public:
 | 
						|
  MockObElectionMgr()
 | 
						|
  {}
 | 
						|
  ~MockObElectionMgr()
 | 
						|
  {
 | 
						|
    destroy();
 | 
						|
  }
 | 
						|
  int init(const common::ObAddr& self, obrpc::ObElectionRpcProxy* rpc_proxy)
 | 
						|
  {
 | 
						|
    UNUSED(self);
 | 
						|
    UNUSED(rpc_proxy);
 | 
						|
    return OB_SUCCESS;
 | 
						|
  }
 | 
						|
  void destroy()
 | 
						|
  {}
 | 
						|
 | 
						|
  int start_partition(const common::ObPartitionKey& partition_key)
 | 
						|
  {
 | 
						|
    UNUSED(partition_key);
 | 
						|
    return OB_SUCCESS;
 | 
						|
  }
 | 
						|
  int start_partition(
 | 
						|
      const common::ObPartitionKey& partition_key, const common::ObAddr& leader, const int64_t& lease_start)
 | 
						|
  {
 | 
						|
    UNUSED(partition_key);
 | 
						|
    UNUSED(leader);
 | 
						|
    UNUSED(lease_start);
 | 
						|
    return OB_SUCCESS;
 | 
						|
  }
 | 
						|
  int stop_partition(const common::ObPartitionKey& partition_key)
 | 
						|
  {
 | 
						|
    UNUSED(partition_key);
 | 
						|
    return OB_SUCCESS;
 | 
						|
  }
 | 
						|
  int start()
 | 
						|
  {
 | 
						|
    return OB_SUCCESS;
 | 
						|
  }
 | 
						|
  int wait()
 | 
						|
  {
 | 
						|
    return OB_SUCCESS;
 | 
						|
  }
 | 
						|
  int stop()
 | 
						|
  {
 | 
						|
    return OB_SUCCESS;
 | 
						|
  }
 | 
						|
 | 
						|
public:
 | 
						|
  int add_partition(
 | 
						|
      const common::ObPartitionKey& partition_key, const int64_t replica_num, ObIElectionCallback* election_cb)
 | 
						|
  {
 | 
						|
    UNUSED(partition_key);
 | 
						|
    UNUSED(replica_num);
 | 
						|
    UNUSED(election_cb);
 | 
						|
    return OB_SUCCESS;
 | 
						|
  }
 | 
						|
  int remove_partition(const common::ObPartitionKey& partition_key)
 | 
						|
  {
 | 
						|
    UNUSED(partition_key);
 | 
						|
    return OB_SUCCESS;
 | 
						|
  }
 | 
						|
  int change_leader_async(const common::ObPartitionKey& partition_key, const common::ObAddr& leader)
 | 
						|
  {
 | 
						|
    UNUSED(partition_key);
 | 
						|
    UNUSED(leader);
 | 
						|
    return OB_SUCCESS;
 | 
						|
  }
 | 
						|
  int leader_revoke(const common::ObPartitionKey& partition)
 | 
						|
  {
 | 
						|
    UNUSED(partition);
 | 
						|
    return OB_SUCCESS;
 | 
						|
  }
 | 
						|
 | 
						|
public:
 | 
						|
  int handle_election_msg(const ObElectionMsgBuffer& msgbuf, obrpc::ObElectionRpcResult& result)
 | 
						|
  {
 | 
						|
    UNUSED(msgbuf);
 | 
						|
    UNUSED(result);
 | 
						|
    return OB_SUCCESS;
 | 
						|
  }
 | 
						|
 | 
						|
public:
 | 
						|
  int set_candidate(const common::ObPartitionKey& partition_key, const common::ObMemberList& prev_mlist,
 | 
						|
      const common::ObMemberList& curr_mlist)
 | 
						|
  {
 | 
						|
    UNUSED(partition_key);
 | 
						|
    UNUSED(prev_mlist);
 | 
						|
    UNUSED(curr_mlist);
 | 
						|
    return OB_SUCCESS;
 | 
						|
  }
 | 
						|
  int get_prev_candidate(const common::ObPartitionKey& partition_key, common::ObMemberList& mlist) const
 | 
						|
  {
 | 
						|
    UNUSED(partition_key);
 | 
						|
    UNUSED(mlist);
 | 
						|
    return OB_SUCCESS;
 | 
						|
  }
 | 
						|
  int get_curr_candidate(const common::ObPartitionKey& partition_key, common::ObMemberList& mlist) const
 | 
						|
  {
 | 
						|
    UNUSED(partition_key);
 | 
						|
    UNUSED(mlist);
 | 
						|
    return OB_SUCCESS;
 | 
						|
  }
 | 
						|
  int get_leader(const common::ObPartitionKey& partition_key, common::ObAddr& leader) const
 | 
						|
  {
 | 
						|
    UNUSED(partition_key);
 | 
						|
    UNUSED(leader);
 | 
						|
    return OB_SUCCESS;
 | 
						|
  }
 | 
						|
  int get_leader(const common::ObPartitionKey& partition_key, common::ObAddr& leader, int64_t& leader_epoch,
 | 
						|
      bool& is_changing_leader) const
 | 
						|
  {
 | 
						|
    UNUSED(partition_key);
 | 
						|
    UNUSED(leader);
 | 
						|
    UNUSED(leader_epoch);
 | 
						|
    UNUSED(is_changing_leader);
 | 
						|
    return OB_SUCCESS;
 | 
						|
  }
 | 
						|
 | 
						|
private:
 | 
						|
  ObIElection* get_election_(const common::ObPartitionKey& partition_key) const
 | 
						|
  {
 | 
						|
    UNUSED(partition_key);
 | 
						|
    return NULL;
 | 
						|
  }
 | 
						|
  int stop_()
 | 
						|
  {
 | 
						|
    return OB_SUCCESS;
 | 
						|
  }
 | 
						|
  int wait_()
 | 
						|
  {
 | 
						|
    return OB_SUCCESS;
 | 
						|
  }
 | 
						|
};
 | 
						|
}  // namespace election
 | 
						|
}  // namespace oceanbase
 | 
						|
 | 
						|
#endif  // OCEANBASE_UNITTEST_CLOG_MOCK_OB_ELECTION_MGR_H
 |