forked from caoXF/curve
484 lines
19 KiB
C++
484 lines
19 KiB
C++
/*
|
|
* Copyright (c) 2020 NetEase Inc.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
/*
|
|
* Project: curve
|
|
* File Created: Tuesday, 5th March 2019 11:14:25 am
|
|
* Author: tongguangxun
|
|
*/
|
|
|
|
#include <gtest/gtest.h>
|
|
#include <gflags/gflags.h>
|
|
#include <glog/logging.h>
|
|
#include <brpc/server.h>
|
|
|
|
#include <mutex> // NOLINT
|
|
#include <atomic>
|
|
#include <functional>
|
|
#include <condition_variable> // NOLINT
|
|
#include <string>
|
|
|
|
#include "include/client/libcurve.h"
|
|
#include "src/client/client_common.h"
|
|
#include "test/client/fake/fakeMDS.h"
|
|
#include "src/client/libcurve_file.h"
|
|
#include "src/client/iomanager4chunk.h"
|
|
#include "src/client/libcurve_snapshot.h"
|
|
|
|
extern std::string mdsMetaServerAddr;
|
|
extern std::string configpath;
|
|
|
|
namespace curve {
|
|
namespace client {
|
|
|
|
class CurveClientUserAuthFail : public ::testing::Test {
|
|
public:
|
|
void SetUp() override {
|
|
metaopt.rpcRetryOpt.addrs.push_back("127.0.0.1:9104");
|
|
|
|
metaopt.rpcRetryOpt.addrs.push_back("127.0.0.1:9104");
|
|
metaopt.rpcRetryOpt.rpcTimeoutMs = 500;
|
|
metaopt.rpcRetryOpt.rpcRetryIntervalUS = 200;
|
|
|
|
ASSERT_EQ(0, server.AddService(&curvefsservice,
|
|
brpc::SERVER_DOESNT_OWN_SERVICE))
|
|
<< "Fail to add service";
|
|
|
|
ASSERT_EQ(0, server.AddService(&topologyservice,
|
|
brpc::SERVER_DOESNT_OWN_SERVICE))
|
|
<< "Fail to add service";
|
|
|
|
LOG(INFO) << "meta server addr = " << mdsMetaServerAddr;
|
|
ASSERT_EQ(server.Start(mdsMetaServerAddr.c_str(), nullptr), 0);
|
|
}
|
|
|
|
void TearDown() override {
|
|
ASSERT_EQ(0, server.Stop(0));
|
|
ASSERT_EQ(0, server.Join());
|
|
}
|
|
|
|
brpc::Server server;
|
|
MetaServerOption metaopt;
|
|
FakeMDSCurveFSService curvefsservice;
|
|
FakeMDSTopologyService topologyservice;
|
|
};
|
|
|
|
TEST_F(CurveClientUserAuthFail, CurveClientUserAuthFailTest) {
|
|
std::string filename = "./1_userinfo_.txt";
|
|
|
|
Init(configpath.c_str());
|
|
ClientConfig cc;
|
|
cc.Init(configpath.c_str());
|
|
|
|
C_UserInfo_t cuserinfo;
|
|
memcpy(cuserinfo.owner, "userinfo", 9);
|
|
|
|
UserInfo_t userinfo;
|
|
userinfo.owner = "userinfo";
|
|
UserInfo_t emptyuserinfo;
|
|
|
|
std::shared_ptr<MDSClient> mdsclient = std::make_shared<MDSClient>();
|
|
mdsclient->Initialize(cc.GetFileServiceOption().metaServerOpt);
|
|
|
|
FileInstance fileinstance;
|
|
ASSERT_FALSE(fileinstance.Initialize(filename, mdsclient, emptyuserinfo,
|
|
OpenFlags{},
|
|
cc.GetFileServiceOption()));
|
|
ASSERT_TRUE(fileinstance.Initialize(
|
|
filename, mdsclient, userinfo, OpenFlags{}, cc.GetFileServiceOption()));
|
|
|
|
// set openfile response
|
|
::curve::mds::OpenFileResponse openresponse;
|
|
curve::mds::FileInfo * finfo = new curve::mds::FileInfo;
|
|
::curve::mds::ProtoSession* se = new ::curve::mds::ProtoSession;
|
|
se->set_sessionid("1");
|
|
se->set_createtime(12345);
|
|
se->set_leasetime(10000000);
|
|
se->set_sessionstatus(::curve::mds::SessionStatus::kSessionOK);
|
|
openresponse.set_statuscode(::curve::mds::StatusCode::kOwnerAuthFail);
|
|
openresponse.set_allocated_protosession(se);
|
|
|
|
openresponse.set_allocated_fileinfo(finfo);
|
|
openresponse.mutable_fileinfo()->set_seqnum(2);
|
|
openresponse.mutable_fileinfo()->set_filename(filename);
|
|
|
|
FakeReturn* openfakeret
|
|
= new FakeReturn(nullptr, static_cast<void*>(&openresponse));
|
|
curvefsservice.SetOpenFile(openfakeret);
|
|
|
|
// 1. create a File authfailed
|
|
|
|
::curve::mds::CreateFileResponse response;
|
|
response.set_statuscode(::curve::mds::StatusCode::kOwnerAuthFail);
|
|
FakeReturn* fakeret
|
|
= new FakeReturn(nullptr, static_cast<void*>(&response));
|
|
curvefsservice.SetCreateFileFakeReturn(fakeret);
|
|
|
|
size_t len = 4 * 1024 * 1024ul;
|
|
int ret = Create(filename.c_str(), &cuserinfo, len);
|
|
ASSERT_EQ(ret, -LIBCURVE_ERROR::AUTHFAIL);
|
|
|
|
// 2. set refresh response auth failed
|
|
std::mutex mtx;
|
|
std::condition_variable refreshcv;
|
|
auto refresht = [&mtx, &refreshcv]() {
|
|
LOG(INFO) << "get refresh session request!";
|
|
refreshcv.notify_one();
|
|
};
|
|
curve::mds::FileInfo * info = new curve::mds::FileInfo;
|
|
::curve::mds::ReFreshSessionResponse refreshresp;
|
|
refreshresp.set_statuscode(::curve::mds::StatusCode::kOwnerAuthFail);
|
|
refreshresp.set_sessionid("1234");
|
|
refreshresp.set_allocated_fileinfo(info);
|
|
refreshresp.mutable_fileinfo()->set_seqnum(2);
|
|
refreshresp.mutable_fileinfo()->set_filename(filename);
|
|
refreshresp.mutable_fileinfo()->set_id(1);
|
|
refreshresp.mutable_fileinfo()->set_parentid(0);
|
|
refreshresp.mutable_fileinfo()->set_filetype(curve::mds::FileType::INODE_PAGEFILE); // NOLINT
|
|
refreshresp.mutable_fileinfo()->set_chunksize(4 * 1024 * 1024);
|
|
refreshresp.mutable_fileinfo()->set_length(4 * 1024 * 1024 * 1024ul);
|
|
refreshresp.mutable_fileinfo()->set_ctime(12345678);
|
|
FakeReturn* refreshfakeret
|
|
= new FakeReturn(nullptr, static_cast<void*>(&refreshresp));
|
|
curvefsservice.SetRefreshSession(refreshfakeret, refresht);
|
|
|
|
// 3. open the file auth failed
|
|
int openret = fileinstance.Open();
|
|
ASSERT_EQ(openret, -LIBCURVE_ERROR::AUTHFAIL);
|
|
|
|
// 4. open file success
|
|
openresponse.set_statuscode(::curve::mds::StatusCode::kOK);
|
|
FakeReturn* openfakeret2
|
|
= new FakeReturn(nullptr, static_cast<void*>(&openresponse));
|
|
curvefsservice.SetOpenFile(openfakeret2);
|
|
|
|
openret = fileinstance.Open();
|
|
ASSERT_EQ(openret, LIBCURVE_ERROR::OK);
|
|
/*
|
|
// 5. wait for refresh
|
|
for (int i = 0; i < 4; i++) {
|
|
{
|
|
std::unique_lock<std::mutex> lk(mtx);
|
|
refreshcv.wait(lk);
|
|
}
|
|
}
|
|
|
|
CurveAioContext aioctx;
|
|
aioctx.offset = 4 * 1024 * 1024 - 4 * 1024;
|
|
aioctx.length = 4 * 1024 * 1024 + 8 * 1024;
|
|
aioctx.ret = LIBCURVE_ERROR::OK;
|
|
aioctx.cb = sessioncallback;
|
|
aioctx.buf = nullptr;
|
|
|
|
fileinstance.AioRead(&aioctx);
|
|
fileinstance.AioWrite(&aioctx);
|
|
|
|
for (int i = 0; i < 1; i++) {
|
|
{
|
|
std::unique_lock<std::mutex> lk(mtx);
|
|
refreshcv.wait(lk);
|
|
}
|
|
}
|
|
|
|
char buffer[10];
|
|
ASSERT_EQ(-LIBCURVE_ERROR::DISABLEIO, fileinstance.Write(buffer, 0, 0));
|
|
ASSERT_EQ(-LIBCURVE_ERROR::DISABLEIO, fileinstance.Read(buffer, 0, 0));
|
|
*/
|
|
// 6. set fake close return
|
|
::curve::mds::CloseFileResponse closeresp;
|
|
closeresp.set_statuscode(::curve::mds::StatusCode::kOwnerAuthFail);
|
|
FakeReturn* closefileret
|
|
= new FakeReturn(nullptr, static_cast<void*>(&closeresp));
|
|
curvefsservice.SetCloseFile(closefileret);
|
|
ASSERT_EQ(-LIBCURVE_ERROR::AUTHFAIL, fileinstance.Close());
|
|
|
|
fileinstance.UnInitialize();
|
|
UnInit();
|
|
}
|
|
|
|
TEST_F(CurveClientUserAuthFail, CurveSnapClientUserAuthFailTest) {
|
|
ClientConfigOption opt;
|
|
opt.metaServerOpt.rpcRetryOpt.rpcTimeoutMs = 500;
|
|
opt.metaServerOpt.rpcRetryOpt.addrs.push_back("127.0.0.1:9104");
|
|
opt.ioOpt.reqSchdulerOpt.scheduleQueueCapacity = 4096;
|
|
opt.ioOpt.reqSchdulerOpt.scheduleThreadpoolSize = 2;
|
|
opt.ioOpt.ioSenderOpt.failRequestOpt.chunkserverOPMaxRetry = 3;
|
|
opt.ioOpt.ioSenderOpt.failRequestOpt.chunkserverOPRetryIntervalUS = 500;
|
|
opt.ioOpt.metaCacheOpt.metacacheGetLeaderRetry = 3;
|
|
opt.ioOpt.ioSenderOpt.chunkserverEnableAppliedIndexRead = 1;
|
|
opt.ioOpt.ioSplitOpt.fileIOSplitMaxSizeKB = 64;
|
|
opt.ioOpt.reqSchdulerOpt.ioSenderOpt = opt.ioOpt.ioSenderOpt;
|
|
opt.loginfo.logLevel = 0;
|
|
|
|
SnapshotClient cl;
|
|
ASSERT_TRUE(!cl.Init(opt));
|
|
|
|
UserInfo_t emptyuserinfo;
|
|
|
|
std::string filename = "./1_usertest_.img";
|
|
brpc::Server server;
|
|
uint64_t seq = 1;
|
|
// test create snap
|
|
// normal test
|
|
::curve::mds::CreateSnapShotResponse response;
|
|
response.set_statuscode(::curve::mds::StatusCode::kOK);
|
|
response.clear_snapshotfileinfo();
|
|
FakeReturn* fakeret
|
|
= new FakeReturn(nullptr, static_cast<void*>(&response));
|
|
curvefsservice.SetCreateSnapShot(fakeret);
|
|
ASSERT_EQ(-LIBCURVE_ERROR::FAILED, cl.CreateSnapShot(filename,
|
|
emptyuserinfo,
|
|
&seq));
|
|
|
|
// set response
|
|
response.set_statuscode(::curve::mds::StatusCode::kOwnerAuthFail);
|
|
::curve::mds::FileInfo* finf = new ::curve::mds::FileInfo;
|
|
finf->set_filename(filename);
|
|
finf->set_id(1);
|
|
finf->set_parentid(0);
|
|
finf->set_filetype(curve::mds::FileType::INODE_PAGEFILE);
|
|
finf->set_chunksize(16 * 1024 * 1024);
|
|
finf->set_length(1 * 1024 * 1024 * 1024);
|
|
finf->set_ctime(12345678);
|
|
finf->set_seqnum(2);
|
|
finf->set_segmentsize(1 * 1024 * 1024 * 1024);
|
|
response.set_allocated_snapshotfileinfo(finf);
|
|
FakeReturn* fakeret1
|
|
= new FakeReturn(nullptr, static_cast<void*>(&response));
|
|
curvefsservice.SetCreateSnapShot(fakeret1);
|
|
|
|
ASSERT_EQ(-LIBCURVE_ERROR::AUTHFAIL, cl.CreateSnapShot(filename,
|
|
emptyuserinfo,
|
|
&seq));
|
|
|
|
// test delete
|
|
// normal delete test
|
|
::curve::mds::DeleteSnapShotResponse delresponse;
|
|
delresponse.set_statuscode(::curve::mds::StatusCode::kOwnerAuthFail);
|
|
FakeReturn* delfakeret
|
|
= new FakeReturn(nullptr, static_cast<void*>(&delresponse));
|
|
|
|
curvefsservice.SetDeleteSnapShot(delfakeret);
|
|
ASSERT_EQ(-LIBCURVE_ERROR::AUTHFAIL, cl.DeleteSnapShot(filename,
|
|
emptyuserinfo,
|
|
seq));
|
|
|
|
// test get SegmentInfo
|
|
// normal getinfo
|
|
curve::mds::GetOrAllocateSegmentResponse* getresponse =
|
|
new curve::mds::GetOrAllocateSegmentResponse();
|
|
curve::mds::PageFileSegment* pfs = new curve::mds::PageFileSegment;
|
|
pfs->set_logicalpoolid(0);
|
|
pfs->set_segmentsize(1ull*1024*1024*1024);
|
|
pfs->set_chunksize(16*1024*1024);
|
|
pfs->set_startoffset(0);
|
|
getresponse->set_statuscode(::curve::mds::StatusCode::kOwnerAuthFail);
|
|
getresponse->set_allocated_pagefilesegment(pfs);
|
|
FakeReturn* getfakeret = new FakeReturn(nullptr,
|
|
static_cast<void*>(getresponse));
|
|
curvefsservice.SetGetSnapshotSegmentInfo(getfakeret);
|
|
|
|
::curve::mds::topology::GetChunkServerListInCopySetsResponse* geresponse_1 =
|
|
new ::curve::mds::topology::GetChunkServerListInCopySetsResponse();
|
|
geresponse_1->set_statuscode(0);
|
|
FakeReturn* faktopologyeret = new FakeReturn(nullptr,
|
|
static_cast<void*>(geresponse_1));
|
|
topologyservice.SetFakeReturn(faktopologyeret);
|
|
|
|
SegmentInfo seginfo;
|
|
LogicalPoolCopysetIDInfo lpcsIDInfo;
|
|
ASSERT_EQ(-LIBCURVE_ERROR::AUTHFAIL,
|
|
cl.GetSnapshotSegmentInfo(filename,
|
|
emptyuserinfo,
|
|
0, 0, &seginfo));
|
|
|
|
// test list snapshot
|
|
// normal delete test
|
|
::curve::mds::ListSnapShotFileInfoResponse listresponse;
|
|
listresponse.add_fileinfo();
|
|
listresponse.mutable_fileinfo(0)->set_filename(filename);
|
|
listresponse.mutable_fileinfo(0)->set_id(1);
|
|
listresponse.mutable_fileinfo(0)->set_parentid(0);
|
|
listresponse.mutable_fileinfo(0)->set_filetype(curve::mds::FileType::INODE_PAGEFILE); // NOLINT
|
|
listresponse.mutable_fileinfo(0)->set_chunksize(4 * 1024 * 1024);
|
|
listresponse.mutable_fileinfo(0)->set_length(4 * 1024 * 1024 * 1024ul);
|
|
listresponse.mutable_fileinfo(0)->set_ctime(12345678);
|
|
listresponse.mutable_fileinfo(0)->set_seqnum(0);
|
|
listresponse.mutable_fileinfo(0)->set_segmentsize(1 * 1024 * 1024 * 1024ul);
|
|
|
|
listresponse.set_statuscode(::curve::mds::StatusCode::kOwnerAuthFail);
|
|
FakeReturn* listfakeret
|
|
= new FakeReturn(nullptr, static_cast<void*>(&listresponse));
|
|
curve::client::FInfo_t sinfo;
|
|
curvefsservice.SetListSnapShot(listfakeret);
|
|
ASSERT_EQ(-LIBCURVE_ERROR::AUTHFAIL, cl.GetSnapShot(filename,
|
|
emptyuserinfo,
|
|
seq, &sinfo));
|
|
|
|
std::vector<uint64_t> seqvec;
|
|
std::map<uint64_t, curve::client::FInfo_t> fivec;
|
|
seqvec.push_back(seq);
|
|
curve::client::FInfo_t ffinfo;
|
|
ASSERT_EQ(-LIBCURVE_ERROR::AUTHFAIL,
|
|
cl.ListSnapShot(filename, emptyuserinfo, &seqvec, &fivec));
|
|
cl.UnInit();
|
|
|
|
delete fakeret;
|
|
delete fakeret1;
|
|
delete listfakeret;
|
|
delete delfakeret;
|
|
}
|
|
|
|
// root user测试
|
|
TEST_F(CurveClientUserAuthFail, CurveSnapClientRootUserAuthTest) {
|
|
ClientConfigOption opt;
|
|
opt.metaServerOpt.rpcRetryOpt.rpcTimeoutMs = 500;
|
|
opt.metaServerOpt.rpcRetryOpt.addrs.push_back("127.0.0.1:9104");
|
|
opt.ioOpt.reqSchdulerOpt.scheduleQueueCapacity = 4096;
|
|
opt.ioOpt.reqSchdulerOpt.scheduleThreadpoolSize = 2;
|
|
opt.ioOpt.ioSenderOpt.failRequestOpt.chunkserverOPMaxRetry = 3;
|
|
opt.ioOpt.ioSenderOpt.failRequestOpt.chunkserverOPRetryIntervalUS = 500;
|
|
opt.ioOpt.metaCacheOpt.metacacheGetLeaderRetry = 3;
|
|
opt.ioOpt.ioSenderOpt.chunkserverEnableAppliedIndexRead = 1;
|
|
opt.ioOpt.ioSplitOpt.fileIOSplitMaxSizeKB = 64;
|
|
opt.ioOpt.reqSchdulerOpt.ioSenderOpt = opt.ioOpt.ioSenderOpt;
|
|
opt.loginfo.logLevel = 0;
|
|
|
|
SnapshotClient cl;
|
|
ASSERT_TRUE(!cl.Init(opt));
|
|
|
|
UserInfo_t rootuserinfo;
|
|
rootuserinfo.owner ="root";
|
|
rootuserinfo.password = "123";
|
|
|
|
std::string filename = "./1_usertest_.img";
|
|
brpc::Server server;
|
|
uint64_t seq = 1;
|
|
// test create snap
|
|
// normal test
|
|
::curve::mds::CreateSnapShotResponse response;
|
|
response.set_statuscode(::curve::mds::StatusCode::kOK);
|
|
response.clear_snapshotfileinfo();
|
|
FakeReturn* fakeret
|
|
= new FakeReturn(nullptr, static_cast<void*>(&response));
|
|
curvefsservice.SetCreateSnapShot(fakeret);
|
|
ASSERT_EQ(-LIBCURVE_ERROR::FAILED, cl.CreateSnapShot(filename,
|
|
rootuserinfo,
|
|
&seq));
|
|
|
|
// set response
|
|
response.set_statuscode(::curve::mds::StatusCode::kOwnerAuthFail);
|
|
::curve::mds::FileInfo* finf = new ::curve::mds::FileInfo;
|
|
finf->set_filename(filename);
|
|
finf->set_id(1);
|
|
finf->set_parentid(0);
|
|
finf->set_filetype(curve::mds::FileType::INODE_PAGEFILE);
|
|
finf->set_chunksize(16 * 1024 * 1024);
|
|
finf->set_length(1 * 1024 * 1024 * 1024);
|
|
finf->set_ctime(12345678);
|
|
finf->set_seqnum(2);
|
|
finf->set_segmentsize(1 * 1024 * 1024 * 1024);
|
|
response.set_allocated_snapshotfileinfo(finf);
|
|
FakeReturn* fakeret1
|
|
= new FakeReturn(nullptr, static_cast<void*>(&response));
|
|
curvefsservice.SetCreateSnapShot(fakeret1);
|
|
|
|
ASSERT_EQ(-LIBCURVE_ERROR::AUTHFAIL, cl.CreateSnapShot(filename,
|
|
rootuserinfo,
|
|
&seq));
|
|
|
|
// test delete
|
|
// normal delete test
|
|
::curve::mds::DeleteSnapShotResponse delresponse;
|
|
delresponse.set_statuscode(::curve::mds::StatusCode::kOwnerAuthFail);
|
|
FakeReturn* delfakeret
|
|
= new FakeReturn(nullptr, static_cast<void*>(&delresponse));
|
|
|
|
curvefsservice.SetDeleteSnapShot(delfakeret);
|
|
ASSERT_EQ(-LIBCURVE_ERROR::AUTHFAIL, cl.DeleteSnapShot(filename,
|
|
rootuserinfo,
|
|
seq));
|
|
|
|
// test get SegmentInfo
|
|
// normal getinfo
|
|
curve::mds::GetOrAllocateSegmentResponse* getresponse =
|
|
new curve::mds::GetOrAllocateSegmentResponse();
|
|
curve::mds::PageFileSegment* pfs = new curve::mds::PageFileSegment;
|
|
pfs->set_logicalpoolid(0);
|
|
pfs->set_segmentsize(1ull*1024*1024*1024);
|
|
pfs->set_chunksize(16ull*1024*1024);
|
|
pfs->set_startoffset(0);
|
|
getresponse->set_statuscode(::curve::mds::StatusCode::kOwnerAuthFail);
|
|
getresponse->set_allocated_pagefilesegment(pfs);
|
|
FakeReturn* getfakeret = new FakeReturn(nullptr,
|
|
static_cast<void*>(getresponse));
|
|
curvefsservice.SetGetSnapshotSegmentInfo(getfakeret);
|
|
|
|
::curve::mds::topology::GetChunkServerListInCopySetsResponse* geresponse_1 =
|
|
new ::curve::mds::topology::GetChunkServerListInCopySetsResponse();
|
|
geresponse_1->set_statuscode(0);
|
|
FakeReturn* faktopologyeret = new FakeReturn(nullptr,
|
|
static_cast<void*>(geresponse_1));
|
|
topologyservice.SetFakeReturn(faktopologyeret);
|
|
|
|
SegmentInfo seginfo;
|
|
LogicalPoolCopysetIDInfo lpcsIDInfo;
|
|
ASSERT_EQ(-LIBCURVE_ERROR::AUTHFAIL,
|
|
cl.GetSnapshotSegmentInfo(filename,
|
|
rootuserinfo,
|
|
0, 0, &seginfo));
|
|
|
|
// test list snapshot
|
|
// normal delete test
|
|
::curve::mds::ListSnapShotFileInfoResponse listresponse;
|
|
listresponse.add_fileinfo();
|
|
listresponse.mutable_fileinfo(0)->set_filename(filename);
|
|
listresponse.mutable_fileinfo(0)->set_id(1);
|
|
listresponse.mutable_fileinfo(0)->set_parentid(0);
|
|
listresponse.mutable_fileinfo(0)->set_filetype(curve::mds::FileType::INODE_PAGEFILE); // NOLINT
|
|
listresponse.mutable_fileinfo(0)->set_chunksize(4 * 1024 * 1024);
|
|
listresponse.mutable_fileinfo(0)->set_length(4 * 1024 * 1024 * 1024ul);
|
|
listresponse.mutable_fileinfo(0)->set_ctime(12345678);
|
|
listresponse.mutable_fileinfo(0)->set_seqnum(0);
|
|
listresponse.mutable_fileinfo(0)->set_segmentsize(1 * 1024 * 1024 * 1024ul);
|
|
|
|
listresponse.set_statuscode(::curve::mds::StatusCode::kOwnerAuthFail);
|
|
FakeReturn* listfakeret
|
|
= new FakeReturn(nullptr, static_cast<void*>(&listresponse));
|
|
curve::client::FInfo_t sinfo;
|
|
curvefsservice.SetListSnapShot(listfakeret);
|
|
ASSERT_EQ(-LIBCURVE_ERROR::AUTHFAIL, cl.GetSnapShot(filename,
|
|
rootuserinfo,
|
|
seq, &sinfo));
|
|
|
|
std::vector<uint64_t> seqvec;
|
|
std::map<uint64_t, curve::client::FInfo_t> fivec;
|
|
seqvec.push_back(seq);
|
|
curve::client::FInfo_t ffinfo;
|
|
ASSERT_EQ(-LIBCURVE_ERROR::AUTHFAIL,
|
|
cl.ListSnapShot(filename, rootuserinfo,
|
|
&seqvec, &fivec));
|
|
cl.UnInit();
|
|
|
|
delete fakeret;
|
|
delete fakeret1;
|
|
delete listfakeret;
|
|
delete delfakeret;
|
|
}
|
|
|
|
} // namespace client
|
|
} // namespace curve
|