[scn] fix failure of mittest after refresh feature scn

This commit is contained in:
obdev
2022-11-28 01:46:42 +00:00
committed by ob-robot
parent 49a02f3304
commit 54b64a7263
1898 changed files with 255804 additions and 280809 deletions

View File

@ -1,5 +1,7 @@
#ob_unittest(test_unit_getter)
storage_unittest(test_scanner)
storage_unittest(test_encryption_util)
storage_unittest(test_master_key_getter)
#ob_unittest(test_kms_client)
#ob_unittest(test_zone_info)
#ob_unittest(test_zone_merge_info)
@ -44,6 +46,7 @@ storage_unittest(test_dag_net_in_dag_scheduler scheduler/test_dag_net_in_dag_sch
#ob_unittest(test_dag_scheduler scheduler/test_dag_scheduler.cpp)
storage_unittest(test_ob_function)
storage_unittest(test_ob_guard)
#ob_unittest(test_storage_cos_adapter)
storage_unittest(test_storage_device_manager)
#ob_unittest(test_storage_oss_adapter)
storage_unittest(test_tenant_resource)
@ -56,7 +59,6 @@ ob_unittest(test_qsync_lock lock/test_qsync_lock.cpp)
ob_unittest(test_ob_occam_time_guard)
ob_unittest(test_cluster_version)
add_subdirectory(allocator)
add_subdirectory(auto_increment)
add_subdirectory(cache)
add_subdirectory(client_feedback)

View File

@ -1 +0,0 @@
storage_unittest(test_reserve_arena_allocator)

View File

@ -1,154 +0,0 @@
/**
* Copyright (c) 2022 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>
#define protected public
#define private public
#include "share/allocator/ob_reserve_arena.h"
#include "share/rc/ob_tenant_base.h"
#define OK(ass) ASSERT_EQ(OB_SUCCESS, (ass))
namespace oceanbase
{
using namespace oceanbase::common;
using namespace oceanbase::share;
using namespace std;
namespace unittest
{
class TestReserveArenaAllocator : public::testing::Test
{
public:
typedef ObReserveArenaAllocator<1024> ObStorageReserveAllocator;
TestReserveArenaAllocator();
virtual ~TestReserveArenaAllocator();
ObReserveArenaAllocator<1024> test_allocator_;
};
TestReserveArenaAllocator::TestReserveArenaAllocator():
test_allocator_(ObModIds::OB_STORE_ROW_EXISTER, OB_MALLOC_NORMAL_BLOCK_SIZE, 500)
{
}
TestReserveArenaAllocator::~TestReserveArenaAllocator()
{
}
TEST_F(TestReserveArenaAllocator, test_reset)
{
// test reset
// alloc buf
int64_t sz = 256;
void* p;
for (int64_t i = 0; i < 3; ++i) {
p = test_allocator_.alloc(sz);
}
ASSERT_EQ(test_allocator_.used(), 768);
ASSERT_EQ(test_allocator_.total(), 768);
ASSERT_EQ(test_allocator_.pos_, 768);
test_allocator_.reset();
ASSERT_EQ(test_allocator_.used(), 0);
ASSERT_EQ(test_allocator_.total(), 0);
ASSERT_EQ(test_allocator_.pos_, 0);
// alloc new page 1k < size < 8k
sz = 2048;
p = test_allocator_.alloc(sz);
STORAGE_LOG(INFO, "alloc 2K", K(test_allocator_.allocator_));
ASSERT_NE(p, nullptr);
ASSERT_EQ(test_allocator_.pos_, 0);
ASSERT_GE(test_allocator_.used(), sz);
ASSERT_GE(test_allocator_.total(), sz);
test_allocator_.reset();
ASSERT_EQ(test_allocator_.pos_, 0);
ASSERT_EQ(test_allocator_.used(), 0);
ASSERT_EQ(test_allocator_.total(), 0);
// alloc new page size > 8k
sz = 10240;
p = test_allocator_.alloc(sz);
STORAGE_LOG(INFO, "alloc 10K", K(test_allocator_.allocator_));
ASSERT_NE(p, nullptr);
ASSERT_EQ(test_allocator_.pos_, 0);
ASSERT_GE(test_allocator_.used(), sz);
ASSERT_GE(test_allocator_.total(), sz);
test_allocator_.reset();
ASSERT_EQ(test_allocator_.pos_, 0);
ASSERT_EQ(test_allocator_.used(), 0);
ASSERT_EQ(test_allocator_.total(), 0);
}
TEST_F(TestReserveArenaAllocator, test_reuse)
{
// test reuse
// alloc buf
int64_t sz = 256;
void* p;
for (int64_t i = 0; i < 3; ++i) {
p = test_allocator_.alloc(sz);
}
ASSERT_EQ(test_allocator_.used(), 768);
ASSERT_EQ(test_allocator_.total(), 768);
ASSERT_EQ(test_allocator_.pos_, 768);
test_allocator_.reuse();
STORAGE_LOG(INFO, "after reuse", K(test_allocator_.allocator_));
ASSERT_EQ(test_allocator_.pos_, 0);
// alloc new page 1k < size < 8k
sz = 2048;
p = test_allocator_.alloc(sz);
STORAGE_LOG(INFO, "alloc 2K", K(test_allocator_.allocator_));
ASSERT_NE(p, nullptr);
ASSERT_EQ(test_allocator_.pos_, 0);
ASSERT_GE(test_allocator_.used(), sz);
ASSERT_GE(test_allocator_.total(), sz);
int allocate_total = test_allocator_.total();
test_allocator_.reuse();
STORAGE_LOG(INFO, "after reuse 2K", K(test_allocator_.allocator_));
ASSERT_EQ(test_allocator_.pos_, 0);
ASSERT_EQ(test_allocator_.used(), 0);
ASSERT_LE(test_allocator_.total(), allocate_total);
// alloc new page size > 8k
sz = 10240;
p = test_allocator_.alloc(sz);
STORAGE_LOG(INFO, "alloc 10K", K(test_allocator_.allocator_));
ASSERT_NE(p, nullptr);
ASSERT_EQ(test_allocator_.pos_, 0);
ASSERT_GE(test_allocator_.used(), sz);
ASSERT_GE(test_allocator_.total(), sz);
allocate_total = test_allocator_.total();
test_allocator_.reuse();
STORAGE_LOG(INFO, "after reuse 10K", K(test_allocator_.allocator_));
ASSERT_EQ(test_allocator_.pos_, 0);
ASSERT_EQ(test_allocator_.used(), 0);
ASSERT_LT(test_allocator_.total(), allocate_total);
}
}//end namespace unittest
}//end namespace oceanbase
int main(int argc, char **argv)
{
system("rm -f test_reserve_arena_allocator.log*");
oceanbase::common::ObLogger::get_logger().set_log_level("DEBUG");
OB_LOGGER.set_file_name("test_reserve_arena_allocator.log", true);
srand(time(NULL));
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}

View File

@ -76,7 +76,7 @@ TEST(ObBackupDest, nfs)
TEST(ObBackupDest, oss)
{
const char *backup_test = "oss://backup_dir/?host=xxx.com&access_id=111&access_key=222&delete_mode=tagging";
const char *backup_test = "oss://backup_dir/?host=http://oss-cn-hangzhou-zmf.aliyuncs.com&access_id=111&access_key=222&delete_mode=tagging";
ObBackupDest dest;
ObBackupDest dest1;
char backup_dest_str[OB_MAX_BACKUP_DEST_LENGTH] = { 0 };
@ -88,9 +88,9 @@ TEST(ObBackupDest, oss)
ASSERT_TRUE(dest.storage_info_->device_type_ == 0);
ASSERT_EQ(OB_SUCCESS, dest.get_backup_dest_str(backup_dest_str, sizeof(backup_dest_str)));
ASSERT_EQ(0, strcmp(backup_dest_str, "oss://backup_dir?host=xxx.com&access_id=111&encrypt_key=9B6FDE7E1E54CD292CDE5494CEB86B6F&delete_mode=tagging"));
ASSERT_EQ(0, strcmp(backup_dest_str, "oss://backup_dir?host=http://oss-cn-hangzhou-zmf.aliyuncs.com&access_id=111&encrypt_key=9B6FDE7E1E54CD292CDE5494CEB86B6F&delete_mode=tagging"));
ASSERT_EQ(OB_SUCCESS, dest.get_backup_path_str(backup_path_str, sizeof(backup_path_str)));
ASSERT_EQ(0, strcmp(backup_path_str, "oss://backup_dir?host=xxx.com"));
ASSERT_EQ(0, strcmp(backup_path_str, "oss://backup_dir?host=http://oss-cn-hangzhou-zmf.aliyuncs.com"));
ASSERT_TRUE(dest.is_root_path_equal(dest1));
bool is_equal = false;
ASSERT_EQ(OB_SUCCESS, dest.is_backup_path_equal(dest1, is_equal));
@ -103,14 +103,14 @@ TEST(ObBackupDest, oss)
TEST(ObBackupDest, oss_encrypt)
{
const char *backup_test = "oss://backup_dir?host=xxx.com&access_id=111&encrypt_key=9B6FDE7E1E54CD292CDE5494CEB86B6F";
const char *backup_test = "oss://backup_dir?host=http://oss-cn-hangzhou-zmf.aliyuncs.com&access_id=111&encrypt_key=9B6FDE7E1E54CD292CDE5494CEB86B6F";
ObBackupDest dest;
ASSERT_EQ(OB_SUCCESS, dest.set(backup_test));
LOG_INFO("dump backup dest", K(dest.get_root_path()), K(*(dest.get_storage_info())));
ASSERT_EQ(0, strcmp(dest.root_path_, "oss://backup_dir"));
ASSERT_TRUE(dest.storage_info_->device_type_ == 0);
const char *path = "oss://backup_dir/";
const char *endpoint = "host=xxx.com";
const char *endpoint = "host=http://oss-cn-hangzhou-zmf.aliyuncs.com";
const char *authorization = "access_id=111&encrypt_key=9B6FDE7E1E54CD292CDE5494CEB86B6F";
const char *extension = "";
ObBackupDest dest1;
@ -120,15 +120,43 @@ TEST(ObBackupDest, oss_encrypt)
char backup_dest_str[OB_MAX_BACKUP_DEST_LENGTH] = { 0 };
char backup_path_str[OB_MAX_BACKUP_DEST_LENGTH] = { 0 };
ASSERT_EQ(OB_SUCCESS, dest.get_backup_dest_str(backup_dest_str, sizeof(backup_dest_str)));
ASSERT_EQ(0, strcmp(backup_dest_str, "oss://backup_dir?host=xxx.com&access_id=111&encrypt_key=9B6FDE7E1E54CD292CDE5494CEB86B6F"));
ASSERT_EQ(0, strcmp(backup_dest_str, "oss://backup_dir?host=http://oss-cn-hangzhou-zmf.aliyuncs.com&access_id=111&encrypt_key=9B6FDE7E1E54CD292CDE5494CEB86B6F"));
ASSERT_EQ(OB_SUCCESS, dest.get_backup_path_str(backup_path_str, sizeof(backup_path_str)));
ASSERT_EQ(0, strcmp(backup_path_str, "oss://backup_dir?host=xxx.com"));
ASSERT_EQ(0, strcmp(backup_path_str, "oss://backup_dir?host=http://oss-cn-hangzhou-zmf.aliyuncs.com"));
dest1.reset();
ASSERT_EQ(OB_SUCCESS, dest1.set(path, endpoint, authorization, extension));
ASSERT_TRUE(dest == dest1);
}
TEST(ObBackupDest, cos_encrypt)
{
const char *backup_test = "cos://backup_dir/?host=http://oss-cn-hangzhou-zmf.aliyuncs.com&access_id=111&encrypt_key=9B6FDE7E1E54CD292CDE5494CEB86B6F&appid=333";
ObBackupDest dest;
ASSERT_EQ(OB_SUCCESS, dest.set(backup_test));
ASSERT_EQ(0, strcmp(dest.root_path_, "cos://backup_dir"));
ASSERT_TRUE(dest.storage_info_->device_type_ == 2);
const char *path = "cos://backup_dir/";
const char *endpoint = "host=http://oss-cn-hangzhou-zmf.aliyuncs.com";
const char *authorization = "access_id=111&encrypt_key=9B6FDE7E1E54CD292CDE5494CEB86B6F";
const char *extension = "appid=333";
ObBackupDest dest1;
ASSERT_EQ(OB_SUCCESS, dest1.set(path, endpoint, authorization, extension));
ASSERT_TRUE(dest == dest1);
char backup_dest_str[OB_MAX_BACKUP_DEST_LENGTH] = { 0 };
char backup_path_str[OB_MAX_BACKUP_DEST_LENGTH] = { 0 };
ASSERT_EQ(OB_SUCCESS, dest.get_backup_dest_str(backup_dest_str, sizeof(backup_dest_str)));
ASSERT_EQ(0, strcmp(backup_dest_str, "cos://backup_dir?host=http://oss-cn-hangzhou-zmf.aliyuncs.com&access_id=111&encrypt_key=9B6FDE7E1E54CD292CDE5494CEB86B6F&appid=333"));
ASSERT_EQ(OB_SUCCESS, dest.get_backup_path_str(backup_path_str, sizeof(backup_path_str)));
ASSERT_EQ(0, strcmp(backup_path_str, "cos://backup_dir?host=http://oss-cn-hangzhou-zmf.aliyuncs.com"));
ASSERT_EQ(OB_SUCCESS, dest1.get_backup_dest_str(backup_dest_str, sizeof(backup_dest_str)));
ASSERT_EQ(0, strcmp(backup_dest_str, "cos://backup_dir?host=http://oss-cn-hangzhou-zmf.aliyuncs.com&access_id=111&encrypt_key=9B6FDE7E1E54CD292CDE5494CEB86B6F&appid=333"));
ASSERT_EQ(OB_SUCCESS, dest1.get_backup_path_str(backup_path_str, sizeof(backup_path_str)));
ASSERT_EQ(0, strcmp(backup_path_str, "cos://backup_dir?host=http://oss-cn-hangzhou-zmf.aliyuncs.com"));
}
int main(int argc, char **argv)
{
OB_LOGGER.set_log_level("INFO");

View File

@ -1,2 +1,3 @@
storage_unittest(test_deadlock)
storage_unittest(test_key_wrapper)
storage_unittest(test_deadlock_utility)

View File

@ -0,0 +1,50 @@
-----BEGIN CERTIFICATE-----
MIIDqTCCApECAgDMMA0GCSqGSIb3DQEBCwUAMIGYMQswCQYDVQQGEwJDTjEQMA4G
A1UECAwHQmVpamluZzEQMA4GA1UEBwwHQmVpamluZzEWMBQGA1UECgwNQ2lwaGVy
R2F0ZXdheTEUMBIGA1UECwwLRGV2ZWxvcG1lbnQxEjAQBgNVBAMMCUNBU0JNVU5F
VzEjMCEGCSqGSIb3DQEJARYUZ3lAY2lwaGVyZ2F0ZXdheS5jb20wIBcNMjEwODIy
MDMwMTU2WhgPMjEyMTA3MjkwMzAxNTZaMIGYMQswCQYDVQQGEwJDTjEQMA4GA1UE
CAwHQmVpamluZzEWMBQGA1UECgwNQ2lwaGVyR2F0ZXdheTEUMBIGA1UECwwLRGV2
ZWxvcG1lbnQxEDAOBgNVBAcMB0JlaWppbmcxEjAQBgNVBAMMCUNBU0JNVU5FVzEj
MCEGCSqGSIb3DQEJARYUZ3lAY2lwaGVyZ2F0ZXdheS5jb20wggEiMA0GCSqGSIb3
DQEBAQUAA4IBDwAwggEKAoIBAQC4dR5v+LyNYFo8fb4v0Wz1bZEmbWLmAjbqfPqk
VZLT7cmARpc5O92OHNsNQkMSagvxoDRgddPFH9H2XQ4jOf4n0WMZ8hm9zlS/yP8D
cRNyWqhVE1G1dfGl4TbxbbEC9dDmv7+ZZsq9GLmS8+59eOEm08b4ZfMLTwYRYgr4
SUimtbb1UajWKhBMCxXl3+xgnoNgFnX8LiIVoCEoUncyng3bfBK93vxZNCkzA1OO
ubG8vV+evnOhqDxjKRpOMArrYCFcWYvq+kj16qI4vYUxJ63rMP2LE13ZRhlFnEoF
HSYu0GVL/z02luAHwZKCv7g8UaCVHdzP6Xm70eTnXmVhSPjvAgMBAAEwDQYJKoZI
hvcNAQELBQADggEBADqK2F1OLMawmFrWy/3IUaT6lPj+o8faHpLrQc5aC+xNzArv
KBUnj4BBUIFuPlicJtmTSZtn0yM/HVcTqfOnYzIv2ATI8/RWTwLjCfZLviWiQcu0
EZECjVIecZuAT5O5JBdIrk7BEqaARazeY+X9S5e9oe99x4DmAOqWfMb79FCznJAi
snEDuf5eftvZOCsnZdjWlq5Z/fruSr5JIyPX0wi4T2ktjkPWNeXWI8R2Gzum/hLM
L0NXnDrbdvGxFAK15H8FDR2665GFfSLJ63R7ahb8KDzrd1fUPcP+Sqqd/PyQTVdn
BzOIEpU0wTVhr7fcxs8H0mYzJuVZ++Cov3jGNNc=
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC4dR5v+LyNYFo8
fb4v0Wz1bZEmbWLmAjbqfPqkVZLT7cmARpc5O92OHNsNQkMSagvxoDRgddPFH9H2
XQ4jOf4n0WMZ8hm9zlS/yP8DcRNyWqhVE1G1dfGl4TbxbbEC9dDmv7+ZZsq9GLmS
8+59eOEm08b4ZfMLTwYRYgr4SUimtbb1UajWKhBMCxXl3+xgnoNgFnX8LiIVoCEo
Uncyng3bfBK93vxZNCkzA1OOubG8vV+evnOhqDxjKRpOMArrYCFcWYvq+kj16qI4
vYUxJ63rMP2LE13ZRhlFnEoFHSYu0GVL/z02luAHwZKCv7g8UaCVHdzP6Xm70eTn
XmVhSPjvAgMBAAECggEAVbyqfyVAjv4gM0nHIvbXDGT3OMNTWtHgsLGS1tunubYn
GOa217WJz8p9zvXjsyVzk8YBUmyyGEgoEblDHwCPr/ZVd/PeHylOny5Pyku+3EJj
R9gI/K1rusyp+yIfSt7zUK4D4suypJ5fc3zKd6u+C4wYSdEpXTJIAcBulOWLTWET
FbIYhIOPdceMpUUL7YatUMkZ+Qea48kBwb9CvVeAmfYwQ8XSbcQtom67goJquvG6
rTzjTStA+2b0jVGf016QiNRl2cuh55mDbroUDtVu5pLHzRKgNndZ3tPk5uIgtrVW
1pxzxdb6G+J2Rk6XNvBKScD33A5T48pYEJVIcubfYQKBgQDh48eWYepGUjRZjLNT
fRs6q5OGvqNxSroEiOhotSSWhPfG00kv6QPaeUu38LRE7t2vbtNpMWaJasla3dJo
0jppMkUnwwH/WbJZQ3WSkkFutuCECwsMwxiW5WNVNlAIMrrsH4lQ+334GnAOYRdl
p9C6nAnmjESayY4NhDJytcZxZwKBgQDRC4Mg7/RBO6ZXqZ56G9j647ABulfqMkjg
4aDpyyiA2w6BYeLpRGHlSOq0Q4/k72J9a17+UdAgmiZdxC9VtxIFfEdls2l1CANq
a6VXnHu86PexSVpg6RG5HhGg1FKGM/guXMoCVKfbYZLHkydK/KYiWKdNeLAdo3fL
qh98EoffOQKBgQCleaA3CMl+9C9HPmwLiAVPaGss9TB0CMLWGZjvQ2tnHEcKjrL5
duAMxnhyadEVAkrBfhU+5SJxHhodB4xgn0iM0XeZliA7d/DPtTxGv/9Q5IT6FcDl
e3Hi8G1g+eWM6+TEnqGQAnuYKX3W+scR/+pHGZGjIzQKlAYM3r+6CnExlwKBgEWV
dm2lUgHQ0DsH7Aerc1t4JOM+WvtLB7VLhZutE2to/3gT1EtfhtKipfWhM6m6AWfM
MM+o/gWMKk81+aeni6klyEJTKTxakYCAGoaCQTINvj1WNG5jxpF/L9EAPAQOEoOk
QV3rPgCphwlFs2Ojm819Axunm8AR5NN3aomLRY0JAoGBAKhD1G6xsnmQyTGQfbCN
zzXdb5VhK69LmjK9SgfWbY6g6wLJgceQhwjy6sMPBvppJMXKi0F849B2lZscoaqu
+NmVRbdbD+vSREfvvN0TIr2Gm7dw9n+efEDlyVUGM4DYYee/qM+5bA0AIQkCMJVw
U48l+8AlqzXL7c7f8Ol9gVFu
-----END PRIVATE KEY-----

View File

@ -0,0 +1,41 @@
# -*- coding: utf-8 -*-
import BaseHTTPServer
from SimpleHTTPServer import SimpleHTTPRequestHandler
import os
import socket
import ssl
import json
import random
script_home = os.path.dirname(os.path.abspath(__file__))
ip = "127.0.0.1"
port = 8888
response_data = """{
"token": "ob_test1",
"key": "5D6A57468605ADB17C065B3423E7112D",
"hash": "E185FFAD6642A467BF8E4311086E80A9B9F6B55D6BF2FE6A13F935E0479FC558",
"keyversion": "1",
"success": true,
"msg": ""
}
"""
class MyHandler(SimpleHTTPRequestHandler):
def do_POST(self):
self.data_string = self.rfile.read(int(self.headers['Content-Length']))
self.end_headers()
print self.data_string
self.wfile.write(response_data)
return
def main():
print ("simple https server, address:%s:%d" % (ip, port))
httpd = BaseHTTPServer.HTTPServer(('127.0.0.1', port), MyHandler)
httpd.socket = ssl.wrap_socket(httpd.socket, certfile='./mock_kms.pem', server_side=True)
httpd.serve_forever()
if __name__ == '__main__':
main()

View File

@ -595,7 +595,7 @@ TEST_F(TestLogFileStore, errsim_disk_full)
// make write return disk full
#ifdef ERRSIM
// OB_SERVER_OUTOF_DISK_SPACE is not defined in lib/ob_errno.h, use OB_RESOURCE_OUT to represent
// OB_CS_OUTOF_DISK_SPACE is not defined in lib/ob_errno.h, use OB_RESOURCE_OUT to represent
TP_SET_EVENT(EventTable::EN_IO_GETEVENTS, OB_RESOURCE_OUT, 0, 1);
usleep(100 * 1000);
#endif
@ -611,7 +611,7 @@ TEST_F(TestLogFileStore, errsim_disk_full)
ret = file_store.write((void *) buf, count, 0);
#ifdef ERRSIM
ASSERT_EQ(OB_SERVER_OUTOF_DISK_SPACE, ret);
ASSERT_EQ(OB_CS_OUTOF_DISK_SPACE, ret);
#else
ASSERT_EQ(OB_SUCCESS, ret);
#endif

View File

@ -1428,7 +1428,6 @@ TEST_F(TestDagScheduler, test_free_dag_func)
class ObCancelDag : public ObBasicDag
{
public:
ObCancelDag() : can_schedule_(false) {}
virtual int create_first_task() override
{
int ret = OB_SUCCESS;
@ -1442,10 +1441,8 @@ public:
}
virtual bool check_can_schedule() override
{
return can_schedule_;
return false;
}
bool can_schedule_;
};
class ObCancelDagNet: public ObFatherDagNet
@ -1503,37 +1500,6 @@ TEST_F(TestDagScheduler, test_cancel_dag_func)
EXPECT_EQ(0, ObDagWarningHistoryManager::get_instance().size());
}
TEST_F(TestDagScheduler, test_cancel_dag_net_func)
{
int ret = OB_SUCCESS;
ObTenantDagScheduler *scheduler = MTL(ObTenantDagScheduler*);
ASSERT_TRUE(nullptr != scheduler);
ObCancelDagNet *dag_net = nullptr;
EXPECT_EQ(OB_SUCCESS, scheduler->create_and_add_dag_net(nullptr, dag_net));
while (scheduler->get_cur_dag_cnt() < 3) {
usleep(100);
}
ObArray<ObIDag *> dag_array;
dag_net->get_dag_list(dag_array);
ret = scheduler->cancel_dag_net(dag_net->get_dag_id());
for (int i = 0; i < dag_array.count(); ++i) {
ObCancelDag *dag = static_cast<ObCancelDag *>(dag_array[i]);
dag->can_schedule_ = true;
}
EXPECT_EQ(OB_SUCCESS, ret);
ob_usleep(5000 * 1000);
EXPECT_EQ(true, scheduler->is_empty());
EXPECT_EQ(0, ObDagWarningHistoryManager::get_instance().size());
}
}
}

View File

@ -197,7 +197,7 @@ TEST(TestEncryptionUtil, encrypt_master_key)
// ObServerConfig &config = ObServerConfig::get_instance();
// ASSERT_EQ(OB_SUCCESS, config.init(sys_config));
// ws.init(config);
// config.obconfig_url.set_value("");
// config.obconfig_url.set_value("http://api.test.ocp.oceanbase.alibaba.net/services?Action=ObRootServiceInfo&User_ID=ocptest&UID=rongwei.drw&ObRegion=xr.admin");
// config.cluster_id.set_value("1");
// config.cluster.set_value("xr.admin");
// ObArray<ObRootAddr> rs_list;

View File

@ -134,7 +134,7 @@ public:
DEF_INT_LIST(test_int_list_2, "1;2;3", "test list");
DEF_STR_LIST(test_str_list, "str1;str2;str3", "test list");
DEF_STR_LIST(test_str_list_2, "str1;str2;str3", "test list");
DEF_STR(url, "test url", "test url");
DEF_STR(url, "http://a.cc/?name=fufeng&pass=fufeng_pass", "test url");
DEF_DBL(dbl1, "1.234", "some info");
DEF_DBL(dbl2, "1.234", "[1.234,5.321]", "some info");
@ -374,7 +374,7 @@ TEST_F(TestServerConfig, ALL)
test_str_list = "123x";
EXPECT_TRUE(test_int_list.valid());
EXPECT_STREQ("test url", url.str());
EXPECT_STREQ("http://a.cc/?name=fufeng&pass=fufeng_pass", url.str());
EXPECT_EQ(1.234, dbl1);
EXPECT_EQ(1.234, dbl2);

View File

@ -0,0 +1,204 @@
/**
* 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 <gtest/gtest.h>
#include "lib/restore/oss/include/oss_c_sdk/aos_http_io.h"
#include "lib/restore/oss/include/oss_c_sdk/aos_define.h"
#include "vsclient.h"
#include "lib/utility/ob_test_util.h"
#include "share/restore/ob_restore_uri_parser.h"
#include "share/restore/ob_restore_base_reader.h"
#include "lib/restore/ob_storage.h"
#include "share/restore/ob_oss_resource_reader.h"
using namespace oceanbase::common;
using namespace oceanbase::share;
using namespace oceanbase::share::restore;
class TestRestoreReader: public ::testing::Test
{
public:
TestRestoreReader();
virtual ~TestRestoreReader();
virtual void SetUp();
virtual void TearDown();
private:
// disallow copy
DISALLOW_COPY_AND_ASSIGN(TestRestoreReader);
protected:
// function members
protected:
// data members
};
TestRestoreReader::TestRestoreReader()
{
int ret = OB_SUCCESS;
int aos_ret = AOSE_OK;
if(AOSE_OK != (aos_ret = aos_http_io_initialize(NULL, 0))) {
OB_LOG(WARN, "fail to init aos", K(aos_ret));
}
VIPSrv_Result *result = NULL;
VIPSrv_Config config;
config.jmenv_dom = "jmenv.tbsite.net";
config.cache_dir = getenv("HOME");
if(NULL == (result = vipsrv_global_init(&config))) {
ret = OB_OSS_ERROR;
OB_LOG(WARN, "fail to init vipserver", K(ret));
} else if(!result->is_success) {
ret = OB_OSS_ERROR;
OB_LOG(WARN, "fail to init vipserver", K(ret));
}
if(NULL != result) {
vipsrv_result_deref(result);
}
}
TestRestoreReader::~TestRestoreReader()
{
vipsrv_global_cleanup();
aos_http_io_deinitialize();
}
void TestRestoreReader::SetUp()
{
const int64_t MAX_BUF_SIZE = 2048;
char write_buf[MAX_BUF_SIZE];
char uri[OB_MAX_URI_LENGTH];
int n = 0;
ObBackupIoAdapter util;
const char *storage_info = "host=oss-cn-hangzhou-zmf.aliyuncs.com&access_id=LTAIwCjHu9OYhWyx&access_key=RHyQfn2TnnOyY9wsedthx1nx9EVkH3";
//resource unit
n = snprintf(write_buf, MAX_BUF_SIZE, "CREATE RESOURCE UNIT small_unit MAX_CPU 18.000000, MEMORY_SIZE 21474836480;");
snprintf(uri, OB_MAX_URI_LENGTH, "oss://071092/unittest/127/1001/resource_unit_definition");
EXPECT_EQ(OB_SUCCESS, util.write_single_file(uri, storage_info, write_buf, n));
//resource pool
n = snprintf(write_buf, MAX_BUF_SIZE, "CREATE RESOURCE POOL pool1 UNIT small_unit, UNIT_NUM 1, ZONE_LIST ('zone1');");
snprintf(uri, OB_MAX_URI_LENGTH, "oss://071092/unittest/127/1001/resource_pool_definition");
EXPECT_EQ(OB_SUCCESS, util.write_single_file(uri, storage_info, write_buf, n));
//create tenant
n = snprintf(write_buf, MAX_BUF_SIZE, "CREATE TENANT tt1 charset=utf8mb4, replica_num=5, zone_list('zone1'), primary_zone='zone1', "
"locality='FULL{1}@zone1', resource_pool_list('pool1');");
snprintf(uri, OB_MAX_URI_LENGTH, "oss://071092/unittest/127/1001/create_tenant_definition");
EXPECT_EQ(OB_SUCCESS, util.write_single_file(uri, storage_info, write_buf, n));
//create database
n = snprintf(write_buf, MAX_BUF_SIZE, "CREATE DATABASE IF NOT EXISTS `obtrade` DEFAULT CHARACTER SET = utf8mb4 REPLICA_NUM = 5;");
snprintf(uri, OB_MAX_URI_LENGTH, "oss://071092/unittest/127/1001/create_database_definition");
EXPECT_EQ(OB_SUCCESS, util.write_single_file(uri, storage_info, write_buf, n));
//system variable
n = snprintf(write_buf, MAX_BUF_SIZE, "set global wait_timeout = 28800;");
snprintf(uri, OB_MAX_URI_LENGTH, "oss://071092/unittest/127/1001/system_variable_definition");
EXPECT_EQ(OB_SUCCESS, util.write_single_file(uri, storage_info, write_buf, n));
//create_user_definition
n = snprintf(write_buf, MAX_BUF_SIZE, "create user monitor IDENTIFIED BY PASSWORD '*1975d095ac033caf4e1bf94f7202a9bbfeeb66f1';");
snprintf(uri, OB_MAX_URI_LENGTH, "oss://071092/unittest/127/1001/create_user_definition");
EXPECT_EQ(OB_SUCCESS, util.write_single_file(uri, storage_info, write_buf, n));
//user_privilege_definition
n = snprintf(write_buf, MAX_BUF_SIZE, "GRANT ALL PRIVILEGES ON *.* TO 'admin' WITH GRANT OPTION;");
snprintf(uri, OB_MAX_URI_LENGTH, "oss://071092/unittest/127/1001/user_privilege_definition");
EXPECT_EQ(OB_SUCCESS, util.write_single_file(uri, storage_info, write_buf, n));
//crate table
n = snprintf(write_buf, MAX_BUF_SIZE, " CREATE TABLE obtrade.business_activity_000 ("
"`TX_ID` varchar(256) NOT NULL id 16,"
"`STATE` varchar(2) NOT NULL id 17,"
"`ACCOUNT_TRANS_STATE` varchar(2) NOT NULL id 18,"
"`GMT_CREATE` datetime NOT NULL id 19,"
"`GMT_MODIFIED` datetime NOT NULL id 20,"
"`PROPAGATION` varchar(2) DEFAULT NULL id 21,"
"`CONTEXT` varchar(4096) DEFAULT NULL id 22,"
"PRIMARY KEY (`TX_ID`),"
"KEY `BUSINESS_ACTIVITY_GMT_IND` (`GMT_MODIFIED`) STORING (`STATE`) BLOCK_SIZE 16384 index_table_id = 1101710651081555"
") DEFAULT CHARSET = utf8mb4 COMPRESSION = 'lz4_1.0' REPLICA_NUM = 5 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE "
" TABLEGROUP = 'obtrade_tablegroup' table_id = 1101710651081554 ;");
snprintf(uri, OB_MAX_URI_LENGTH, "oss://071092/unittest/127/1001/435656765867/ob_trade_definition");
EXPECT_EQ(OB_SUCCESS, util.write_single_file(uri, storage_info, write_buf, n));
//create_tablegroup_definition
n = snprintf(write_buf, MAX_BUF_SIZE, "CREATE TABLEGROUP tg1;");
snprintf(uri, OB_MAX_URI_LENGTH, "oss://071092/unittest/127/1001/create_tablegroup_definition");
EXPECT_EQ(OB_SUCCESS, util.write_single_file(uri, storage_info, write_buf, n));
//backup_info
n = snprintf(write_buf, MAX_BUF_SIZE, "0_127_1496650316422256_0");
snprintf(uri, OB_MAX_URI_LENGTH, "oss://071092/unittest/tenant_id/1001/backup_info");
EXPECT_EQ(OB_SUCCESS, util.write_single_file(uri, storage_info, write_buf, n));
//data_table_ids
n = snprintf(write_buf, MAX_BUF_SIZE, "435656765867:ob_trade");
snprintf(uri, OB_MAX_URI_LENGTH, "oss://071092/unittest/127/1001/data_table_ids_list");
EXPECT_EQ(OB_SUCCESS, util.write_single_file(uri, storage_info, write_buf, n));
//create index
n = snprintf(write_buf, MAX_BUF_SIZE, "CREATE UNIQUE INDEX __idx_1099511677787_haipeng_unique_index on oceanbase.haipeng ("
"`c1` int(11) NOT NULL id 16,"
"`c2` int(11) DEFAULT NULL id 17,"
"`c3` int(11) DEFAULT NULL id 18"
") BLOCK_SIZE 16384 index_table_id = 1099511677791 data_table_id = 1099511677787 STORING (`c2`);");
snprintf(uri, OB_MAX_URI_LENGTH, "oss://071092/unittest/127/1001/435656765867/__idx_1099511677787_haipeng_unique_index_definition");
EXPECT_EQ(OB_SUCCESS, util.write_single_file(uri, storage_info, write_buf, n));
//index_table_ids
n = snprintf(write_buf, MAX_BUF_SIZE, "435656765867:1099511677787:__idx_1099511677787_haipeng_unique_index");
snprintf(uri, OB_MAX_URI_LENGTH, "oss://071092/unittest/127/1001/index_table_ids_list");
EXPECT_EQ(OB_SUCCESS, util.write_single_file(uri, storage_info, write_buf, n));
}
void TestRestoreReader::TearDown()
{
}
TEST_F(TestRestoreReader, test_basic)
{
// The following only applies to offline testing. Regression testing on farm will always report errors and there is no runtime environment.
ObRestoreArgs arg;
const char *uri_001 = "oss://071092/unittest/1001?timestamp=1496650316422256&host=oss-cn-hangzhou-zmf.aliyuncs.com&access_id=LTAIwCjHu9OYhWyx&access_key=RHyQfn2TnnOyY9wsedthx1nx9EVkH3&restore_user=a&restore_pass=b";
EXPECT_EQ(OB_SUCCESS, ObRestoreURIParser::parse(ObString(uri_001), arg));
LOG_INFO("arg info", K(arg));
ObRestoreBaseReader reader(arg);
ObArray<ObString> stmts;
ASSERT_EQ(OB_SUCCESS, reader.init(ObString(uri_001)));
ASSERT_EQ(OB_SUCCESS, reader.get_create_unit_stmts(stmts));
LOG_INFO("restore test", K(arg), K(stmts));
ASSERT_TRUE(stmts.count() > 0);
ASSERT_EQ(OB_SUCCESS, reader.get_create_pool_stmts(stmts));
LOG_INFO("restore test", K(arg), K(stmts));
ASSERT_TRUE(stmts.count() > 0);
ObString stmt;
ASSERT_EQ(OB_SUCCESS, reader.get_create_tenant_stmt(stmt));
LOG_INFO("restore test", K(arg), K(stmt));
ASSERT_EQ(OB_SUCCESS, reader.get_create_tablegroup_stmts(stmts));
LOG_INFO("restore test", K(arg), K(stmts));
ASSERT_TRUE(stmts.count() > 0);
ASSERT_EQ(OB_SUCCESS, reader.get_create_database_stmts(stmts));
LOG_INFO("restore test", K(arg), K(stmts));
ASSERT_TRUE(stmts.count() > 0);
ASSERT_EQ(OB_SUCCESS, reader.get_create_data_table_stmts(stmts));
LOG_INFO("restore test", K(arg), K(stmts));
ASSERT_TRUE(stmts.count() > 0);
ASSERT_EQ(OB_SUCCESS, reader.get_create_index_table_stmts(stmts));
LOG_INFO("restore test", K(arg), K(stmts));
ASSERT_TRUE(stmts.count() > 0);
}
int main(int argc, char **argv)
{
oceanbase::common::ObLogger::get_logger().set_log_level("INFO");
OB_LOGGER.set_mod_log_levels("ALL.*:INFO,LIB.MYSQLC:ERROR");
::testing::InitGoogleTest(&argc,argv);
return RUN_ALL_TESTS();
}

View File

@ -0,0 +1,158 @@
/**
* 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 "lib/utility/ob_test_util.h"
#include "share/backup/ob_backup_io_adapter.h"
#include "common/storage/ob_fd_simulator.h"
#include "share/ob_device_manager.h"
using namespace oceanbase::common;
class TestCosShareCommon
{
public:
TestCosShareCommon()
{
databuff_printf(storage_info, sizeof(storage_info), "host=%s&access_id=%s&access_key=%s&appid=%s",
endpoint, secretid, secretkey, appid);
}
~TestCosShareCommon()
{}
protected:
char storage_info[OB_MAX_URI_LENGTH];
const char* dir_name = "cos_unittest_share_dir";
char bucket[OB_MAX_URI_LENGTH] = "cos://ob-dbt3-test-1304889018";
char endpoint[OB_MAX_URI_LENGTH] = "cos.ap-shanghai.myqcloud.com";
char secretid[OB_MAX_URI_LENGTH] = "";
char secretkey[OB_MAX_URI_LENGTH] = "";
char appid[OB_MAX_URI_LENGTH] = "";
char uri[OB_MAX_URI_LENGTH];
ObBackupIoAdapter util;
};
//use to clean the env
class TestCosShareCommonCleanOp : public ObBaseDirEntryOperator, public TestCosShareCommon
{
public:
TestCosShareCommonCleanOp()
{
}
~TestCosShareCommonCleanOp() {}
int func(const dirent *entry) override;
private :
};
int TestCosShareCommonCleanOp::func(const dirent *entry)
{
int ret = OB_SUCCESS;
if (OB_FAIL(databuff_printf(uri, sizeof(uri), "%s/%s/%s", bucket, dir_name, entry->d_name))) {
} else if (OB_FAIL(util.del_file(uri, storage_info))) {
}
return ret;
}
class TestStorageCosShare: public ::testing::Test, public TestCosShareCommon
{
public:
TestStorageCosShare() {}
virtual ~TestStorageCosShare(){}
virtual void SetUp()
{
//clean the test dir, do it in setup or teardown
char dir_uri[OB_MAX_URI_LENGTH];
TestCosShareCommonCleanOp clean_op;
ASSERT_EQ(OB_SUCCESS, databuff_printf(dir_uri, sizeof(dir_uri), "%s/%s/", bucket, dir_name));
ASSERT_EQ(OB_SUCCESS, util.list_files(dir_uri, storage_info, clean_op));
}
virtual void TearDown() {}
static void SetUpTestCase() {}
static void TearDownTestCase() {}
private:
// disallow copy
DISALLOW_COPY_AND_ASSIGN(TestStorageCosShare);
protected:
// function members
protected:
};
TEST_F(TestStorageCosShare, del_1001)
{
char dir_uri[OB_MAX_URI_LENGTH];
ObArray<ObString> del_files;
ObArenaAllocator allocator;
ObFileListArrayOp del_op(del_files, allocator);
ASSERT_EQ(OB_SUCCESS, databuff_printf(dir_uri, sizeof(dir_uri), "%s/%s/", bucket, "data/1/yuanzhi.zy.backup"));
ASSERT_EQ(OB_SUCCESS, util.list_files(dir_uri, storage_info, del_op));
//ASSERT_EQ(OB_SUCCESS, databuff_printf(dir_uri, sizeof(dir_uri), "%s/%s/", bucket, "data/1/yuanzhi.zy.backup.backup"));
//ASSERT_EQ(OB_SUCCESS, util.list_files(dir_uri, storage_info, del_op));
for (int i = 0; i < del_files.count(); i++) {
ASSERT_EQ(OB_SUCCESS, databuff_printf(uri, sizeof(uri), "%s%s", dir_uri, del_files[i].ptr()));
ASSERT_EQ(OB_SUCCESS, util.del_file(uri, storage_info));
}
}
//COS test
TEST_F(TestStorageCosShare, test_get_pkeys_from_dir)
{
char dir_uri[OB_MAX_URI_LENGTH];
char dir_name_sp[OB_MAX_URI_LENGTH];
const int64_t ts = ObTimeUtility::current_time();
// format dir path uri
ASSERT_EQ(OB_SUCCESS, databuff_printf(dir_name_sp, sizeof(dir_name_sp), "cos_unittest_share_dir/%ld", ts));
ASSERT_EQ(OB_SUCCESS, databuff_printf(dir_uri, sizeof(dir_uri), "%s/%s/", bucket, dir_name_sp));
char buffer[1024] = "abcdefghijklmnopqrstuvwxyz";
// create 10 partitions
const int partitions_cnt = 10;
for (int i = 0; i < partitions_cnt; i++) {
// format object path uri
ASSERT_EQ(OB_SUCCESS, databuff_printf(uri, sizeof(uri), "%s%ld_%d", dir_uri, ts, i));
ASSERT_EQ(OB_SUCCESS, util.write_single_file(uri, storage_info, buffer, strlen(buffer)));
}
}
TEST_F(TestStorageCosShare, test_set_append_strategy)
{
ObIODOpts opts;
ObIODOpt opt[4];
opts.opts_ = opt;
opts.opt_cnt_ = 0;
int64_t epoch = 99;
ASSERT_EQ(OB_SUCCESS, util.set_append_strategy(&opts, true, epoch, 4));
ASSERT_EQ(2, opts.opt_cnt_);
ASSERT_EQ(0, STRCMP(opt[0].key_, "AppendStrategy"));
ASSERT_EQ(0, STRCMP(opt[0].value_.value_str, "OB_APPEND_USE_SLICE_PUT"));
ASSERT_EQ(0, STRCMP(opt[1].key_, "AppendVersion"));
ASSERT_EQ(epoch, opt[1].value_.value_int64);
opts.opt_cnt_ = 0;
ASSERT_EQ(OB_SUCCESS, util.set_append_strategy(&opts, false, epoch, 4));
ASSERT_EQ(1, opts.opt_cnt_);
ASSERT_EQ(0, STRCMP(opt[0].key_, "AppendStrategy"));
ASSERT_EQ(0, STRCMP(opt[0].value_.value_str, "OB_APPEND_USE_OVERRITE"));
}
/*TODO: ObBackupIoAdapter::set_append_strategy need UT*/
int main(int argc, char **argv)
{
system("rm -f test_storage_cos_adapter.log");
OB_LOGGER.set_file_name("test_storage_cos_adapter.log");
OB_LOGGER.set_log_level("INFO");
::testing::InitGoogleTest(&argc,argv);
return RUN_ALL_TESTS();
}