use std::chrono::seconds or enum for lease duration (#1432)
* use std::chrono::seconds for duration * changelog * add enum for lease duration in response * changelog * fix build error * fix build error * fix build error
This commit is contained in:
parent
cc1aeb4d3f
commit
c4d89ac5c9
@ -12,6 +12,7 @@
|
||||
- `AccessType` in `CreateBlobContainerOptions` was changed to non-nullable.
|
||||
- `ListType` in `GetBlockListOptions` was changed to non-nullable.
|
||||
- Added `BlobLeaseClient`, all lease related APIs are moved to `BlobLeaseClient`.
|
||||
- Type for lease duration in requests was changed to `std::chrono::seconds`, in response was changed to enum.
|
||||
|
||||
## 12.0.0-beta.6 (2020-01-14)
|
||||
|
||||
|
||||
@ -3,6 +3,8 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <chrono>
|
||||
|
||||
#include "azure/storage/blobs/blob_client.hpp"
|
||||
#include "azure/storage/blobs/blob_container_client.hpp"
|
||||
|
||||
@ -46,7 +48,7 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
/**
|
||||
* @brief A value representing infinite lease duration.
|
||||
*/
|
||||
constexpr static int32_t InfiniteLeaseDuration = -1;
|
||||
AZ_STORAGE_BLOBS_DLLEXPORT const static std::chrono::seconds InfiniteLeaseDuration;
|
||||
|
||||
/**
|
||||
* @brief Get lease id of this lease client.
|
||||
@ -67,7 +69,7 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
* @return A AcquireBlobLeaseResult describing the lease.
|
||||
*/
|
||||
Azure::Core::Response<Models::AcquireBlobLeaseResult> Acquire(
|
||||
int32_t duration,
|
||||
std::chrono::seconds duration,
|
||||
const AcquireBlobLeaseOptions& options = AcquireBlobLeaseOptions());
|
||||
|
||||
/**
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <chrono>
|
||||
#include <cstdint>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
@ -774,7 +775,7 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
* available before the break period has expired, but the lease may be held for longer than the
|
||||
* break period.
|
||||
*/
|
||||
Azure::Core::Nullable<int32_t> BreakPeriod;
|
||||
Azure::Core::Nullable<std::chrono::seconds> BreakPeriod;
|
||||
|
||||
/**
|
||||
* @brief Optional conditions that must be met to perform this operation.
|
||||
|
||||
@ -3,8 +3,6 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "azure/storage/blobs/dll_import_export.hpp"
|
||||
|
||||
#include <cstring>
|
||||
#include <limits>
|
||||
#include <map>
|
||||
@ -26,6 +24,8 @@
|
||||
#include <azure/storage/common/storage_exception.hpp>
|
||||
#include <azure/storage/common/xml_wrapper.hpp>
|
||||
|
||||
#include "azure/storage/blobs/dll_import_export.hpp"
|
||||
|
||||
namespace Azure { namespace Storage { namespace Blobs {
|
||||
|
||||
namespace Details {
|
||||
@ -152,6 +152,20 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
std::string m_value;
|
||||
}; // extensible enum BlobGeoReplicationStatus
|
||||
|
||||
class BlobLeaseDurationType {
|
||||
public:
|
||||
BlobLeaseDurationType() = default;
|
||||
explicit BlobLeaseDurationType(std::string value) : m_value(std::move(value)) {}
|
||||
bool operator==(const BlobLeaseDurationType& other) const { return m_value == other.m_value; }
|
||||
bool operator!=(const BlobLeaseDurationType& other) const { return !(*this == other); }
|
||||
const std::string& Get() const { return m_value; }
|
||||
AZ_STORAGE_BLOBS_DLLEXPORT const static BlobLeaseDurationType Infinite;
|
||||
AZ_STORAGE_BLOBS_DLLEXPORT const static BlobLeaseDurationType Fixed;
|
||||
|
||||
private:
|
||||
std::string m_value;
|
||||
}; // extensible enum BlobLeaseDurationType
|
||||
|
||||
class BlobLeaseState {
|
||||
public:
|
||||
BlobLeaseState() = default;
|
||||
@ -740,7 +754,7 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
PublicAccessType AccessType = PublicAccessType::Private;
|
||||
bool HasImmutabilityPolicy = false;
|
||||
bool HasLegalHold = false;
|
||||
Azure::Core::Nullable<std::string> LeaseDuration;
|
||||
Azure::Core::Nullable<BlobLeaseDurationType> LeaseDuration;
|
||||
BlobLeaseState LeaseState = BlobLeaseState::Available;
|
||||
BlobLeaseStatus LeaseStatus = BlobLeaseStatus::Unlocked;
|
||||
std::string DefaultEncryptionScope;
|
||||
@ -800,7 +814,7 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
PublicAccessType AccessType = PublicAccessType::Private;
|
||||
bool HasImmutabilityPolicy = false;
|
||||
bool HasLegalHold = false;
|
||||
Azure::Core::Nullable<std::string> LeaseDuration;
|
||||
Azure::Core::Nullable<BlobLeaseDurationType> LeaseDuration;
|
||||
BlobLeaseState LeaseState = BlobLeaseState::Available;
|
||||
BlobLeaseStatus LeaseStatus = BlobLeaseStatus::Unlocked;
|
||||
std::string DefaultEncryptionScope;
|
||||
@ -1017,7 +1031,7 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
Azure::Core::Nullable<bool> IsAccessTierInferred;
|
||||
BlobLeaseStatus LeaseStatus = BlobLeaseStatus::Unlocked;
|
||||
BlobLeaseState LeaseState = BlobLeaseState::Available;
|
||||
Azure::Core::Nullable<std::string> LeaseDuration;
|
||||
Azure::Core::Nullable<BlobLeaseDurationType> LeaseDuration;
|
||||
bool IsServerEncrypted = false;
|
||||
Azure::Core::Nullable<std::vector<uint8_t>> EncryptionKeySha256;
|
||||
Azure::Core::Nullable<std::string> EncryptionScope;
|
||||
@ -1045,7 +1059,7 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
Azure::Core::Nullable<bool> IsSealed; // only for append blob
|
||||
Models::BlobType BlobType;
|
||||
Azure::Core::Nullable<ContentHash> TransactionalContentHash; // hash for the downloaded range
|
||||
Azure::Core::Nullable<std::string> LeaseDuration;
|
||||
Azure::Core::Nullable<BlobLeaseDurationType> LeaseDuration;
|
||||
Azure::Core::Nullable<BlobLeaseState> LeaseState;
|
||||
Azure::Core::Nullable<BlobLeaseStatus> LeaseStatus;
|
||||
bool IsServerEncrypted = false;
|
||||
@ -1068,7 +1082,7 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
Azure::Core::Nullable<Azure::Core::DateTime> LastAccessedOn;
|
||||
Storage::Metadata Metadata;
|
||||
Models::BlobType BlobType;
|
||||
Azure::Core::Nullable<std::string> LeaseDuration;
|
||||
Azure::Core::Nullable<BlobLeaseDurationType> LeaseDuration;
|
||||
Azure::Core::Nullable<BlobLeaseState> LeaseState;
|
||||
Azure::Core::Nullable<BlobLeaseStatus> LeaseStatus;
|
||||
int64_t ContentLength = 0;
|
||||
@ -2238,7 +2252,7 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
path.size() == 2 && path[0] == XmlTagName::k_Properties
|
||||
&& path[1] == XmlTagName::k_LeaseDuration)
|
||||
{
|
||||
ret.LeaseDuration = node.Value;
|
||||
ret.LeaseDuration = BlobLeaseDurationType(node.Value);
|
||||
}
|
||||
else if (
|
||||
path.size() == 2 && path[0] == XmlTagName::k_Properties
|
||||
@ -3297,7 +3311,7 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
= httpResponse.GetHeaders().find("x-ms-lease-duration");
|
||||
if (x_ms_lease_duration__iterator != httpResponse.GetHeaders().end())
|
||||
{
|
||||
response.LeaseDuration = x_ms_lease_duration__iterator->second;
|
||||
response.LeaseDuration = BlobLeaseDurationType(x_ms_lease_duration__iterator->second);
|
||||
}
|
||||
response.DefaultEncryptionScope
|
||||
= httpResponse.GetHeaders().at("x-ms-default-encryption-scope");
|
||||
@ -3644,7 +3658,7 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
struct AcquireBlobContainerLeaseOptions
|
||||
{
|
||||
Azure::Core::Nullable<int32_t> Timeout;
|
||||
int32_t LeaseDuration = -1;
|
||||
std::chrono::seconds LeaseDuration;
|
||||
Azure::Core::Nullable<std::string> ProposedLeaseId;
|
||||
Azure::Core::Nullable<Azure::Core::DateTime> IfModifiedSince;
|
||||
Azure::Core::Nullable<Azure::Core::DateTime> IfUnmodifiedSince;
|
||||
@ -3668,7 +3682,7 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
request.GetUrl().AppendQueryParameter("restype", "container");
|
||||
request.GetUrl().AppendQueryParameter("comp", "lease");
|
||||
request.AddHeader("x-ms-lease-action", "acquire");
|
||||
request.AddHeader("x-ms-lease-duration", std::to_string(options.LeaseDuration));
|
||||
request.AddHeader("x-ms-lease-duration", std::to_string(options.LeaseDuration.count()));
|
||||
if (options.ProposedLeaseId.HasValue())
|
||||
{
|
||||
request.AddHeader("x-ms-proposed-lease-id", options.ProposedLeaseId.GetValue());
|
||||
@ -3894,7 +3908,7 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
struct BreakBlobContainerLeaseOptions
|
||||
{
|
||||
Azure::Core::Nullable<int32_t> Timeout;
|
||||
Azure::Core::Nullable<int32_t> BreakPeriod;
|
||||
Azure::Core::Nullable<std::chrono::seconds> BreakPeriod;
|
||||
Azure::Core::Nullable<Azure::Core::DateTime> IfModifiedSince;
|
||||
Azure::Core::Nullable<Azure::Core::DateTime> IfUnmodifiedSince;
|
||||
}; // struct BreakBlobContainerLeaseOptions
|
||||
@ -3920,7 +3934,7 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
if (options.BreakPeriod.HasValue())
|
||||
{
|
||||
request.AddHeader(
|
||||
"x-ms-lease-break-period", std::to_string(options.BreakPeriod.GetValue()));
|
||||
"x-ms-lease-break-period", std::to_string(options.BreakPeriod.GetValue().count()));
|
||||
}
|
||||
if (options.IfModifiedSince.HasValue())
|
||||
{
|
||||
@ -4579,7 +4593,7 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
path.size() == 2 && path[0] == XmlTagName::k_Properties
|
||||
&& path[1] == XmlTagName::k_LeaseDuration)
|
||||
{
|
||||
ret.LeaseDuration = node.Value;
|
||||
ret.LeaseDuration = BlobLeaseDurationType(node.Value);
|
||||
}
|
||||
else if (
|
||||
path.size() == 2 && path[0] == XmlTagName::k_Properties
|
||||
@ -5083,7 +5097,7 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
= httpResponse.GetHeaders().find("x-ms-lease-duration");
|
||||
if (x_ms_lease_duration__iterator != httpResponse.GetHeaders().end())
|
||||
{
|
||||
response.LeaseDuration = x_ms_lease_duration__iterator->second;
|
||||
response.LeaseDuration = BlobLeaseDurationType(x_ms_lease_duration__iterator->second);
|
||||
}
|
||||
response.CreatedOn = Azure::Core::DateTime::Parse(
|
||||
httpResponse.GetHeaders().at("x-ms-creation-time"),
|
||||
@ -5489,7 +5503,7 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
= httpResponse.GetHeaders().find("x-ms-lease-duration");
|
||||
if (x_ms_lease_duration__iterator != httpResponse.GetHeaders().end())
|
||||
{
|
||||
response.LeaseDuration = x_ms_lease_duration__iterator->second;
|
||||
response.LeaseDuration = BlobLeaseDurationType(x_ms_lease_duration__iterator->second);
|
||||
}
|
||||
response.ContentLength = std::stoll(httpResponse.GetHeaders().at("content-length"));
|
||||
auto content_type__iterator = httpResponse.GetHeaders().find("content-type");
|
||||
@ -6353,7 +6367,7 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
struct AcquireBlobLeaseOptions
|
||||
{
|
||||
Azure::Core::Nullable<int32_t> Timeout;
|
||||
int32_t LeaseDuration = -1;
|
||||
std::chrono::seconds LeaseDuration;
|
||||
Azure::Core::Nullable<std::string> ProposedLeaseId;
|
||||
Azure::Core::Nullable<Azure::Core::DateTime> IfModifiedSince;
|
||||
Azure::Core::Nullable<Azure::Core::DateTime> IfUnmodifiedSince;
|
||||
@ -6379,7 +6393,7 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
}
|
||||
request.GetUrl().AppendQueryParameter("comp", "lease");
|
||||
request.AddHeader("x-ms-lease-action", "acquire");
|
||||
request.AddHeader("x-ms-lease-duration", std::to_string(options.LeaseDuration));
|
||||
request.AddHeader("x-ms-lease-duration", std::to_string(options.LeaseDuration.count()));
|
||||
if (options.ProposedLeaseId.HasValue())
|
||||
{
|
||||
request.AddHeader("x-ms-proposed-lease-id", options.ProposedLeaseId.GetValue());
|
||||
@ -6665,7 +6679,7 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
struct BreakBlobLeaseOptions
|
||||
{
|
||||
Azure::Core::Nullable<int32_t> Timeout;
|
||||
Azure::Core::Nullable<int32_t> BreakPeriod;
|
||||
Azure::Core::Nullable<std::chrono::seconds> BreakPeriod;
|
||||
Azure::Core::Nullable<Azure::Core::DateTime> IfModifiedSince;
|
||||
Azure::Core::Nullable<Azure::Core::DateTime> IfUnmodifiedSince;
|
||||
Azure::Core::Nullable<std::string> IfMatch;
|
||||
@ -6693,7 +6707,7 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
if (options.BreakPeriod.HasValue())
|
||||
{
|
||||
request.AddHeader(
|
||||
"x-ms-lease-break-period", std::to_string(options.BreakPeriod.GetValue()));
|
||||
"x-ms-lease-break-period", std::to_string(options.BreakPeriod.GetValue().count()));
|
||||
}
|
||||
if (options.IfModifiedSince.HasValue())
|
||||
{
|
||||
|
||||
@ -7,13 +7,15 @@
|
||||
|
||||
namespace Azure { namespace Storage { namespace Blobs {
|
||||
|
||||
const std::chrono::seconds BlobLeaseClient::InfiniteLeaseDuration{-1};
|
||||
|
||||
std::string BlobLeaseClient::CreateUniqueLeaseId()
|
||||
{
|
||||
return Azure::Core::Uuid::CreateUuid().GetUuidString();
|
||||
}
|
||||
|
||||
Azure::Core::Response<Models::AcquireBlobLeaseResult> BlobLeaseClient::Acquire(
|
||||
int32_t duration,
|
||||
std::chrono::seconds duration,
|
||||
const AcquireBlobLeaseOptions& options)
|
||||
{
|
||||
if (m_blobClient.HasValue())
|
||||
|
||||
@ -36,6 +36,9 @@ namespace Azure { namespace Storage { namespace Blobs { namespace Models {
|
||||
const BlobGeoReplicationStatus BlobGeoReplicationStatus::Bootstrap("bootstrap");
|
||||
const BlobGeoReplicationStatus BlobGeoReplicationStatus::Unavailable("unavailable");
|
||||
|
||||
const BlobLeaseDurationType BlobLeaseDurationType::Infinite("infinite");
|
||||
const BlobLeaseDurationType BlobLeaseDurationType::Fixed("fixed");
|
||||
|
||||
const BlobLeaseState BlobLeaseState::Available("available");
|
||||
const BlobLeaseState BlobLeaseState::Leased("leased");
|
||||
const BlobLeaseState BlobLeaseState::Expired("expired");
|
||||
|
||||
@ -3,6 +3,8 @@
|
||||
|
||||
#include "append_blob_client_test.hpp"
|
||||
|
||||
#include <azure/storage/blobs/blob_lease_client.hpp>
|
||||
|
||||
namespace Azure { namespace Storage { namespace Test {
|
||||
|
||||
std::shared_ptr<Azure::Storage::Blobs::AppendBlobClient> AppendBlobClientTest::m_appendBlobClient;
|
||||
@ -194,7 +196,7 @@ namespace Azure { namespace Storage { namespace Test {
|
||||
|
||||
std::string leaseId = Blobs::BlobLeaseClient::CreateUniqueLeaseId();
|
||||
Blobs::BlobLeaseClient leaseClient(appendBlobClient, leaseId);
|
||||
leaseClient.Acquire(30);
|
||||
leaseClient.Acquire(std::chrono::seconds(30));
|
||||
EXPECT_THROW(appendBlobClient.Delete(), StorageException);
|
||||
Blobs::DeleteBlobOptions options;
|
||||
options.AccessConditions.LeaseId = leaseId;
|
||||
|
||||
@ -420,7 +420,7 @@ namespace Azure { namespace Storage { namespace Test {
|
||||
containerClient.Create();
|
||||
|
||||
std::string leaseId1 = Blobs::BlobLeaseClient::CreateUniqueLeaseId();
|
||||
int32_t leaseDuration = 20;
|
||||
auto leaseDuration = std::chrono::seconds(20);
|
||||
Blobs::BlobLeaseClient leaseClient(containerClient, leaseId1);
|
||||
auto aLease = *leaseClient.Acquire(leaseDuration);
|
||||
EXPECT_FALSE(aLease.RequestId.empty());
|
||||
@ -437,7 +437,7 @@ namespace Azure { namespace Storage { namespace Test {
|
||||
auto properties = *containerClient.GetProperties();
|
||||
EXPECT_EQ(properties.LeaseState, Blobs::Models::BlobLeaseState::Leased);
|
||||
EXPECT_EQ(properties.LeaseStatus, Blobs::Models::BlobLeaseStatus::Locked);
|
||||
EXPECT_FALSE(properties.LeaseDuration.GetValue().empty());
|
||||
EXPECT_EQ(properties.LeaseDuration.GetValue(), Blobs::Models::BlobLeaseDurationType::Fixed);
|
||||
|
||||
auto rLease = *leaseClient.Renew();
|
||||
EXPECT_FALSE(rLease.RequestId.empty());
|
||||
@ -463,7 +463,7 @@ namespace Azure { namespace Storage { namespace Test {
|
||||
= Blobs::BlobLeaseClient(containerClient, Blobs::BlobLeaseClient::CreateUniqueLeaseId());
|
||||
aLease = *leaseClient.Acquire(Blobs::BlobLeaseClient::InfiniteLeaseDuration);
|
||||
properties = *containerClient.GetProperties();
|
||||
EXPECT_FALSE(properties.LeaseDuration.GetValue().empty());
|
||||
EXPECT_EQ(properties.LeaseDuration.GetValue(), Blobs::Models::BlobLeaseDurationType::Infinite);
|
||||
auto brokenLease = *leaseClient.Break();
|
||||
EXPECT_FALSE(brokenLease.ETag.empty());
|
||||
EXPECT_TRUE(IsValidTime(brokenLease.LastModified));
|
||||
@ -478,7 +478,7 @@ namespace Azure { namespace Storage { namespace Test {
|
||||
EXPECT_NE(brokenLease.LeaseTime, 0);
|
||||
|
||||
Blobs::BreakBlobLeaseOptions options;
|
||||
options.BreakPeriod = 0;
|
||||
options.BreakPeriod = std::chrono::seconds(0);
|
||||
leaseClient.Break(options);
|
||||
containerClient.Delete();
|
||||
}
|
||||
@ -716,7 +716,7 @@ namespace Azure { namespace Storage { namespace Test {
|
||||
|
||||
std::string leaseId = Blobs::BlobLeaseClient::CreateUniqueLeaseId();
|
||||
auto leaseClient = Blobs::BlobLeaseClient(containerClient, leaseId);
|
||||
leaseClient.Acquire(30);
|
||||
leaseClient.Acquire(std::chrono::seconds(30));
|
||||
EXPECT_THROW(containerClient.Delete(), StorageException);
|
||||
Blobs::DeleteBlobContainerOptions options;
|
||||
options.AccessConditions.LeaseId = leaseId;
|
||||
@ -918,9 +918,9 @@ namespace Azure { namespace Storage { namespace Test {
|
||||
Blobs::AcquireBlobLeaseOptions options;
|
||||
options.AccessConditions.TagConditions = failWhereExpression;
|
||||
auto leaseClient = Blobs::BlobLeaseClient(appendBlobClient, leaseId);
|
||||
EXPECT_THROW(leaseClient.Acquire(60, options), StorageException);
|
||||
EXPECT_THROW(leaseClient.Acquire(std::chrono::seconds(60), options), StorageException);
|
||||
options.AccessConditions.TagConditions = successWhereExpression;
|
||||
EXPECT_NO_THROW(leaseClient.Acquire(60, options));
|
||||
EXPECT_NO_THROW(leaseClient.Acquire(std::chrono::seconds(60), options));
|
||||
|
||||
Blobs::BreakBlobLeaseOptions options2;
|
||||
options2.AccessConditions.TagConditions = failWhereExpression;
|
||||
|
||||
@ -6,6 +6,7 @@
|
||||
#include <future>
|
||||
#include <vector>
|
||||
|
||||
#include <azure/storage/blobs/blob_lease_client.hpp>
|
||||
#include <azure/storage/common/crypt.hpp>
|
||||
#include <azure/storage/common/file_io.hpp>
|
||||
|
||||
@ -161,7 +162,7 @@ namespace Azure { namespace Storage { namespace Test {
|
||||
TEST_F(PageBlobClientTest, Lease)
|
||||
{
|
||||
std::string leaseId1 = Blobs::BlobLeaseClient::CreateUniqueLeaseId();
|
||||
int32_t leaseDuration = 20;
|
||||
auto leaseDuration = std::chrono::seconds(20);
|
||||
auto leaseClient = Blobs::BlobLeaseClient(*m_pageBlobClient, leaseId1);
|
||||
auto aLease = *leaseClient.Acquire(leaseDuration);
|
||||
EXPECT_FALSE(aLease.RequestId.empty());
|
||||
@ -177,7 +178,7 @@ namespace Azure { namespace Storage { namespace Test {
|
||||
auto properties = *m_pageBlobClient->GetProperties();
|
||||
EXPECT_EQ(properties.LeaseState.GetValue(), Blobs::Models::BlobLeaseState::Leased);
|
||||
EXPECT_EQ(properties.LeaseStatus.GetValue(), Blobs::Models::BlobLeaseStatus::Locked);
|
||||
EXPECT_FALSE(properties.LeaseDuration.GetValue().empty());
|
||||
EXPECT_EQ(properties.LeaseDuration.GetValue(), Blobs::Models::BlobLeaseDurationType::Fixed);
|
||||
|
||||
auto rLease = *leaseClient.Renew();
|
||||
EXPECT_FALSE(rLease.RequestId.empty());
|
||||
@ -203,7 +204,7 @@ namespace Azure { namespace Storage { namespace Test {
|
||||
= Blobs::BlobLeaseClient(*m_pageBlobClient, Blobs::BlobLeaseClient::CreateUniqueLeaseId());
|
||||
aLease = *leaseClient.Acquire(Blobs::BlobLeaseClient::InfiniteLeaseDuration);
|
||||
properties = *m_pageBlobClient->GetProperties();
|
||||
EXPECT_FALSE(properties.LeaseDuration.GetValue().empty());
|
||||
EXPECT_EQ(properties.LeaseDuration.GetValue(), Blobs::Models::BlobLeaseDurationType::Infinite);
|
||||
auto brokenLease = *leaseClient.Break();
|
||||
EXPECT_FALSE(brokenLease.ETag.empty());
|
||||
EXPECT_TRUE(IsValidTime(brokenLease.LastModified));
|
||||
@ -218,7 +219,7 @@ namespace Azure { namespace Storage { namespace Test {
|
||||
EXPECT_NE(brokenLease.LeaseTime, 0);
|
||||
|
||||
Blobs::BreakBlobLeaseOptions options;
|
||||
options.BreakPeriod = 0;
|
||||
options.BreakPeriod = std::chrono::seconds(0);
|
||||
leaseClient.Break(options);
|
||||
}
|
||||
|
||||
|
||||
@ -331,7 +331,11 @@ namespace Azure { namespace Storage { namespace Files { namespace DataLake {
|
||||
ret.TransactionalContentHash = std::move(result->TransactionalContentHash);
|
||||
ret.ETag = std::move(result->ETag);
|
||||
ret.LastModified = std::move(result->LastModified);
|
||||
ret.LeaseDuration = std::move(result->LeaseDuration);
|
||||
// FIXME
|
||||
if (result->LeaseDuration.HasValue())
|
||||
{
|
||||
ret.LeaseDuration = result->LeaseDuration.GetValue().Get();
|
||||
}
|
||||
ret.LeaseState = result->LeaseState.HasValue()
|
||||
? FromBlobLeaseState(result->LeaseState.GetValue())
|
||||
: ret.LeaseState;
|
||||
|
||||
@ -359,7 +359,11 @@ namespace Azure { namespace Storage { namespace Files { namespace DataLake {
|
||||
ret.LastModified = std::move(result->LastModified);
|
||||
ret.CreatedOn = std::move(result->CreatedOn);
|
||||
ret.Metadata = std::move(result->Metadata);
|
||||
ret.LeaseDuration = std::move(result->LeaseDuration);
|
||||
// FIXME
|
||||
if (result->LeaseDuration.HasValue())
|
||||
{
|
||||
ret.LeaseDuration = result->LeaseDuration.GetValue().Get();
|
||||
}
|
||||
ret.LeaseState = result->LeaseState.HasValue()
|
||||
? FromBlobLeaseState(result->LeaseState.GetValue())
|
||||
: ret.LeaseState;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user