From 2f1b9d7f225530dfc88af57d364547d9ad425172 Mon Sep 17 00:00:00 2001 From: Ondrej Mular Date: Thu, 24 Nov 2022 15:10:20 +0100 Subject: [PATCH] smoke test improvements --- .gitignore | 1 + .gitlab-ci.yml | 1 + configure.ac | 2 +- pcs/Makefile.am | 1 - pcs/api_v2_client.in | 22 -------------------- pcs_test/Makefile.am | 1 + pcs_test/api_v2_client.in | 20 +++++++++++++++++++ {pcs => pcs_test}/api_v2_client.py | 0 pcs_test/smoke.sh.in | 32 +++++++++++++++++++----------- 9 files changed, 44 insertions(+), 36 deletions(-) delete mode 100644 pcs/api_v2_client.in create mode 100644 pcs_test/api_v2_client.in rename {pcs => pcs_test}/api_v2_client.py (100%) diff --git a/.gitignore b/.gitignore index b368a048..8dd3d5be 100644 --- a/.gitignore +++ b/.gitignore @@ -21,6 +21,7 @@ requirements.txt setup.py setup.cfg pcs/api_v2_client +pcs_test/api_v2_client pcs/pcs pcs/pcs_internal pcs/settings.py diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d4e0074d..3d797729 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -126,6 +126,7 @@ python_smoke_tests: - ./autogen.sh - ./configure --enable-local-build - make + - rm -rf pcs - pcs_test/smoke.sh artifacts: paths: diff --git a/configure.ac b/configure.ac index bc8abb39..b61c1b25 100644 --- a/configure.ac +++ b/configure.ac @@ -578,10 +578,10 @@ AC_CONFIG_FILES([Makefile pcsd/settings.rb pcsd/logrotate/pcsd]) -AC_CONFIG_FILES([pcs/api_v2_client], [chmod +x pcs/api_v2_client]) AC_CONFIG_FILES([pcs/pcs], [chmod +x pcs/pcs]) AC_CONFIG_FILES([pcs/pcs_internal], [chmod +x pcs/pcs_internal]) AC_CONFIG_FILES([pcs/snmp/pcs_snmp_agent], [chmod +x pcs/snmp/pcs_snmp_agent]) +AC_CONFIG_FILES([pcs_test/api_v2_client], [chmod +x pcs_test/api_v2_client]) AC_CONFIG_FILES([pcs_test/smoke.sh], [chmod +x pcs_test/smoke.sh]) AC_CONFIG_FILES([pcs_test/pcs_for_tests], [chmod +x pcs_test/pcs_for_tests]) AC_CONFIG_FILES([pcs_test/suite], [chmod +x pcs_test/suite]) diff --git a/pcs/Makefile.am b/pcs/Makefile.am index 5c5104b4..f562b32c 100644 --- a/pcs/Makefile.am +++ b/pcs/Makefile.am @@ -20,7 +20,6 @@ EXTRA_DIST = \ acl.py \ alert.py \ app.py \ - api_v2_client.py \ cli/booth/command.py \ cli/booth/env.py \ cli/booth/__init__.py \ diff --git a/pcs/api_v2_client.in b/pcs/api_v2_client.in deleted file mode 100644 index 93336c31..00000000 --- a/pcs/api_v2_client.in +++ /dev/null @@ -1,22 +0,0 @@ -#!@PYTHON@ - -import os.path -import sys - -CURRENT_DIR = os.path.dirname(os.path.abspath(__file__)) - -# We prevent to import some module from this dir instead of e.g. standard module. -# There is no reason to import anything from this module. -sys.path.remove(CURRENT_DIR) - -# Add pcs package. -PACKAGE_DIR = os.path.dirname(CURRENT_DIR) -BUNDLED_PACKAGES_DIR = os.path.join( - PACKAGE_DIR, "@PCS_BUNDLED_DIR_LOCAL@", "packages" -) -sys.path.insert(0, BUNDLED_PACKAGES_DIR) -sys.path.insert(0, PACKAGE_DIR) - -from pcs import api_v2_client - -api_v2_client.main() diff --git a/pcs_test/Makefile.am b/pcs_test/Makefile.am index 89a23e05..6f497a0e 100644 --- a/pcs_test/Makefile.am +++ b/pcs_test/Makefile.am @@ -57,6 +57,7 @@ EXTRA_DIST = \ resources/transitions01.xml \ resources/transitions02.xml \ suite.py \ + api_v2_client.py \ tier0/cli/booth/__init__.py \ tier0/cli/booth/test_env.py \ tier0/cli/cluster/__init__.py \ diff --git a/pcs_test/api_v2_client.in b/pcs_test/api_v2_client.in new file mode 100644 index 00000000..73a22324 --- /dev/null +++ b/pcs_test/api_v2_client.in @@ -0,0 +1,20 @@ +#!@PYTHON@ +import os.path +import sys + +CURRENT_DIR = os.path.dirname(os.path.abspath(__file__)) + +TEST_INSTALLED = os.environ.get("PCS_TEST.TEST_INSTALLED", "0") == "1" + +if TEST_INSTALLED: + BUNDLED_PACKAGES_DIR = os.path.join("@PCS_BUNDLED_DIR@", "packages") +else: + PACKAGE_DIR = os.path.dirname(CURRENT_DIR) + sys.path.insert(0, PACKAGE_DIR) + BUNDLED_PACKAGES_DIR = os.path.join(PACKAGE_DIR, "@PCS_BUNDLED_DIR_LOCAL@", "packages") + +sys.path.insert(0, BUNDLED_PACKAGES_DIR) + +from api_v2_client import main + +main() diff --git a/pcs/api_v2_client.py b/pcs_test/api_v2_client.py similarity index 100% rename from pcs/api_v2_client.py rename to pcs_test/api_v2_client.py diff --git a/pcs_test/smoke.sh.in b/pcs_test/smoke.sh.in index 42321777..b845b6d6 100755 --- a/pcs_test/smoke.sh.in +++ b/pcs_test/smoke.sh.in @@ -1,6 +1,8 @@ #!@BASH@ set -ex +SCRIPT_DIR="$(dirname -- "$(realpath -- "$0")")" + cluster_user=hacluster cluster_user_password=qa57Jk27eP pcsd_socket_path="@LOCALSTATEDIR@/run/pcsd.socket" @@ -15,13 +17,15 @@ if pidof systemd | grep "\b1\b"; then pcs cluster setup cluster-name localhost --debug fi +output_file=$(mktemp) +token_file=$(mktemp) + # Sanity check of API V0 token=$(python3 -c "import json; print(json.load(open('@LOCALSTATEDIR@/lib/pcsd/known-hosts'))['known_hosts']['localhost']['token']);") -curl -kb "token=${token}" https://localhost:2224/remote/cluster_status_plaintext -d 'data_json={}' > output.json -cat output.json; echo "" -python3 -c "import json; import sys; json.load(open('output.json'))['status'] == 'exception' and (sys.exit(1))"; +curl -kb "token=${token}" https://localhost:2224/remote/cluster_status_plaintext -d 'data_json={}' > "${output_file}" +cat "${output_file}"; echo "" +python3 -c "import json; import sys; json.load(open('${output_file}'))['status'] == 'exception' and (sys.exit(1))"; -token_file=$(mktemp) dd if=/dev/urandom bs=32 count=1 status=none | base64 > "${token_file}" custom_localhost_node_name="custom-node-name" @@ -30,24 +34,28 @@ pcs pcsd accept_token "${token_file}" pcs pcsd status "${custom_localhost_node_name}" | grep "${custom_localhost_node_name}: Online" # Sanity check of API V1 -curl -kb "token=${token}" https://localhost:2224/api/v1/resource-agent-get-agents-list/v1 --data '{}' > output.json -cat output.json; echo "" -python3 -c "import json; import sys; json.load(open('output.json'))['status'] != 'success' and (sys.exit(1))"; +curl -kb "token=${token}" https://localhost:2224/api/v1/resource-agent-get-agents-list/v1 --data '{}' > "${output_file}" +cat "${output_file}"; echo "" +python3 -c "import json; import sys; json.load(open('${output_file}'))['status'] != 'success' and (sys.exit(1))"; # Sanity check of API V2 # async -pcs/api_v2_client resource_agent.get_agent_metadata '{"agent_name":{"standard":"ocf","provider":"pacemaker","type":"Dummy"}}' +env "PCS_TEST.TEST_INSTALLED=1" ${SCRIPT_DIR}/api_v2_client resource_agent.get_agent_metadata '{"agent_name":{"standard":"ocf","provider":"pacemaker","type":"Dummy"}}' # sync -pcs/api_v2_client --sync resource_agent.get_agent_metadata '{"agent_name":{"standard":"ocf","provider":"pacemaker","type":"Stateful"}}' +env "PCS_TEST.TEST_INSTALLED=1" ${SCRIPT_DIR}/api_v2_client --sync resource_agent.get_agent_metadata '{"agent_name":{"standard":"ocf","provider":"pacemaker","type":"Stateful"}}' # unix socket test -curl --unix-socket "${pcsd_socket_path}" http:/something/api/v1/resource-agent-get-agents-list/v1 --data '{}' > output.json -cat output.json; echo "" -python3 -c "import json; import sys; json.load(open('output.json'))['status'] != 'success' and (sys.exit(1))"; +curl --unix-socket "${pcsd_socket_path}" http:/something/api/v1/resource-agent-get-agents-list/v1 --data '{}' > "${output_file}" +cat "${output_file}"; echo "" +python3 -c "import json; import sys; json.load(open('${output_file}'))['status'] != 'success' and (sys.exit(1))"; # make sure socket is not accessible by all users useradd testuser su testuser ! curl --unix-socket "${pcsd_socket_path}" http:/something/api/v1/resource-agent-get-agents-list/v1 --data '{}' + +# cleanup +rm "${token_file}" +rm "${output_file}" exit 0 -- 2.38.1