From 655a3273123802aaca572c1ba52f58e0b328b9b9 Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Mon, 23 Jul 2018 10:19:04 +0200 Subject: [PATCH 1/7] Add tests for st2-pack-install CLI tool. --- .../chains/test_pack_install_tool_tests.yaml | 82 +++++++++++++++++++ .../test_pack_install_tool_tests.meta.yaml | 19 +++++ 2 files changed, 101 insertions(+) create mode 100644 packs/tests/actions/chains/test_pack_install_tool_tests.yaml create mode 100644 packs/tests/actions/test_pack_install_tool_tests.meta.yaml diff --git a/packs/tests/actions/chains/test_pack_install_tool_tests.yaml b/packs/tests/actions/chains/test_pack_install_tool_tests.yaml new file mode 100644 index 0000000..baf910c --- /dev/null +++ b/packs/tests/actions/chains/test_pack_install_tool_tests.yaml @@ -0,0 +1,82 @@ +--- +vars: + base_repo_url: "https://github.com/StackStorm" + # Note: Pack 1 should have no external dependencies beyond Python stdlib ones. + pack_to_install_1: "csv" + pack_to_install_2: "some-pack-doesnt-exist" + test_timeout: 100 + +chain: + - + name: install_pack_1 + ref: core.local + params: + env: + ST2_BASE_URL: "{{protocol}}://{{hostname}}" + ST2_AUTH_URL: "{{protocol}}://{{hostname}}:9100" + ST2_API_URL: "{{protocol}}://{{hostname}}:9101" + ST2_AUTH_TOKEN: "{{token}}" + cmd: "st2-pack-install {{ pack_to_install_1 }} --debug" + timeout: "{{test_timeout}}" + on-success: verify_pack_1_has_been_installed + on-failure: error_handler + - + name: verify_pack_1_has_been_installed + ref: core.local + params: + env: + ST2_BASE_URL: "{{protocol}}://{{hostname}}" + ST2_AUTH_URL: "{{protocol}}://{{hostname}}:9100" + ST2_API_URL: "{{protocol}}://{{hostname}}:9101" + ST2_AUTH_TOKEN: "{{token}}" + cmd: "test -d /opt/stackstorm/packs/{{ pack_to_install_1 }} && test -d /opt/stackstorm/virtualenvs/{{ pack_to_install_1 }}" + timeout: "{{test_timeout}}" + on-success: install_pack_2 + on-failure: error_handler + # NOTE: Installation of pack 2 should fail + - + name: install_pack_2 + ref: core.local + params: + env: + ST2_BASE_URL: "{{protocol}}://{{hostname}}" + ST2_AUTH_URL: "{{protocol}}://{{hostname}}:9100" + ST2_API_URL: "{{protocol}}://{{hostname}}:9101" + ST2_AUTH_TOKEN: "{{token}}" + cmd: "st2-pack-install {{ pack_to_install_2 }} --debug > /tmp/pack2_install.log" + timeout: "{{test_timeout}}" + on-success: error_handler + on-failure: verify_pack2_install_failed + - + name: verify_pack2_install_failed + ref: core.local + params: + env: + ST2_BASE_URL: "{{protocol}}://{{hostname}}" + ST2_AUTH_URL: "{{protocol}}://{{hostname}}:9100" + ST2_API_URL: "{{protocol}}://{{hostname}}:9101" + ST2_AUTH_TOKEN: "{{token}}" + cmd: 'cat /tmp/pack2_install.log | grep "Failed to install pack "{{ pack_to_install_2 }}" | grep "No record of the "{{ pack_to_install_2 }}" pack in the index' + on-success: success_handler + on-failure: error_handler + - + name: success_handler + ref: core.local + params: + env: + ST2_BASE_URL: "{{protocol}}://{{hostname}}" + ST2_AUTH_URL: "{{protocol}}://{{hostname}}:9100" + ST2_API_URL: "{{protocol}}://{{hostname}}:9101" + ST2_AUTH_TOKEN: "{{token}}" + cmd: "echo st2-pack-install tests succeeded; exit 0" + - + name: error_handler + description: Error handler + ref: "core.local" + params: + env: + ST2_BASE_URL: "{{protocol}}://{{hostname}}" + ST2_AUTH_URL: "{{protocol}}://{{hostname}}:9100" + ST2_API_URL: "{{protocol}}://{{hostname}}:9101" + ST2_AUTH_TOKEN: "{{token}}" + cmd: "echo st2-pack-install tests failed; exit 1" diff --git a/packs/tests/actions/test_pack_install_tool_tests.meta.yaml b/packs/tests/actions/test_pack_install_tool_tests.meta.yaml new file mode 100644 index 0000000..68572ea --- /dev/null +++ b/packs/tests/actions/test_pack_install_tool_tests.meta.yaml @@ -0,0 +1,19 @@ +--- +name: "test_pack_install_tool_tests" +description: "Test which verifies that st2-pack-install CLI tool works correctly out of the box." +runner_type: "action-chain" +enabled: true +entry_point: "chains/test_pack_install_tool_tests.yaml" +parameters: + token: + type: "string" + description: "st2 auth token" + default: "" + protocol: + type: "string" + description: "http/https" + default: "http" + hostname: + type: "string" + description: "St2 host to run tests against" + default: "127.0.0.1" From 20ec164ab50dc5f007484f66dbcc3b54e5f07ceb Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Mon, 23 Jul 2018 10:59:36 +0200 Subject: [PATCH 2/7] Use sudo and full path to the binary. We intentionally don't symlink that binary in /usr/local/bin. --- packs/tests/actions/chains/test_pack_install_tool_tests.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packs/tests/actions/chains/test_pack_install_tool_tests.yaml b/packs/tests/actions/chains/test_pack_install_tool_tests.yaml index baf910c..6dccf36 100644 --- a/packs/tests/actions/chains/test_pack_install_tool_tests.yaml +++ b/packs/tests/actions/chains/test_pack_install_tool_tests.yaml @@ -16,7 +16,7 @@ chain: ST2_AUTH_URL: "{{protocol}}://{{hostname}}:9100" ST2_API_URL: "{{protocol}}://{{hostname}}:9101" ST2_AUTH_TOKEN: "{{token}}" - cmd: "st2-pack-install {{ pack_to_install_1 }} --debug" + cmd: "sudo /opt/stackstorm/st2/bin/st2-pack-install {{ pack_to_install_1 }} --debug" timeout: "{{test_timeout}}" on-success: verify_pack_1_has_been_installed on-failure: error_handler @@ -43,7 +43,7 @@ chain: ST2_AUTH_URL: "{{protocol}}://{{hostname}}:9100" ST2_API_URL: "{{protocol}}://{{hostname}}:9101" ST2_AUTH_TOKEN: "{{token}}" - cmd: "st2-pack-install {{ pack_to_install_2 }} --debug > /tmp/pack2_install.log" + cmd: "sudo /opt/stackstorm/st2/bin/st2-pack-install {{ pack_to_install_2 }} --debug > /tmp/pack2_install.log" timeout: "{{test_timeout}}" on-success: error_handler on-failure: verify_pack2_install_failed From 64bc944f5cfabd4ccee6f21c1ba4c67770a7960e Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Mon, 23 Jul 2018 11:02:47 +0200 Subject: [PATCH 3/7] Fix quoting and redirect. --- packs/tests/actions/chains/test_pack_install_tool_tests.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packs/tests/actions/chains/test_pack_install_tool_tests.yaml b/packs/tests/actions/chains/test_pack_install_tool_tests.yaml index 6dccf36..321d229 100644 --- a/packs/tests/actions/chains/test_pack_install_tool_tests.yaml +++ b/packs/tests/actions/chains/test_pack_install_tool_tests.yaml @@ -43,7 +43,7 @@ chain: ST2_AUTH_URL: "{{protocol}}://{{hostname}}:9100" ST2_API_URL: "{{protocol}}://{{hostname}}:9101" ST2_AUTH_TOKEN: "{{token}}" - cmd: "sudo /opt/stackstorm/st2/bin/st2-pack-install {{ pack_to_install_2 }} --debug > /tmp/pack2_install.log" + cmd: "sudo /opt/stackstorm/st2/bin/st2-pack-install {{ pack_to_install_2 }} --debug > /tmp/pack2_install.log 2>&1" timeout: "{{test_timeout}}" on-success: error_handler on-failure: verify_pack2_install_failed @@ -56,7 +56,7 @@ chain: ST2_AUTH_URL: "{{protocol}}://{{hostname}}:9100" ST2_API_URL: "{{protocol}}://{{hostname}}:9101" ST2_AUTH_TOKEN: "{{token}}" - cmd: 'cat /tmp/pack2_install.log | grep "Failed to install pack "{{ pack_to_install_2 }}" | grep "No record of the "{{ pack_to_install_2 }}" pack in the index' + cmd: 'cat /tmp/pack2_install.log | grep "Failed to install pack \"{{ pack_to_install_2 }}\"" | grep "No record of the \"{{ pack_to_install_2 }}\" pack in the index"' on-success: success_handler on-failure: error_handler - From 498ebf8c30030e0926937dc8c7cc0c69e90a7430 Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Mon, 23 Jul 2018 11:15:31 +0200 Subject: [PATCH 4/7] Use core.local_sudo, simplify task. --- .../chains/test_pack_install_tool_tests.yaml | 20 ++++--------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/packs/tests/actions/chains/test_pack_install_tool_tests.yaml b/packs/tests/actions/chains/test_pack_install_tool_tests.yaml index 321d229..d72491a 100644 --- a/packs/tests/actions/chains/test_pack_install_tool_tests.yaml +++ b/packs/tests/actions/chains/test_pack_install_tool_tests.yaml @@ -9,14 +9,14 @@ vars: chain: - name: install_pack_1 - ref: core.local + ref: core.local_sudo params: env: ST2_BASE_URL: "{{protocol}}://{{hostname}}" ST2_AUTH_URL: "{{protocol}}://{{hostname}}:9100" ST2_API_URL: "{{protocol}}://{{hostname}}:9101" ST2_AUTH_TOKEN: "{{token}}" - cmd: "sudo /opt/stackstorm/st2/bin/st2-pack-install {{ pack_to_install_1 }} --debug" + cmd: "/opt/stackstorm/st2/bin/st2-pack-install {{ pack_to_install_1 }} --debug" timeout: "{{test_timeout}}" on-success: verify_pack_1_has_been_installed on-failure: error_handler @@ -36,27 +36,15 @@ chain: # NOTE: Installation of pack 2 should fail - name: install_pack_2 - ref: core.local + ref: core.local_sudo params: env: ST2_BASE_URL: "{{protocol}}://{{hostname}}" ST2_AUTH_URL: "{{protocol}}://{{hostname}}:9100" ST2_API_URL: "{{protocol}}://{{hostname}}:9101" ST2_AUTH_TOKEN: "{{token}}" - cmd: "sudo /opt/stackstorm/st2/bin/st2-pack-install {{ pack_to_install_2 }} --debug > /tmp/pack2_install.log 2>&1" + cmd: '/opt/stackstorm/st2/bin/st2-pack-install {{ pack_to_install_2 }} --debug 2>&1 | grep "Failed to install pack" | grep "No record of the"' timeout: "{{test_timeout}}" - on-success: error_handler - on-failure: verify_pack2_install_failed - - - name: verify_pack2_install_failed - ref: core.local - params: - env: - ST2_BASE_URL: "{{protocol}}://{{hostname}}" - ST2_AUTH_URL: "{{protocol}}://{{hostname}}:9100" - ST2_API_URL: "{{protocol}}://{{hostname}}:9101" - ST2_AUTH_TOKEN: "{{token}}" - cmd: 'cat /tmp/pack2_install.log | grep "Failed to install pack \"{{ pack_to_install_2 }}\"" | grep "No record of the \"{{ pack_to_install_2 }}\" pack in the index"' on-success: success_handler on-failure: error_handler - From 62d72753347c4d07f9d384fe42acfd935fe35408 Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Mon, 23 Jul 2018 11:18:54 +0200 Subject: [PATCH 5/7] Perform cleanup at the beginning, use lower timeout. --- .../chains/test_pack_install_tool_tests.yaml | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/packs/tests/actions/chains/test_pack_install_tool_tests.yaml b/packs/tests/actions/chains/test_pack_install_tool_tests.yaml index d72491a..61b4f4a 100644 --- a/packs/tests/actions/chains/test_pack_install_tool_tests.yaml +++ b/packs/tests/actions/chains/test_pack_install_tool_tests.yaml @@ -4,9 +4,21 @@ vars: # Note: Pack 1 should have no external dependencies beyond Python stdlib ones. pack_to_install_1: "csv" pack_to_install_2: "some-pack-doesnt-exist" - test_timeout: 100 + test_timeout: 60 chain: + - + name: cleanup + ref: core.local_sudo + params: + env: + ST2_BASE_URL: "{{protocol}}://{{hostname}}" + ST2_AUTH_URL: "{{protocol}}://{{hostname}}:9100" + ST2_API_URL: "{{protocol}}://{{hostname}}:9101" + ST2_AUTH_TOKEN: "{{token}}" + cmd: 'rm -rf "/opt/stackstorm/packs/{{ pack_to_install_1 }}" ; rm -rf "/opt/stackstorm/virtualenvs/{{ pack_to_install_1 }}"' + on-success: install_pack_1 + on-failure: error_handler - name: install_pack_1 ref: core.local_sudo From 8fc24d96c6e91cfaf8b40386f77f42d4ab33c82c Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Mon, 23 Jul 2018 14:35:59 +0200 Subject: [PATCH 6/7] Skip tests when st2-pack-install binary is not available (e.g. when running pre v2.9dev release). --- .../chains/test_pack_install_tool_tests.yaml | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/packs/tests/actions/chains/test_pack_install_tool_tests.yaml b/packs/tests/actions/chains/test_pack_install_tool_tests.yaml index 61b4f4a..2e7133c 100644 --- a/packs/tests/actions/chains/test_pack_install_tool_tests.yaml +++ b/packs/tests/actions/chains/test_pack_install_tool_tests.yaml @@ -7,6 +7,28 @@ vars: test_timeout: 60 chain: + - + name: check_st2_pack_instal_tool_is_available + ref: core.local + params: + env: + ST2_BASE_URL: "{{protocol}}://{{hostname}}" + ST2_AUTH_URL: "{{protocol}}://{{hostname}}:9100" + ST2_API_URL: "{{protocol}}://{{hostname}}:9101" + ST2_AUTH_TOKEN: "{{token}}" + cmd: 'test -f /opt/stackstorm/st2/bin/st2-pack-install' + on-success: install_pack_1 + on-failure: skip_tests_tool_not_available + - + name: skip_tests_tool_not_available + ref: core.local + params: + env: + ST2_BASE_URL: "{{protocol}}://{{hostname}}" + ST2_AUTH_URL: "{{protocol}}://{{hostname}}:9100" + ST2_API_URL: "{{protocol}}://{{hostname}}:9101" + ST2_AUTH_TOKEN: "{{token}}" + cmd: 'echo "st2-pack-install CLI tool not available, skipping tests..."' - name: cleanup ref: core.local_sudo From b6f66ecb30e3b473a75df3869bff911d7b458935 Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Tue, 31 Jul 2018 15:06:47 +0200 Subject: [PATCH 7/7] Include version selector so we also test that code path. --- packs/tests/actions/chains/test_pack_install_tool_tests.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packs/tests/actions/chains/test_pack_install_tool_tests.yaml b/packs/tests/actions/chains/test_pack_install_tool_tests.yaml index 2e7133c..c393418 100644 --- a/packs/tests/actions/chains/test_pack_install_tool_tests.yaml +++ b/packs/tests/actions/chains/test_pack_install_tool_tests.yaml @@ -3,6 +3,7 @@ vars: base_repo_url: "https://github.com/StackStorm" # Note: Pack 1 should have no external dependencies beyond Python stdlib ones. pack_to_install_1: "csv" + pack_to_install_1_with_version: "csv=0.1.0" pack_to_install_2: "some-pack-doesnt-exist" test_timeout: 60 @@ -50,7 +51,7 @@ chain: ST2_AUTH_URL: "{{protocol}}://{{hostname}}:9100" ST2_API_URL: "{{protocol}}://{{hostname}}:9101" ST2_AUTH_TOKEN: "{{token}}" - cmd: "/opt/stackstorm/st2/bin/st2-pack-install {{ pack_to_install_1 }} --debug" + cmd: "/opt/stackstorm/st2/bin/st2-pack-install {{ pack_to_install_1_with_version }} --debug" timeout: "{{test_timeout}}" on-success: verify_pack_1_has_been_installed on-failure: error_handler