lordgamez commented on a change in pull request #1052:
URL: https://github.com/apache/nifi-minifi-cpp/pull/1052#discussion_r618335630



##########
File path: extensions/standard-processors/tests/unit/TailFileTests.cpp
##########
@@ -1536,3 +1514,197 @@ TEST_CASE("TailFile interprets the lookup frequency 
property correctly", "[multi
     REQUIRE(LogTestController::getInstance().contains("Logged 1 flow files"));
   }
 }
+
+TEST_CASE("TailFile reads from a single file when Initial Start Position is 
set", "[initialStartPosition]") {
+  TestController testController;
+  LogTestController::getInstance().setTrace<minifi::processors::TailFile>();
+  
LogTestController::getInstance().setDebug<minifi::processors::LogAttribute>();
+
+  std::shared_ptr<TestPlan> plan = testController.createPlan();
+  std::shared_ptr<core::Processor> tailfile = plan->addProcessor("TailFile", 
"tailfileProc");
+  std::shared_ptr<core::Processor> logattribute = 
plan->addProcessor("LogAttribute", "logattribute", 
core::Relationship("success", "description"), true);
+
+  auto dir = minifi::utils::createTempDir(&testController);
+  createTempFile(dir, ROLLED_OVER_TMP_FILE, ROLLED_OVER_TAIL_DATA);
+  auto temp_file_path = createTempFile(dir, TMP_FILE, NEWLINE_FILE);
+
+  plan->setProperty(logattribute, 
org::apache::nifi::minifi::processors::LogAttribute::FlowFilesToLog.getName(), 
"0");
+  plan->setProperty(tailfile, 
org::apache::nifi::minifi::processors::TailFile::FileName.getName(), 
temp_file_path);
+  plan->setProperty(tailfile, 
org::apache::nifi::minifi::processors::TailFile::Delimiter.getName(), "\n");
+
+  SECTION("Initial Start Position is set to Beginning of File") {
+    plan->setProperty(tailfile, 
org::apache::nifi::minifi::processors::TailFile::InitialStartPosition.getName(),
 "Beginning of File");
+
+    testController.runSession(plan);
+
+    REQUIRE(LogTestController::getInstance().contains("Logged 1 flow files"));
+    REQUIRE(LogTestController::getInstance().contains("Size:" + 
std::to_string(NEWLINE_FILE.find_first_of('\n') + 1) + " Offset:0"));
+
+    plan->reset(true);
+    
LogTestController::getInstance().resetStream(LogTestController::getInstance().log_output);
+
+    appendTempFile(dir, TMP_FILE, NEW_TAIL_DATA);
+
+    testController.runSession(plan);
+
+    REQUIRE(LogTestController::getInstance().contains("Logged 1 flow files"));
+    REQUIRE(LogTestController::getInstance().contains("Size:" + 
std::to_string(NEWLINE_FILE.size() - NEWLINE_FILE.find_first_of('\n') + 
NEW_TAIL_DATA.find_first_of('\n')) + " Offset:0"));
+  }
+
+  SECTION("Initial Start Position is set to Beginning of Time") {
+    plan->setProperty(tailfile, 
org::apache::nifi::minifi::processors::TailFile::InitialStartPosition.getName(),
 "Beginning of Time");
+
+    testController.runSession(plan);
+
+    REQUIRE(LogTestController::getInstance().contains("Logged 2 flow files"));
+    REQUIRE(LogTestController::getInstance().contains("Size:" + 
std::to_string(NEWLINE_FILE.find_first_of('\n') + 1) + " Offset:0"));
+    REQUIRE(LogTestController::getInstance().contains("Size:" + 
std::to_string(ROLLED_OVER_TAIL_DATA.find_first_of('\n') + 1) + " Offset:0"));
+
+    plan->reset(true);
+    
LogTestController::getInstance().resetStream(LogTestController::getInstance().log_output);
+
+    appendTempFile(dir, TMP_FILE, NEW_TAIL_DATA);
+
+    testController.runSession(plan);
+
+    REQUIRE(LogTestController::getInstance().contains("Logged 1 flow files"));
+    REQUIRE(LogTestController::getInstance().contains("Size:" + 
std::to_string(NEWLINE_FILE.size() - NEWLINE_FILE.find_first_of('\n') + 
NEW_TAIL_DATA.find_first_of('\n')) + " Offset:0"));
+  }
+
+  SECTION("Initial Start Position is set to Current Time") {
+    plan->setProperty(tailfile, 
org::apache::nifi::minifi::processors::TailFile::InitialStartPosition.getName(),
 "Current Time");
+
+    testController.runSession(plan);
+
+    REQUIRE(LogTestController::getInstance().contains("Logged 0 flow files"));
+
+    plan->reset(true);
+    
LogTestController::getInstance().resetStream(LogTestController::getInstance().log_output);
+
+    appendTempFile(dir, TMP_FILE, NEW_TAIL_DATA);
+
+    testController.runSession(plan);
+
+    REQUIRE(LogTestController::getInstance().contains("Logged 1 flow files"));
+    REQUIRE(LogTestController::getInstance().contains("Size:" + 
std::to_string(NEW_TAIL_DATA.find_first_of('\n') + 1) + " Offset:0"));
+  }
+
+  LogTestController::getInstance().reset();
+}
+
+TEST_CASE("TailFile reads multiple files when Initial Start Position is set", 
"[initialStartPosition]") {
+  TestController testController;
+  LogTestController::getInstance().setTrace<minifi::processors::TailFile>();
+  
LogTestController::getInstance().setDebug<minifi::processors::LogAttribute>();
+
+  std::shared_ptr<TestPlan> plan = testController.createPlan();
+  std::shared_ptr<core::Processor> tailfile = plan->addProcessor("TailFile", 
"tailfileProc");
+  std::shared_ptr<core::Processor> logattribute = 
plan->addProcessor("LogAttribute", "logattribute", 
core::Relationship("success", "description"), true);
+
+  auto dir = minifi::utils::createTempDir(&testController);
+  createTempFile(dir, ROLLED_OVER_TMP_FILE, ROLLED_OVER_TAIL_DATA);
+  createTempFile(dir, TMP_FILE, NEWLINE_FILE);
+  const std::string TMP_FILE_2_DATA = "tmp_file_2_new_line_data\n";
+  createTempFile(dir, "minifi-tmpfile-2.txt", TMP_FILE_2_DATA);
+
+  plan->setProperty(logattribute, 
org::apache::nifi::minifi::processors::LogAttribute::FlowFilesToLog.getName(), 
"0");
+  plan->setProperty(tailfile, 
org::apache::nifi::minifi::processors::TailFile::FileName.getName(), 
".*\\.txt");
+  plan->setProperty(tailfile, 
org::apache::nifi::minifi::processors::TailFile::Delimiter.getName(), "\n");
+  plan->setProperty(tailfile, 
org::apache::nifi::minifi::processors::TailFile::TailMode.getName(), "Multiple 
file");
+  plan->setProperty(tailfile, 
org::apache::nifi::minifi::processors::TailFile::BaseDirectory.getName(), dir);
+
+  SECTION("Initial Start Position is set to Beginning of File") {
+    plan->setProperty(tailfile, 
org::apache::nifi::minifi::processors::TailFile::InitialStartPosition.getName(),
 "Beginning of File");
+
+    testController.runSession(plan);
+
+    REQUIRE(LogTestController::getInstance().contains("Logged 2 flow files"));
+    REQUIRE(LogTestController::getInstance().contains("Size:" + 
std::to_string(NEWLINE_FILE.find_first_of('\n') + 1) + " Offset:0"));
+    REQUIRE(LogTestController::getInstance().contains("Size:" + 
std::to_string(TMP_FILE_2_DATA.find_first_of('\n') + 1) + " Offset:0"));
+
+    plan->reset(true);
+    
LogTestController::getInstance().resetStream(LogTestController::getInstance().log_output);
+
+    createTempFile(dir, "minifi-tmpfile-3.txt", NEWLINE_FILE);

Review comment:
       Updated in 221b1d76768daef020fe6d35be85dfad7aab2796




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to