Repository: incubator-hawq Updated Branches: refs/heads/master 62392a2bf -> b939206e1
HAWQ-1358. Refactor gpfdist library in featuretest. Signed-off-by: Hubert Zhang <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/incubator-hawq/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-hawq/commit/b939206e Tree: http://git-wip-us.apache.org/repos/asf/incubator-hawq/tree/b939206e Diff: http://git-wip-us.apache.org/repos/asf/incubator-hawq/diff/b939206e Branch: refs/heads/master Commit: b939206e1c4c2de426c9f6847dff0ac2d51422c1 Parents: 62392a2 Author: Chuling Wang <[email protected]> Authored: Thu Feb 23 16:45:21 2017 +0800 Committer: Hubert Zhang <[email protected]> Committed: Thu Feb 23 16:45:21 2017 +0800 ---------------------------------------------------------------------- .../feature/ExternalSource/test_errortbl.cpp | 45 ++----------- src/test/feature/lib/gpfdist.cpp | 71 ++++++++++++++++++++ src/test/feature/lib/gpfdist.h | 50 ++++++++++++++ 3 files changed, 125 insertions(+), 41 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/b939206e/src/test/feature/ExternalSource/test_errortbl.cpp ---------------------------------------------------------------------- diff --git a/src/test/feature/ExternalSource/test_errortbl.cpp b/src/test/feature/ExternalSource/test_errortbl.cpp index 53a6dc0..a11a8df 100644 --- a/src/test/feature/ExternalSource/test_errortbl.cpp +++ b/src/test/feature/ExternalSource/test_errortbl.cpp @@ -20,6 +20,7 @@ #include "lib/sql_util.h" #include "lib/string_util.h" +#include "lib/gpfdist.h" using hawq::test::SQLUtility; @@ -32,48 +33,10 @@ class TestErrorTable : public ::testing::Test { TEST_F(TestErrorTable, TestErrorTableAll) { SQLUtility util; - auto init_gpfdist = [&] () { - auto sql = "CREATE EXTERNAL WEB TABLE gpfdist_status (x text) " - "execute E'( python %s/bin/lib/gppinggpfdist.py localhost:7070 2>&1 || echo) ' " - "on SEGMENT 0 " - "FORMAT 'text' (delimiter '|');"; - auto GPHOME = getenv("GPHOME"); - util.execute(hawq::test::stringFormat(sql, GPHOME)); - sql = "CREATE EXTERNAL WEB TABLE gpfdist_start (x text) " - "execute E'((%s/bin/gpfdist -p 7070 -d %s </dev/null >/dev/null 2>&1 &); sleep 2; echo \"starting\"...) ' " - "on SEGMENT 0 " - "FORMAT 'text' (delimiter '|');"; - std::string path = util.getTestRootPath() + "/ExternalSource/data"; - util.execute(hawq::test::stringFormat(sql, GPHOME, path.c_str())); - - util.execute( - "CREATE EXTERNAL WEB TABLE gpfdist_stop (x text) " - "execute E'(/bin/pkill gpfdist || killall gpfdist) > /dev/null 2>&1; echo stopping...' " - "on SEGMENT 0 " - "FORMAT 'text' (delimiter '|');"); - util.execute("select * from gpfdist_stop;"); - util.execute("select * from gpfdist_status;"); - util.execute("select * from gpfdist_start;"); - util.execute("select * from gpfdist_status;"); - }; - - auto finalize_gpfdist = [&] () { - util.execute("drop external table EXT_NATION_WITH_EXIST_ERROR_TABLE;"); - util.execute("drop external table EXT_NATION1;"); - util.execute("drop table EXT_NATION_ERROR1 CASCADE;"); - util.execute("drop external table EXT_NATION2;"); - util.execute("drop table EXT_NATION_ERROR2 CASCADE;"); - util.execute("drop external table EXT_NATION3;"); - util.execute("drop table EXT_NATION_ERROR3 CASCADE;"); - util.execute("select * from gpfdist_stop;"); - util.execute("select * from gpfdist_status;"); - util.execute("drop external table gpfdist_status;"); - util.execute("drop external table gpfdist_start;"); - util.execute("drop external table gpfdist_stop;"); - }; + hawq::test::GPfdist gpdfist(&util); - init_gpfdist(); + gpdfist.init_gpfdist(); // readable external table with error table util.execute( @@ -139,5 +102,5 @@ TEST_F(TestErrorTable, TestErrorTableAll) { "LOG ERRORS INTO EXT_NATION_ERROR_WRITABLE SEGMENT REJECT LIMIT 5;", false); - finalize_gpfdist(); + gpdfist.finalize_gpfdist(); } http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/b939206e/src/test/feature/lib/gpfdist.cpp ---------------------------------------------------------------------- diff --git a/src/test/feature/lib/gpfdist.cpp b/src/test/feature/lib/gpfdist.cpp new file mode 100644 index 0000000..59b9df9 --- /dev/null +++ b/src/test/feature/lib/gpfdist.cpp @@ -0,0 +1,71 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <fstream> +#include "gpfdist.h" + +using std::string; + +namespace hawq { +namespace test { +void GPfdist::init_gpfdist() { + auto sql = + "CREATE EXTERNAL WEB TABLE gpfdist_status (x text) " + "execute E'( python %s/bin/lib/gppinggpfdist.py localhost:7070 2>&1 || echo) ' " + "on SEGMENT 0 " + "FORMAT 'text' (delimiter '|');"; + auto GPHOME = getenv("GPHOME"); + util->execute(hawq::test::stringFormat(sql, GPHOME)); + + sql = + "CREATE EXTERNAL WEB TABLE gpfdist_start (x text) " + "execute E'((%s/bin/gpfdist -p 7070 -d %s </dev/null >/dev/null 2>&1 &); sleep 2; echo \"starting\"...) ' " + "on SEGMENT 0 " + "FORMAT 'text' (delimiter '|');"; + std::string path = util->getTestRootPath() + "/ExternalSource/data"; + util->execute(hawq::test::stringFormat(sql, GPHOME, path.c_str())); + + util->execute( + "CREATE EXTERNAL WEB TABLE gpfdist_stop (x text) " + "execute E'(/bin/pkill gpfdist || killall gpfdist) > /dev/null 2>&1; echo stopping...' " + "on SEGMENT 0 " + "FORMAT 'text' (delimiter '|');"); + util->execute("select * from gpfdist_stop;"); + util->execute("select * from gpfdist_status;"); + util->execute("select * from gpfdist_start;"); + util->execute("select * from gpfdist_status;"); +} + +void GPfdist::finalize_gpfdist() { + util->execute("drop external table EXT_NATION_WITH_EXIST_ERROR_TABLE;"); + util->execute("drop external table EXT_NATION1;"); + util->execute("drop table EXT_NATION_ERROR1 CASCADE;"); + util->execute("drop external table EXT_NATION2;"); + util->execute("drop table EXT_NATION_ERROR2 CASCADE;"); + util->execute("drop external table EXT_NATION3;"); + util->execute("drop table EXT_NATION_ERROR3 CASCADE;"); + util->execute("select * from gpfdist_stop;"); + util->execute("select * from gpfdist_status;"); + util->execute("drop external table gpfdist_status;"); + util->execute("drop external table gpfdist_start;"); + util->execute("drop external table gpfdist_stop;"); + +} + +} // namespace test +} // namespace hawq http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/b939206e/src/test/feature/lib/gpfdist.h ---------------------------------------------------------------------- diff --git a/src/test/feature/lib/gpfdist.h b/src/test/feature/lib/gpfdist.h new file mode 100644 index 0000000..e8740ae --- /dev/null +++ b/src/test/feature/lib/gpfdist.h @@ -0,0 +1,50 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef HAWQ_SRC_TEST_FEATURE_LIB_GPFDIST_H_ +#define HAWQ_SRC_TEST_FEATURE_LIB_GPFDIST_H_ + +#include <string> + +#include "lib/sql_util.h" +#include "lib/string_util.h" + +namespace hawq { +namespace test { + +/** + * Gpfdist common library. + * start gpfdist server and stop gpfdist server. + */ +class GPfdist { +public: + explicit GPfdist(hawq::test::SQLUtility *sqlUtil_) : util(sqlUtil_) {} + + ~GPfdist() {} + + void init_gpfdist(); + + void finalize_gpfdist(); +private: + hawq::test::SQLUtility *util = nullptr; +}; + +} // namespace test +} // namespace hawq + +#endif
