You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hawq.apache.org by zt...@apache.org on 2016/05/19 02:54:40 UTC
incubator-hawq git commit: HAWQ-740. Fix bug in SQLUtility.
Repository: incubator-hawq
Updated Branches:
refs/heads/master 025eecbad -> 3c2419bcc
HAWQ-740. Fix bug in SQLUtility.
Project: http://git-wip-us.apache.org/repos/asf/incubator-hawq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-hawq/commit/3c2419bc
Tree: http://git-wip-us.apache.org/repos/asf/incubator-hawq/tree/3c2419bc
Diff: http://git-wip-us.apache.org/repos/asf/incubator-hawq/diff/3c2419bc
Branch: refs/heads/master
Commit: 3c2419bcc51a55cf1fd8445fbd41b046c2b50ab3
Parents: 025eecb
Author: ztao1987 <zh...@gmail.com>
Authored: Thu May 19 10:53:29 2016 +0800
Committer: ztao1987 <zh...@gmail.com>
Committed: Thu May 19 10:53:29 2016 +0800
----------------------------------------------------------------------
src/test/feature/lib/sql-util.cpp | 50 +++++++++++++++++++++++-----------
src/test/feature/lib/sql-util.h | 8 ++++--
2 files changed, 40 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/3c2419bc/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 61b3d87..6283adb 100644
--- a/src/test/feature/lib/sql-util.cpp
+++ b/src/test/feature/lib/sql-util.cpp
@@ -1,5 +1,6 @@
#include "sql-util.h"
+#include <libproc.h>
#include <pwd.h>
#include <sys/types.h>
#include <unistd.h>
@@ -16,22 +17,26 @@ SQLUtility::SQLUtility()
test_info(::testing::UnitTest::GetInstance()->current_test_info()) {
schemaName =
std::string(test_info->test_case_name()) + "_" + test_info->name();
- conn->runSQLCommand("DROP SCHEMA IF EXISTS " + schemaName + " CASCADE");
- conn->runSQLCommand("CREATE SCHEMA " + schemaName);
+ exec("DROP SCHEMA IF EXISTS " + schemaName + " CASCADE");
+ exec("CREATE SCHEMA " + schemaName);
}
SQLUtility::~SQLUtility() {
if (!test_info->result()->Failed())
- conn->runSQLCommand("DROP SCHEMA " + schemaName + " CASCADE");
+ exec("DROP SCHEMA " + schemaName + " CASCADE");
}
-void SQLUtility::execute(const std::string &sql) {
- EXPECT_EQ((conn->runSQLCommand("SET SEARCH_PATH=" + schemaName + ";" + sql))
- .getLastStatus(),
- 0)
+void SQLUtility::exec(const std::string &sql) {
+ EXPECT_EQ((conn->runSQLCommand(sql)).getLastStatus(), 0)
<< conn->getLastResult();
}
+void SQLUtility::execute(const std::string &sql, bool check) {
+ conn->runSQLCommand("SET SEARCH_PATH=" + schemaName + ";" + sql);
+ EXPECT_NE(conn.get(), nullptr);
+ if (check) EXPECT_EQ(conn->getLastStatus(), 0) << conn->getLastResult();
+}
+
void SQLUtility::query(const std::string &sql, int expectNum) {
const PSQLQueryResult &result = executeQuery(sql);
ASSERT_FALSE(result.isError()) << result.getErrorMessage();
@@ -69,22 +74,27 @@ void SQLUtility::execSQLFile(const std::string &sqlFile,
const std::string newSqlFile = generateSQLFile(sqlFile);
// outFile is located in the same folder with ansFile
- std::string outFile = fp.path + "/" + fp.fileBaseName + ".out";
- conn->setOutputFile(outFile);
+ std::string outFileAbsPath = fp.path + "/" + fp.fileBaseName + ".out";
+ conn->setOutputFile(outFileAbsPath);
EXPECT_EQ(conn->runSQLFile(newSqlFile).getLastStatus(), 0);
conn->resetOutput();
- if (remove(newSqlFile.c_str()))
- ASSERT_TRUE(false) << "Error deleting file " << newSqlFile;
- EXPECT_FALSE(conn->checkDiff(ansFile, outFile, true));
+ EXPECT_FALSE(conn->checkDiff(ansFileAbsPath, outFileAbsPath, true));
+ if (conn->checkDiff(ansFileAbsPath, outFileAbsPath, true) == false) {
+ // no diff, continue to delete the generated sql file
+ if (remove(newSqlFile.c_str()))
+ ASSERT_TRUE(false) << "Error deleting file " << newSqlFile;
+ } else {
+ EXPECT_FALSE(true);
+ }
}
std::unique_ptr<PSQL> SQLUtility::getConnection() {
std::string user = HAWQ_USER;
- if(user == ""){
+ if (user.empty()) {
struct passwd *pw;
uid_t uid = geteuid();
pw = getpwuid(uid);
- user.assign(pw->pw_name);;
+ user.assign(pw->pw_name);
}
std::unique_ptr<PSQL> psql(
new PSQL(HAWQ_DB, HAWQ_HOST, HAWQ_PORT, user, HAWQ_PASSWORD));
@@ -125,8 +135,16 @@ const PSQLQueryResult &SQLUtility::executeQuery(const std::string &sql) {
PSQL *SQLUtility::getPSQL() const { return conn.get(); }
std::string SQLUtility::getTestRootPath() const {
- FilePath fp = splitFilePath(__FILE__);
- return splitFilePath(__FILE__).path + "/..";
+ int ret;
+ pid_t pid;
+ char pathbuf[PROC_PIDPATHINFO_MAXSIZE];
+
+ pid = getpid();
+ ret = proc_pidpath(pid, pathbuf, sizeof(pathbuf));
+ if (ret <= 0)
+ EXPECT_TRUE(false) << "PID " << pid << ": proc_pidpath () "
+ << strerror(errno);
+ return splitFilePath(pathbuf).path;
}
FilePath SQLUtility::splitFilePath(const std::string &filePath) const {
http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/3c2419bc/src/test/feature/lib/sql-util.h
----------------------------------------------------------------------
diff --git a/src/test/feature/lib/sql-util.h b/src/test/feature/lib/sql-util.h
index 8070d3f..e9455d7 100644
--- a/src/test/feature/lib/sql-util.h
+++ b/src/test/feature/lib/sql-util.h
@@ -26,7 +26,7 @@ class SQLUtility {
// Execute sql command
// @param sql The given sql command
// @return void
- void execute(const std::string &sql);
+ void execute(const std::string &sql, bool check = true);
// Execute query command and check the rowCount
// @param sql The given query command
@@ -50,12 +50,16 @@ class SQLUtility {
// @return PSQL raw pointer
PSQL *getPSQL() const;
+ // Get test root dir abs path
+ // @return path string
+ std::string getTestRootPath() const;
+
private:
std::unique_ptr<PSQL> getConnection();
const std::string generateSQLFile(const std::string &sqlFile);
const PSQLQueryResult &executeQuery(const std::string &sql);
- std::string getTestRootPath() const;
FilePath splitFilePath(const std::string &filePath) const;
+ void exec(const std::string &sql);
private:
std::string schemaName;