Skip to content

Commit a64748f

Browse files
author
Liubov Didkivska
authored
Move tests to mock server (#1037)
Move GetDataFromPartitionSync and GetDataFromPartitionAsync to work on mock server. Add helper class. Move host and port to environment variables. Relates-To: OLPEDGE-1971 Signed-off-by: Liubov Didkivska <ext-liubov.didkivska@here.com>
1 parent b2b430c commit a64748f

11 files changed

+257
-148
lines changed

scripts/linux/fv/gitlab-olp-cpp-sdk-functional-test-mock.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ update-ca-certificates
5151
echo ">>> Starting Functional Test against Mock Server... >>>"
5252
$REPO_HOME/build/tests/functional/olp-cpp-sdk-functional-tests \
5353
--gtest_output="xml:$REPO_HOME/reports/olp-functional-test-mock-report.xml" \
54-
--gtest_filter="VersionedLayerClientTest.GetPartitions":"VersionedLayerClientTest.GetAggregatedData":"CatalogClientTest.*":"VersionedLayerClientPrefetchTest.Prefetch":"VersionedLayerClientProtectTest.*"
54+
--gtest_filter="VersionedLayerClientTest.GetPartitions":"VersionedLayerClientTest.GetAggregatedData":"CatalogClientTest.*":"VersionedLayerClientPrefetchTest.Prefetch":"VersionedLayerClientProtectTest.*":"VersionedLayerClientGetDataTest.*"
5555
result=$?
5656
echo "Functional test with Mock finished with status: ${result}"
5757

scripts/linux/fv/gitlab-olp-cpp-sdk-functional-test.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
echo ">>> Functional Test ... >>>"
2121
$REPO_HOME/build/tests/functional/olp-cpp-sdk-functional-tests \
2222
--gtest_output="xml:$REPO_HOME/reports/olp-functional-test-report.xml" \
23-
--gtest_filter="-ArcGisAuthenticationTest.SignInArcGis":"FacebookAuthenticationTest.SignInFacebook":"VersionedLayerClientTest.GetPartitions":"VersionedLayerClientTest.GetAggregatedData":"CatalogClientTest.*":"VersionedLayerClientPrefetchTest.Prefetch":"VersionedLayerClientProtectTest.*"
23+
--gtest_filter="-ArcGisAuthenticationTest.SignInArcGis":"FacebookAuthenticationTest.SignInFacebook":"VersionedLayerClientTest.GetPartitions":"VersionedLayerClientTest.GetAggregatedData":"CatalogClientTest.*":"VersionedLayerClientPrefetchTest.Prefetch":"VersionedLayerClientProtectTest.*":"VersionedLayerClientGetDataTest.*"
2424
#The test VersionedLayerClientTest.GetPartitions uses mock server and it will be started in separate script. (OLPEDGE-732)
2525
result=$?
2626
echo "Functional test finished with status: ${result}"

scripts/linux/fv/olp-cpp-sdk-functional-test.variables

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,6 @@ export dataservice_read_volatile_test_prefetch_appid="${dataservice_read_volatil
3131
export dataservice_read_volatile_test_prefetch_secret="${dataservice_read_volatile_test_prefetch_secret}"
3232
export dataservice_read_volatile_test_prefetch_catalog="hrn:here:data::olp-here-test:test-volatile-prefetch"
3333
export dataservice_read_volatile_prefetch_layer="volatile_prefetch_layer"
34+
35+
export mock_server_host="localhost"
36+
export mock_server_port="1080"

tests/common/ReadDefaultResponses.h

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -45,24 +45,32 @@ class ReadDefaultResponses {
4545
return version_responce;
4646
}
4747

48+
static std::string GenerateDataHandle(const std::string& partition) {
49+
return partition + "-data-handle";
50+
}
51+
52+
static olp::dataservice::read::model::Partition GeneratePartitionResponse(
53+
const std::string& id) {
54+
olp::dataservice::read::model::Partition partition;
55+
partition.SetPartition(id);
56+
partition.SetDataHandle(GenerateDataHandle(id));
57+
return partition;
58+
}
59+
4860
static olp::dataservice::read::model::Partitions GeneratePartitionsResponse(
4961
size_t size = 10) {
50-
std::vector<olp::dataservice::read::model::Partition> partitions_vect(size);
51-
for (size_t i = 0; i < partitions_vect.size(); i++) {
52-
partitions_vect[i].SetPartition(std::to_string(i));
53-
partitions_vect[i].SetDataHandle(std::to_string(i) + "-" +
54-
std::to_string(i * 100));
62+
std::vector<olp::dataservice::read::model::Partition> partitions_vect;
63+
partitions_vect.reserve(size);
64+
for (size_t i = 0; i < size; i++) {
65+
partitions_vect.emplace_back(
66+
GeneratePartitionResponse(std::to_string(i)));
5567
}
5668

5769
olp::dataservice::read::model::Partitions partitions;
5870
partitions.SetPartitions(partitions_vect);
5971
return partitions;
6072
}
6173

62-
static std::string GenerateDataHandle(const std::string& partition) {
63-
return partition + "-data-handle";
64-
}
65-
6674
static std::string GenerateData() {
6775
std::string result =
6876
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

tests/functional/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ set(OLP_SDK_FUNCTIONAL_TESTS_SOURCES
2424
./olp-cpp-sdk-dataservice-read/VersionedLayerClientPrefetchTest.cpp
2525
./olp-cpp-sdk-dataservice-read/VersionedLayerClientProtectTest.cpp
2626
./olp-cpp-sdk-dataservice-read/DataserviceReadVersionedLayerClientTest.cpp
27+
./olp-cpp-sdk-dataservice-read/VersionedLayerClientGetDataTest.cpp
2728
./olp-cpp-sdk-dataservice-read/DataserviceReadVolatileLayerClientTest.cpp
2829
./olp-cpp-sdk-dataservice-write/DataserviceWriteIndexLayerClientTest.cpp
2930
./olp-cpp-sdk-dataservice-write/DataserviceWriteStreamLayerClientCacheTest.cpp

tests/functional/olp-cpp-sdk-dataservice-read/DataserviceReadVersionedLayerClientTest.cpp

Lines changed: 0 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -89,35 +89,6 @@ class DataserviceReadVersionedLayerClientTest : public ::testing::Test {
8989
std::shared_ptr<olp::client::OlpClientSettings> settings_;
9090
};
9191

92-
TEST_F(DataserviceReadVersionedLayerClientTest, GetDataFromPartitionAsync) {
93-
auto catalog = olp::client::HRN::FromString(
94-
CustomParameters::getArgument("dataservice_read_test_versioned_catalog"));
95-
auto layer =
96-
CustomParameters::getArgument("dataservice_read_test_versioned_layer");
97-
98-
auto catalog_client =
99-
std::make_unique<olp::dataservice::read::VersionedLayerClient>(
100-
catalog, layer, boost::none, *settings_);
101-
ASSERT_TRUE(catalog_client);
102-
103-
std::promise<dataservice_read::DataResponse> promise;
104-
std::future<dataservice_read::DataResponse> future = promise.get_future();
105-
auto partition = CustomParameters::getArgument(
106-
"dataservice_read_test_versioned_partition");
107-
auto token = catalog_client->GetData(
108-
olp::dataservice::read::DataRequest().WithPartitionId(partition),
109-
[&promise](dataservice_read::DataResponse response) {
110-
promise.set_value(response);
111-
});
112-
113-
ASSERT_NE(future.wait_for(kWaitTimeout), std::future_status::timeout);
114-
dataservice_read::DataResponse response = future.get();
115-
116-
EXPECT_SUCCESS(response);
117-
ASSERT_TRUE(response.GetResult() != nullptr);
118-
ASSERT_NE(response.GetResult()->size(), 0u);
119-
}
120-
12192
TEST_F(DataserviceReadVersionedLayerClientTest,
12293
GetDataFromPartitionLatestVersionAsync) {
12394
auto catalog = olp::client::HRN::FromString(
@@ -148,32 +119,6 @@ TEST_F(DataserviceReadVersionedLayerClientTest,
148119
ASSERT_NE(response.GetResult()->size(), 0u);
149120
}
150121

151-
TEST_F(DataserviceReadVersionedLayerClientTest, GetDataFromPartitionSync) {
152-
settings_->task_scheduler.reset();
153-
154-
auto catalog = olp::client::HRN::FromString(
155-
CustomParameters::getArgument("dataservice_read_test_versioned_catalog"));
156-
auto layer =
157-
CustomParameters::getArgument("dataservice_read_test_versioned_layer");
158-
159-
auto catalog_client =
160-
std::make_unique<olp::dataservice::read::VersionedLayerClient>(
161-
catalog, layer, boost::none, *settings_);
162-
ASSERT_TRUE(catalog_client);
163-
164-
dataservice_read::DataResponse response;
165-
auto partition = CustomParameters::getArgument(
166-
"dataservice_read_test_versioned_partition");
167-
auto token = catalog_client->GetData(
168-
olp::dataservice::read::DataRequest().WithPartitionId(partition),
169-
[&response](dataservice_read::DataResponse resp) {
170-
response = std::move(resp);
171-
});
172-
EXPECT_SUCCESS(response);
173-
ASSERT_TRUE(response.GetResult() != nullptr);
174-
ASSERT_NE(response.GetResult()->size(), 0u);
175-
}
176-
177122
TEST_F(DataserviceReadVersionedLayerClientTest, PrefetchWideRange) {
178123
const auto catalog =
179124
olp::client::HRN::FromString(CustomParameters::getArgument(
Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
/*
2+
* Copyright (C) 2020 HERE Europe B.V.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*
16+
* SPDX-License-Identifier: Apache-2.0
17+
* License-Filename: LICENSE
18+
*/
19+
20+
#include <gtest/gtest.h>
21+
#include <olp/core/client/OlpClientSettings.h>
22+
#include <olp/core/client/OlpClientSettingsFactory.h>
23+
#include <olp/dataservice/read/VersionedLayerClient.h>
24+
// clang-format off
25+
#include "generated/serializer/PartitionsSerializer.h"
26+
#include "generated/serializer/JsonSerializer.h"
27+
// clang-format on
28+
#include "SetupMockServer.h"
29+
#include "ApiDefaultResponses.h"
30+
#include "MockServerHelper.h"
31+
#include "ReadDefaultResponses.h"
32+
#include "Utils.h"
33+
34+
namespace {
35+
36+
const auto kTestHrn = "hrn:here:data::olp-here-test:hereos-internal-test";
37+
const auto kLayer = "testlayer";
38+
const auto kVersion = 44;
39+
constexpr auto kWaitTimeout = std::chrono::seconds(10);
40+
const auto kPartitionsResponsePath =
41+
"/query/v1/catalogs/hrn:here:data::olp-here-test:hereos-internal-test/"
42+
"layers/testlayer/partitions";
43+
44+
class VersionedLayerClientGetDataTest : public ::testing::Test {
45+
protected:
46+
void SetUp() override {
47+
auto network = olp::client::OlpClientSettingsFactory::
48+
CreateDefaultNetworkRequestHandler();
49+
settings_ = mockserver::SetupMockServer::CreateSettings(network);
50+
mock_server_client_ =
51+
mockserver::SetupMockServer::CreateMockServer(network, kTestHrn);
52+
}
53+
54+
void TearDown() override {
55+
auto network = std::move(settings_->network_request_handler);
56+
settings_.reset();
57+
mock_server_client_.reset();
58+
}
59+
60+
std::shared_ptr<olp::client::OlpClientSettings> settings_;
61+
std::shared_ptr<mockserver::MockServerHelper> mock_server_client_;
62+
};
63+
64+
TEST_F(VersionedLayerClientGetDataTest, GetDataFromPartitionSync) {
65+
olp::client::HRN hrn(kTestHrn);
66+
auto partition = std::to_string(0);
67+
const auto data = mockserver::ReadDefaultResponses::GenerateData();
68+
{
69+
mock_server_client_->MockAuth();
70+
mock_server_client_->MockLookupResourceApiResponse(
71+
mockserver::ApiDefaultResponses::GenerateResourceApisResponse(
72+
kTestHrn));
73+
mock_server_client_->MockGetVersionResponse(
74+
mockserver::ReadDefaultResponses::GenerateVersionResponse(kVersion));
75+
mock_server_client_->MockGetResponse(
76+
mockserver::ReadDefaultResponses::GeneratePartitionsResponse(1),
77+
kPartitionsResponsePath);
78+
mock_server_client_->MockGetResponse(
79+
kLayer, mockserver::ReadDefaultResponses::GenerateDataHandle(partition),
80+
data);
81+
}
82+
83+
auto catalog_client = olp::dataservice::read::VersionedLayerClient(
84+
hrn, kLayer, boost::none, *settings_);
85+
86+
auto future = catalog_client.GetData(
87+
olp::dataservice::read::DataRequest().WithPartitionId(partition));
88+
auto response = future.GetFuture().get();
89+
EXPECT_SUCCESS(response);
90+
ASSERT_TRUE(response.GetResult() != nullptr);
91+
ASSERT_EQ(response.GetResult()->size(), data.size());
92+
93+
EXPECT_TRUE(mock_server_client_->Verify());
94+
}
95+
96+
TEST_F(VersionedLayerClientGetDataTest, GetDataFromPartitionAsync) {
97+
olp::client::HRN hrn(kTestHrn);
98+
auto partition = std::to_string(0);
99+
const auto data = mockserver::ReadDefaultResponses::GenerateData();
100+
{
101+
mock_server_client_->MockLookupResourceApiResponse(
102+
mockserver::ApiDefaultResponses::GenerateResourceApisResponse(
103+
kTestHrn));
104+
mock_server_client_->MockGetVersionResponse(
105+
mockserver::ReadDefaultResponses::GenerateVersionResponse(kVersion));
106+
mock_server_client_->MockGetResponse(
107+
mockserver::ReadDefaultResponses::GeneratePartitionsResponse(1),
108+
kPartitionsResponsePath);
109+
mock_server_client_->MockGetResponse(
110+
kLayer, mockserver::ReadDefaultResponses::GenerateDataHandle(partition),
111+
data);
112+
}
113+
114+
auto catalog_client = olp::dataservice::read::VersionedLayerClient(
115+
hrn, kLayer, boost::none, *settings_);
116+
117+
std::promise<olp::dataservice::read::DataResponse> promise;
118+
std::future<olp::dataservice::read::DataResponse> future =
119+
promise.get_future();
120+
121+
auto token = catalog_client.GetData(
122+
olp::dataservice::read::DataRequest().WithPartitionId(partition),
123+
[&promise](olp::dataservice::read::DataResponse response) {
124+
promise.set_value(response);
125+
});
126+
ASSERT_NE(future.wait_for(kWaitTimeout), std::future_status::timeout);
127+
128+
olp::dataservice::read::DataResponse response = future.get();
129+
EXPECT_SUCCESS(response);
130+
ASSERT_TRUE(response.GetResult() != nullptr);
131+
ASSERT_EQ(response.GetResult()->size(), data.size());
132+
133+
EXPECT_TRUE(mock_server_client_->Verify());
134+
}
135+
136+
} // namespace

tests/functional/olp-cpp-sdk-dataservice-read/VersionedLayerClientPrefetchTest.cpp

Lines changed: 5 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -26,35 +26,24 @@
2626
#include <olp/dataservice/read/FetchOptions.h>
2727
#include <olp/dataservice/read/VersionedLayerClient.h>
2828
#include <string>
29-
#include <testutils/CustomParameters.hpp>
3029
#include "ApiDefaultResponses.h"
3130
#include "MockServerHelper.h"
3231
#include "ReadDefaultResponses.h"
32+
#include "SetupMockServer.h"
3333
#include "Utils.h"
3434

3535
namespace {
3636

37-
const auto kMockServerHost = "localhost";
38-
const auto kMockServerPort = 1080;
3937
const auto kTestHrn = "hrn:here:data::olp-here-test:hereos-internal-test";
4038

4139
class VersionedLayerClientPrefetchTest : public ::testing::Test {
4240
protected:
4341
void SetUp() override {
4442
auto network = olp::client::OlpClientSettingsFactory::
4543
CreateDefaultNetworkRequestHandler();
46-
47-
settings_ = std::make_shared<olp::client::OlpClientSettings>();
48-
settings_->network_request_handler = network;
49-
settings_->task_scheduler =
50-
olp::client::OlpClientSettingsFactory::CreateDefaultTaskScheduler();
51-
// setup proxy
52-
settings_->proxy_settings =
53-
olp::http::NetworkProxySettings()
54-
.WithHostname(kMockServerHost)
55-
.WithPort(kMockServerPort)
56-
.WithType(olp::http::NetworkProxySettings::Type::HTTP);
57-
SetUpMockServer(network);
44+
settings_ = mockserver::SetupMockServer::CreateSettings(network);
45+
mock_server_client_ =
46+
mockserver::SetupMockServer::CreateMockServer(network, kTestHrn);
5847
}
5948

6049
void TearDown() override {
@@ -63,14 +52,6 @@ class VersionedLayerClientPrefetchTest : public ::testing::Test {
6352
mock_server_client_.reset();
6453
}
6554

66-
void SetUpMockServer(std::shared_ptr<olp::http::Network> network) {
67-
// create client to set mock server expectations
68-
olp::client::OlpClientSettings olp_client_settings;
69-
olp_client_settings.network_request_handler = network;
70-
mock_server_client_ = std::make_shared<mockserver::MockServerHelper>(
71-
olp_client_settings, kTestHrn);
72-
}
73-
7455
std::shared_ptr<olp::client::OlpClientSettings> settings_;
7556
std::shared_ptr<mockserver::MockServerHelper> mock_server_client_;
7657
};
@@ -96,6 +77,7 @@ TEST_F(VersionedLayerClientPrefetchTest, Prefetch) {
9677
.WithMinLevel(12)
9778
.WithMaxLevel(15);
9879
{
80+
mock_server_client_->MockAuth();
9981
mock_server_client_->MockLookupResourceApiResponse(
10082
mockserver::ApiDefaultResponses::GenerateResourceApisResponse(
10183
kTestHrn));

tests/functional/olp-cpp-sdk-dataservice-read/VersionedLayerClientProtectTest.cpp

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,15 @@
2424
#include <olp/core/porting/make_unique.h>
2525
#include <olp/core/utils/Dir.h>
2626
#include <olp/dataservice/read/VersionedLayerClient.h>
27+
#include <testutils/CustomParameters.hpp>
2728
#include "ApiDefaultResponses.h"
2829
#include "MockServerHelper.h"
2930
#include "ReadDefaultResponses.h"
31+
#include "SetupMockServer.h"
3032
#include "Utils.h"
3133

3234
namespace {
3335

34-
const auto kMockServerHost = "localhost";
35-
const auto kMockServerPort = 1080;
3636
const auto kTestHrn = "hrn:here:data::olp-here-test:hereos-internal-test";
3737

3838
class VersionedLayerClientProtectTest : public ::testing::Test {
@@ -57,11 +57,9 @@ class VersionedLayerClientProtectTest : public ::testing::Test {
5757
settings_->network_request_handler = network;
5858
// setup proxy
5959
settings_->proxy_settings =
60-
olp::http::NetworkProxySettings()
61-
.WithHostname(kMockServerHost)
62-
.WithPort(kMockServerPort)
63-
.WithType(olp::http::NetworkProxySettings::Type::HTTP);
64-
SetUpMockServer(network);
60+
mockserver::SetupMockServer::CreateProxySettings();
61+
mock_server_client_ =
62+
mockserver::SetupMockServer::CreateMockServer(network, kTestHrn);
6563
}
6664

6765
void TearDown() override {
@@ -71,14 +69,6 @@ class VersionedLayerClientProtectTest : public ::testing::Test {
7169
olp::utils::Dir::remove(cache_path_);
7270
}
7371

74-
void SetUpMockServer(std::shared_ptr<olp::http::Network> network) {
75-
// create client to set mock server expectations
76-
olp::client::OlpClientSettings olp_client_settings;
77-
olp_client_settings.network_request_handler = network;
78-
mock_server_client_ = std::make_shared<mockserver::MockServerHelper>(
79-
olp_client_settings, kTestHrn);
80-
}
81-
8272
std::shared_ptr<olp::client::OlpClientSettings> settings_;
8373
std::shared_ptr<mockserver::MockServerHelper> mock_server_client_;
8474
std::string cache_path_;

0 commit comments

Comments
 (0)