Skip to content

Commit cc6f234

Browse files
committed
MINIFICPP-2377 Support process group level controller services
1 parent 1759c41 commit cc6f234

File tree

115 files changed

+983
-802
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

115 files changed

+983
-802
lines changed

extensions/aws/processors/DeleteS3Object.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131

3232

3333
template<typename T>
34-
class S3TestsFixture;
34+
class FlowProcessorS3TestsFixture;
3535

3636
namespace org::apache::nifi::minifi::aws::processors {
3737

@@ -74,7 +74,7 @@ class DeleteS3Object : public S3Processor {
7474
void onTrigger(core::ProcessContext& context, core::ProcessSession& session) override;
7575

7676
private:
77-
friend class ::S3TestsFixture<DeleteS3Object>;
77+
friend class ::FlowProcessorS3TestsFixture<DeleteS3Object>;
7878

7979
explicit DeleteS3Object(std::string_view name, const minifi::utils::Identifier& uuid, std::unique_ptr<aws::s3::S3RequestSender> s3_request_sender)
8080
: S3Processor(name, uuid, core::logging::LoggerFactory<DeleteS3Object>::getLogger(uuid), std::move(s3_request_sender)) {

extensions/aws/processors/FetchS3Object.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
#include "utils/GeneralUtils.h"
3434

3535
template<typename T>
36-
class S3TestsFixture;
36+
class FlowProcessorS3TestsFixture;
3737

3838
namespace org::apache::nifi::minifi::aws::processors {
3939

@@ -85,7 +85,7 @@ class FetchS3Object : public S3Processor {
8585
void onTrigger(core::ProcessContext& context, core::ProcessSession& session) override;
8686

8787
private:
88-
friend class ::S3TestsFixture<FetchS3Object>;
88+
friend class ::FlowProcessorS3TestsFixture<FetchS3Object>;
8989

9090
explicit FetchS3Object(const std::string& name, const minifi::utils::Identifier& uuid, std::unique_ptr<aws::s3::S3RequestSender> s3_request_sender)
9191
: S3Processor(name, uuid, core::logging::LoggerFactory<FetchS3Object>::getLogger(uuid), std::move(s3_request_sender)) {

extensions/aws/processors/PutS3Object.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
#include "utils/Id.h"
3939

4040
template<typename T>
41-
class S3TestsFixture;
41+
class FlowProcessorS3TestsFixture;
4242

4343
namespace org::apache::nifi::minifi::aws::processors {
4444

@@ -181,7 +181,7 @@ class PutS3Object : public S3Processor {
181181
static constexpr uint64_t MIN_PART_SIZE = 5_MiB;
182182
static constexpr uint64_t MAX_UPLOAD_SIZE = 5_GiB;
183183

184-
friend class ::S3TestsFixture<PutS3Object>;
184+
friend class ::FlowProcessorS3TestsFixture<PutS3Object>;
185185

186186
explicit PutS3Object(const std::string& name, const minifi::utils::Identifier& uuid, std::unique_ptr<aws::s3::S3RequestSender> s3_request_sender)
187187
: S3Processor(name, uuid, core::logging::LoggerFactory<PutS3Object>::getLogger(uuid), std::move(s3_request_sender)) {

extensions/aws/processors/S3Processor.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ std::optional<Aws::Auth::AWSCredentials> S3Processor::getAWSCredentialsFromContr
4848
return std::nullopt;
4949
}
5050

51-
std::shared_ptr<core::controller::ControllerService> service = context.getControllerService(service_name);
51+
std::shared_ptr<core::controller::ControllerService> service = context.getControllerService(service_name, getUUID());
5252
if (!service) {
5353
logger_->log_error("AWS credentials service with name: '{}' could not be found", service_name);
5454
return std::nullopt;
@@ -121,7 +121,7 @@ void S3Processor::onSchedule(core::ProcessContext& context, core::ProcessSession
121121

122122
if (auto communications_timeout = context.getProperty<core::TimePeriodValue>(CommunicationsTimeout)) {
123123
logger_->log_debug("S3Processor: Communications Timeout {}", communications_timeout->getMilliseconds());
124-
client_config_->connectTimeoutMs = gsl::narrow<long>(communications_timeout->getMilliseconds().count()); // NOLINT(runtime/int)
124+
client_config_->connectTimeoutMs = gsl::narrow<long>(communications_timeout->getMilliseconds().count()); // NOLINT(runtime/int,google-runtime-int)
125125
} else {
126126
throw Exception(PROCESS_SCHEDULE_EXCEPTION, "Communications Timeout missing or invalid");
127127
}

extensions/aws/tests/PutS3ObjectTests.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ class PutS3ObjectTestsFixture : public FlowProcessorS3TestsFixture<minifi::aws::
4343

4444
class PutS3ObjectLimitChanged : public minifi::aws::processors::PutS3Object {
4545
protected:
46-
friend class ::S3TestsFixture<PutS3ObjectLimitChanged>;
46+
friend class ::FlowProcessorS3TestsFixture<PutS3ObjectLimitChanged>;
4747

4848
explicit PutS3ObjectLimitChanged(const std::string& name, const minifi::utils::Identifier& uuid, std::unique_ptr<minifi::aws::s3::S3RequestSender> s3_request_sender)
4949
: PutS3Object(name, uuid, std::move(s3_request_sender)) {

extensions/aws/tests/S3TestsFixture.h

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,6 @@ class S3TestsFixture {
5858

5959
// Build MiNiFi processing graph
6060
plan = test_controller.createPlan();
61-
mock_s3_request_sender_ptr = new MockS3RequestSender();
62-
std::unique_ptr<minifi::aws::s3::S3RequestSender> mock_s3_request_sender(mock_s3_request_sender_ptr);
63-
s3_processor = std::shared_ptr<T>(new T("S3Processor", utils::Identifier(), std::move(mock_s3_request_sender)));
6461
aws_credentials_service = plan->addController("AWSCredentialsService", "AWSCredentialsService");
6562
}
6663

@@ -121,8 +118,8 @@ class S3TestsFixture {
121118
TestController test_controller;
122119
std::shared_ptr<TestPlan> plan;
123120
MockS3RequestSender* mock_s3_request_sender_ptr;
124-
std::shared_ptr<core::Processor> s3_processor;
125-
std::shared_ptr<core::Processor> update_attribute;
121+
core::Processor* s3_processor;
122+
core::Processor* update_attribute;
126123
std::shared_ptr<core::controller::ControllerServiceNode> aws_credentials_service;
127124
};
128125

@@ -136,6 +133,11 @@ class FlowProcessorS3TestsFixture : public S3TestsFixture<T> {
136133
LogTestController::getInstance().setTrace<minifi::processors::GetFile>();
137134
LogTestController::getInstance().setDebug<minifi::processors::UpdateAttribute>();
138135

136+
this->mock_s3_request_sender_ptr = new MockS3RequestSender();
137+
std::unique_ptr<minifi::aws::s3::S3RequestSender> mock_s3_request_sender(this->mock_s3_request_sender_ptr);
138+
auto s3_processor_unique_ptr = std::unique_ptr<T>(new T("S3Processor", utils::Identifier(), std::move(mock_s3_request_sender)));
139+
this->s3_processor = s3_processor_unique_ptr.get();
140+
139141
auto input_dir = this->test_controller.createTempDirectory();
140142
std::ofstream input_file_stream(input_dir / INPUT_FILENAME);
141143
input_file_stream << INPUT_DATA;
@@ -149,7 +151,7 @@ class FlowProcessorS3TestsFixture : public S3TestsFixture<T> {
149151
core::Relationship("success", "d"),
150152
true);
151153
this->plan->addProcessor(
152-
this->s3_processor,
154+
std::move(s3_processor_unique_ptr),
153155
"S3Processor",
154156
core::Relationship("success", "d"),
155157
true);
@@ -186,15 +188,20 @@ class FlowProcessorS3TestsFixture : public S3TestsFixture<T> {
186188
}
187189

188190
protected:
189-
std::shared_ptr<core::Processor> update_attribute;
191+
core::Processor* update_attribute;
190192
};
191193

192194
template<typename T>
193195
class FlowProducerS3TestsFixture : public S3TestsFixture<T> {
194196
public:
195197
FlowProducerS3TestsFixture() {
198+
this->mock_s3_request_sender_ptr = new MockS3RequestSender();
199+
std::unique_ptr<minifi::aws::s3::S3RequestSender> mock_s3_request_sender(this->mock_s3_request_sender_ptr);
200+
auto s3_processor_unique_ptr = std::unique_ptr<T>(new T("S3Processor", utils::Identifier(), std::move(mock_s3_request_sender)));
201+
this->s3_processor = s3_processor_unique_ptr.get();
202+
196203
this->plan->addProcessor(
197-
this->s3_processor,
204+
std::move(s3_processor_unique_ptr),
198205
"S3Processor");
199206
auto log_attribute = this->plan->addProcessor(
200207
"LogAttribute",

extensions/azure/processors/AzureStorageProcessorBase.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ std::tuple<AzureStorageProcessorBase::GetCredentialsFromControllerResult, std::o
3535
return std::make_tuple(GetCredentialsFromControllerResult::CONTROLLER_NAME_EMPTY, std::nullopt);
3636
}
3737

38-
std::shared_ptr<core::controller::ControllerService> service = context.getControllerService(service_name);
38+
std::shared_ptr<core::controller::ControllerService> service = context.getControllerService(service_name, getUUID());
3939
if (nullptr == service) {
4040
logger_->log_error("Azure Storage credentials service with name: '{}' could not be found", service_name);
4141
return std::make_tuple(GetCredentialsFromControllerResult::CONTROLLER_NAME_INVALID, std::nullopt);

extensions/azure/tests/AzureBlobStorageTestsFixture.h

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,9 @@ class AzureBlobStorageTestsFixture {
6161
plan_ = test_controller_.createPlan();
6262
auto mock_blob_storage = std::make_unique<MockBlobStorage>();
6363
mock_blob_storage_ptr_ = mock_blob_storage.get();
64-
azure_blob_storage_processor_ = std::shared_ptr<ProcessorType>(
64+
auto azure_blob_storage_processor_unique_ptr = std::unique_ptr<ProcessorType>(
6565
new ProcessorType("AzureBlobStorageProcessor", utils::Identifier(), std::move(mock_blob_storage)));
66+
azure_blob_storage_processor_ = azure_blob_storage_processor_unique_ptr.get();
6667
auto input_dir = test_controller_.createTempDirectory();
6768
std::ofstream input_file_stream(input_dir / GET_FILE_NAME);
6869
input_file_stream << TEST_DATA;
@@ -71,7 +72,7 @@ class AzureBlobStorageTestsFixture {
7172
plan_->setProperty(get_file_processor_, minifi::processors::GetFile::Directory, input_dir.string());
7273
plan_->setProperty(get_file_processor_, minifi::processors::GetFile::KeepSourceFile, "false");
7374
update_attribute_processor_ = plan_->addProcessor("UpdateAttribute", "UpdateAttribute", { {"success", "d"} }, true);
74-
plan_->addProcessor(azure_blob_storage_processor_, "AzureBlobStorageProcessor", { {"success", "d"} }, true);
75+
plan_->addProcessor(std::move(azure_blob_storage_processor_unique_ptr), "AzureBlobStorageProcessor", { {"success", "d"} }, true);
7576
auto logattribute = plan_->addProcessor("LogAttribute", "LogAttribute", { {"success", "d"} }, true);
7677
success_putfile_ = plan_->addProcessor("PutFile", "SuccessPutFile", { {"success", "d"} }, false);
7778
plan_->addConnection(logattribute, {"success", "d"}, success_putfile_);
@@ -122,11 +123,11 @@ class AzureBlobStorageTestsFixture {
122123
TestController test_controller_;
123124
std::shared_ptr<TestPlan> plan_;
124125
MockBlobStorage* mock_blob_storage_ptr_;
125-
std::shared_ptr<core::Processor> azure_blob_storage_processor_;
126-
std::shared_ptr<core::Processor> get_file_processor_;
127-
std::shared_ptr<core::Processor> update_attribute_processor_;
128-
std::shared_ptr<core::Processor> success_putfile_;
129-
std::shared_ptr<core::Processor> failure_putfile_;
126+
core::Processor* azure_blob_storage_processor_;
127+
core::Processor* get_file_processor_;
128+
core::Processor* update_attribute_processor_;
129+
core::Processor* success_putfile_;
130+
core::Processor* failure_putfile_;
130131
std::filesystem::path failure_output_dir_;
131132
std::filesystem::path success_output_dir_;
132133
};

extensions/azure/tests/AzureDataLakeStorageTestsFixture.h

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,9 @@ class AzureDataLakeStorageTestsFixture {
6060
plan_ = test_controller_.createPlan();
6161
auto mock_data_lake_storage_client = std::make_unique<MockDataLakeStorageClient>();
6262
mock_data_lake_storage_client_ptr_ = mock_data_lake_storage_client.get();
63-
azure_data_lake_storage_ = std::shared_ptr<AzureDataLakeStorageProcessor>(
63+
auto azure_data_lake_storage_unique_ptr = std::unique_ptr<AzureDataLakeStorageProcessor>(
6464
new AzureDataLakeStorageProcessor("AzureDataLakeStorageProcessor", utils::Identifier(), std::move(mock_data_lake_storage_client)));
65+
azure_data_lake_storage_ = azure_data_lake_storage_unique_ptr.get();
6566
auto input_dir = test_controller_.createTempDirectory();
6667
minifi::test::utils::putFileToDir(input_dir, GETFILE_FILE_NAME, TEST_DATA);
6768

@@ -70,7 +71,7 @@ class AzureDataLakeStorageTestsFixture {
7071
plan_->setProperty(get_file_, minifi::processors::GetFile::KeepSourceFile, "false");
7172

7273
update_attribute_ = plan_->addProcessor("UpdateAttribute", "UpdateAttribute", { {"success", "d"} }, true);
73-
plan_->addProcessor(azure_data_lake_storage_, "AzureDataLakeStorageProcessor", { {"success", "d"}, {"failure", "d"} }, true);
74+
plan_->addProcessor(std::move(azure_data_lake_storage_unique_ptr), "AzureDataLakeStorageProcessor", { {"success", "d"}, {"failure", "d"} }, true);
7475
auto logattribute = plan_->addProcessor("LogAttribute", "LogAttribute", { {"success", "d"} }, true);
7576

7677
success_putfile_ = plan_->addProcessor("PutFile", "SuccessPutFile", { {"success", "d"} }, false);
@@ -127,11 +128,11 @@ class AzureDataLakeStorageTestsFixture {
127128
TestController test_controller_;
128129
std::shared_ptr<TestPlan> plan_;
129130
MockDataLakeStorageClient* mock_data_lake_storage_client_ptr_;
130-
std::shared_ptr<core::Processor> azure_data_lake_storage_;
131-
std::shared_ptr<core::Processor> get_file_;
132-
std::shared_ptr<core::Processor> update_attribute_;
133-
std::shared_ptr<core::Processor> success_putfile_;
134-
std::shared_ptr<core::Processor> failure_putfile_;
131+
core::Processor* azure_data_lake_storage_;
132+
core::Processor* get_file_;
133+
core::Processor* update_attribute_;
134+
core::Processor* success_putfile_;
135+
core::Processor* failure_putfile_;
135136
std::shared_ptr<core::controller::ControllerServiceNode> azure_storage_cred_service_;
136137
std::filesystem::path failure_output_dir_;
137138
std::filesystem::path success_output_dir_;

extensions/azure/tests/ListAzureBlobStorageTests.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,10 @@ class ListAzureBlobStorageTestsFixture {
4545
plan_ = test_controller_.createPlan();
4646
auto mock_blob_storage = std::make_unique<MockBlobStorage>();
4747
mock_blob_storage_ptr_ = mock_blob_storage.get();
48-
list_azure_blob_storage_ = std::make_shared<minifi::azure::processors::ListAzureBlobStorage>("ListAzureBlobStorage", std::move(mock_blob_storage));
48+
auto list_azure_blob_storage_unique_ptr = std::make_unique<minifi::azure::processors::ListAzureBlobStorage>("ListAzureBlobStorage", std::move(mock_blob_storage));
49+
list_azure_blob_storage_ = list_azure_blob_storage_unique_ptr.get();
4950

50-
plan_->addProcessor(list_azure_blob_storage_, "ListAzureBlobStorage", { {"success", "d"} });
51+
plan_->addProcessor(std::move(list_azure_blob_storage_unique_ptr), "ListAzureBlobStorage", { {"success", "d"} });
5152
auto logattribute = plan_->addProcessor("LogAttribute", "LogAttribute", { {"success", "d"} }, true);
5253
plan_->setProperty(logattribute, minifi::processors::LogAttribute::FlowFilesToLog, "0");
5354

@@ -72,7 +73,7 @@ class ListAzureBlobStorageTestsFixture {
7273
TestController test_controller_;
7374
std::shared_ptr<TestPlan> plan_;
7475
MockBlobStorage* mock_blob_storage_ptr_;
75-
std::shared_ptr<core::Processor> list_azure_blob_storage_;
76+
core::Processor* list_azure_blob_storage_;
7677
std::shared_ptr<core::controller::ControllerServiceNode> azure_storage_cred_service_;
7778
};
7879

extensions/azure/tests/ListAzureDataLakeStorageTests.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,11 @@ class ListAzureDataLakeStorageTestsFixture {
4242
plan_ = test_controller_.createPlan();
4343
auto mock_data_lake_storage_client = std::make_unique<MockDataLakeStorageClient>();
4444
mock_data_lake_storage_client_ptr_ = mock_data_lake_storage_client.get();
45-
list_azure_data_lake_storage_ = std::shared_ptr<minifi::azure::processors::ListAzureDataLakeStorage>(
45+
auto list_azure_data_lake_storage_unique_ptr = std::unique_ptr<minifi::azure::processors::ListAzureDataLakeStorage>(
4646
new minifi::azure::processors::ListAzureDataLakeStorage("ListAzureDataLakeStorage", utils::Identifier(), std::move(mock_data_lake_storage_client)));
47+
list_azure_data_lake_storage_ = list_azure_data_lake_storage_unique_ptr.get();
4748

48-
plan_->addProcessor(list_azure_data_lake_storage_, "ListAzureDataLakeStorage", { {"success", "d"} });
49+
plan_->addProcessor(std::move(list_azure_data_lake_storage_unique_ptr), "ListAzureDataLakeStorage", { {"success", "d"} });
4950
auto logattribute = plan_->addProcessor("LogAttribute", "LogAttribute", { {"success", "d"} }, true);
5051
plan_->setProperty(logattribute, minifi::processors::LogAttribute::FlowFilesToLog, "0");
5152

@@ -73,7 +74,7 @@ class ListAzureDataLakeStorageTestsFixture {
7374
TestController test_controller_;
7475
std::shared_ptr<TestPlan> plan_;
7576
MockDataLakeStorageClient* mock_data_lake_storage_client_ptr_;
76-
std::shared_ptr<core::Processor> list_azure_data_lake_storage_;
77+
core::Processor* list_azure_data_lake_storage_;
7778
std::shared_ptr<core::controller::ControllerServiceNode> azure_storage_cred_service_;
7879
};
7980

extensions/bustache/tests/ApplyTemplateTests.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,16 +75,16 @@ TEST_CASE("Test usage of ApplyTemplate", "[ApplyTemplateTest]") {
7575
REQUIRE_FALSE(template_source_dir.empty());
7676
REQUIRE_FALSE(put_file_destination_dir.empty());
7777

78-
std::shared_ptr<core::Processor> getfile = plan->addProcessor("GetFile", "getFile");
78+
auto getfile = plan->addProcessor("GetFile", "getFile");
7979
plan->setProperty(getfile, org::apache::nifi::minifi::processors::GetFile::Directory, get_file_source_dir.string());
8080
plan->setProperty(getfile, org::apache::nifi::minifi::processors::GetFile::KeepSourceFile, "true");
8181

82-
std::shared_ptr<core::Processor> extract_text = plan->addProcessor("ExtractText", "testExtractText", core::Relationship("success", "description"), true);
82+
auto extract_text = plan->addProcessor("ExtractText", "testExtractText", core::Relationship("success", "description"), true);
8383
plan->setProperty(extract_text, org::apache::nifi::minifi::processors::ExtractText::Attribute, TEST_ATTR);
8484

85-
std::shared_ptr<core::Processor> apply_template = plan->addProcessor("ApplyTemplate", "testApplyTemplate", core::Relationship("success", "description"), true);
85+
auto apply_template = plan->addProcessor("ApplyTemplate", "testApplyTemplate", core::Relationship("success", "description"), true);
8686

87-
std::shared_ptr<core::Processor> put_file = plan->addProcessor("PutFile", "put_file", core::Relationship("success", "description"), true);
87+
auto put_file = plan->addProcessor("PutFile", "put_file", core::Relationship("success", "description"), true);
8888
plan->setProperty(put_file, org::apache::nifi::minifi::processors::PutFile::Directory, put_file_destination_dir.string());
8989
plan->setProperty(put_file, org::apache::nifi::minifi::processors::PutFile::ConflictResolution, magic_enum::enum_name(minifi::processors::PutFile::FileExistsResolutionStrategy::replace));
9090

extensions/civetweb/tests/ListenHTTPTests.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ class ListenHTTPTestsFixture {
141141
plan->runNextProcessor(); // UpdateAttribute
142142
plan->runNextProcessor(); // ListenHTTP
143143

144-
auto raw_ptr = dynamic_cast<org::apache::nifi::minifi::processors::ListenHTTP*>(listen_http.get());
144+
auto raw_ptr = dynamic_cast<org::apache::nifi::minifi::processors::ListenHTTP*>(listen_http);
145145
std::string protocol = std::string("http") + (raw_ptr->isSecure() ? "s" : "");
146146
std::string portstr = raw_ptr->getPort();
147147
REQUIRE(LogTestController::getInstance().contains("Listening on port " + portstr));
@@ -228,10 +228,10 @@ class ListenHTTPTestsFixture {
228228
std::filesystem::path tmp_dir;
229229
TestController testController;
230230
std::shared_ptr<TestPlan> plan;
231-
std::shared_ptr<core::Processor> get_file;
232-
std::shared_ptr<core::Processor> update_attribute;
233-
std::shared_ptr<core::Processor> listen_http;
234-
std::shared_ptr<core::Processor> log_attribute;
231+
core::Processor* get_file = nullptr;
232+
core::Processor* update_attribute = nullptr;
233+
core::Processor* listen_http = nullptr;
234+
core::Processor* log_attribute = nullptr;
235235

236236
std::shared_ptr<minifi::controllers::SSLContextService> ssl_context_service;
237237
HttpRequestMethod method = HttpRequestMethod::GET;
@@ -672,8 +672,8 @@ TEST_CASE_METHOD(ListenHTTPTestsFixture, "HTTPS minimum SSL version", "[https]")
672672

673673
TEST_CASE("ListenHTTP bored yield", "[listenhttp][bored][yield]") {
674674
using processors::ListenHTTP;
675-
const auto listen_http = std::make_shared<ListenHTTP>("listenhttp");
676-
SingleProcessorTestController controller{listen_http};
675+
SingleProcessorTestController controller{std::make_unique<ListenHTTP>("listenhttp")};
676+
auto listen_http = controller.getProcessor();
677677
listen_http->setProperty(ListenHTTP::Port, "0");
678678

679679
REQUIRE(!listen_http->isYield());

0 commit comments

Comments
 (0)