You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ab...@apache.org on 2020/06/15 20:22:21 UTC
[nifi-minifi-cpp] 01/03: MINIFICPP-1153 Change to a temporary
directory
This is an automated email from the ASF dual-hosted git repository.
aboda pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git
commit 31bd60378a79aff5041a671652a3ca5dc7e1098e
Author: Ferenc Gerlits <fg...@gmail.com>
AuthorDate: Mon Jun 15 16:55:43 2020 +0200
MINIFICPP-1153 Change to a temporary directory
Change the current working directory to a temporary directory not used by
any other tests before running the CTailFile tests.
Signed-off-by: Arpad Boda <ab...@apache.org>
This closes #815
---
nanofi/include/core/file_utils.h | 7 +++++++
nanofi/src/core/file_utils.c | 8 ++++++++
nanofi/tests/CTailFileChunkTests.cpp | 6 +++---
nanofi/tests/CTailFileDelimitedTests.cpp | 12 ++++++------
nanofi/tests/CTestsBase.h | 25 +++++++++++++++++++++++++
5 files changed, 49 insertions(+), 9 deletions(-)
diff --git a/nanofi/include/core/file_utils.h b/nanofi/include/core/file_utils.h
index 15806e4..e129270 100644
--- a/nanofi/include/core/file_utils.h
+++ b/nanofi/include/core/file_utils.h
@@ -71,6 +71,13 @@ int make_dir(const char * path);
*/
char * get_current_working_directory();
+/**
+ * Change the current working directory.
+ * @path can be relative or absolute
+ * @return 0 on success, non-zero on error
+ */
+int change_current_working_directory(const char *path);
+
#ifdef __cplusplus
}
#endif
diff --git a/nanofi/src/core/file_utils.c b/nanofi/src/core/file_utils.c
index 1eeedc6..f3c2303 100644
--- a/nanofi/src/core/file_utils.c
+++ b/nanofi/src/core/file_utils.c
@@ -139,3 +139,11 @@ char * get_current_working_directory() {
free(cwd);
return NULL;
}
+
+int change_current_working_directory(const char *path) {
+#ifdef WIN32
+ return _chdir(path);
+#else
+ return chdir(path);
+#endif
+}
diff --git a/nanofi/tests/CTailFileChunkTests.cpp b/nanofi/tests/CTailFileChunkTests.cpp
index ff933c8..da67385 100644
--- a/nanofi/tests/CTailFileChunkTests.cpp
+++ b/nanofi/tests/CTailFileChunkTests.cpp
@@ -35,7 +35,7 @@
*/
TEST_CASE("Test tailfile chunk size 4096, file size 8KB", "[tailfileChunk8KBFileSize]") {
-
+ TestControllerWithTemporaryWorkingDirectory test_controller;
TailFileTestResourceManager mgr("TailFileChunk", on_trigger_tailfilechunk);
const char * file = "./e.txt";
const char * chunksize = "4096";
@@ -67,7 +67,7 @@ TEST_CASE("Test tailfile chunk size 4096, file size 8KB", "[tailfileChunk8KBFile
}
TEST_CASE("Test tailfile chunk size 4096, file size less than 8KB", "[tailfileChunkFileSizeLessThan8KB]") {
-
+ TestControllerWithTemporaryWorkingDirectory test_controller;
TailFileTestResourceManager mgr("TailFileChunk", on_trigger_tailfilechunk);
const char * file = "./e.txt";
const char * chunksize = "4096";
@@ -103,7 +103,7 @@ TEST_CASE("Test tailfile chunk size 4096, file size less than 8KB", "[tailfileCh
}
TEST_CASE("Test tailfile chunk size 512, file size equal to 4608B", "[tailfileChunkFileSize8KB]") {
-
+ TestControllerWithTemporaryWorkingDirectory test_controller;
TailFileTestResourceManager mgr("TailFileChunk", on_trigger_tailfilechunk);
const char * file = "./e.txt";
const char * chunksize = "512";
diff --git a/nanofi/tests/CTailFileDelimitedTests.cpp b/nanofi/tests/CTailFileDelimitedTests.cpp
index ed079d1..c43d59e 100644
--- a/nanofi/tests/CTailFileDelimitedTests.cpp
+++ b/nanofi/tests/CTailFileDelimitedTests.cpp
@@ -27,7 +27,7 @@
*/
TEST_CASE("Test tailfile delimited. Empty file", "[tailfileDelimitedEmptyFileTest]") {
-
+ TestControllerWithTemporaryWorkingDirectory test_controller;
TailFileTestResourceManager mgr("TailFileDelimited", on_trigger_tailfiledelimited);
const char * file = "./e.txt";
const char * delimiter = ";";
@@ -43,7 +43,7 @@ TEST_CASE("Test tailfile delimited. Empty file", "[tailfileDelimitedEmptyFileTes
}
TEST_CASE("Test tailfile delimited. File has less than 4096 chars", "[tailfileDelimitedLessThan4096Chars]") {
-
+ TestControllerWithTemporaryWorkingDirectory test_controller;
TailFileTestResourceManager mgr("TailFileDelimited", on_trigger_tailfiledelimited);
const char * file = "./e.txt";
const char * delimiter = ";";
@@ -65,7 +65,7 @@ TEST_CASE("Test tailfile delimited. File has less than 4096 chars", "[tailfileDe
}
TEST_CASE("Test tailfile delimited. Simple test", "[tailfileDelimitedSimpleTest]") {
-
+ TestControllerWithTemporaryWorkingDirectory test_controller;
TailFileTestResourceManager mgr("TailFileDelimited", on_trigger_tailfiledelimited);
const char * file = "./e.txt";
const char * delimiter = ";";
@@ -105,7 +105,7 @@ TEST_CASE("Test tailfile delimited. Simple test", "[tailfileDelimitedSimpleTest]
}
TEST_CASE("Test tailfile delimited. trailing non delimited string", "[tailfileNonDelimitedTest]") {
-
+ TestControllerWithTemporaryWorkingDirectory test_controller;
TailFileTestResourceManager mgr("TailFileDelimited", on_trigger_tailfiledelimited);
const char * file = "./e.txt";
const char * delimiter = ";";
@@ -148,7 +148,7 @@ TEST_CASE("Test tailfile delimited. trailing non delimited string", "[tailfileNo
}
TEST_CASE("Test tailfile delimited 4096 chars non delimited", "[tailfileDelimitedSimpleTest]") {
-
+ TestControllerWithTemporaryWorkingDirectory test_controller;
TailFileTestResourceManager mgr("TailFileDelimited", on_trigger_tailfiledelimited);
const char * file = "./e.txt";
const char * delimiter = ";";
@@ -212,7 +212,7 @@ TEST_CASE("Test tailfile delimited 4096 chars non delimited", "[tailfileDelimite
}
TEST_CASE("Test tailfile delimited. string starting with delimiter", "[tailfileDelimiterStartStringTest]") {
-
+ TestControllerWithTemporaryWorkingDirectory test_controller;
TailFileTestResourceManager mgr("TailFileDelimited", on_trigger_tailfiledelimited);
const char * file = "./e.txt";
const char * delimiter = ";";
diff --git a/nanofi/tests/CTestsBase.h b/nanofi/tests/CTestsBase.h
index bcde416..8a5bbf7 100644
--- a/nanofi/tests/CTestsBase.h
+++ b/nanofi/tests/CTestsBase.h
@@ -29,6 +29,7 @@
#include "core/file_utils.h"
#include "api/ecu.h"
#include "api/nanofi.h"
+#include "TestBase.h"
class FileManager {
public:
@@ -124,6 +125,30 @@ private:
standalone_processor * processor_;
};
+class TestControllerWithTemporaryWorkingDirectory {
+public:
+ TestControllerWithTemporaryWorkingDirectory()
+ : old_cwd_(get_current_working_directory())
+ {
+ char format[] = "/tmp/ctest_temp_dir.XXXXXX";
+ std::string temp_dir = test_controller_.createTempDirectory(format);
+ int result = change_current_working_directory(temp_dir.c_str());
+ if (result != 0) {
+ throw std::runtime_error("Could not change to temporary directory " + temp_dir);
+ }
+ }
+
+ ~TestControllerWithTemporaryWorkingDirectory()
+ {
+ chdir(old_cwd_);
+ free(old_cwd_);
+ }
+
+private:
+ TestController test_controller_;
+ char *old_cwd_;
+};
+
struct processor_params * invoke_processor(TailFileTestResourceManager& mgr, const char * filePath) {
standalone_processor * proc = mgr.getProcessor();
set_standalone_property(proc, "file_path", filePath);