Repository: nifi-minifi-cpp Updated Branches: refs/heads/master c3aa2a86b -> a63d4c0d5
MINIFICPP-336: Use correct path when excluding dot files This closes #238. Signed-off-by: Marc Parisi <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/repo Commit: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/commit/a63d4c0d Tree: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/tree/a63d4c0d Diff: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/diff/a63d4c0d Branch: refs/heads/master Commit: a63d4c0d56a79e70a8a0185d826b662315bf4811 Parents: c3aa2a8 Author: Marc Parisi <[email protected]> Authored: Thu Jan 11 13:02:24 2018 -0500 Committer: Marc Parisi <[email protected]> Committed: Fri Jan 12 13:03:11 2018 -0500 ---------------------------------------------------------------------- libminifi/src/processors/GetFile.cpp | 2 +- libminifi/test/unit/ProcessorTests.cpp | 84 +++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/a63d4c0d/libminifi/src/processors/GetFile.cpp ---------------------------------------------------------------------- diff --git a/libminifi/src/processors/GetFile.cpp b/libminifi/src/processors/GetFile.cpp index 1dd3858..0472c55 100644 --- a/libminifi/src/processors/GetFile.cpp +++ b/libminifi/src/processors/GetFile.cpp @@ -215,7 +215,7 @@ bool GetFile::acceptFile(std::string fullName, std::string name, const GetFileRe if (request.maxAge > 0 && fileAge > request.maxAge) return false; - if (request.ignoreHiddenFile && fullName.c_str()[0] == '.') + if (request.ignoreHiddenFile && name.c_str()[0] == '.') return false; if (access(fullName.c_str(), R_OK) != 0) http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/a63d4c0d/libminifi/test/unit/ProcessorTests.cpp ---------------------------------------------------------------------- diff --git a/libminifi/test/unit/ProcessorTests.cpp b/libminifi/test/unit/ProcessorTests.cpp index 94618a1..0a603a4 100644 --- a/libminifi/test/unit/ProcessorTests.cpp +++ b/libminifi/test/unit/ProcessorTests.cpp @@ -125,6 +125,90 @@ TEST_CASE("Test GetFileMultiple", "[getfileCreate3]") { } } +TEST_CASE("Test GetFile Ignore", "[getfileCreate3]") { + TestController testController; + LogTestController::getInstance().setDebug<minifi::processors::GetFile>(); + std::shared_ptr<core::ContentRepository> content_repo = std::make_shared<core::repository::VolatileContentRepository>(); + std::shared_ptr<core::Processor> processor = std::make_shared<org::apache::nifi::minifi::processors::GetFile>("getfileCreate2"); + + std::shared_ptr<core::Repository> test_repo = std::make_shared<TestRepository>(); + std::shared_ptr<TestRepository> repo = std::static_pointer_cast<TestRepository>(test_repo); + + char format[] = "/tmp/gt.XXXXXX"; + char *dir = testController.createTempDirectory(format); + + uuid_t processoruuid; + REQUIRE(true == processor->getUUID(processoruuid)); + + std::shared_ptr<minifi::Connection> connection = std::make_shared<minifi::Connection>(test_repo, content_repo, "getfileCreate2Connection"); + + connection->setRelationship(core::Relationship("success", "description")); + + // link the connections so that we can test results at the end for this + connection->setSource(processor); + connection->setDestination(processor); + + connection->setSourceUUID(processoruuid); + connection->setDestinationUUID(processoruuid); + + processor->addConnection(connection); + REQUIRE(dir != NULL); + + std::shared_ptr<core::ProcessorNode> node = std::make_shared<core::ProcessorNode>(processor); + std::shared_ptr<core::controller::ControllerServiceProvider> controller_services_provider = nullptr; + auto context = std::make_shared<core::ProcessContext>(node, controller_services_provider, repo, repo, content_repo); + + context->setProperty(org::apache::nifi::minifi::processors::GetFile::Directory, dir); + // replicate 10 threads + processor->setScheduledState(core::ScheduledState::RUNNING); + + auto factory = std::make_shared<core::ProcessSessionFactory>(context); + + processor->onSchedule(context, factory); + + int prev = 0; + + auto session = std::make_shared<core::ProcessSession>(context); + REQUIRE(processor->getName() == "getfileCreate2"); + + std::shared_ptr<core::FlowFile> record; + + processor->onTrigger(context, session); + + provenance::ProvenanceReporter *reporter = session->getProvenanceReporter(); + std::set<provenance::ProvenanceEventRecord*> records = reporter->getEvents(); + record = session->get(); + REQUIRE(record == nullptr); + REQUIRE(records.size() == 0); + + std::fstream file; + std::stringstream ss; + ss << dir << "/" << ".filewithoutanext"; + file.open(ss.str(), std::ios::out); + file << "tempFile"; + file.close(); + + processor->incrementActiveTasks(); + processor->setScheduledState(core::ScheduledState::RUNNING); + processor->onTrigger(context, session); + unlink(ss.str().c_str()); + reporter = session->getProvenanceReporter(); + + REQUIRE(processor->getName() == "getfileCreate2"); + + records = reporter->getEvents(); + + for (provenance::ProvenanceEventRecord *provEventRecord : records) { + REQUIRE(provEventRecord->getComponentType() == processor->getName()); + } + session->commit(); + std::shared_ptr<core::FlowFile> ffr = session->get(); + + REQUIRE(repo->getRepoMap().size() == 0); + prev++; + +} + TEST_CASE("LogAttributeTest", "[getfileCreate3]") { TestController testController; LogTestController::getInstance().setDebug<minifi::processors::LogAttribute>();
