Skip to content

Commit 30b0cdc

Browse files
Minor changes in VersionedLayerTestBase (#1086)
Change VersionedLayerTestBase to use PlatformUrlsGenerator. Change ApiDefaultResponses to use Apis from olp::client namespace. Relates-To: OLPEDGE-2312 Signed-off-by: Mykhailo Kuchma <[email protected]>
1 parent badf1af commit 30b0cdc

File tree

12 files changed

+143
-130
lines changed

12 files changed

+143
-130
lines changed

olp-cpp-sdk-dataservice-read/tests/VersionedLayerClientImplTest.cpp

Lines changed: 41 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@
4444
namespace {
4545
namespace read = olp::dataservice::read;
4646
namespace model = olp::dataservice::read::model;
47+
using mockserver::ApiDefaultResponses;
48+
using mockserver::ReadDefaultResponses;
4749
using ::testing::_;
4850
using ::testing::Mock;
4951

@@ -168,8 +170,8 @@ TEST(VersionedLayerClientTest, RemoveFromCacheTileKey) {
168170
auto tile_key = olp::geo::TileKey::FromHereTile(kHereTile);
169171
auto root = tile_key.ChangedLevelBy(-depth);
170172

171-
auto stream = std::stringstream(
172-
mockserver::ReadDefaultResponses::GenerateQuadTreeResponse(
173+
auto stream =
174+
std::stringstream(ReadDefaultResponses::GenerateQuadTreeResponse(
173175
root, depth, {9, 10, 11, 12}));
174176
read::QuadTreeIndex quad_tree(root, depth, stream);
175177
auto buffer = quad_tree.GetRawData();
@@ -183,8 +185,7 @@ TEST(VersionedLayerClientTest, RemoveFromCacheTileKey) {
183185
auto data_cache_remove = [&](const std::string& prefix) {
184186
std::string expected_prefix =
185187
kHrn.ToCatalogHRNString() + "::" + kLayerId +
186-
"::" + mockserver::ReadDefaultResponses::GenerateDataHandle(kHereTile) +
187-
"::Data";
188+
"::" + ReadDefaultResponses::GenerateDataHandle(kHereTile) + "::Data";
188189
EXPECT_EQ(prefix, expected_prefix);
189190
return true;
190191
};
@@ -353,22 +354,24 @@ TEST(VersionedLayerClientTest, ProtectThanRelease) {
353354
settings.default_cache_expiration = std::chrono::seconds(2);
354355
settings.network_request_handler = network_mock;
355356
auto version = 4u;
356-
auto api_response = ResponseGenerator::ResourceApis(kCatalog);
357-
PlatformUrlsGenerator generator(api_response, kLayerId);
357+
358+
auto apis = ApiDefaultResponses::GenerateResourceApisResponse(kCatalog);
359+
auto api_response = ResponseGenerator::ResourceApis(apis);
360+
PlatformUrlsGenerator generator(apis, kLayerId);
361+
358362
auto quad_path = generator.VersionedQuadTree("92259", version, 4);
359363
ASSERT_FALSE(quad_path.empty());
360364
auto tile_key = olp::geo::TileKey::FromHereTile(kHereTile);
361-
auto responce_quad =
362-
mockserver::ReadDefaultResponses::GenerateQuadTreeResponse(
363-
tile_key.ChangedLevelBy(-4), 4, {9, 10, 11, 12});
364-
auto tile_path = generator.DataBlob(
365-
mockserver::ReadDefaultResponses::GenerateDataHandle(kHereTile));
365+
auto responce_quad = ReadDefaultResponses::GenerateQuadTreeResponse(
366+
tile_key.ChangedLevelBy(-4), 4, {9, 10, 11, 12});
367+
auto tile_path =
368+
generator.DataBlob(ReadDefaultResponses::GenerateDataHandle(kHereTile));
366369
ASSERT_FALSE(tile_path.empty());
367370
auto tile2_path = generator.DataBlob(
368-
mockserver::ReadDefaultResponses::GenerateDataHandle(kOtherHereTile2));
371+
ReadDefaultResponses::GenerateDataHandle(kOtherHereTile2));
369372
ASSERT_FALSE(tile2_path.empty());
370373
auto other_tile_path = generator.DataBlob(
371-
mockserver::ReadDefaultResponses::GenerateDataHandle(kOtherHereTile));
374+
ReadDefaultResponses::GenerateDataHandle(kOtherHereTile));
372375
ASSERT_FALSE(other_tile_path.empty());
373376

374377
read::VersionedLayerClientImpl client(kHrn, kLayerId, boost::none, settings);
@@ -386,8 +389,7 @@ TEST(VersionedLayerClientTest, ProtectThanRelease) {
386389
olp::http::NetworkResponse().WithStatus(
387390
olp::http::HttpStatusCode::OK),
388391
olp::serializer::serialize(
389-
mockserver::ReadDefaultResponses::GenerateVersionResponse(
390-
version))));
392+
ReadDefaultResponses::GenerateVersionResponse(version))));
391393

392394
EXPECT_CALL(*network_mock, Send(IsGetRequest(quad_path), _, _, _, _))
393395
.WillOnce(ReturnHttpResponse(olp::http::NetworkResponse().WithStatus(
@@ -552,14 +554,15 @@ TEST(VersionedLayerClientTest, PrefetchPartitionsSplitted) {
552554
{
553555
SCOPED_TRACE("Prefetch multiple partitions");
554556

555-
auto api_response = ResponseGenerator::ResourceApis(kCatalog);
556-
PlatformUrlsGenerator generator(api_response, kLayerId);
557+
auto apis = ApiDefaultResponses::GenerateResourceApisResponse(kCatalog);
558+
auto api_response = ResponseGenerator::ResourceApis(apis);
559+
PlatformUrlsGenerator generator(apis, kLayerId);
560+
557561
auto partitions_response1 =
558-
mockserver::ReadDefaultResponses::GeneratePartitionsResponse(
559-
partitions_count / 2);
562+
ReadDefaultResponses::GeneratePartitionsResponse(partitions_count / 2);
560563
auto partitions_response2 =
561-
mockserver::ReadDefaultResponses::GeneratePartitionsResponse(
562-
partitions_count / 2, partitions_count / 2);
564+
ReadDefaultResponses::GeneratePartitionsResponse(partitions_count / 2,
565+
partitions_count / 2);
563566

564567
EXPECT_CALL(*network_mock, Send(IsGetRequest(kUrlLookup), _, _, _, _))
565568
.WillOnce(ReturnHttpResponse(olp::http::NetworkResponse().WithStatus(
@@ -574,8 +577,7 @@ TEST(VersionedLayerClientTest, PrefetchPartitionsSplitted) {
574577
olp::http::NetworkResponse().WithStatus(
575578
olp::http::HttpStatusCode::OK),
576579
olp::serializer::serialize(
577-
mockserver::ReadDefaultResponses::GenerateVersionResponse(
578-
version))));
580+
ReadDefaultResponses::GenerateVersionResponse(version))));
579581

580582
auto partitions_path1 = generator.PartitionsQuery(partitions1, version);
581583
ASSERT_FALSE(partitions_path1.empty());
@@ -673,11 +675,13 @@ TEST(VersionedLayerClientTest, PrefetchPartitionsSomeFail) {
673675
for (auto i = 0u; i < partitions_count; i++) {
674676
partitions.emplace_back(std::to_string(i));
675677
}
676-
auto api_response = ResponseGenerator::ResourceApis(kCatalog);
677-
PlatformUrlsGenerator generator(api_response, kLayerId);
678+
679+
auto apis = ApiDefaultResponses::GenerateResourceApisResponse(kCatalog);
680+
auto api_response = ResponseGenerator::ResourceApis(apis);
681+
PlatformUrlsGenerator generator(apis, kLayerId);
682+
678683
auto partitions_response =
679-
mockserver::ReadDefaultResponses::GeneratePartitionsResponse(
680-
partitions_count);
684+
ReadDefaultResponses::GeneratePartitionsResponse(partitions_count);
681685
const auto request =
682686
olp::dataservice::read::PrefetchPartitionsRequest().WithPartitionIds(
683687
partitions);
@@ -700,8 +704,7 @@ TEST(VersionedLayerClientTest, PrefetchPartitionsSomeFail) {
700704
olp::http::NetworkResponse().WithStatus(
701705
olp::http::HttpStatusCode::OK),
702706
olp::serializer::serialize(
703-
mockserver::ReadDefaultResponses::GenerateVersionResponse(
704-
version))));
707+
ReadDefaultResponses::GenerateVersionResponse(version))));
705708

706709
EXPECT_CALL(*network_mock, Send(IsGetRequest(partitions_path), _, _, _, _))
707710
.WillOnce(ReturnHttpResponse(
@@ -808,8 +811,11 @@ TEST(VersionedLayerClientTest, PrefetchPartitionsFail) {
808811
for (auto i = 0u; i < partitions_count; i++) {
809812
partitions.emplace_back(std::to_string(i));
810813
}
811-
auto api_response = ResponseGenerator::ResourceApis(kCatalog);
812-
PlatformUrlsGenerator generator(api_response, kLayerId);
814+
815+
auto apis = ApiDefaultResponses::GenerateResourceApisResponse(kCatalog);
816+
auto api_response = ResponseGenerator::ResourceApis(apis);
817+
PlatformUrlsGenerator generator(apis, kLayerId);
818+
813819
const auto request =
814820
olp::dataservice::read::PrefetchPartitionsRequest().WithPartitionIds(
815821
partitions);
@@ -851,8 +857,7 @@ TEST(VersionedLayerClientTest, PrefetchPartitionsFail) {
851857
olp::http::NetworkResponse().WithStatus(
852858
olp::http::HttpStatusCode::BAD_REQUEST),
853859
olp::serializer::serialize(
854-
mockserver::ReadDefaultResponses::GenerateVersionResponse(
855-
version))));
860+
ReadDefaultResponses::GenerateVersionResponse(version))));
856861

857862
std::promise<olp::dataservice::read::PrefetchPartitionsResponse> promise;
858863
auto future = promise.get_future();
@@ -881,12 +886,10 @@ TEST(VersionedLayerClientTest, PrefetchPartitionsFail) {
881886
olp::http::NetworkResponse().WithStatus(
882887
olp::http::HttpStatusCode::OK),
883888
olp::serializer::serialize(
884-
mockserver::ReadDefaultResponses::GenerateVersionResponse(
885-
version))));
889+
ReadDefaultResponses::GenerateVersionResponse(version))));
886890

