84 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			2.3 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.
 | |
|  */
 | |
| 
 | |
| #include <gtest/gtest.h>
 | |
| #include "election/ob_election_server.h"
 | |
| #include "election/ob_election_client.h"
 | |
| #include "election/ob_election_base.h"
 | |
| #include "election_test_env.h"
 | |
| #include "election_tester.h"
 | |
| 
 | |
| using namespace oceanbase;
 | |
| using namespace oceanbase::common;
 | |
| using namespace oceanbase::election;
 | |
| using namespace oceanbase::tests;
 | |
| using namespace oceanbase::tests::election;
 | |
| 
 | |
| #define TEST_CASE_NAME Test
 | |
| #define MAKE_STR(name) #name
 | |
| #define TEST_CASE_NAME_STR MAKE_STR(Test)
 | |
| 
 | |
| #define TEST_LOG "./test.log"
 | |
| 
 | |
| static const char* dev_name = "bond0";
 | |
| static const int timeout = 300000; /*us*/
 | |
| 
 | |
| class TEST_CASE_NAME : public ::testing::Test {
 | |
| public:
 | |
|   virtual void SetUp()
 | |
|   {}
 | |
|   virtual void TearDown()
 | |
|   {}
 | |
| 
 | |
|   int routine(int loop);
 | |
| 
 | |
| protected:
 | |
|   ObServer self_;
 | |
| };
 | |
| 
 | |
| TEST_F(TEST_CASE_NAME, test_election_interface)
 | |
| {
 | |
| 
 | |
|   ObElectionTesterCluster cluster;
 | |
|   ObElectionTester t1, t2, t3;
 | |
| 
 | |
|   t1.set_candidate().add_to(cluster);
 | |
|   t2.set_candidate().add_to(cluster);
 | |
|   t3.set_candidate().add_to(cluster);
 | |
| 
 | |
|   cluster.init(dev_name).start();
 | |
|   msleep(2 * T_CYCLE + T_ELECT2);
 | |
| 
 | |
|   printf("%p\n", cluster.get_one_slave());
 | |
|   printf("%p\n", cluster.get_one_slave());
 | |
|   printf("%p\n", cluster.get_one_slave());
 | |
|   printf("%p\n", cluster.get_one_slave());
 | |
|   printf("%p\n", cluster.get_one_slave());
 | |
|   printf("%p\n", cluster.get_one_slave());
 | |
|   printf("%p\n", cluster.get_one_slave());
 | |
|   printf("%p\n", cluster.get_one_slave());
 | |
| }
 | |
| 
 | |
| int main(int argc, char** argv)
 | |
| {
 | |
|   oceanbase::tests::election::ElectionTestEnv env;
 | |
|   env.init(TEST_CASE_NAME_STR);
 | |
|   // init async log
 | |
|   ASYNC_LOG_INIT(TEST_LOG, INFO, true);
 | |
|   // ASYNC_LOG_SET_LEVEL(INFO);
 | |
|   // close TBSYS_LOG
 | |
|   TBSYS_LOGGER.setFileName("test_log.log", true, false);
 | |
| 
 | |
|   testing::InitGoogleTest(&argc, argv);
 | |
|   return RUN_ALL_TESTS();
 | |
| }
 | 
