Files
oceanbase/deps/oblib/unittest/lib/restore/test_storage.cpp
wangzelin.wzl 93a1074b0c patch 4.0
2022-10-24 17:57:12 +08:00

116 lines
3.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.
*/
#include <gtest/gtest.h>
#include "lib/restore/ob_storage.h"
#define private public
using namespace oceanbase::common;
class TestStorageOss: public ::testing::Test
{
public:
TestStorageOss() {}
virtual ~TestStorageOss(){}
virtual void SetUp()
{
ObOssEnvIniter::get_instance().global_init();
}
virtual void TearDown()
{
ObOssEnvIniter::get_instance().global_destroy();
}
static void SetUpTestCase()
{
}
static void TearDownTestCase()
{
}
private:
// disallow copy
DISALLOW_COPY_AND_ASSIGN(TestStorageOss);
protected:
// function members
protected:
// oss://ob-unit-test
char test_oss_bucket_[OB_MAX_URI_LENGTH] = "oss://antsys-oceanbasebackup";
// oss config
char oss_host_[OB_MAX_URI_LENGTH] = "cn-hangzhou-alipay-b.oss-cdn.aliyun-inc.com";
char oss_id_[MAX_OSS_ID_LENGTH] = "fill_test_id";
char oss_key_[MAX_OSS_KEY_LENGTH] = "fill_test_key";
};
TEST_F(TestStorageOss, test_repeatable_pwrite)
{
char uri[OB_MAX_URI_LENGTH];
char storage_infos[OB_MAX_URI_LENGTH];
ASSERT_EQ(OB_SUCCESS, databuff_printf(storage_infos, sizeof(storage_infos), "host=%s&access_id=%s&access_key=%s", oss_host_, oss_id_, oss_key_));
const char *dir_name = "test";
ASSERT_EQ(OB_SUCCESS, databuff_printf(uri, sizeof(uri), "%s/%s/pwrite_file", test_oss_bucket_, dir_name));
const ObString storage_info(storage_infos);
ObStorageAppender appender;
ObStorageAppender::AppenderParam param;
param.strategy_ = OB_APPEND_USE_APPEND;
param.version_param_.open_object_version_ = false;
ObOssAccount oss_account;
ASSERT_EQ(OB_SUCCESS, oss_account.parse_oss_arg(storage_info));
ASSERT_EQ(OB_SUCCESS, appender.open(uri, &oss_account, param));
ASSERT_TRUE(appender.is_opened());
ASSERT_EQ(0ll, appender.get_length());
const char *buf1 = "0123";
ASSERT_EQ(OB_SUCCESS, appender.pwrite(buf1, strlen(buf1), 0));
ASSERT_EQ(4, appender.get_length());
const char *buf2 = "56";
ASSERT_EQ(OB_BACKUP_PWRITE_CONTENT_NOT_MATCH, appender.pwrite(buf2, strlen(buf2), 5));
ASSERT_EQ(4, appender.get_length());
const char *buf3 = "45";
ASSERT_EQ(OB_SUCCESS, appender.pwrite(buf3, strlen(buf3), 4));
ASSERT_EQ(6, appender.get_length());
const char *buf4 = "345";
ASSERT_EQ(OB_SUCCESS, appender.pwrite(buf4, strlen(buf4), 3));
ASSERT_EQ(6, appender.get_length());
const char *buf5 = "34";
ASSERT_EQ(OB_SUCCESS, appender.pwrite(buf5, strlen(buf5), 3));
ASSERT_EQ(6, appender.get_length());
const char *buf6 = "3456";
ASSERT_EQ(OB_SUCCESS, appender.pwrite(buf6, strlen(buf6), 3));
ASSERT_EQ(7, appender.get_length());
const char *buf7 = "427";
ASSERT_EQ(OB_BACKUP_PWRITE_CONTENT_NOT_MATCH, appender.pwrite(buf7, strlen(buf7), 4));
ASSERT_EQ(7, appender.get_length());
ASSERT_EQ(OB_SUCCESS, appender.close());
}
int main(int argc, char **argv)
{
OB_LOGGER.set_log_level("DEBUG");
::testing::InitGoogleTest(&argc,argv);
return RUN_ALL_TESTS();
}