887891
auto partitions_response =
888-
mockserver::ReadDefaultResponses::GeneratePartitionsResponse(
889-
partitions_count);
892+
ReadDefaultResponses::GeneratePartitionsResponse(partitions_count);
890893
EXPECT_CALL(*network_mock, Send(IsGetRequest(partitions_path), _, _, _, _))
891894
.WillOnce(ReturnHttpResponse(
892895
olp::http::NetworkResponse().WithStatus(
@@ -941,8 +944,7 @@ TEST(VersionedLayerClientTest, PrefetchPartitionsFail) {
941944
SCOPED_TRACE("Empty data handles");
942945

943946
auto partitions_response =
944-
mockserver::ReadDefaultResponses::GeneratePartitionsResponse(
945-
partitions_count);
947+
ReadDefaultResponses::GeneratePartitionsResponse(partitions_count);
946948
auto& mutable_partitions = partitions_response.GetMutablePartitions();
947949
// force empty data handles
948950
for (auto& partition : mutable_partitions) {

tests/common/ApiDefaultResponses.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,13 @@
2323
#include <utility>
2424
#include <vector>
2525

26-
#include "generated/model/Api.h"
26+
#include <olp/core/client/model/Api.h>
2727

2828
namespace mockserver {
2929

3030
class ApiDefaultResponses {
3131
public:
32-
static olp::dataservice::read::model::Apis GenerateResourceApisResponse(
32+
static olp::client::Apis GenerateResourceApisResponse(
3333
std::string catalog) {
3434
return GenerateApisResponse({{"blob", "v1"},
3535
{"index", "v1"},
@@ -44,7 +44,7 @@ class ApiDefaultResponses {
4444
catalog);
4545
}
4646

47-
static olp::dataservice::read::model::Apis GeneratePlatformApisResponse() {
47+
static olp::client::Apis GeneratePlatformApisResponse() {
4848
return GenerateApisResponse({{"account", "v1"},
4949
{"artifact", "v1"},
5050
{"authentication", "v1"},
@@ -57,10 +57,10 @@ class ApiDefaultResponses {
5757
{"pipelines", "v2"}});
5858
}
5959

60-
static olp::dataservice::read::model::Apis GenerateApisResponse(
60+
static olp::client::Apis GenerateApisResponse(
6161
std::vector<std::pair<std::string, std::string>> api_types,
6262
std::string catalog = "") {
63-
olp::dataservice::read::model::Apis apis(api_types.size());
63+
olp::client::Apis apis(api_types.size());
6464
std::string version = "v1";
6565
if (!catalog.empty()) {
6666
catalog.insert(0, "/catalogs/");

tests/common/PlatformUrlsGenerator.cpp

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -19,21 +19,19 @@
1919

2020
#include "PlatformUrlsGenerator.h"
2121

22-
#include <string>
23-
#include <vector>
24-
25-
// clang-format off
26-
#include "generated/parser/ApiParser.h"
27-
#include <olp/core/generated/parser/JsonParser.h>
28-
// clang-format on
2922
#include <olp/dataservice/read/model/Partitions.h>
3023
#include <olp/dataservice/read/model/VersionResponse.h>
31-
#include "generated/model/Api.h"
3224

33-
PlatformUrlsGenerator::PlatformUrlsGenerator(const std::string& apis,
25+
PlatformUrlsGenerator::PlatformUrlsGenerator(olp::client::Apis apis,
26+
const std::string& layer)
27+
: apis_(std::make_shared<olp::client::Apis>(apis)), layer_(layer) {}
28+
29+
PlatformUrlsGenerator::PlatformUrlsGenerator(const std::string& endpoint,
30+
const std::string& catalog,
3431
const std::string& layer)
35-
: apis_(std::make_shared<olp::dataservice::read::model::Apis>(
36-
olp::parser::parse<olp::dataservice::read::model::Apis>(apis))),
32+
: apis_(nullptr),
33+
http_prefix_(endpoint),
34+
catalog_(catalog),
3735
layer_(layer) {}
3836

3937
std::string PlatformUrlsGenerator::PartitionsQuery(
@@ -64,15 +62,20 @@ std::string PlatformUrlsGenerator::VersionedQuadTree(const std::string& quadkey,
6462
return FullPath("query", path);
6563
}
6664

67-
std::string PlatformUrlsGenerator::FullPath(const std::string& api_type,
65+
std::string PlatformUrlsGenerator::FullPath(const std::string& service,
6866
const std::string& path) {
69-
auto it = find_if(apis_->begin(), apis_->end(),
70-
[&](olp::dataservice::read::model::Api api) {
71-
return api.GetApi() == api_type;
72-
});
73-
if (it == apis_->end()) {
74-
return {};
67+
std::string url;
68+
if (!apis_) {
69+
url = http_prefix_ + "/catalogs/" + catalog_;
70+
} else {
71+
auto it = find_if(apis_->begin(), apis_->end(), [&](olp::client::Api api) {
72+
return api.GetApi() == service;
73+
});
74+
if (it == apis_->end()) {
75+
assert(false);
76+
return {};
77+
}
78+
url = it->GetBaseUrl();
7579
}
76-
auto url = it->GetBaseUrl();
7780
return url.append(path);
7881
}

tests/common/PlatformUrlsGenerator.h

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -23,23 +23,16 @@
2323
#include <string>
2424
#include <vector>
2525

26+
#include <olp/core/client/model/Api.h>
2627
#include <olp/dataservice/read/PartitionsRequest.h>
2728
#include <olp/dataservice/read/model/VersionResponse.h>
2829

29-
namespace olp {
30-
namespace dataservice {
31-
namespace read {
32-
namespace model {
33-
class Api;
34-
using Apis = std::vector<Api>;
35-
} // namespace model
36-
} // namespace read
37-
} // namespace dataservice
38-
} // namespace olp
39-
4030
class PlatformUrlsGenerator {
4131
public:
42-
PlatformUrlsGenerator(const std::string& apis, const std::string& layer);
32+
PlatformUrlsGenerator(olp::client::Apis apis, const std::string& layer);
33+
34+
PlatformUrlsGenerator(const std::string& endpoint, const std::string& catalog,
35+
const std::string& layer);
4336

4437
std::string PartitionsQuery(
4538
const olp::dataservice::read::PartitionsRequest::PartitionIds& partitions,
@@ -53,9 +46,10 @@ class PlatformUrlsGenerator {
5346
uint64_t depth);
5447

5548
private:
56-
std::string FullPath(const std::string& api_type, const std::string& path);
49+
std::string FullPath(const std::string& service, const std::string& path);
5750

58-
private:
59-
std::shared_ptr<olp::dataservice::read::model::Apis> apis_;
60-
std::string layer_;
51+
std::shared_ptr<olp::client::Apis> apis_;
52+
const std::string http_prefix_;
53+
const std::string catalog_;
54+
const std::string layer_;
6155
};

tests/common/ResponseGenerator.cpp

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,26 @@
3737
// clang-format on
3838

3939
std::string ResponseGenerator::ResourceApis(const std::string& catalog) {
40-
return olp::serializer::serialize(
40+
return ResourceApis(
4141
mockserver::ApiDefaultResponses::GenerateResourceApisResponse(catalog));
4242
}
4343

44+
std::string ResponseGenerator::ResourceApis(const olp::client::Apis& apis) {
45+
// Temporary convert to another model that can be serialized
46+
olp::dataservice::read::model::Apis converted_apis;
47+
std::transform(std::begin(apis), std::end(apis),
48+
std::back_inserter(converted_apis),
49+
[](const olp::client::Api& api) {
50+
olp::dataservice::read::model::Api new_api;
51+
new_api.SetApi(api.GetApi());
52+
new_api.SetBaseUrl(api.GetBaseUrl());
53+
new_api.SetParameters(api.GetParameters());
54+
new_api.SetVersion(api.GetVersion());
55+
return new_api;
56+
});
57+
return olp::serializer::serialize(converted_apis);
58+
}
59+
4460
std::string ResponseGenerator::Version(uint32_t version) {
4561
return olp::serializer::serialize(
4662
mockserver::ReadDefaultResponses::GenerateVersionResponse(version));

tests/common/ResponseGenerator.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,13 @@
2222
#include <string>
2323
#include <vector>
2424

25+
#include <olp/core/client/model/Api.h>
2526
#include <olp/dataservice/read/model/Partitions.h>
2627

2728
class ResponseGenerator {
2829
public:
2930
static std::string ResourceApis(const std::string& catalog);
31+
static std::string ResourceApis(const olp::client::Apis& apis);
3032
static std::string Version(uint32_t version);
3133
static std::string Partitions(
3234
const olp::dataservice::read::model::Partitions& partitions_response);

tests/functional/utils/MockServerHelper.cpp

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
#include <utility>
2222
#include <vector>
2323

24+
#include "ResponseGenerator.h"
25+
2426
namespace mockserver {
2527

2628
void MockServerHelper::MockGetError(olp::client::ApiError error,
@@ -54,16 +56,15 @@ void MockServerHelper::MockGetVersionResponse(
5456
"/metadata/v1/catalogs/" + catalog_ + "/versions/latest");
5557
}
5658

57-
void MockServerHelper::MockLookupResourceApiResponse(
58-
olp::dataservice::read::model::Apis data) {
59-
MockGetResponse(std::move(data),
60-
"/lookup/v1/resources/" + catalog_ + "/apis");
59+
void MockServerHelper::MockLookupResourceApiResponse(olp::client::Apis data) {
60+
mock_server_client_.MockResponse("GET",
61+
"/lookup/v1/resources/" + catalog_ + "/apis",
62+
ResponseGenerator::ResourceApis(data));
6163
}
6264

63-
void MockServerHelper::MockLookupPlatformApiResponse(
64-
olp::dataservice::read::model::Apis data) {
65-
MockGetResponse<olp::dataservice::read::model::Api>(
66-
std::move(data), "/lookup/v1/platform/apis");
65+
void MockServerHelper::MockLookupPlatformApiResponse(olp::client::Apis data) {
66+
mock_server_client_.MockResponse("GET", "/lookup/v1/platform/apis",
67+
ResponseGenerator::ResourceApis(data));
6768
}
6869

6970
void MockServerHelper::MockGetResponse(const std::string& layer,

0 commit comments

Comments
 (0)