IGNITE-7114: C++ node can start without example folder now
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/bb2d59b2 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/bb2d59b2 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/bb2d59b2 Branch: refs/heads/ignite-zk-ce Commit: bb2d59b238bbf117e1e5bb6fa5e4d0d1af3a6d82 Parents: 316feb8 Author: Igor Sapego <[email protected]> Authored: Tue Dec 12 16:19:37 2017 +0300 Committer: Igor Sapego <[email protected]> Committed: Tue Dec 12 16:21:27 2017 +0300 ---------------------------------------------------------------------- .../include/ignite/common/platform_utils.h | 20 ++- .../os/linux/src/common/platform_utils.cpp | 34 +++-- .../common/os/win/src/common/platform_utils.cpp | 29 +++- .../platforms/cpp/core-test/src/test_utils.cpp | 8 +- modules/platforms/cpp/core/src/ignition.cpp | 10 +- .../cpp/jni/include/ignite/jni/utils.h | 17 +-- .../platforms/cpp/jni/os/linux/src/utils.cpp | 120 +++++++++-------- modules/platforms/cpp/jni/os/win/src/utils.cpp | 133 +++++++++++-------- .../platforms/cpp/odbc-test/src/test_utils.cpp | 8 +- 9 files changed, 220 insertions(+), 159 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/bb2d59b2/modules/platforms/cpp/common/include/ignite/common/platform_utils.h ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/common/include/ignite/common/platform_utils.h b/modules/platforms/cpp/common/include/ignite/common/platform_utils.h index 8674ce3..b8c6aa6 100644 --- a/modules/platforms/cpp/common/include/ignite/common/platform_utils.h +++ b/modules/platforms/cpp/common/include/ignite/common/platform_utils.h @@ -61,10 +61,18 @@ namespace ignite * Read system environment variable taking thread-safety in count. * * @param name Environment variable name. - * @param val Environment variable value. - * @return True if the environment variable with such name was found. + * @return Environment variable value if found and empty string otherwise. */ - IGNITE_IMPORT_EXPORT bool GetEnv(const std::string& name, std::string& val); + IGNITE_IMPORT_EXPORT std::string GetEnv(const std::string& name); + + /** + * Read system environment variable taking thread-safety in count. + * + * @param name Environment variable name. + * @param dflt Default value to return on fail. + * @return Environment variable value if found and @c dflt otherwise. + */ + IGNITE_IMPORT_EXPORT std::string GetEnv(const std::string& name, const std::string& dflt); /** * Ensure that file on the given path exists in the system. @@ -73,6 +81,12 @@ namespace ignite * @return True if file exists, false otherwise. */ IGNITE_IMPORT_EXPORT bool FileExists(const std::string& path); + + /** + * Check if the provided path is the valid directory. + * @return @c true if the provided path is the valid directory. + */ + IGNITE_IMPORT_EXPORT bool IsValidDirectory(const std::string& path); } } http://git-wip-us.apache.org/repos/asf/ignite/blob/bb2d59b2/modules/platforms/cpp/common/os/linux/src/common/platform_utils.cpp ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/common/os/linux/src/common/platform_utils.cpp b/modules/platforms/cpp/common/os/linux/src/common/platform_utils.cpp index 3e8d0c9..b74f11c 100644 --- a/modules/platforms/cpp/common/os/linux/src/common/platform_utils.cpp +++ b/modules/platforms/cpp/common/os/linux/src/common/platform_utils.cpp @@ -20,6 +20,7 @@ #include <sys/stat.h> #include <dirent.h> #include <dlfcn.h> +#include <glob.h> #include <ignite/common/utils.h> @@ -51,25 +52,42 @@ namespace ignite return localtime_r(&in, &out) == 0; } - bool GetEnv(const std::string& name, std::string& val) + std::string GetEnv(const std::string& name) + { + static const std::string empty; + + return GetEnv(name, empty); + } + + std::string GetEnv(const std::string& name, const std::string& dflt) { char* val0 = std::getenv(name.c_str()); if (!val0) - return false; - - val = val0; + return dflt; - return true; + return std::string(val0); } bool FileExists(const std::string& path) { - struct stat s; + glob_t gs; + + int res = glob(path.c_str(), 0, 0, &gs); + + globfree(&gs); + + return res == 0; + } + + bool IsValidDirectory(const std::string& path) + { + if (path.empty()) + return false; - int res = stat(path.c_str(), &s); + struct stat pathStat; - return res != -1; + return stat(path.c_str(), &pathStat) != -1 && S_ISDIR(pathStat.st_mode); } } } http://git-wip-us.apache.org/repos/asf/ignite/blob/bb2d59b2/modules/platforms/cpp/common/os/win/src/common/platform_utils.cpp ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/common/os/win/src/common/platform_utils.cpp b/modules/platforms/cpp/common/os/win/src/common/platform_utils.cpp index b8a445c..a0f4505 100644 --- a/modules/platforms/cpp/common/os/win/src/common/platform_utils.cpp +++ b/modules/platforms/cpp/common/os/win/src/common/platform_utils.cpp @@ -49,18 +49,23 @@ namespace ignite return localtime_s(&out, &in) == 0; } - bool GetEnv(const std::string& name, std::string& val) + std::string GetEnv(const std::string& name) { - char res0[32767]; + static const std::string empty; - DWORD envRes = GetEnvironmentVariableA(name.c_str(), res0, sizeof(res0) / sizeof(res0[0])); + return GetEnv(name, empty); + } - if (envRes == 0) - return false; + std::string GetEnv(const std::string& name, const std::string& dflt) + { + char res[32767]; - val.assign(res0); + DWORD envRes = GetEnvironmentVariableA(name.c_str(), res, sizeof(res) / sizeof(res[0])); - return true; + if (envRes == 0 || envRes > sizeof(res)) + return dflt; + + return std::string(res, static_cast<size_t>(envRes)); } bool FileExists(const std::string& path) @@ -76,5 +81,15 @@ namespace ignite return true; } + + bool IsValidDirectory(const std::string& path) + { + if (path.empty()) + return false; + + DWORD attrs = GetFileAttributesA(path.c_str()); + + return attrs != INVALID_FILE_ATTRIBUTES && (attrs & FILE_ATTRIBUTE_DIRECTORY) != 0; + } } } http://git-wip-us.apache.org/repos/asf/ignite/blob/bb2d59b2/modules/platforms/cpp/core-test/src/test_utils.cpp ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/core-test/src/test_utils.cpp b/modules/platforms/cpp/core-test/src/test_utils.cpp index ded229e..749c581 100644 --- a/modules/platforms/cpp/core-test/src/test_utils.cpp +++ b/modules/platforms/cpp/core-test/src/test_utils.cpp @@ -38,12 +38,8 @@ namespace ignite_test cfg.jvmOpts.push_back("-DIGNITE_UPDATE_NOTIFIER=false"); cfg.jvmOpts.push_back("-Duser.language=en"); - std::string home; - bool homeFound = jni::ResolveIgniteHome("", home); - - assert(homeFound); - - cfg.jvmClassPath = jni::CreateIgniteHomeClasspath(home, true); + cfg.igniteHome = jni::ResolveIgniteHome(); + cfg.jvmClassPath = jni::CreateIgniteHomeClasspath(cfg.igniteHome, true); #ifdef IGNITE_TESTS_32 cfg.jvmInitMem = 256; http://git-wip-us.apache.org/repos/asf/ignite/blob/bb2d59b2/modules/platforms/cpp/core/src/ignition.cpp ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/core/src/ignition.cpp b/modules/platforms/cpp/core/src/ignition.cpp index 78ddc54..7d90a52 100644 --- a/modules/platforms/cpp/core/src/ignition.cpp +++ b/modules/platforms/cpp/core/src/ignition.cpp @@ -226,16 +226,10 @@ namespace ignite } // 2. Resolve IGNITE_HOME. - std::string home; - bool homeFound = ResolveIgniteHome(cfg.igniteHome, home); + std::string home = ResolveIgniteHome(cfg.igniteHome); // 3. Create classpath. - std::string cp; - - if (homeFound) - cp = CreateIgniteClasspath(cfg.jvmClassPath, home); - else - cp = CreateIgniteClasspath(cfg.jvmClassPath); + std::string cp = CreateIgniteClasspath(cfg.jvmClassPath, home); if (cp.empty()) { http://git-wip-us.apache.org/repos/asf/ignite/blob/bb2d59b2/modules/platforms/cpp/jni/include/ignite/jni/utils.h ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/jni/include/ignite/jni/utils.h b/modules/platforms/cpp/jni/include/ignite/jni/utils.h index a6eb37a..285f587 100644 --- a/modules/platforms/cpp/jni/include/ignite/jni/utils.h +++ b/modules/platforms/cpp/jni/include/ignite/jni/utils.h @@ -159,14 +159,6 @@ namespace ignite IGNITE_IMPORT_EXPORT std::string CreateIgniteHomeClasspath(const std::string& home, bool forceTest); /** - * Create Ignite classpath based on user input directory. - * - * @param usrCp User's classpath. - * @return Classpath. - */ - IGNITE_IMPORT_EXPORT std::string CreateIgniteClasspath(const std::string& usrCp); - - /** * Create Ignite classpath based on user input and home directory. * * @param usrCp User's classpath. @@ -181,15 +173,14 @@ namespace ignite * 1) Check for path provided as argument. * 2) Check for environment variable. * 3) Check for current working directory. - * Result of these 3 checks are evaluated based on existence of certain - * predefined folders inside possible GG home. If they are found, + * Result of these checks are evaluated based on existence of certain + * predefined folders inside possible Ignite home. If they are found, * IGNITE_HOME is considered resolved. * * @param path Optional path to evaluate. - * @param home Resolved GG home. - * @return True if IGNITE_HOME home was found. + * @return Resolved Ignite home. */ - IGNITE_IMPORT_EXPORT bool ResolveIgniteHome(const std::string& path, std::string& home); + IGNITE_IMPORT_EXPORT std::string ResolveIgniteHome(const std::string& path = ""); } } http://git-wip-us.apache.org/repos/asf/ignite/blob/bb2d59b2/modules/platforms/cpp/jni/os/linux/src/utils.cpp ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/jni/os/linux/src/utils.cpp b/modules/platforms/cpp/jni/os/linux/src/utils.cpp index e74e4e0..52e4097 100644 --- a/modules/platforms/cpp/jni/os/linux/src/utils.cpp +++ b/modules/platforms/cpp/jni/os/linux/src/utils.cpp @@ -25,6 +25,7 @@ #include "ignite/common/utils.h" #include "ignite/common/fixed_size_array.h" + #include "ignite/jni/utils.h" #include "ignite/jni/java.h" @@ -40,9 +41,6 @@ namespace ignite const char* IGNITE_HOME = "IGNITE_HOME"; - const char* PROBE_BIN = "/bin"; - const char* PROBE_EXAMPLES = "/examples"; - const char* IGNITE_NATIVE_TEST_CLASSPATH = "IGNITE_NATIVE_TEST_CLASSPATH"; /** Key indicating that the thread is attached. */ @@ -77,55 +75,66 @@ namespace ignite } /** - * Helper function for GG home resolution. Checks whether certain folders - * exist in the path. Optionally goes upwards in directory hierarchy. - * - * @param path Path to evaluate. - * @param up Whether to go upwards. - * @param res Resolved directory. - * @return Resolution result. + * Checks if the path looks like binary release home directory. + * Internally checks for presence of some directories, that are + * @return @c true if the path looks like binary release home directory. */ - bool ResolveIgniteHome0(const std::string& path, bool up, std::string& res) + bool LooksLikeBinaryReleaseHome(const std::string& path) { - struct stat pathStat; + static const char* PROBE_CORE_LIB = "/libs/ignite-core*.jar"; - if (stat(path.c_str(), &pathStat) == -1 || !S_ISDIR(pathStat.st_mode)) - return false; - - // Remove trailing slashes, otherwise we will have an infinite loop. - std::string path0; + std::string coreLibProbe = path + PROBE_CORE_LIB; - size_t last = path.find_last_not_of("/\\ "); + return FileExists(coreLibProbe); + } - if (last != std::string::npos) - path0.assign(path, 0, last + 1); + /** + * Checks if the path looks like source release home directory. + * Internally checks for presence of core source directory. + * @return @c true if the path looks like binary release home directory. + */ + bool LooksLikeSourceReleaseHome(const std::string& path) + { + static const char* PROBE_CORE_SOURCE = "/modules/core/src/main/java/org/apache/ignite"; - std::string binStr = path0 + PROBE_BIN; - struct stat binStat; + std::string coreSourcePath = path + PROBE_CORE_SOURCE; - std::string examplesStr = path0 + PROBE_EXAMPLES; - struct stat examplesStat; + return IsValidDirectory(coreSourcePath); + } - if (stat(binStr.c_str(), &binStat) != -1 && S_ISDIR(binStat.st_mode) && - stat(examplesStr.c_str(), &examplesStat) != -1 && S_ISDIR(examplesStat.st_mode)) - { - res = path0; + /** + * Helper function for Ignite home resolution. + * Goes upwards in directory hierarchy and checks whether certain + * folders exist in the path. + * + * @param path Path to evaluate. + * @return res Resolved directory. Empty string if not found. + */ + std::string ResolveIgniteHome0(const std::string& path) + { + if (!IsValidDirectory(path)) + return std::string(); - return true; - } + // Remove trailing slashes, otherwise we will have an infinite loop. + size_t last = path.find_last_not_of("/ "); + + if (last == std::string::npos) + return std::string(); + + std::string path0(path, 0, last + 1); - if (!up) - return false; + if (LooksLikeBinaryReleaseHome(path0) || LooksLikeSourceReleaseHome(path0)) + return path0; // Evaluate parent directory. size_t slashPos = path0.find_last_of("/"); if (slashPos == std::string::npos) - return false; + return std::string(); std::string parent(path0, 0, slashPos); - return ResolveIgniteHome0(parent, true, res); + return ResolveIgniteHome0(parent); } /** @@ -298,9 +307,9 @@ namespace ignite if (!path.empty() && FileExists(path)) return path; - std::string javaEnv; + std::string javaEnv = GetEnv(JAVA_HOME); - if (GetEnv(JAVA_HOME, javaEnv)) + if (!javaEnv.empty()) { std::string javaDll = javaEnv + JAVA_DLL; @@ -351,7 +360,12 @@ namespace ignite return cp; } - std::string CreateIgniteClasspath(const std::string& usrCp) + /** + * Adds semicolon at the end of the path if needed. + * @param usrCp Classpath provided by user. + * @return Normalized classpath. + */ + std::string NormalizeClasspath(const std::string& usrCp) { if (usrCp.empty() || *usrCp.rbegin() == ';') return usrCp; @@ -362,33 +376,35 @@ namespace ignite std::string CreateIgniteClasspath(const std::string& usrCp, const std::string& home) { // 1. Append user classpath if it exists. - std::string cp = CreateIgniteClasspath(usrCp); + std::string cp = NormalizeClasspath(usrCp); // 2. Append home classpath - std::string env; - bool envFound = GetEnv(IGNITE_NATIVE_TEST_CLASSPATH, env); + if (!home.empty()) + { + std::string env = GetEnv(IGNITE_NATIVE_TEST_CLASSPATH, "false"); - bool forceTest = envFound && env.compare("true") == 0; + bool forceTest = ToLower(env) == "true"; - std::string homeCp = CreateIgniteHomeClasspath(home, forceTest); + std::string homeCp = CreateIgniteHomeClasspath(home, forceTest); - cp.append(homeCp); + cp.append(homeCp); + } // 3. Return. return cp; } - bool ResolveIgniteHome(const std::string& path, std::string& home) + std::string ResolveIgniteHome(const std::string& path) { - if (!path.empty()) - // 1. Check passed argument. - return ResolveIgniteHome0(path, false, home); + // 1. Check passed argument. + if (IsValidDirectory(path)) + return path; // 2. Check environment variable. - std::string env; + std::string home = GetEnv(IGNITE_HOME); - if (GetEnv(IGNITE_HOME, env)) - return ResolveIgniteHome0(env, false, home); + if (IsValidDirectory(home)) + return home; // 3. Check current work dir. FixedSizeArray<char> curDir(1024 * 16); @@ -396,11 +412,11 @@ namespace ignite char* res = getcwd(curDir.GetData(), curDir.GetSize()); if (!res) - return false; + return std::string(); std::string curDirStr(curDir.GetData()); - return ResolveIgniteHome0(curDirStr, true, home); + return ResolveIgniteHome0(curDirStr); } } } http://git-wip-us.apache.org/repos/asf/ignite/blob/bb2d59b2/modules/platforms/cpp/jni/os/win/src/utils.cpp ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/jni/os/win/src/utils.cpp b/modules/platforms/cpp/jni/os/win/src/utils.cpp index 17ab6c3..4d0c197 100644 --- a/modules/platforms/cpp/jni/os/win/src/utils.cpp +++ b/modules/platforms/cpp/jni/os/win/src/utils.cpp @@ -33,6 +33,13 @@ namespace ignite { namespace jni { + const char* JAVA_HOME = "JAVA_HOME"; + const char* JAVA_DLL = "\\jre\\bin\\server\\jvm.dll"; + + const char* IGNITE_HOME = "IGNITE_HOME"; + + const char* IGNITE_NATIVE_TEST_CLASSPATH = "IGNITE_NATIVE_TEST_CLASSPATH"; + AttachHelper::~AttachHelper() { // No-op. @@ -43,66 +50,67 @@ namespace ignite // No-op. } - const char* JAVA_HOME = "JAVA_HOME"; - const char* JAVA_DLL = "\\jre\\bin\\server\\jvm.dll"; + /** + * Checks if the path looks like binary release home directory. + * Internally checks for presence of core library. + * @return @c true if the path looks like binary release home directory. + */ + bool LooksLikeBinaryReleaseHome(const std::string& path) + { + static const char* PROBE_CORE_LIB = "\\libs\\ignite-core*.jar"; - const char* IGNITE_HOME = "IGNITE_HOME"; + std::string coreLibProbe = path + PROBE_CORE_LIB; - const char* PROBE_BIN = "\\bin"; - const char* PROBE_EXAMPLES = "\\examples"; + return FileExists(coreLibProbe); + } - const char* IGNITE_NATIVE_TEST_CLASSPATH = "IGNITE_NATIVE_TEST_CLASSPATH"; + /** + * Checks if the path looks like source release home directory. + * Internally checks for presence of core source directory. + * @return @c true if the path looks like binary release home directory. + */ + bool LooksLikeSourceReleaseHome(const std::string& path) + { + static const char* PROBE_CORE_SOURCE = "\\modules\\core\\src\\main\\java\\org\\apache\\ignite"; + + std::string coreSourcePath = path + PROBE_CORE_SOURCE; + + return IsValidDirectory(coreSourcePath); + } /** - * Helper function for GG home resolution. Checks whether certain folders - * exist in the path. Optionally goes upwards in directory hierarchy. + * Helper function for Ignite home resolution. + * Goes upwards in directory hierarchy and checks whether certain + * folders exist in the path. * * @param path Path to evaluate. - * @param up Whether to go upwards. - * @param res Resolved directory. - * @return Resolution result. + * @return res Resolved directory. Empty string if not found. */ - bool ResolveIgniteHome0(const std::string& path, bool up, std::string& res) + std::string ResolveIgniteHome0(const std::string& path) { - DWORD attrs = GetFileAttributesA(path.c_str()); - - if (attrs == INVALID_FILE_ATTRIBUTES || !(attrs & FILE_ATTRIBUTE_DIRECTORY)) - return false; + if (!IsValidDirectory(path)) + return std::string(); // Remove trailing slashes, otherwise we will have an infinite loop. - std::string path0; - size_t last = path.find_last_not_of("/\\ "); - if (last != std::string::npos) - path0.assign(path, 0, last + 1); - - std::string binStr = path0 + PROBE_BIN; - DWORD binAttrs = GetFileAttributesA(binStr.c_str()); - - std::string examplesStr = path0 + PROBE_EXAMPLES; - DWORD examplesAttrs = GetFileAttributesA(examplesStr.c_str()); + if (last == std::string::npos) + return std::string(); - if (binAttrs != INVALID_FILE_ATTRIBUTES && (binAttrs & FILE_ATTRIBUTE_DIRECTORY) && - examplesAttrs != INVALID_FILE_ATTRIBUTES && (examplesAttrs & FILE_ATTRIBUTE_DIRECTORY)) - { - res = path0; + std::string path0(path, 0, last + 1); - return true; - } - - if (!up) - return false; + if (LooksLikeBinaryReleaseHome(path0) || LooksLikeSourceReleaseHome(path0)) + return path0; // Evaluate parent directory. size_t slashPos = path0.find_last_of("/\\"); if (slashPos == std::string::npos) - return false; + return std::string(); std::string parent(path0, 0, slashPos); - return ResolveIgniteHome0(parent, true, res); + return ResolveIgniteHome0(parent); } /** @@ -271,9 +279,9 @@ namespace ignite if (!path.empty() && FileExists(path)) return path; - std::string javaEnv; + std::string javaEnv = GetEnv(JAVA_HOME); - if (GetEnv(JAVA_HOME, javaEnv)) + if (!javaEnv.empty()) { std::string javaDll = javaEnv + JAVA_DLL; @@ -324,7 +332,12 @@ namespace ignite return cp; } - std::string CreateIgniteClasspath(const std::string& usrCp) + /** + * Adds semicolon at the end of the path if needed. + * @param usrCp Classpath provided by user. + * @return Normalized classpath. + */ + std::string NormalizeClasspath(const std::string& usrCp) { if (usrCp.empty() || *usrCp.rbegin() == ';') return usrCp; @@ -335,44 +348,52 @@ namespace ignite std::string CreateIgniteClasspath(const std::string& usrCp, const std::string& home) { // 1. Append user classpath if it exists. - std::string cp = CreateIgniteClasspath(usrCp); + std::string cp = NormalizeClasspath(usrCp); // 2. Append home classpath - std::string env; - bool envFound = GetEnv(IGNITE_NATIVE_TEST_CLASSPATH, env); + if (!home.empty()) + { + std::string env = GetEnv(IGNITE_NATIVE_TEST_CLASSPATH, "false"); - bool forceTest = envFound && env.compare("true") == 0; + bool forceTest = ToLower(env) == "true"; - std::string homeCp = CreateIgniteHomeClasspath(home, forceTest); + std::string homeCp = CreateIgniteHomeClasspath(home, forceTest); - cp.append(homeCp); + cp.append(homeCp); + } // 3. Return. return cp; } - bool ResolveIgniteHome(const std::string& path, std::string& home) + std::string ResolveIgniteHome(const std::string& path) { - if (!path.empty()) - // 1. Check passed argument. - return ResolveIgniteHome0(path, false, home); + // 1. Check passed argument. + if (IsValidDirectory(path)) + return path; // 2. Check environment variable. - std::string env; + std::string home = GetEnv(IGNITE_HOME); - if (GetEnv(IGNITE_HOME, env)) - return ResolveIgniteHome0(env, false, home); + if (IsValidDirectory(home)) + return home; // 3. Check current work dir. - const DWORD curDirLen = GetCurrentDirectory(0, NULL); + DWORD curDirLen = GetCurrentDirectoryA(0, NULL); + + if (!curDirLen) + return std::string(); FixedSizeArray<char> curDir(curDirLen); - GetCurrentDirectoryA(curDir.GetSize(), curDir.GetData()); + curDirLen = GetCurrentDirectoryA(curDir.GetSize(), curDir.GetData()); + + if (!curDirLen) + return std::string(); std::string curDirStr(curDir.GetData()); - return ResolveIgniteHome0(curDirStr, true, home); + return ResolveIgniteHome0(curDirStr); } } } http://git-wip-us.apache.org/repos/asf/ignite/blob/bb2d59b2/modules/platforms/cpp/odbc-test/src/test_utils.cpp ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/odbc-test/src/test_utils.cpp b/modules/platforms/cpp/odbc-test/src/test_utils.cpp index 6e8fe6a..3e1a9d7 100644 --- a/modules/platforms/cpp/odbc-test/src/test_utils.cpp +++ b/modules/platforms/cpp/odbc-test/src/test_utils.cpp @@ -65,12 +65,8 @@ namespace ignite_test cfg.jvmOpts.push_back("-DIGNITE_UPDATE_NOTIFIER=false"); cfg.jvmOpts.push_back("-Duser.language=en"); - std::string home; - bool homeFound = jni::ResolveIgniteHome("", home); - - assert(homeFound); - - cfg.jvmClassPath = jni::CreateIgniteHomeClasspath(home, true); + cfg.igniteHome = jni::ResolveIgniteHome(); + cfg.jvmClassPath = jni::CreateIgniteHomeClasspath(cfg.igniteHome, true); #ifdef IGNITE_TESTS_32 cfg.jvmInitMem = 256;
