Skip to content

Commit e4f700e

Browse files
committed
simplify
1 parent ba1719e commit e4f700e

3 files changed

Lines changed: 28 additions & 54 deletions

File tree

extension-framework/cpp-extension-lib/mocklib/include/MockProcessSession.h

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -24,28 +24,29 @@
2424
#include "range/v3/range/conversion.hpp"
2525
#include "range/v3/view/transform.hpp"
2626

27-
namespace org::apache::nifi::minifi::mock {
28-
struct MockFlowFileData {
29-
explicit MockFlowFileData(std::string content_str) {
27+
struct MinifiFlowFile {
28+
explicit MinifiFlowFile(std::string content_str) {
3029
this->content = content_str
3130
| ranges::views::transform([](char c) { return static_cast<std::byte>(c); })
3231
| ranges::to<std::vector<std::byte>>();
3332
}
3433

35-
~MockFlowFileData() = default;
34+
~MinifiFlowFile() = default;
3635

37-
MockFlowFileData() = default;
38-
MockFlowFileData(const MockFlowFileData&) = default;
39-
MockFlowFileData(MockFlowFileData&&) = default;
40-
MockFlowFileData& operator=(const MockFlowFileData&) = default;
41-
MockFlowFileData& operator=(MockFlowFileData&&) = default;
36+
MinifiFlowFile() = default;
37+
MinifiFlowFile(const MinifiFlowFile&) = default;
38+
MinifiFlowFile(MinifiFlowFile&&) = default;
39+
MinifiFlowFile& operator=(const MinifiFlowFile&) = default;
40+
MinifiFlowFile& operator=(MinifiFlowFile&&) = default;
4241

4342
std::map<std::string, std::string> attributes;
4443
std::vector<std::byte> content;
4544
bool is_penalized = false;
4645
std::string id;
4746
};
4847

48+
namespace org::apache::nifi::minifi::mock {
49+
4950
class MockProcessSession : public api::core::ProcessSession {
5051
public:
5152
MockProcessSession() = default;
@@ -54,8 +55,6 @@ class MockProcessSession : public api::core::ProcessSession {
5455
MockProcessSession(MockProcessSession&&) = delete;
5556
MockProcessSession& operator=(MockProcessSession&&) = delete;
5657

57-
~MockProcessSession() override;
58-
5958
api::core::FlowFile create(const api::core::FlowFile* parent) override;
6059
api::core::FlowFile get() override;
6160
void penalize(api::core::FlowFile& ff) override;
@@ -70,13 +69,12 @@ class MockProcessSession : public api::core::ProcessSession {
7069
[[nodiscard]] std::string getFlowFileId(const api::core::FlowFile& ff) const override;
7170
[[nodiscard]] uint64_t getFlowFileSize(const api::core::FlowFile& ff) const override;
7271

73-
void addInputFlowFile(MockFlowFileData flow_file_data);
72+
void addInputFlowFile(std::unique_ptr<MinifiFlowFile> flow_file);
7473

7574
private:
76-
std::vector<api::core::FlowFile> input_flow_files_;
77-
std::map<MinifiFlowFile*, MockFlowFileData> flow_file_datas;
78-
std::map<std::string, std::vector<api::core::FlowFile>> transferred_flow_files_;
79-
std::vector<api::core::FlowFile> removed_flow_files_;
75+
std::vector<std::unique_ptr<MinifiFlowFile>> input_flow_files_;
76+
std::map<std::string, std::vector<std::unique_ptr<MinifiFlowFile>>> transferred_flow_files_;
77+
std::vector<std::unique_ptr<MinifiFlowFile>> removed_flow_files_;
8078
};
8179

8280
} // namespace org::apache::nifi::minifi::mock

extension-framework/cpp-extension-lib/mocklib/include/MockUtils.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@
2222
#include "MockLogger.h"
2323
#include "minifi-cpp/core/ProcessorMetadata.h"
2424

25-
struct MinifiFlowFile{};
26-
2725
namespace org::apache::nifi::minifi::mock {
2826
inline core::ProcessorMetadata getMockMetadata() {
2927
return core::ProcessorMetadata{.uuid = utils::Identifier{}, .name = "Processor", .logger = std::make_shared<MockLogger>()};

extension-framework/cpp-extension-lib/mocklib/src/MockProcessSession.cpp

Lines changed: 14 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -21,90 +21,68 @@
2121

2222
namespace org::apache::nifi::minifi::mock {
2323

24-
MockProcessSession::~MockProcessSession() {
25-
// api::core::FlowFile requires that somebody takes ownership before it goes out of scope
26-
// the tested processor should either remove or transfer all FlowFiles it handles
27-
for (auto& ff : removed_flow_files_) {
28-
delete ff.release(); // NOLINT(cppcoreguidelines-owning-memory)
29-
}
30-
for (auto& ffs : transferred_flow_files_ | std::views::values) {
31-
for (auto& ff : ffs) {
32-
delete ff.release(); // NOLINT(cppcoreguidelines-owning-memory)
33-
}
34-
}
35-
}
36-
3724
api::core::FlowFile MockProcessSession::create(const api::core::FlowFile*) {
3825
auto new_ff = api::core::FlowFile{new MinifiFlowFile}; // NOLINT(clang-analyzer-cplusplus.NewDeleteLeaks)
39-
flow_file_datas[new_ff.get()];
4026
return new_ff;
4127
}
4228
api::core::FlowFile MockProcessSession::get() {
4329
if (input_flow_files_.empty()) { return nullptr; }
4430

4531
auto ff = std::move(input_flow_files_.back());
4632
input_flow_files_.pop_back();
47-
flow_file_datas[ff.get()];
4833

49-
return ff;
34+
return api::core::FlowFile{ff.release()};
5035
}
5136

5237
void MockProcessSession::penalize(api::core::FlowFile& ff) {
53-
auto& flow_file_data = flow_file_datas.at(ff.get());
54-
flow_file_data.is_penalized = true;
38+
ff->is_penalized = true;
5539
}
5640

5741
void MockProcessSession::transfer(api::core::FlowFile ff, const minifi::core::Relationship& relationship) {
58-
transferred_flow_files_[relationship.getName()].push_back(std::move(ff));
42+
transferred_flow_files_[relationship.getName()].push_back(std::unique_ptr<MinifiFlowFile>(ff.release()));
5943
}
6044

6145
void MockProcessSession::remove(api::core::FlowFile ff) {
62-
removed_flow_files_.push_back(std::move(ff));
46+
removed_flow_files_.push_back(std::unique_ptr<MinifiFlowFile>(ff.release()));
6347
}
6448

6549
void MockProcessSession::write(api::core::FlowFile& ff, const io::OutputStreamCallback& callback) {
66-
auto& flow_file_data = flow_file_datas.at(ff.get());
67-
const auto stream = std::make_shared<MockOutputStream>(flow_file_data.content);
50+
const auto stream = std::make_shared<MockOutputStream>(ff->content);
6851
callback(stream);
6952
}
7053

7154
void MockProcessSession::read(api::core::FlowFile& ff, const io::InputStreamCallback& callback) {
72-
auto& flow_file_data = flow_file_datas.at(ff.get());
73-
const auto stream = std::make_shared<MockInputStream>(flow_file_data.content);
55+
const auto stream = std::make_shared<MockInputStream>(ff->content);
7456
callback(stream);
7557
}
7658

7759
void MockProcessSession::setAttribute(api::core::FlowFile& ff, std::string_view key, std::string value) {
78-
auto& attributes = flow_file_datas.at(ff.get()).attributes;
79-
attributes[std::string(key)] = std::move(value);
60+
ff->attributes[std::string(key)] = std::move(value);
8061
}
8162

8263
void MockProcessSession::removeAttribute(api::core::FlowFile& ff, std::string_view key) {
83-
auto& attributes = flow_file_datas.at(ff.get()).attributes;
84-
attributes.erase(std::string(key));
64+
ff->attributes.erase(std::string(key));
8565
}
8666

8767
std::optional<std::string> MockProcessSession::getAttribute(api::core::FlowFile& ff, std::string_view key) {
88-
auto& attributes = flow_file_datas.at(ff.get()).attributes;
68+
auto& attributes = ff->attributes;
8969
if (const auto it = attributes.find(std::string(key)); it != attributes.end()) { return it->second; }
9070
return std::nullopt;
9171
}
9272

9373
std::map<std::string, std::string> MockProcessSession::getAttributes(const api::core::FlowFile& ff) const {
94-
return flow_file_datas.at(ff.get()).attributes;
74+
return ff->attributes;
9575
}
9676

9777
std::string MockProcessSession::getFlowFileId(const api::core::FlowFile& ff) const {
98-
return flow_file_datas.at(ff.get()).id;
78+
return ff->id;
9979
}
10080

10181
uint64_t MockProcessSession::getFlowFileSize(const api::core::FlowFile& ff) const {
102-
return flow_file_datas.at(ff.get()).content.size();
82+
return ff->content.size();
10383
}
10484

105-
void MockProcessSession::addInputFlowFile(MockFlowFileData flow_file_data) {
106-
auto new_ff = api::core::FlowFile{new MinifiFlowFile}; // NOLINT(clang-analyzer-cplusplus.NewDeleteLeaks)
107-
flow_file_datas.emplace(new_ff.get(), std::move(flow_file_data));
108-
input_flow_files_.push_back(std::move(new_ff));
85+
void MockProcessSession::addInputFlowFile(std::unique_ptr<MinifiFlowFile> flow_file) {
86+
input_flow_files_.push_back(std::move(flow_file));
10987
}
11088
} // namespace org::apache::nifi::minifi::mock

0 commit comments

Comments
 (0)