azure-sdk-for-cpp/sdk/storage/test/datalake/service_client_test.cpp
Kan Tang b0b348e9cb
Resolved API review comments and added FileClient and DirectoryClient… (#308)
* Added API to extract raw response.

* Resolved API review comments and added FileClient and DirectoryClient for DataLake.

* Added some blob/adls Gen2 interop functionality.

* Resolved some issues/comments

* Adds more interop, support retry and concurrent upload/download.

* Added support for Azure Core's token credential to support bearer token credential.

* Added integration on RawResponse/Response<T> and resolved some test issues.

* Added validation for Client secret authentication.

* Resolved some review comments and resolved CI issue.

* Resolved a UT failure in Azure Core.

* Resolved some further comments.
2020-07-22 16:03:44 +08:00

130 lines
4.4 KiB
C++

// Copyright (c) Microsoft Corporation. All rights reserved.
// SPDX-License-Identifier: MIT
#include "service_client_test.hpp"
#include <algorithm>
namespace Azure { namespace Storage { namespace Test {
const size_t c_FILE_SYSTEM_TEST_SIZE = 5;
std::shared_ptr<Files::DataLake::ServiceClient>
DataLakeServiceClientTest::m_dataLakeServiceClient;
std::vector<std::string> DataLakeServiceClientTest::m_fileSystemNameSetA;
std::vector<std::string> DataLakeServiceClientTest::m_fileSystemNameSetB;
std::string DataLakeServiceClientTest::m_fileSystemPrefixA;
std::string DataLakeServiceClientTest::m_fileSystemPrefixB;
void DataLakeServiceClientTest::SetUpTestSuite()
{
m_dataLakeServiceClient = std::make_shared<Files::DataLake::ServiceClient>(
Files::DataLake::ServiceClient::CreateFromConnectionString(ADLSGen2ConnectionString()));
m_fileSystemPrefixA = LowercaseRandomString(10);
m_fileSystemPrefixB = LowercaseRandomString(10);
for (size_t i = 0; i < c_FILE_SYSTEM_TEST_SIZE; ++i)
{
{
auto name = m_fileSystemPrefixA + LowercaseRandomString(10);
m_dataLakeServiceClient->GetFileSystemClient(name).Create();
m_fileSystemNameSetA.emplace_back(std::move(name));
}
{
auto name = m_fileSystemPrefixB + LowercaseRandomString(10);
m_dataLakeServiceClient->GetFileSystemClient(name).Create();
m_fileSystemNameSetB.emplace_back(std::move(name));
}
}
}
void DataLakeServiceClientTest::TearDownTestSuite()
{
for (const auto& name : m_fileSystemNameSetA)
{
m_dataLakeServiceClient->GetFileSystemClient(name).Delete();
}
for (const auto& name : m_fileSystemNameSetB)
{
m_dataLakeServiceClient->GetFileSystemClient(name).Delete();
}
}
std::vector<Files::DataLake::FileSystem> DataLakeServiceClientTest::ListAllFileSystems(
const std::string& prefix)
{
std::vector<Files::DataLake::FileSystem> result;
std::string continuation;
Files::DataLake::ListFileSystemsOptions options;
if (!prefix.empty())
{
options.Prefix = prefix;
}
do
{
auto response = m_dataLakeServiceClient->ListFileSystems(options);
result.insert(result.end(), response->Filesystems.begin(), response->Filesystems.end());
if (response->Continuation.HasValue())
{
continuation = response->Continuation.GetValue();
options.Continuation = continuation;
}
} while (!continuation.empty());
return result;
}
TEST_F(DataLakeServiceClientTest, ListFileSystems)
{
{
// Normal list without prefix.
auto result = ListAllFileSystems();
for (const auto& name : m_fileSystemNameSetA)
{
auto iter = std::find_if(
result.begin(), result.end(), [&name](const Files::DataLake::FileSystem& fileSystem) {
return fileSystem.Name == name;
});
EXPECT_EQ(iter->Name.substr(0U, m_fileSystemPrefixA.size()), m_fileSystemPrefixA);
EXPECT_NE(result.end(), iter);
}
for (const auto& name : m_fileSystemNameSetB)
{
auto iter = std::find_if(
result.begin(), result.end(), [&name](const Files::DataLake::FileSystem& fileSystem) {
return fileSystem.Name == name;
});
EXPECT_EQ(iter->Name.substr(0U, m_fileSystemPrefixB.size()), m_fileSystemPrefixB);
EXPECT_NE(result.end(), iter);
}
}
{
// List prefix.
auto result = ListAllFileSystems(m_fileSystemPrefixA);
for (const auto& name : m_fileSystemNameSetA)
{
auto iter = std::find_if(
result.begin(), result.end(), [&name](const Files::DataLake::FileSystem& fileSystem) {
return fileSystem.Name == name;
});
EXPECT_EQ(iter->Name.substr(0U, m_fileSystemPrefixA.size()), m_fileSystemPrefixA);
EXPECT_NE(result.end(), iter);
}
for (const auto& name : m_fileSystemNameSetB)
{
auto iter = std::find_if(
result.begin(), result.end(), [&name](const Files::DataLake::FileSystem& fileSystem) {
return fileSystem.Name == name;
});
EXPECT_EQ(result.end(), iter);
}
}
{
// List max result
Files::DataLake::ListFileSystemsOptions options;
options.MaxResults = 2;
auto response = m_dataLakeServiceClient->ListFileSystems(options);
EXPECT_LE(2U, response->Filesystems.size());
}
}
}}} // namespace Azure::Storage::Test