Repository: incubator-hawq Updated Branches: refs/heads/master 50d55331b -> 92880fc88
HAWQ-748. Fix platform issue in test framework. Project: http://git-wip-us.apache.org/repos/asf/incubator-hawq/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-hawq/commit/92880fc8 Tree: http://git-wip-us.apache.org/repos/asf/incubator-hawq/tree/92880fc8 Diff: http://git-wip-us.apache.org/repos/asf/incubator-hawq/diff/92880fc8 Branch: refs/heads/master Commit: 92880fc88859bfb7128e4074f10655dade9f2318 Parents: 50d5533 Author: ztao1987 <[email protected]> Authored: Fri May 20 07:55:51 2016 +0800 Committer: ztao1987 <[email protected]> Committed: Fri May 20 11:15:57 2016 +0800 ---------------------------------------------------------------------- src/test/feature/lib/sql-util.cpp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/92880fc8/src/test/feature/lib/sql-util.cpp ---------------------------------------------------------------------- diff --git a/src/test/feature/lib/sql-util.cpp b/src/test/feature/lib/sql-util.cpp index f4294a2..0714e22 100644 --- a/src/test/feature/lib/sql-util.cpp +++ b/src/test/feature/lib/sql-util.cpp @@ -1,6 +1,5 @@ #include "sql-util.h" -#include <libproc.h> #include <pwd.h> #include <sys/types.h> #include <unistd.h> @@ -11,6 +10,13 @@ #include "string-util.h" +#ifdef __linux__ +#include <limits.h> +#include <unistd.h> +#elif __APPLE__ +#include <libproc.h> +#endif + SQLUtility::SQLUtility() : conn(getConnection()), testRootPath(getTestRootPath()), @@ -135,6 +141,14 @@ const PSQLQueryResult &SQLUtility::executeQuery(const std::string &sql) { PSQL *SQLUtility::getPSQL() const { return conn.get(); } std::string SQLUtility::getTestRootPath() const { + std::string result; +#ifdef __linux__ + char pathbuf[PATH_MAX]; + ssize_t count = readlink("/proc/self/exe", pathbuf, PATH_MAX); + if (count <= 0) + EXPECT_TRUE(false) << "readlink /proc/self/exe error: " << strerror(errno); + result = std::string(pathbuf, count); +#elif __APPLE__ int ret; pid_t pid; char pathbuf[PROC_PIDPATHINFO_MAXSIZE]; @@ -144,7 +158,9 @@ std::string SQLUtility::getTestRootPath() const { if (ret <= 0) EXPECT_TRUE(false) << "PID " << pid << ": proc_pidpath () " << strerror(errno); - return splitFilePath(pathbuf).path; + result = std::string(pathbuf); +#endif + return splitFilePath(result).path; } FilePath SQLUtility::splitFilePath(const std::string &filePath) const {
